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

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

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

קוד לדוגמה

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

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

מורידים את הקוד

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

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

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

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

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

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

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

הגדרה

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

יחסי תלות

המשימה Face Stylizer משתמשת בספרייה com.google.mediapipe:tasks-vision. מוסיפים את יחסי התלות האלה לקובץ build.gradle של אפליקציית Android:

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

דגם

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

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

<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)

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

הפונקציה Face Stylizer מחזירה אובייקט FaceStylizerResult שמכיל אובייקט MPImage עם סגנון של הפנים הבולטים ביותר בתמונה שהוזנה.

בהמשך מוצגת דוגמה לנתוני הפלט של המשימה הזו:

תקריב שנוצר של אישה שצוירה בסגנון סקיצה בעיפרון ובסמן.

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

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