המשימה 'הטמעת תמונות MediaPipe' מאפשרת ליצור ייצוג מספרי של תמונה, שיכול לעזור בביצוע משימות תמונה שונות שמבוססות על למידת מכונה. הפונקציונליות הזו משמשת לעיתים קרובות לצורך השוואת הדמיון בין שתי תמונות באמצעות טכניקות השוואה מתמטיות, כמו דמיון קוסינוס. המשימה פועלת על נתוני תמונה עם מודל של למידת מכונה (ML) כנתונים סטטיים או כזרם רציף, ומפיקה ייצוג מספרי של נתוני התמונה כרשימה של וקטורים ממדיים גבוהים, שנקראים גם וקטורים של הטמעה, בצורה של נקודה צפה או קוונטית.
מתחילים
כדי להתחיל להשתמש במשימה הזו, כדאי לפעול לפי אחד ממדריכי ההטמעה האלה בהתאם לפלטפורמת היעד. במדריכים הבאים שספציפיים לפלטפורמה תמצאו הדרכה מפורטת על המשימה הזו, תוך שימוש במודל מומלץ, ודוגמאות לקוד עם אפשרויות ההגדרה המומלצות:
- Android – דוגמה לקוד – מדריך
- Python – דוגמה לקוד – מדריך
- אינטרנט - דוגמה לקוד – מדריך
פרטי המשימה
בקטע הזה מתוארות היכולות, הקלט, הפלט ואפשרויות ההגדרה של המשימה הזו.
תכונות
- עיבוד תמונות קלט – העיבוד כולל סיבוב תמונות, שינוי גודל, נירמול והמרת מרחב צבעים.
- אזור עניין – הטמעה על אזור של התמונה במקום על התמונה כולה.
- הטמעת חישוב דמיון – פונקציית תועלת מובנית לחישוב דמיון קוסינוס בין שני וקטורים של תכונות
- קביעת כמות – תומכת בקוונטיזציה סקלרית עבור הווקטורים של התכונות.
קלט למשימות | פלט המשימות |
---|---|
הקלט יכול להיות אחד מסוגי הנתונים הבאים:
|
כלי הטמעת התמונות יוצר רשימת הטמעות שכוללת:
|
אפשרויות של הגדרות אישיות
במשימה הזאת קיימות אפשרויות ההגדרה הבאות:
שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל |
---|---|---|---|
running_mode |
מגדיר את מצב הריצה של המשימה. יש שלושה
מצבים: IMAGE: המצב שבו ניתן להזין תמונה יחידה. וידאו: המצב של פריימים מפוענחים של סרטון. LIVE_STREAM: המצב עבור סטרימינג בשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, יש להפעיל את resultListener כדי להגדיר מאזין לקבלת תוצאות באופן אסינכרוני. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
l2_normalize |
האם לנרמל את וקטור התכונה שמוחזר עם נורמת L2. יש להשתמש באפשרות הזו רק אם המודל עדיין לא מכיל L2_NORMALIZATION TFLite Op. . ברוב המקרים, זה כבר המצב, וכתוצאה מכך מתקבל מסקנות של TFLite, ללא צורך באפשרות הזו. | Boolean |
False |
quantize |
האם יש לכמת את ההטמעה שמוחזרת לבייטים באמצעות קוונטיזציה סקלרית. ההנחה היא שההטמעות הן נורמת יחידה, ולכן לכל מאפיין מובטח שיהיה ערך [ -1.0, 1.0]. אם זה לא המצב, מומלץ להשתמש באפשרות l2_Normalize. | Boolean |
False |
result_callback |
מגדיר את מאזין התוצאות לקבל את תוצאות ההטמעה באופן אסינכרוני כאשר הטמעת התמונות נמצאת במצב 'שידור חי'. אפשר להשתמש רק כשמצב ריצה מוגדר ל-LIVE_STREAM |
לא רלוונטי | לא הוגדרה |
דגמים
כדי להטמיע את התכונה 'הטמעת תמונות', צריך להוריד מודל של הטמעת תמונות ולשמור אותו בספריית הפרויקט. כשתתחילו לפתח עם המשימה הזו, התחילו עם מודל ברירת המחדל המומלץ לפלטפורמת היעד שלכם. המודלים הזמינים האחרים בדרך כלל מביאים להתאמות בין דרישות הביצועים, הדיוק, הפתרון והמשאבים, ובמקרים מסוימים הם כוללים תכונות נוספות.
מודל MobileNetV3
משפחת המודלים הזו משתמשת בארכיטקטורה של MobileNet V3 ואומנה באמצעות נתוני ImageNet. במודל הזה נעשה שימוש במכפיל של 0.75 לעומק (מספר התכונות) בשכבות המתכווננות כדי לכוונן את זמן האחזור של הדיוק. בנוסף, MobileNet V3 מגיע בשני גדלים שונים, קטנים וגדולים, כדי להתאים את הרשת לתרחישים לדוגמה של שימוש במשאבים נמוכים או גבוהים.
שם הדגם | צורת הקלט | סוג הכמות | גרסאות |
---|---|---|---|
MobileNet-V3 (קטן) | 224 x 224 | ללא (float32) | האחרון |
MobileNet-V3 (large) (גדול) | 224 x 224 | ללא (float32) | האחרון |
נקודות השוואה למשימות
אלה נקודות ההשוואה למשימות לגבי כל צינור עיבוד הנתונים, בהתבסס על המודלים שהוכשרו מראש למעלה. זמן האחזור הוא זמן האחזור הממוצע ב-Pixel 6 כשמשתמשים במעבד (CPU) או ב-GPU.
שם דגם | זמן אחזור של המעבד (CPU) | זמן אחזור של GPU |
---|---|---|
MobileNet-V3 (קטן) | 3.94 אלפיות השנייה | 7.83 אלפיות השנייה |
MobileNet-V3 (large) | 9.75 אלפיות השנייה | 9.08 אלפיות השנייה |