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

המשימה של 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 מידע הכי עדכני

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

    חבילת מודל בעבודת יד

    חבילת המודלים של ARIA מזהה את לוקליזציה של נקודת מפתח של 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 אלפיות השנייה

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

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

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