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

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

כדאי לנסות!

מתחילים

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

פרטי המשימה

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

תכונות

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

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

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

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

IMAGE: המצב שבו ניתן להזין תמונה יחידה.

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

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

דגמים

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

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

שם הדגם צורת הקלט סוג הכמות גרסאות
EfficientNet-Lite0 (int8) 224 x 224 int8 האחרון
EfficientNet-Lite0 (float 32) 224 x 224 ללא (float32) האחרון

מודל EfficientNet-Lite2

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

שם הדגם צורת הקלט סוג הכמות גרסאות
EfficientNet-Lite2 (int8) 224 x 224 int8 האחרון
EfficientNet-Lite2 (float 32) 224 x 224 ללא (float32) האחרון

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

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

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

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

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

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