מדריך לפילוח תמונות

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

  • אדם ורקע
  • שיער של אדם בלבד
  • השיער, הפנים, העור, הביגוד והאביזרים של האדם

המשימה פועלת על נתוני תמונה עם מודל למידת מכונה (ML) עם תמונות בודדות או זרם וידאו רציף. הפונקציה יוצרת פלט של רשימה של אזורים מפולחים שמייצגים אובייקטים או אזורים בתמונה, בהתאם לmodel שבחרתם.

כדאי לנסות!

מתחילים

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

פרטי המשימה

בקטע הזה מתוארות היכולות, הקלט, הפלט ואפשרויות ההגדרה של המשימה הזו.

תכונות

  • עיבוד תמונות קלט – העיבוד כולל סיבוב תמונות, שינוי גודל, נירמול והמרת מרחב צבעים.
קלט למשימות פלט המשימות
הקלט יכול להיות אחד מסוגי הנתונים הבאים:
  • תמונות סטילס
  • פריימים של וידאו מפוענחים
  • פיד של וידאו בשידור חי
פילוחי התמונות הם פלט של נתוני תמונות מפולחים, שיכולים לכלול אחת מהאפשרויות הבאות או את שתיהן, בהתאם לאפשרויות ההגדרה שקבעתם:
  • CATEGORY_MASK: רשימה שמכילה מסכה מפולחת כתמונה בפורמט uint8. כל ערך פיקסל מציין אם הוא חלק מקטגוריית פלח ספציפית שנתמכת על ידי המודל.
  • CONFIDENCE_MASK: רשימה של ערוצים שמכילים מסכה מפולחת עם ערכי פיקסלים בפורמט float32. כל ערך פיקסל מציין את רמת הביטחון שהוא חלק מקטגוריה ספציפית שנתמכת על ידי המודל.

אפשרויות של הגדרות אישיות

במשימה הזאת קיימות אפשרויות ההגדרה הבאות:

שם האפשרות תיאור טווח ערכים ערך ברירת מחדל
running_mode מגדיר את מצב הריצה של המשימה. יש שלושה מצבים:

IMAGE: המצב שבו ניתן להזין תמונה יחידה.

וידאו: המצב של פריימים מפוענחים של סרטון.

LIVE_STREAM: המצב עבור סטרימינג בשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, יש להפעיל את resultListener כדי להגדיר מאזין לקבלת תוצאות באופן אסינכרוני.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask אם המדיניות מוגדרת כ-True, הפלט כולל מסכת פילוח כתמונה של Uint8, וכל ערך של פיקסל מציין את ערך הקטגוריה המנצחת. {True, False} False
output_confidence_masks אם היא מוגדרת כ-True, הפלט כולל מסכת פילוח כתמונה של ערך צף, שבה כל ערך צף מייצג את מפת ציון המהימנות של הקטגוריה. {True, False} True
display_names_locale ההגדרה הזו מגדירה את השפה של התוויות שישמשו לשמות תצוגה שנמסרים במטא-נתונים של מודל המשימה, אם יש כאלה. ברירת המחדל היא en עבור אנגלית. אפשר להוסיף תוויות שהותאמו לשוק המקומי למטא-נתונים של מודל מותאם אישית באמצעות TensorFlow Lite Metadata Writer API קוד הלוקאל en
result_callback מגדיר את הכלי להאזנה לתוצאות כך שיקבל את תוצאות הפילוח באופן אסינכרוני כאשר מפלח התמונות נמצא במצב שידור חי. אפשר להשתמש רק כשמצב ריצה מוגדר ל-LIVE_STREAM לא רלוונטי לא רלוונטי

דגמים

אפשר להשתמש ב'פלח התמונות' עם יותר ממודל אחד של למידת מכונה. רוב המודלים הבאים של פילוח נוצרים ואומנו לביצוע פילוח עם תמונות של אנשים. עם זאת, המודל DeepLab-v3 בנוי כמפלח תמונות לשימוש כללי. בחירת המודל המתאים ביותר לאפליקציה שלכם.

מודל לפילוח תמונת סלפי

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

שם הדגם צורת הקלט סוג הכמות כרטיס דגם גרסאות
SelfieSegmenter (ריבוע) 256 x 256 מספר ממשי (float) 16 מידע האחרון
מקטע סלפי (לרוחב) 144 x 256 מספר ממשי (float) 16 מידע האחרון

מודל לפילוח שיער

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

0 - background
1 - hair
שם הדגם צורת הקלט סוג הכמות כרטיס דגם גרסאות
HairSegmenter 512 x 512 ללא (float32) מידע האחרון

מודל לפילוח תמונות סלפי בכמה סיווגים

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

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
שם הדגם צורת הקלט סוג הכמות כרטיס דגם גרסאות
SelfieMulticlass (256 x 256) 256 x 256 ללא (float32) מידע האחרון

מודל DeepLab-v3

המודל הזה מזהה פלחים לפי מספר קטגוריות, כולל רקע, אדם, חתול, כלב ועציץ. במודל נעשה שימוש במאגר פירמידה מרחבית, כדי לאסוף מידע מטווח ארוך יותר. למידע נוסף, ראו DeepLab-v3.

שם הדגם צורת הקלט סוג הכמות גרסאות
DeepLab-V3 257 x 257 ללא (float32) האחרון

נקודות השוואה למשימות

אלה נקודות ההשוואה למשימות שחלות על כל צינור עיבוד הנתונים, בהתבסס על המודלים הקודמים שאומנו מראש. תוצאת זמן האחזור היא זמן האחזור הממוצע ב-Pixel 6 כשמשתמשים במעבד (CPU) או ב-GPU.

שם דגם זמן אחזור של המעבד (CPU) זמן אחזור של GPU
פלח תמונות סלפי (ריבוע) 33.46 אלפיות השנייה 35.15 אלפיות השנייה
פלח סלפי (לרוחב) 34.19 אלפיות השנייה 33.55 אלפיות השנייה
HairSegmenter 57.90 אלפיות השנייה 52.14 אלפיות השנייה
SelfieMulticlass (256 x 256) 217.76 אלפיות השנייה 71.24 אלפיות השנייה
DeepLab-V3 123.93 אלפיות השנייה 103.30 אלפיות השנייה