מדריך למשימה של הטמעת תמונות

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

כדאי לנסות!

מתחילים

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

פרטי המשימה

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

תכונות

  • עיבוד תמונות קלט – העיבוד כולל סיבוב תמונות, שינוי גודל, נירמול והמרת מרחב צבעים.
  • אזור עניין – הטמעה על אזור של התמונה במקום על התמונה כולה.
  • הטמעת חישוב דמיון – פונקציית תועלת מובנית לחישוב דמיון קוסינוס בין שני וקטורים של תכונות
  • קביעת כמות – תומכת בקוונטיזציה סקלרית עבור הווקטורים של התכונות.
קלט למשימות פלט המשימות
הקלט יכול להיות אחד מסוגי הנתונים הבאים:
  • תמונות סטילס
  • פריימים של וידאו מפוענחים
  • פיד של וידאו בשידור חי
כלי הטמעת התמונות יוצר רשימת הטמעות שכוללת:
  • הטמעה: הווקטור של התכונה עצמו, בצורה של נקודה צפה (floating-point) או בפורמט סקלרי.
  • אינדקס ראש: האינדקס של הראש שהפיק את ההטמעה הזו.
  • שם הראש (אופציונלי): שם הראש שהפיק את ההטמעה הזו.

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

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

שם האפשרות תיאור טווח ערכים ערך ברירת מחדל
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 אלפיות השנייה