מדריך משימות לזיהוי תנועות

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

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

כדאי לנסות!

מתחילים

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

פרטי המשימה

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

תכונות

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

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

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

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

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

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

LIVE_STREAM: המצב עבור סטרימינג בשידור חי של נתוני קלט, למשל ממצלמה. במצב הזה, יש להפעיל את resultListener כדי להגדיר מאזין לקבלת תוצאות באופן אסינכרוני.
{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 ציון המהימנות המינימלי של ציון הנוכחות של היד במודל הזיהוי של ציון הדרך. במצב וידאו ובמצב שידור חי של מזהה התנועות, אם הציון המשוער של נוכחות היד של המודל של ציון הדרך של כף היד נמוכה מהסף הזה, מופעל מודל זיהוי כף היד. אחרת, נעשה שימוש באלגוריתם קליל למעקב אחר היד כדי לקבוע את המיקום של הידיים לצורך זיהוי של ציוני דרך. 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"]
  • לוקאל של שמות תצוגה: הלוקאל של השמות לתצוגה שצוינו במטא-נתונים של דגם TFLite, אם רלוונטי.
  • מקסימום תוצאות: המספר המקסימלי של תוצאות סיווג מובילות שניתן להחזיר. אם הערך קטן מ-0, יוחזרו כל התוצאות הזמינות.
  • סף הניקוד: הציון שמתחתיו נדחות התוצאות. אם הערך שמוגדר הוא 0, כל התוצאות הזמינות יוחזרו.
  • רשימת היתרים של קטגוריות: רשימת ההיתרים של שמות הקטגוריות. אם הקטגוריה אינה ריקה, יסוננו תוצאות סיווג שהקטגוריה שלהן לא כלולה. בלעדי הדדית עם רשימת ישויות שנחסמו.
  • רשימת ישויות שנחסמו בקטגוריה: רשימת הישויות שנחסמו לשמות של קטגוריות. אם הקטגוריה אינה ריקה, תוצאות הסיווג שהקטגוריה הזו נמצאת בהן יסוננו. בלעדי (אופציונלי) עם רשימת היתרים.
    • הלוקאל של השמות לתצוגה: any string
    • מקסימום תוצאות: any integer
    • הסף לקבלת ניקוד: 0.0-1.0
    • רשימת היתרים של קטגוריות: vector of strings
    • רשימת הישויות שנחסמו בקטגוריה: vector of strings
    • הלוקאל של השמות לתצוגה: "en"
    • מקסימום תוצאות: -1
    • הסף לקבלת ניקוד: 0
    • רשימת ההיתרים של הקטגוריות: ריקה
    • רשימת הישויות שנחסמו של הקטגוריה: ריקה
    custom_gestures_classifier_options אפשרויות להגדרת ההתנהגות של מסווג התנועות בהתאמה אישית.
  • לוקאל של שמות תצוגה: הלוקאל של השמות לתצוגה שצוינו במטא-נתונים של דגם TFLite, אם רלוונטי.
  • מקסימום תוצאות: המספר המקסימלי של תוצאות סיווג מובילות שניתן להחזיר. אם הערך קטן מ-0, יוחזרו כל התוצאות הזמינות.
  • סף הניקוד: הציון שמתחתיו נדחות התוצאות. אם הערך שמוגדר הוא 0, כל התוצאות הזמינות יוחזרו.
  • רשימת היתרים של קטגוריות: רשימת ההיתרים של שמות הקטגוריות. אם הקטגוריה אינה ריקה, יסוננו תוצאות סיווג שהקטגוריה שלהן לא כלולה. בלעדי הדדית עם רשימת ישויות שנחסמו.
  • רשימת ישויות שנחסמו בקטגוריה: רשימת הישויות שנחסמו לשמות של קטגוריות. אם הקטגוריה אינה ריקה, תוצאות הסיווג שהקטגוריה הזו נמצאת בהן יסוננו. בלעדי (אופציונלי) עם רשימת היתרים.
    • הלוקאל של השמות לתצוגה: any string
    • מקסימום תוצאות: any integer
    • הסף לקבלת ניקוד: 0.0-1.0
    • רשימת היתרים של קטגוריות: vector of strings
    • רשימת הישויות שנחסמו בקטגוריה: vector of strings
    • הלוקאל של השמות לתצוגה: "en"
    • מקסימום תוצאות: -1
    • הסף לקבלת ניקוד: 0
    • רשימת ההיתרים של הקטגוריות: ריקה
    • רשימת הישויות שנחסמו של הקטגוריה: ריקה
    result_callback הגדרה זו מאפשרת למאזין התוצאות לקבל את תוצאות הסיווג באופן אסינכרוני כשמזהה התנועות נמצא במצב שידור חי. אפשר להשתמש רק כשמצב ריצה מוגדר ל-LIVE_STREAM ResultListener לא רלוונטי לא רלוונטי

    דגמים

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

    שם הדגם צורת הקלט סוג הכמות כרטיס דגם גרסאות
    HandGestureClassifier 192 x 192, 224 x 224 מספר ממשי (float) 16 מידע האחרון

    משימה זו גם תומכת בשינוי של חבילת המודלים באמצעות 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
    

    אם המודל מזהה ידיים אבל לא מזהה תנועה, מזהה התנועות יחזיר את התוצאה 'ללא'. אם המודל לא מזהה ידיים, מזהה התנועות מוחזר ריק.

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

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

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

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

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

    שם דגם זמן אחזור של המעבד (CPU) זמן אחזור של GPU
    GestureRecognizer 16.76 אלפיות השנייה 20.87 אלפיות השנייה

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

    אם תרצו לשפר או לשנות את היכולות של המודלים שסופקו במשימה, תוכלו להשתמש ב-Model Maker כדי לשנות את המודלים הקיימים. מודלים בהתאמה אישית שמשתמשים ב-MediaPipe צריכים להיות בפורמט .task, שהוא קובץ של חבילת מודלים. כדאי להשתמש ב-Model Maker כדי לשנות את המודלים שסופקו למשימה הזו לפני שיוצרים מודלים משלכם.

    מידע נוסף על התאמה אישית של מודל למשימה הזו זמין במאמר התאמה אישית של המודלים לזיהוי תנועות.