המשימה 'פילוח תמונות ב-MediaPipe' מאפשרת לכם לחלק תמונות לאזורים על סמך קטגוריות מוגדרות מראש. אפשר להשתמש בפונקציונליות הזו כדי לזהות אובייקטים או מרקמים ספציפיים, ואז להחיל אפקטים חזותיים כמו טשטוש רקע. המשימה הזו כוללת כמה מודלים שהותאמו במיוחד לצורך פילוח של אנשים ותכונות שלהם בנתוני תמונות, כולל:
- אדם ורקע
- שיער של אדם בלבד
- השיער, הפנים, העור, הבגדים והאביזרים של האדם
המשימה הזו פועלת על נתוני תמונות באמצעות מודל למידת מכונה (ML) עם תמונות בודדות או עם שידור וידאו רציף. הפונקציה מניבה רשימה של אזורים מחולקים, שמייצגים אובייקטים או אזורים בתמונה, בהתאם למודל שבחרתם.
תחילת העבודה
כדי להתחיל להשתמש במשימה הזו, פועלים לפי אחד מהמדריכים הבאים להטמעה בפלטפורמת היעד. המדריכים הספציפיים לפלטפורמות האלה כוללים הנחיות להטמעה בסיסית של המשימה הזו, כולל מודל מומלץ ודוגמת קוד עם אפשרויות ההגדרה המומלצות:
- Android – דוגמה לקוד – מדריך
- Python – קוד לדוגמה מדריך
- אינטרנט – דוגמה לקוד – מדריך
פרטי המשימה
בקטע הזה מוסבר על היכולות, הקלט, הפלט והאפשרויות להגדרה של המשימה הזו.
תכונות
- עיבוד תמונות קלט – העיבוד כולל סיבוב תמונות, שינוי גודל, נורמליזציה והמרה של מרחב צבעים.
קלט של משימות | פלט של משימות |
---|---|
הקלט יכול להיות אחד מסוגי הנתונים הבאים:
|
כלי פילוח התמונות מניב נתוני תמונות מפלחים, שיכולים לכלול אחד או שניהם מהפריטים הבאים, בהתאם לאפשרויות התצורה שהגדרתם:
|
אפשרויות הגדרה
למשימה הזו יש את אפשרויות ההגדרה הבאות:
שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל |
---|---|---|---|
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 |