המשימה 'מסווג תמונות של MediaPipe' מאפשרת לכם לבצע סיווג של תמונות. אפשר להשתמש במשימה הזאת כדי להבין מה תמונה מייצגת בקבוצה של קטגוריות מוגדרות בזמן האימון. ההוראות הבאות מראות איך להשתמש במסווג התמונות לאפליקציות Node ולאפליקציות אינטרנט.
אפשר לראות את המשימה הזו בפעולה: demo. מידע נוסף על היכולות, המודלים ואפשרויות ההגדרה במשימה הזאת, ראו סקירה כללית.
קוד לדוגמה
הקוד לדוגמה של מסווג התמונות מספק הטמעה מלאה של ב-JavaScript לעיונך. הקוד הזה עוזר לכם לבדוק את המשימה הזו מתחילים לפתח אפליקציה משלכם לסיווג תמונות. אפשר להציג, להריץ ו לערוך את קוד לדוגמה למסווג תמונות באמצעות דפדפן האינטרנט בלבד.
הגדרה
בקטע הזה מתוארים השלבים העיקריים להגדרת סביבת הפיתוח פרויקטים של קוד במיוחד לשימוש במסווג תמונות. למידע כללי על להגדיר את סביבת הפיתוח לשימוש במשימות של MediaPipe, כולל הדרישות לגרסת הפלטפורמה. מדריך ההגדרה לאינטרנט.
חבילות JavaScript
הקוד של מסווג התמונות זמין דרך MediaPipe @mediapipe/tasks-vision
חבילת NPM. אפשר
למצוא ולהוריד את הספריות האלה מקישורים שכלולים בפלטפורמה
מדריך ההגדרה.
ניתן להתקין את החבילות הנדרשות עם הקוד הבא לצורך Staging מקומי באמצעות הפקודה הבאה:
npm install @mediapipe/tasks-vision
אם רוצים לייבא את קוד המשימה דרך רשת להעברת תוכן (CDN) מוסיפים את הקוד הבא לתג בקובץ ה-HTML:
<!-- You can replace JSDeliver with another CDN if you prefer to -->
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.js"
crossorigin="anonymous"></script>
</head>
דגם
למשימה של מסווג תמונות של MediaPipe נדרש מודל מאומן התואם למשימה הזו. מידע נוסף על מודלים זמינים מאומנים של מסווג תמונות זמין בכתובת בסקירה הכללית על המשימה בקטע 'מודלים'.
בוחרים מודל ומורידים אותו, ולאחר מכן מאחסנים אותו בספריית הפרויקט:
<dev-project-root>/app/shared/models/
יצירת המשימה
אפשר להשתמש באחת מהפונקציות createFrom...()
של מסווג התמונות כדי
להכין את המשימה להפעלת ההסקה. שימוש בcreateFromModelPath()
בפונקציה עם נתיב יחסי או מוחלט לקובץ המודל שעבר אימון.
אם המודל כבר נטען לזיכרון, אפשר להשתמש
אמצעי תשלום אחד (createFromModelBuffer()
).
הקוד לדוגמה שלמטה מדגים את השימוש בפונקציה createFromOptions()
כדי:
נגדיר את המשימה. הפונקציה createFromOptions
מאפשרת להתאים אישית
מסווג תמונות עם אפשרויות הגדרה. מידע נוסף על הגדרות אישיות
אפשרויות נוספות, ראו אפשרויות הגדרה.
הקוד הבא מדגים איך יוצרים ומגדירים משימה באמצעות פרמטרים מותאמים אישית אפשרויות:
async function createImageClassifier {
const vision = await FilesetResolver.forVisionTasks(
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.0/wasm"
);
imageClassifier = await ImageClassifier.createFromOptions(vision, {
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite0/float32/1/efficientnet_lite0.tflite`
},
});
}
אפשרויות תצורה
המשימה הזו כוללת את אפשרויות ההגדרה הבאות לאפליקציות אינטרנט:
שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל |
---|---|---|---|
runningMode |
מגדיר את מצב הריצה של המשימה. יש שתי פלטפורמות
מצבים: IMAGE: המצב לקלט של תמונה יחידה. סרטון: המצב עבור פריימים מפוענחים בסרטון או בשידור חי של נתוני קלט, למשל ממצלמה. |
{IMAGE, VIDEO } |
IMAGE |
displayNamesLocale |
מגדיר את השפה של תוויות שישמשו לשמות לתצוגה שסופקו
של מודל המשימה, אם יש כאלה. ברירת המחדל היא en עבור
אנגלית. אפשר להוסיף תוויות שמותאמות לשוק המקומי למטא-נתונים של מודל מותאם אישית
באמצעות TensorFlow Lite Metadata Writer API |
קוד שפה | en |
maxResults |
מגדיר את המספר המקסימלי האופציונלי של תוצאות סיווג מובילות ל- החזרה. אם < 0, כל התוצאות הזמינות יוחזרו. | מספרים חיוביים כלשהם | -1 |
scoreThreshold |
הגדרת סף הציון של התחזית שמבטל את הסף שצוין ב את המטא-נתונים של המודל (אם יש). תוצאות מתחת לערך הזה נדחות. | כל מספר ממשי (float) | לא מוגדר |
categoryAllowlist |
מגדיר את הרשימה האופציונלית של שמות קטגוריות מותרות. אם השדה לא ריק,
תוצאות הסיווג שבהן שם הקטגוריה לא נמצא בקבוצה הזו יהיו
מסונן. המערכת מתעלמת משמות קטגוריות כפולים או לא ידועים.
האפשרות הזו בלעדית למשתמשי categoryDenylist ומשתמשים
ושניהם יובילו לשגיאה. |
כל מחרוזת | לא מוגדר |
categoryDenylist |
מגדיר את הרשימה האופציונלית של שמות קטגוריות שאינם מותרים. אם המיקום
לא ריקות, תוצאות סיווג שבהן שם הקטגוריה נמצא בקבוצה זו יסוננו
החוצה. המערכת מתעלמת משמות קטגוריות כפולים או לא ידועים. האפשרות הזו מקבילה
בלעדי ל-categoryAllowlist ושימוש בשתי התוצאות עלול לגרום לשגיאה. |
כל מחרוזת | לא מוגדר |
resultListener |
מגדיר את אוזן התוצאות לקבל את תוצאות הסיווג
באופן אסינכרוני כש'סיווג התמונות' נמצא בשידור החי
במצב תצוגה. אפשר להשתמש באפשרות הזו רק כשמצב הריצה מוגדר ל-LIVE_STREAM |
לא רלוונטי | לא מוגדר |
הכנת נתונים
מסווג תמונות יכול לסווג אובייקטים בתמונות בכל פורמט שנתמך על ידי הדפדפן המארח. המשימה מטפלת גם בעיבוד מראש של קלט נתונים, כולל שינוי גודל, רוטציה ונירמול ערכים.
פועלות קריאות לשיטת סיווג התמונות classify()
ו-classifyForVideo()
באופן סינכרוני ולחסום את ה-thread של ממשק המשתמש. אם תסווגו אובייקטים ב:
פריימים של וידאו מהמצלמה של המכשיר, כל סיווג יחסום את
של שרשור. כדי למנוע זאת, תוכלו להטמיע עובדי אינטרנט ולהפעיל אותם
classify()
וגם classifyForVideo()
בשרשור אחר.
הרצת המשימה
מסווג התמונות משתמש בשיטה classify()
במצב תמונה ו
ה-method classifyForVideo()
עם מצב video
כדי להפעיל
מסקנות. Image Classifier API יחזיר את הקטגוריות האפשריות
לאובייקטים בתמונת הקלט.
הקוד הבא מדגים איך מבצעים את העיבוד באמצעות מודל המשימה:
תמונה
const image = document.getElementById("image") as HTMLImageElement; const imageClassifierResult = imageClassifier.classify(image);
וידאו
const video = document.getElementById("video"); await imageClassifier.setOptions({ runningMode: "VIDEO" }); const timestamp = performance.now(); const classificationResult = await imageClassifier.classifyForVideo( video, timestamp );
יישום מלא יותר של הרצת משימה של מסווג תמונות זמין במאמר קוד לדוגמה).
טיפול בתוצאות והצגתן
כשמריצים את ההסקה, המשימה 'מסווג תמונות' מחזירה
אובייקט ImageClassifierResult
שמכיל את רשימת הקטגוריות האפשריות
לאובייקטים בתמונה או במסגרת הקלט.
בדוגמה הבאה אפשר לראות את נתוני הפלט מהמשימה:
ImageClassifierResult:
Classifications #0 (single classification head):
head index: 0
category #0:
category name: "/m/01bwb9"
display name: "Passer domesticus"
score: 0.91406
index: 671
category #1:
category name: "/m/01bwbt"
display name: "Passer montanus"
score: 0.00391
index: 670
התוצאה הזו התקבלה באמצעות הפעלה של Bird Classifier ב:
הקוד לדוגמה של מסווג התמונות מדגים איך להציג את הסיווג של התוצאות שהוחזרו מהמשימה, קוד לדוגמה לקבלת פרטים.