המשימה MediaPipe Gesture Recognizer מאפשרת לזהות תנועות ידיים בזמן אמת, ומספקת את התוצאות של תנועות היד שזוהו יחד עם נקודות ציון של הידיים שזוהו. אפשר להשתמש במשימה הזו כדי לזהות תנועות ידיים ספציפיות של משתמש ולהפעיל תכונות באפליקציה שתואמות לתנועות האלה.
המשימה הזו פועלת על נתוני תמונות באמצעות מודל של למידת מכונה (ML), ומקבלת נתונים סטטיים או שידור רציף. הפלט של המשימה כולל ציוני ציון של הידיים בקואורדינטות של התמונה, ציוני ציון של הידיים בקואורדינטות עולמיות, צד היד (יד ימין/יד שמאל) וקטגוריות של תנועות ידיים של כמה ידיים.
תחילת העבודה
כדי להתחיל להשתמש במשימה הזו, פועלים לפי אחד מהמדריכים הבאים להטמעה בפלטפורמת היעד. המדריכים הספציפיים לפלטפורמות האלה כוללים הדרכה לביצוע בסיסי של המשימה הזו, באמצעות מודל מומלץ, וכן דוגמאות קוד עם אפשרויות ההגדרה המומלצות:
- Android – דוגמה לקוד
- Python – דוגמה לקוד
- אינטרנט – דוגמה לקוד – מדריך
פרטי המשימה
בקטע הזה מוסבר על היכולות, הקלט, הפלט והאפשרויות להגדרה של המשימה הזו.
תכונות
- עיבוד תמונות קלט – העיבוד כולל סיבוב תמונות, שינוי גודל, נורמליזציה והמרה של מרחב צבעים.
- סף ניקוד – סינון התוצאות על סמך ציונים של תחזיות.
- Label allowlist and denylist – מציינים את קטגוריות התנועות שהמודל מזהה.
קלט של משימות | פלט של משימות |
---|---|
הכלי לזיהוי תנועות מקבל קלט מאחד מסוגי הנתונים הבאים:
|
המערכת לזיהוי תנועות מניבה את התוצאות הבאות:
|
אפשרויות הגדרה
למשימה הזו יש את אפשרויות ההגדרה הבאות:
שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל | |
---|---|---|---|---|
running_mode |
הגדרת מצב ההפעלה של המשימה. יש שלושה מצבים: IMAGE: המצב להזנת תמונה אחת. VIDEO: המצב של פריימים מפוענחים של סרטון. LIVE_STREAM: המצב של סטרימינג בשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, צריך להפעיל את resultListener כדי להגדיר מאזין שיקבל את התוצאות באופן אסינכרוני. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
|
num_hands |
המספר המקסימלי של ידיים שאפשר לזהות באמצעות GestureRecognizer הוא 10.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
ציון האמון המינימלי שדרוש כדי שזיהוי היד ייחשב מוצלח במודל לזיהוי כף היד. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
דירוג הוודאות המינימלי של נוכחות היד במודל לזיהוי ציוני ציון של נקודות ציון בכף היד. במצב וידאו ובמצב שידור חי של זיהוי התנועות, אם ציון הוודאות לנוכחות היד ממודל ציוני הנקודות המאפיינות של היד נמוך מהסף הזה, מופעלת הפעלה של מודל זיהוי כף היד. אחרת, נעשה שימוש באלגוריתם מעקב קל אחרי הידיים כדי לקבוע את המיקום שלהן לצורך זיהוי של נקודות ציון בהמשך. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
דירוג האמון המינימלי שדרוש כדי שהמעקב אחר הידיים יחשב כהצלחה. זהו סף IoU של תיבת ההיקף בין הידיים בפריים הנוכחי לבין הפריים האחרון. במצב וידאו ובמצב סטרימינג של הכלי לזיהוי תנועות, אם המעקב נכשל, הכלי לזיהוי תנועות מפעיל זיהוי ידיים. אחרת, תהליך זיהוי היד ינוข้าม. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
אפשרויות להגדרת ההתנהגות של הסיווג של תנועות מוכנות מראש. התנועות המוגדרות מראש הן ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
אפשרויות להגדרת ההתנהגות של הסיווג של התנועות בהתאמה אישית. |
|
|
|
result_callback |
מגדיר את מאזין התוצאות לקבל את תוצאות הסיווג באופן אסינכרוני כשמתבצע זיהוי תנועות במצב של שידור חי.
אפשר להשתמש בה רק כשמצב ההפעלה מוגדר כ-LIVE_STREAM |
ResultListener |
לא רלוונטי | לא רלוונטי |
דגמים
ב-Gesture Recognizer נעשה שימוש בחבילת מודלים עם שתי חבילות מודלים מוגדרות מראש: חבילת מודלים של נקודות ציון ביד וחבילת מודלים של סיווג תנועות. מודל ציוני הדרך מזהה את נוכחות הידיים ואת הגיאומטריה שלהן, ומודל זיהוי התנועות מזהה תנועות על סמך הגיאומטריה של הידיים.
שם דגם | צורת הקלט | סוג הקידוד | כרטיס מודל | גרסאות |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | float 16 | info | חדש |
המשימה הזו תומכת גם בשינוי של חבילת המודלים באמצעות Model Maker. למידע נוסף על שימוש ב-Model Maker כדי להתאים אישית מודלים למשימה הזו, קראו את הדף התאמה אישית של מודלים לזיהוי תנועות.
חבילת מודלים של ציוני דרך ביד
חבילת המודל של ציוני הדרך ביד מזהה את המיקום של 21 נקודות ציון במפרקי האצבעות בתוך אזורי היד שזוהו. המודל אומן באמצעות כ-30,000 תמונות מהעולם האמיתי, וגם כמה מודלים סינתטיים של ידיים שהוחלו על רקעים שונים. בהמשך מופיעה ההגדרה של 21 הנקודות החשובות:
חבילת המודלים של זיהוי ציוני דרך ביד כוללת מודל לזיהוי כף היד ומודל לזיהוי ציוני דרך ביד. מודל זיהוי כף היד מאתר את האזור של הידיים מתמונת הקלט כולה, ומודל זיהוי ציוני הדרך ביד מאתר את ציוני הדרך בתמונה החתוכה של היד שמוגדרת על ידי מודל זיהוי כף היד.
מכיוון שמודל זיהוי כף היד צורך הרבה יותר זמן, במצב וידאו או במצב שידור חי, המערכת לזיהוי תנועות משתמשת בתיבת מלבנית שמוגדר על ידי נקודות ציון של היד שזוהו בפריים הנוכחי כדי לאתר את אזור הידיים בפריים הבא. כך פוחתות הפעמים שבהן הכלי לזיהוי תנועות מפעיל את מודל זיהוי כף היד. רק כשמודל הנקודות החשובות ביד לא יכול יותר לזהות מספיק נוכחות של ידיים, או כשמעקב הידיים נכשל, מופעלת מודלת זיהוי כף היד כדי למקם מחדש את הידיים.
חבילה של מודל סיווג תנועות
חבילת המודלים לסיווג תנועות יכולה לזהות את תנועות היד הנפוצות הבאות:
0 - Unrecognized gesture, label: Unknown
1 - Closed fist, label: Closed_Fist
2 - Open palm, label: Open_Palm
3 - Pointing up, label: Pointing_Up
4 - Thumbs down, label: Thumb_Down
5 - Thumbs up, label: Thumb_Up
6 - Victory, label: Victory
7 - Love, label: ILoveYou
אם המודל מזהה ידיים אבל לא מזהה תנועה, המערכת לזיהוי תנועות מחזירה את התוצאה 'None'. אם המודל לא מזהה ידיים, המערכת לזיהוי תנועות מחזירה חזרה נתונים ריקים.
חבילת מודל הסיווג של התנועות מכילה צינור עיבוד נתונים של רשת עצבית בשני שלבים, עם מודל הטמעה של תנועות ואחריו מודל סיווג של תנועות. פרטים נוספים זמינים בכרטיס של מודל הסיווג של תנועות.
מודל הטמעת התנועות מקודד את מאפייני התמונה לווקטור מאפיינים, ומודל הסיווג הוא מסַווג תנועות קל שמקבל את ווקטור המאפיינים כקלט. חבילת המודל לסיווג תנועות מכילה את הסיווג של תנועות מוגדרות מראש, שמזהה את 7 תנועות היד הנפוצות שתיארנו למעלה. כדי להרחיב את חבילת המודלים ולזהות יותר תנועות, אפשר לאמן מסווג תנועות מותאם אישית. פרטים נוספים זמינים בקטע מודלים מותאמים אישית שבהמשך.
כשמשתמשים בזיהוי תנועות עם סיווג תנועות מוכנות וסיווג תנועות בהתאמה אישית, המערכת מעדיפה את התנועה בהתאמה אישית אם שני הסיווגים מזהים את אותה תנועה בקטגוריות שלהם. אם רק סיווג תנועה אחד מזהה את ההבעה, המערכת מזהה את ההבעה ומפיקה אותה ישירות.
נקודות השוואה של משימות
בהמשך מוצגות נקודות השוואה של המשימות בצינור עיבוד הנתונים כולו, על סמך המודלים שהוכשרו מראש שלמעלה. תוצאת זמן האחזור היא זמן האחזור הממוצע ב-Pixel 6 באמצעות מעבד או יחידת עיבוד גרפי (GPU).
שם דגם | זמן האחזור של המעבד (CPU) | זמן אחזור של GPU |
---|---|---|
GestureRecognizer | 16.76 אלפיות השנייה | 20.87 אלפיות השנייה |
מודלים מותאמים אישית
אם אתם רוצים לשפר או לשנות את היכולות של המודלים שסופקו במשימה הזו, תוכלו להשתמש ב-Model Maker כדי לשנות את המודלים הקיימים. מודלים מותאמים אישית שנעשה בהם שימוש ב-MediaPipe חייבים להיות בפורמט .task
, שהוא קובץ חבילה של מודל. מומלץ להשתמש ב-Model Maker כדי לשנות את המודלים שסופקו למשימה הזו, לפני שיוצרים מודל משלכם.
מידע נוסף על התאמה אישית של מודל למשימה הזו זמין במאמר התאמה אישית של מודלים לזיהוי תנועות.