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

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

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

רוצים לנסות?

תחילת העבודה

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

פרטי המשימה

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

תכונות

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

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

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

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

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

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

LIVE_STREAM: המצב של סטרימינג בשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, צריך להפעיל את resultListener כדי להגדיר מאזין שיקבל את התוצאות באופן אסינכרוני.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
l2_normalize האם לבצע נורמליזציה של וקטור המאפיינים המוחזר באמצעות נורמלי L2. משתמשים באפשרות הזו רק אם המודל כבר לא מכיל פונקציית L2_NORMALIZATION מקורית של TFLite. ברוב המקרים, המצב הזה כבר קיים, ולכן נורמליזציה של L2 מתבצעת באמצעות היסק של TFLite ללא צורך באפשרות הזו. Boolean False
quantize האם להפוך את הטמעת הנתונים שחוזרת לבייטים באמצעות ‎scalar quantization. ההנחה לגבי הטמעות היא שהן נורמליות ליחידה, ולכן לכל מאפיין מובטח ערך בטווח [-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 None‏ (float32) חדש
MobileNet-V3 (גדול) 224 X 224 None‏ (float32) חדש

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

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

שם דגם זמן האחזור של המעבד (CPU) זמן אחזור של GPU
MobileNet-V3‏ (קטן) 3.94 אלפיות השנייה 7.83 אלפיות השנייה
MobileNet-V3‏ (גדול) 9.75 אלפיות השנייה 9.08 אלפיות השנייה