המשימה MediaPipe Gesture Recognizer מאפשרת לזהות תנועות ידיים בזמן אמת, ומספקת את התוצאות של תנועות הידיים שזוהו יחד עם נקודות הציון של הידיים שזוהו. אפשר להשתמש במשימה הזו כדי לזהות תנועות ידיים ספציפיות של משתמש, ולהפעיל תכונות של אפליקציה שתואמות לתנועות האלה.
המשימה הזו פועלת על נתוני תמונה עם מודל של למידת מכונה (ML), ומקבלת נתונים סטטיים או סטרימינג רציף. הפלט של המשימה כולל נקודות ציון של הידיים בקואורדינטות של התמונה, נקודות ציון של הידיים בקואורדינטות עולמיות, את היד הדומיננטית (יד ימין או יד שמאל) וקטגוריות של תנועות ידיים של כמה ידיים.
שנתחיל?
כדי להתחיל להשתמש במשימה הזו, צריך לפעול לפי אחד ממדריכי ההטמעה האלה בהתאם לפלטפורמת היעד שלכם. במדריכים האלה, שמתמקדים בפלטפורמות ספציפיות, מוסבר איך לבצע הטמעה בסיסית של המשימה הזו באמצעות מודל מומלץ, ומוצגים קטעי קוד עם אפשרויות ההגדרה המומלצות:
- Android – דוגמה לקוד
- Python – דוגמת קוד
- אינטרנט – [דוגמת קוד](https://github.com/google-ai-edge/mediapipe-samples-web/blob/main/src/tasks/gesture-recognizer.ts - מדריך
פרטי המשימה
בקטע הזה מוסבר על היכולות, הקלטים, הפלטים ואפשרויות ההגדרה של המשימה הזו.
תכונות
- עיבוד תמונת הקלט – העיבוד כולל סיבוב, שינוי גודל, נורמליזציה והמרה של מרחב הצבעים.
- סף הניקוד – סינון התוצאות על סמך ניקוד התחזית.
- רשימת ההיתרים ורשימת הישויות החסומות של תוויות – מציינים את קטגוריות התנועות שהמודל מזהה.
| קלט למשימה | פלט של משימות |
|---|---|
הקלט של Gesture Recognizer יכול להיות אחד מסוגי הנתונים הבאים:
|
הפלט של Gesture Recognizer כולל את התוצאות הבאות:
|
אפשרויות הגדרה
למשימה הזו יש את אפשרויות ההגדרה הבאות:
| שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל | |
|---|---|---|---|---|
running_mode |
הגדרת מצב ההפעלה של המשימה. יש שלושה מצבים: תמונה: המצב לקלט של תמונה אחת. VIDEO: המצב של פריים מפוענח של סרטון. LIVE_STREAM: המצב לסטרימינג בשידור חי של נתוני קלט, כמו ממצלמה. במצב הזה, צריך להפעיל את resultListener כדי להגדיר listener לקבלת תוצאות באופן אסינכרוני. |
{IMAGE, VIDEO, LIVE_STREAM} |
IMAGE |
|
num_hands |
המספר המקסימלי של ידיים שאפשר לזהות באמצעות GestureRecognizer.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
ציון הסמך המינימלי לזיהוי היד כדי שהזיהוי ייחשב מוצלח במודל לזיהוי כף היד. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
ציון המהימנות המינימלי של ציון הנוכחות של היד במודל לזיהוי נקודות ציון של היד. במצב וידאו ובמצב שידור חי של Gesture Recognizer, אם ציון הסמך של נוכחות היד מהמודל של נקודות הציון של היד נמוך מהסף הזה, מופעל המודל של זיהוי כף היד. אחרת, נעשה שימוש באלגוריתם קל משקל למעקב ידיים כדי לקבוע את המיקום של הידיים לצורך זיהוי נקודות ציון בהמשך. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
ציון הסמך המינימלי שנדרש כדי שהמעקב אחרי הידיים ייחשב כמוצלח. זהו סף ה-IoU של תיבת התוחמת בין הידיים בפריים הנוכחי ובפריים האחרון. במצב וידאו ובמצב סטרימינג של Gesture Recognizer, אם המעקב נכשל, Gesture Recognizer מפעיל זיהוי של היד. אחרת, המערכת תדלג על זיהוי היד. | 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 |
לא רלוונטי | לא רלוונטי |
מודלים
הכלי לזיהוי תנועות ידיים משתמש בחבילת מודלים עם שתי חבילות מודלים מוכנות מראש: חבילת מודלים של נקודות ציון של היד וחבילת מודלים של סיווג תנועות ידיים. מודל זיהוי נקודות הציון מזהה את נוכחות הידיים ואת הגיאומטריה שלהן, ומודל זיהוי התנועות מזהה תנועות על סמך הגיאומטריה של הידיים.
| שם המודל | צורת הקלט | סוג הכימות | כרטיס מודל | גרסאות |
|---|---|---|---|---|
| HandGestureClassifier | 192 x 192, 224 x 224 | float 16 | מידע | הכי חדש |
אפשר גם לשנות את חבילת המודלים באמצעות Model Maker. מידע נוסף על שימוש ב-Model Maker להתאמה אישית של מודלים למשימה הזו זמין בדף התאמה אישית של מודלים לזיהוי תנועות.
חבילה של מודלים לזיהוי נקודות ציון ביד
חבילת המודלים של ציוני הדרך של היד מזהה את הלוקליזציה של נקודות מרכזיות של 21 קואורדינטות של מפרקי הידיים באזורים שבהם זוהו ידיים. המודל אומן על כ-30,000 תמונות מהעולם האמיתי, וגם על כמה מודלים סינתטיים של ידיים שנוצרו באמצעות רינדור והוצבו על רקעים שונים. ההגדרה של 21 נקודות הציון מופיעה בהמשך:

חבילת המודלים של Hand Landmarker מכילה מודל לזיהוי כף יד ומודל לזיהוי נקודות ציון של היד. מודל זיהוי כפות הידיים מאתר את האזור של הידיים בתמונת הקלט המלאה, ומודל זיהוי נקודות הציון של הידיים מוצא את נקודות הציון בתמונה החתוכה של היד שהוגדרה על ידי מודל זיהוי כפות הידיים.
מכיוון ששימוש במודל לזיהוי כפות ידיים צורך הרבה יותר זמן, במצב וידאו או במצב שידור חי, הכלי לזיהוי תנועות ידיים משתמש בתיבת תוחמת שמוגדרת על ידי נקודות הציון של כף היד שזוהו בפריים הנוכחי כדי לאתר את האזור של כפות הידיים בפריים הבא. כך מצמצמים את מספר הפעמים שבהן מופעל מודל זיהוי כף היד על ידי הכלי לזיהוי תנועות. רק כשהמודל של נקודות הציון של הידיים לא מצליח לזהות מספיק ידיים, או כשהמעקב אחר הידיים נכשל, מופעל המודל לזיהוי כפות הידיים כדי למקם מחדש את הידיים.
חבילה של מודל לסיווג תנועות
חבילת המודלים של סיווג תנועות ידיים יכולה לזהות את תנועות הידיים הנפוצות הבאות:
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'. אם המודל לא מזהה ידיים, רכיב זיהוי התנועות מחזיר ערך ריק.
חבילת מודל סיווג המחוות מכילה צינור (pipeline) של רשת נוירונים דו-שלבית עם מודל הטמעה של מחוות, ואחריו מודל סיווג מחוות. פרטים נוספים זמינים בכרטיס של מודל לסיווג מחוות.
מודל ההטמעה של התנועות מקודד את מאפייני התמונה לווקטור מאפיינים, ומודל הסיווג הוא מסווג תנועות קל משקל שמקבל את וקטור המאפיינים כקלט. חבילת המודל של סיווג תנועות הידיים שסיפקנו מכילה את מסווג תנועות הידיים המוכנות מראש, שמזהה את 7 תנועות הידיים הנפוצות שהוצגו למעלה. אתם יכולים להרחיב את חבילת המודלים כדי שהמערכת תזהה עוד תנועות, על ידי אימון מסווג תנועות מותאם אישית משלכם. פרטים נוספים מופיעים בקטע מודלים בהתאמה אישית.
ה-Gesture Recognizer עם מסווג מחוות מוכן מראש ומסווג מחוות בהתאמה אישית מעדיף את המחווה בהתאמה אישית אם שני המסווגים מזהים את אותה מחווה בקטגוריות שלהם. אם רק מסווג תנועות אחד מזהה את התנועה, התנועה המזוהה מוחזרת ישירות על ידי Gesture Recognizer.
נקודות השוואה של משימות
אלה נקודות ההשוואה של המשימות לכל פייפליין, על סמך המודלים שאומנו מראש שצוינו למעלה. תוצאת זמן האחזור היא זמן האחזור הממוצע ב-Pixel 6 באמצעות CPU או GPU.
| שם דגם | זמן האחזור של המעבד | זמן המתנה של GPU |
|---|---|---|
| GestureRecognizer | 16.76 אלפיות השנייה | 20.87 אלפיות השנייה |
מודלים בהתאמה אישית
אם רוצים לשפר או לשנות את היכולות של המודלים שמופיעים במשימה הזו, אפשר להשתמש ב-Model Maker כדי לשנות את המודלים הקיימים. מודלים בהתאמה אישית שמשמשים עם MediaPipe צריכים להיות בפורמט .task, שהוא קובץ חבילת מודלים. מומלץ להשתמש ב-Model Maker כדי לשנות את המודלים שסופקו למשימה הזו לפני שיוצרים מודל משלכם.
מידע נוסף על התאמה אישית של מודל למשימה הזו זמין במאמר התאמה אישית של מודלים לזיהוי תנועות.