מדריך למשימות לסיווג תמונות

בעל חיים שסומן כפלמינגו בצורה נכונה עם דירוג ביטחון של 95%

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

רוצים לנסות?

תחילת העבודה

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

פרטי המשימה

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

תכונות

  • עיבוד תמונות קלט – העיבוד כולל סיבוב תמונות, שינוי גודל, נורמליזציה והמרה של מרחב צבעים.
  • אזור עניין – ביצוע סיווג באזור מסוים בתמונה במקום בתמונה כולה.
  • לוקאל של מפה עם תוויות – הגדרת השפה שבה יוצגו שמות התצוגה.
  • סף ניקוד – סינון התוצאות על סמך ציונים של תחזיות.
  • סיווג Top-k – הגבלת מספר תוצאות הסיווג.
  • תיוג של רשימת ההיתרים ורשימת הדחייה – מציינים את הקטגוריות שסווגו.
קלט של משימות פלט של משימות
הקלט יכול להיות אחד מסוגי הנתונים הבאים:
  • תמונות סטילס
  • פריימים של וידאו שעבר פענוח
  • פיד וידאו בשידור חי
מערכת סיווג התמונות מניבה רשימה של קטגוריות שמכילות:
  • אינדקס הקטגוריה: האינדקס של הקטגוריה בפלט של המודל
  • ציון: ציון האמינות של הקטגוריה הזו, בדרך כלל הסתברות בטווח [0,1]
  • שם הקטגוריה (אופציונלי): שם הקטגוריה כפי שצוין במטא-נתונים של מודל TFLite, אם הוא זמין
  • השם המוצג של הקטגוריה (אופציונלי): השם המוצג של הקטגוריה כפי שצוין במטא-נתונים של מודל TFLite, בשפה שצוינה באמצעות אפשרויות האזור של השמות המוצגים, אם הן זמינות

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

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

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

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

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

LIVE_STREAM: המצב של סטרימינג בשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, צריך להפעיל את resultListener כדי להגדיר מאזין שיקבל את התוצאות באופן אסינכרוני.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names_locale הגדרת השפה של התוויות לשימוש בשמות התצוגה שסופקו במטא-נתונים של מודל המשימה, אם הם זמינים. ברירת המחדל היא en לאנגלית. אפשר להוסיף תוויות מותאמות לשוק המקומי למטא-נתונים של מודל מותאם אישית באמצעות TensorFlow Lite Metadata Writer API קוד לוקאל en
max_results מגדיר את המספר המקסימלי האופציונלי של תוצאות הסיווג עם הדירוג הגבוה ביותר שיוחזר. אם הערך < 0, כל התוצאות הזמינות יחזרו. מספרים חיוביים -1
score_threshold הגדרת הסף של ציון התחזית, שמבטל את הסף שצוין במטא-נתונים של המודל (אם קיים). תוצאות מתחת לערך הזה נדחות. כל ערך צף לא מוגדר
category_allowlist הגדרת רשימה אופציונלית של שמות קטגוריות מותרים. אם הערך לא ריק, תוצאות הסיווג ששם הקטגוריה שלהן לא נמצא בקבוצה הזו יוחרגו מהסינון. המערכת מתעלמת משמות קטגוריות כפולים או לא מוכרים. האפשרות הזו לא תואמת לאפשרות category_denylist, ושימוש בשתיהן גורם לשגיאה. מחרוזות כלשהן לא מוגדר
category_denylist הגדרת רשימה אופציונלית של שמות קטגוריות אסורים. אם הערך לא ריק, תוצאות הסיווג ששם הקטגוריה שלהן נמצא בקבוצה הזו יוסר. המערכת מתעלמת משמות קטגוריות כפולים או לא מוכרים. האפשרות הזו לא תואמת לאפשרות category_allowlist, ושימוש בשתיהן גורם לשגיאה. מחרוזות כלשהן לא מוגדר
result_callback מגדיר את מאזין התוצאות לקבל את תוצאות הסיווג באופן אסינכרוני כש-Image Classifier נמצא במצב של שידור חי. אפשר להשתמש בה רק כשמצב ההפעלה מוגדר כ-LIVE_STREAM לא רלוונטי לא מוגדר

דגמים

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

המודל EfficientNet-Lite0 מבוסס על ארכיטקטורת EfficientNet, והוא אומן באמצעות ImageNet כדי לזהות 1,000 סוגים, כמו עצים, בעלי חיים, מזון, כלי רכב, אנשים וכו'. כאן אפשר לראות את הרשימה המלאה של התוויות הנתמכות. EfficientNet-Lite0 זמין בתור מודל int8 ו-float 32. מומלץ להשתמש במודל הזה כי הוא יוצר איזון בין זמן האחזור לבין הדיוק. הוא מדויק וקל מספיק לשימוש במגוון תרחישים.

שם דגם צורת הקלט סוג הקידוד גרסאות
EfficientNet-Lite0‏ (int8) 224 X 224 int8 חדש
EfficientNet-Lite0‏ (float 32) 224 X 224 None‏ (float32) חדש

מודל EfficientNet-Lite2

המודל EfficientNet-Lite2 מבוסס על ארכיטקטורת EfficientNet, והוא אומן באמצעות ImageNet כדי לזהות 1,000 סיווגים, כמו עצים, בעלי חיים, אוכל, כלי רכב, אנשים וכו'. כאן אפשר לראות את הרשימה המלאה של התווית הנתמכות. EfficientNet-Lite2 זמין כמודל int8 ו-float 32. המודל הזה בדרך כלל מדויק יותר מ-EfficientNet-Lite0, אבל הוא גם איטי יותר ומשתמש בזיכרון רב יותר. המודל הזה מתאים לתרחישי שימוש שבהם הדיוק הוא בעדיפות גבוהה יותר מהמהירות או מהגודל.

שם דגם צורת הקלט סוג הקידוד גרסאות
EfficientNet-Lite2‏ (int8) 224 X 224 int8 חדש
EfficientNet-Lite2‏ (float 32) 224 X 224 None‏ (float32) חדש

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

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

שם דגם זמן האחזור של המעבד (CPU) זמן אחזור של GPU
EfficientNet-Lite0‏ (float 32) 23.52 אלפיות השנייה 18.90 אלפיות השנייה
EfficientNet-Lite0‏ (int8) 10.08 אלפיות השנייה -
EfficientNet-Lite2‏ (float 32) 44.17 אלפיות השנייה 22.20 אלפיות השנייה
EfficientNet-Lite2‏ (int8) 19.43 אלפיות השנייה -

מודלים מותאמים אישית

אם אתם רוצים לשפר או לשנות את היכולות של המודלים שסופקו, תוכלו להשתמש במשימה הזו עם מודל למידת מכונה בהתאמה אישית. אפשר להשתמש ב-Model Maker כדי לשנות את המודלים הקיימים או ליצור מודל באמצעות כלים כמו TensorFlow. מודלים מותאמים אישית שנעשה בהם שימוש ב-MediaPipe חייבים להיות בפורמט TensorFlow Lite ולכלול metadata ספציפיים שמתארים את הפרמטרים התפעוליים של המודל. מומלץ להשתמש ב-Model Maker כדי לשנות את המודלים שסופקו למשימה הזו לפני שיוצרים מודל משלכם.

אם אתם רוצים ליצור סיווג תמונות בהתאמה אישית באמצעות מערך הנתונים שלכם, כדאי להתחיל במדריך בנושא התאמה אישית של סיווג תמונות.