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