تتيح لك مهمة "التعرّف على الإيماءات" في MediaPipe التعرّف على إيماءات اليد في الوقت الفعلي، وتقدّم نتائج إيماءات اليد التي تم التعرّف عليها بالإضافة إلى نقاط الارتكاز الخاصة بالأيدي التي تم رصدها. يمكنك استخدام هذه المهمة للتعرّف على إيماءات محدّدة باليد من المستخدم، وتفعيل ميزات التطبيق التي تتوافق مع هذه الإيماءات.
تعمل هذه المهمة على بيانات الصور باستخدام نموذج تعلُّم آلي، وتقبل إما بيانات ثابتة أو بثًا مستمرًا. تُخرِج المهمة معالم اليد في إحداثيات الصورة، ومعالم اليد في الإحداثيات العالمية، واستخدام إحدى اليدين (اليد اليسرى/اليمنى)، وفئات إيماءات اليدين المتعددة.
البدء
يمكنك البدء باستخدام هذه المهمة باتّباع أحد أدلة التنفيذ هذه للمنصة المستهدفة. توضّح لك هذه الأدلة الخاصة بكل منصة كيفية تنفيذ هذه المهمة بشكل أساسي باستخدام نموذج مقترَح، كما تقدّم أمثلة على الرموز مع خيارات الإعداد المقترَحة:
- Android - مثال للرمز
- Python - مثال للرمز
- الويب - [مثال على الرمز البرمجي](https://github.com/google-ai-edge/mediapipe-samples-web/blob/main/src/tasks/gesture-recognizer.ts - دليل
تفاصيل المهمة
يوضّح هذا القسم إمكانات هذه المهمة ومدخلاتها ومخرجاتها وخيارات الضبط.
الميزات
- معالجة صورة الإدخال: تشمل المعالجة تدوير الصورة وتغيير حجمها وتسويتها وتحويل مساحة الألوان.
- حدّ النتائج: لفلترة النتائج استنادًا إلى نتائج التوقّعات
- قائمة الحظر والقائمة المسموح بها للتصنيفات: حدِّد فئات الإيماءات التي يتعرّف عليها النموذج.
| مدخلات المهام | نتائج المهام |
|---|---|
يقبل Gesture Recognizer إدخال أحد أنواع البيانات التالية:
|
تُخرج أداة Gesture Recognizer النتائج التالية:
|
خيارات الإعدادات
تتضمّن هذه المهمة خيارات الإعداد التالية:
| اسم الخيار | الوصف | نطاق القيم | القيمة التلقائية | |
|---|---|---|---|---|
running_mode |
تضبط هذه السمة وضع التشغيل للمهمة. تتوفّر ثلاثة أوضاع: الصورة: الوضع المخصّص لإدخال صورة واحدة. الفيديو: وضع الإطارات التي تم فك ترميزها في الفيديو 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 |
الحد الأدنى لنتيجة الثقة في نموذج رصد العلامات الفارقة في اليد. في وضع "الفيديو" ووضع "البث المباشر" في Gesture Recognizer، إذا كانت نتيجة الثقة في رصد اليد من نموذج "المعالم الرئيسية لليد" أقل من هذا الحدّ، سيتم تفعيل نموذج رصد راحة اليد. في ما عدا ذلك، يتم استخدام خوارزمية بسيطة لتتبّع اليد لتحديد موضع اليدين من أجل رصد المعالم اللاحق. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
تمثّل هذه السمة الحدّ الأدنى لدرجة الثقة التي يجب تحقيقها لكي يُعدّ تتبُّع اليد ناجحًا. هذا هو الحد الأدنى لمؤشر IoU الخاص بالمربّع المحيط بين اليدين في الإطار الحالي والإطار الأخير. في "وضع الفيديو" و"وضع البث" في 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 |
لا ينطبق | لا ينطبق |
النماذج
تستخدم أداة Gesture Recognizer حِزمة نماذج تتضمّن حِزمتَين مُعدّتَين مسبقًا: حِزمة نماذج لتحديد معالم اليد وحِزمة نماذج لتصنيف الإيماءات. يرصد نموذج المعالم وجود اليدين وشكل اليد، بينما يتعرّف نموذج التعرّف على الإيماءات على الإيماءات استنادًا إلى شكل اليد.
| اسم النموذج | شكل الإدخال | نوع التكميم | بطاقة النموذج | الإصدارات |
|---|---|---|---|---|
| HandGestureClassifier | 192 × 192 و224 × 224 | float 16 | معلومات | الأحدث |
تتيح هذه المهمة أيضًا تعديل حِزمة النموذج باستخدام أداة Model Maker. لمزيد من المعلومات حول استخدام أداة Model Maker لتخصيص النماذج لهذه المهمة، يُرجى الاطّلاع على صفحة تخصيص النماذج لأداة Gesture Recognizer.
حزمة نموذج معالم اليد
ترصد حزمة نموذج معالم اليد موضع النقاط الأساسية لـ 21 إحداثية لمفاصل اليد ضمن مناطق اليد المرصودة. تم تدريب النموذج على حوالي 30, 000 صورة من العالم الحقيقي، بالإضافة إلى العديد من نماذج الأيدي الاصطناعية التي تم عرضها على خلفيات مختلفة. يمكنك الاطّلاع أدناه على تعريف المعالم الـ 21:

تحتوي حزمة نموذج "رصد موضع اليد" على نموذج رصد كف اليد ونموذج رصد مواضع اليد. يحدّد نموذج رصد الكف موضع اليدين من صورة الإدخال الكاملة، بينما يرصد نموذج رصد نقاط اليد نقاط اليد على صورة اليد التي تم اقتصاصها والمحدّدة بواسطة نموذج رصد الكف.
بما أنّ نموذج رصد راحة اليد يستغرق وقتًا أطول بكثير، يستخدم Gesture Recognizer المربّع المحيط الذي تحدّده العلامات البارزة التي تم رصدها في اليد في الإطار الحالي لتحديد موضع اليد في الإطار التالي، وذلك في "وضع الفيديو" أو "وضع البث المباشر". يقلّل ذلك من عدد المرات التي يتم فيها تشغيل نموذج رصد راحة اليد في "أداة التعرّف على الإيماءات". عندما يتعذّر على نموذج "نقاط اليد" تحديد العدد المطلوب من الأيدي، أو عندما يتعذّر تتبُّع اليد، يتم استدعاء نموذج "رصد الكف" لإعادة تحديد موقع الأيدي.
حزمة نموذج تصنيف الإيماءات
يمكن أن يتعرّف حِزم نماذج تصنيف الإيماءات على إيماءات اليد الشائعة التالية:
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 إيماءات شائعة باليد تم توضيحها أعلاه. يمكنك توسيع حزمة النموذج للتعرّف على المزيد من الإيماءات من خلال تدريب مصنّف إيماءات مخصّص. يمكنك الاطّلاع على مزيد من التفاصيل في قسم النماذج المخصّصة أدناه.
يفضّل Gesture Recognizer الإيماءة المخصّصة إذا تعرّف المصنّفان على الإيماءة نفسها في فئتيهما، وذلك عند استخدام كلّ من مصنّف الإيماءات الجاهزة ومصنّف الإيماءات المخصّصة. إذا كان مصنّف إيماءة واحد فقط يتعرّف على الإيماءة، يُخرج Gesture Recognizer الإيماءة التي تم التعرّف عليها مباشرةً.
مقاييس أداء المهام
في ما يلي مقاييس أداء المهام لخط الإنتاج بأكمله استنادًا إلى النماذج المدرَّبة مسبقًا أعلاه. نتيجة وقت الاستجابة هي متوسط وقت الاستجابة على هاتف Pixel 6 باستخدام وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU).
| اسم النموذج | وقت استجابة وحدة المعالجة المركزية | وقت استجابة وحدة معالجة الرسومات |
|---|---|---|
| GestureRecognizer | 16.76 ملي ثانية | 20.87 ملي ثانية |
النماذج المخصّصة
إذا أردت تحسين إمكانات النماذج المقدَّمة في هذه المهمة أو تغييرها، يمكنك استخدام أداة Model Maker لتعديل النماذج الحالية. يجب أن تكون النماذج المخصّصة المستخدَمة مع MediaPipe بتنسيق .task، وهو ملف حزمة نماذج. ننصحك باستخدام أداة Model Maker لتعديل النماذج المتوفّرة لهذه المهمة
قبل إنشاء نموذجك الخاص.
لمزيد من المعلومات حول تخصيص نموذج لهذه المهمة، يُرجى الاطّلاع على تخصيص النماذج في Gesture Recognizer.