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

דוגמאות זו לצד זו של תמונת תקריב של גבר לצד מסכת התמונה שמציגה את קווי המתאר של הגבר

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

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

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

רוצים לנסות?

תחילת העבודה

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

פרטי המשימה

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

תכונות

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

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

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

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

IMAGE: המצב להזנת תמונה אחת.

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

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. אפשר להשתמש בה רק כשמצב ההפעלה מוגדר כ-LIVE_STREAM לא רלוונטי לא רלוונטי

דגמים

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

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

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

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

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

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

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

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

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

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

מודל DeepLab-v3

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

שם דגם צורת הקלט סוג הקידוד גרסאות
DeepLab-V3 257 x 257 None‏ (float32) חדש

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

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

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