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

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

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

קוד לדוגמה

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

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

הורדת הקוד

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

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

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

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

רכיבים עיקריים

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

הגדרה

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

יחסי תלות

המשימה 'סטיילר פנים' משתמשת בספרייה 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' משתמשת בפונקציה 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 עם עיצוב של הפנים הבולטות ביותר בתמונת הקלט.

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

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