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