מדריך לעיצוב פנים ל-Android

המשימה של MediaPipe לעיצוב פנים מאפשרת לכם להחיל עיצובי פנים על פנים בתמונות. במשימה הזו תוכלו ליצור דמויות וירטואליות במגוון סגנונות.

דוגמת הקוד שמתוארת בהוראות אלה זמינה במכשירים הבאים: GitHub. מידע נוסף על היכולות, המודלים ואפשרויות ההגדרה במשימה הזאת, ראו סקירה כללית.

קוד לדוגמה

קוד הדוגמה למשימות של MediaPipe הוא הטמעה בסיסית של סטיילר לפנים לאפליקציה ל-Android. בדוגמה חלה סגנון פנים על תמונות שסופקו אפליקציה.

אפשר להשתמש באפליקציה כנקודת התחלה של אפליקציה משלכם ל-Android, או להתייחס אליה כשמשנים אפליקציה קיימת. הקוד לדוגמה של 'עיצוב פנים' מתארח ב- GitHub.

להורדת הקוד

בהוראות הבאות מוסבר איך ליצור עותק מקומי של הדוגמה באמצעות כלי שורת הפקודה git.

כדי להוריד את הקוד לדוגמה:

  1. משכפלים את מאגר ה-Git באמצעות הפקודה הבאה:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. לחלופין, להגדיר את מכונת ה-Git שלך לשימוש בקופה עם היעדר תשלום, כדי רק הקבצים עבור האפליקציה לדוגמה של 'עיצוב פנים':
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/face_stylization/android
    

אחרי שיוצרים גרסה מקומית של הקוד לדוגמה, אפשר לייבא את הפרויקט אל Android Studio ולהריץ את האפליקציה. לקבלת הוראות, אפשר לעיין במדריך ההגדרה עבור ב-Android.

רכיבים מרכזיים

הקבצים הבאים מכילים את הקוד החיוני בדוגמה הזו לסגנון עיצוב הפנים יישום:

  • FaceStylizationHelper.kt: מפעיל את מעצב הפנים ומטפל בבחירת המודל והענקת הגישה.
  • MainActivity.kt: מספקת תוצאות ופלט ומטפל בשגיאות, אם קיימות.

הגדרה

בקטע הזה מתוארים השלבים העיקריים להגדרת סביבת הפיתוח פרויקטים של קוד שישמש במיוחד לשימוש בסטייליזור פנים. למידע כללי על להגדיר את סביבת הפיתוח לשימוש במשימות של MediaPipe, כולל הדרישות לגרסאות הפלטפורמה זמינות במדריך ההגדרה עבור ב-Android.

יחסי תלות

במשימה של 'עיצוב פנים' נעשה שימוש בספרייה com.google.mediapipe:tasks-vision. הוסף תלות זו בקובץ build.gradle של האפליקציה ל-Android:

dependencies {
    implementation 'com.google.mediapipe:tasks-vision:latest.release'
}

דגם

למשימה של MediaPipe עיצוב פנים נדרשת חבילת מודלים שעברו הכשרה מתאימה, שתואמת במשימה הזאת. לקבלת מידע נוסף על מודלים זמינים שעברו אימון לעיצוב פנים, ראו את הקטע 'מודלים' בסקירה הכללית על המשימה.

בוחרים את המודל, מורידים אותו ושומרים אותו בספריית הפרויקט:

<dev-project-root>/src/main/assets

צריך לציין את הנתיב של המודל בתוך הפרמטר ModelAssetPath.

val modelName = "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task"
baseOptionsBuilder.setModelAssetPath(modelName)

יצירת המשימה

במשימה של MediaPipe Face Stylizer משתמש בפונקציה createFromOptions() כדי להגדיר למשימה הזו. הפונקציה createFromOptions() מקבלת ערכים להגדרה אפשרויות. למידע נוסף על אפשרויות ההגדרה, ראו הגדרות אישיות הפרמטר הזה.

val baseOptionsBuilder = BaseOptions.builder().setModelAssetPath(modelName)
val baseOptions = baseOptionBuilder.build()

val optionsBuilder =
    FaceStylizer.FaceStylizerOptions.builder()
        .setBaseOptions(baseOptionsBuilder.build())

val options = optionsBuilder.build()

FaceStylizer =
    FaceStylizer.createFromOptions(context, options)

אפשרויות תצורה

המשימה הזו כוללת את אפשרויות ההגדרה הבאות לאפליקציות ל-Android:

שם האפשרות תיאור טווח ערכים ערך ברירת מחדל
errorListener הגדרת האזנה לשגיאות אופציונלית. N/A Not set

הכנת נתונים

התכונה 'עיצוב פנים' פועלת עם תמונות סטילס. המשימה מטפלת בקלט הנתונים לפני עיבוד, כולל שינוי גודל, סיבוב ונירמול ערכים. הקוד הבא מדגים איך להעביר נתונים לצורך עיבוד.

import com.google.mediapipe.framework.image.BitmapImageBuilder
import com.google.mediapipe.framework.image.MPImage

// Convert the input Bitmap object to an MPImage object to run inference
val mpImage = BitmapImageBuilder(image).build()

הרצת המשימה

כדי להריץ את הכלי לעיצוב, משתמשים בשיטה FaceStylizer.stylize() בתמונת הקלט:

val result = FaceStylizer.stylize(mpImage)

טיפול בתוצאות והצגתן

הכלי לעיצוב פנים מחזיר אובייקט FaceStylizerResult, שמכיל אובייקט MPImage עם עיצוב של הפנים הבולטות ביותר בקלט תמונה.

בדוגמה הבאה אפשר לראות את נתוני הפלט מהמשימה:

הפלט שלמעלה נוצר על ידי החלת שרטוט הצבעים של התמונה לקלט הבא: