دليل مهمة التعرّف على الإيماءات

تتيح لك مهمة أداة التعرّف على إيماءة MediaPipe التعرّف على إيماءات اليد في الوقت الفعلي، وتقدِّم نتائج إيماءات اليد التي تم التعرّف عليها إلى جانب معالم الأيدي المكتشفة. يمكنك استخدام هذه المهمة للتعرف على إيماءات يد معينة من المستخدم، واستدعاء ميزات التطبيق التي تتوافق مع تلك الإيماءات.

تعمل هذه المهمة على بيانات الصور باستخدام نموذج تعلُّم الآلة، وتقبل إما البيانات الثابتة أو البث المستمر. تعرض المهمة معالم باليد في إحداثيات الصور، ومعالم اليد في الإحداثيات العالمية، واليد (اليد اليسرى/اليمنى)، وفئات إيماءة اليد للأيدي المتعددة.

تجربة الميزة

البدء

ابدأ في استخدام هذه المهمة باتباع أحد أدلة التنفيذ هذه للنظام الأساسي المستهدف. ترشدك هذه الأدلة الخاصة بنظام التشغيل خلال التنفيذ الأساسي لهذه المهمة، باستخدام نموذج مقترح، وتقدم أمثلة على التعليمات البرمجية مع خيارات التهيئة المقترحة:

.

تفاصيل المهمة

يصف هذا القسم الإمكانات والمدخلات والمخرجات وخيارات الضبط لهذه المهمة.

الميزات

  • معالجة إدخال الصور: تشمل المعالجة تدوير الصور وتغيير حجمها وتسويتها وتحويل مساحة اللون.
  • الحد الأدنى للنتيجة - فلترة النتائج استنادًا إلى نتائج التوقعات.
  • قائمة التصنيفات المسموح بها وقائمة الحظر: حدِّد فئات الإيماءات التي يتعرّف عليها النموذج.
إدخالات المهام نتائج المهام
تقبل "أداة التعرّف على الإيماءات" إدخالاً من أحد أنواع البيانات التالية:
  • الصور الثابتة
  • إطارات الفيديو التي تم فك ترميزها
  • خلاصة الفيديو المباشر
تقدِّم "أداة التعرّف على الإيماءات" النتائج التالية:
  • فئات الإيماءات باليد
  • استخدام إحدى الأيدي المكتشفة
  • معالم الأيدي المكتشفة في إحداثيات الصورة
  • معالم الأيدي المكتشفة في الإحداثيات العالمية

خيارات الإعدادات

تتضمن هذه المهمة خيارات الإعداد التالية:

اسم الخيار الوصف نطاق القيمة القيمة التلقائية
running_mode تحدِّد هذه السياسة وضع التشغيل للمهمة. هناك ثلاثة أوضاع:

IMAGE: وضع إدخالات الصورة الفردية.

فيديو: وضع لقطات الفيديو التي تم فك ترميزها

البث المباشر: وضع بث مباشر لبيانات الإدخال، مثل الكاميرا. في هذا الوضع، يجب استدعاء resultsListener لإعداد أداة معالجة الصوت لكي تتلقى النتائج بشكل غير متزامن.
{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 تمثّل هذه السمة الحد الأدنى لدرجة الثقة ليتم اعتبار تتبُّع اليد ناجحًا. هذا هو الحدّ الأدنى لوحدات وحدات القياس بين الأيدي في الإطار الحالي والإطار الأخير. في وضع الفيديو ووضع البث في "أداة التعرّف على الإيماءات"، إذا تعذّر تتبُّع الإيماءات، ستعمل هذه الميزة على تفعيل ميزة رصد اليد. وبخلاف ذلك، يتم تخطي رصد اليدين. 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 × 192، 224 × 224 العدد العائم 16 معلومات الأحدث

    تدعم هذه المهمة أيضًا تعديل حزمة النماذج باستخدام مصمم النماذج. للحصول على مزيد من المعلومات حول استخدام "مصمم النماذج" لتخصيص النماذج لهذه المهمة، راجع صفحة تخصيص النماذج لأداة التعرّف على الإيماءات.

    مجموعة نموذج للمعلَم اليدوي

    ترصد حزمة نموذج لليد المعلَمة أقلمة النقاط الرئيسية لـ 21 إحداثيًا في مناطق اليد التي تم رصدها. تم تدريب النموذج على ما يقرب من 30 ألف صورة من الواقع، بالإضافة إلى العديد من نماذج اليد الاصطناعية المعروضة على خلفيات مختلفة. انظر تعريف المعالم الـ 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
    

    إذا اكتشف النموذج الأيدي ولكنه لم يتعرف على إيماءة، يعرض أداة التعرف على الإيماءات نتيجة "بدون". وإذا لم يرصد النموذج الأيدي، فسترجع أداة التعرف على الإيماءات فارغة.

    تحتوي حزمة نموذج تصنيف الإيماءات على مسار من مخطَّطات الشبكة العصبونية مع نموذج تضمين الإيماءات متبوعًا بنموذج لتصنيف الإيماءات. يمكنك الاطّلاع على مزيد من التفاصيل في بطاقة نموذج تصنيف الإيماءات.

    يعمل نموذج تضمين الإيماءات على ترميز ميزات الصورة في متجه للميزات، ونموذج التصنيف هو مصنِّف خفيف للإيماءة يأخذ الخط المتجه للميزة كمدخلات. تحتوي حزمة نموذج تصنيف الإيماءات المقدّمة على مصنِّف الإيماءات الجاهزة، الذي يرصد الإيماءات اليدوية السبع الشائعة المقدّمة أعلاه. يمكنك توسيع حزمة النموذج للتعرف على المزيد من الإيماءات من خلال تدريب مصنف الإيماءات المخصص. يمكنك الاطّلاع على مزيد من التفاصيل في قسم النماذج المخصّصة التالي.

    ميزة "التعرّف على الإيماءات" مع كل من مصنِّف الإيماءات الجاهزة ومصنّف الإيماءات المخصّص يفضّل الإيماءة المخصّصة إذا تعرّف كلا المصنِّفَين على الإيماءة نفسها في فئاتهما. إذا تتعرّف أداة تصنيف الإيماءات واحدة فقط على الإيماءة، ستُخرج "أداة التعرّف على الإيماءات" الإيماءة التي تم التعرّف عليها مباشرةً.

    مقاييس أداء المهام

    إليك مقاييس أداء المهمة لمسار العملية بأكمله بناءً على النماذج المدربة مسبقًا أعلاه. وتكون نتيجة وقت الاستجابة هي متوسط وقت الاستجابة على هاتف Pixel 6 باستخدام وحدة المعالجة المركزية (CPU)/وحدة معالجة الرسومات.

    اسم النموذج وقت استجابة وحدة المعالجة المركزية (CPU) وقت استجابة وحدة معالجة الرسومات
    GestureRecognizer 16.76 ملي ثانية 20.87 ملي ثانية

    النماذج المخصَّصة

    إذا كنت ترغب في تحسين أو تغيير إمكانات النماذج المقدمة في هذه المهمة، يمكنك استخدام مصمم النماذج لتعديل النماذج الحالية. يجب أن تكون النماذج المخصّصة المستخدَمة مع MediaPipe بالتنسيق .task، وهو ملف حزمة نموذج. ينبغي أن تفكر في استخدام مصمم النماذج لتعديل النماذج المقدمة لهذه المهمة قبل إنشاء النماذج الخاصة بك.

    للمزيد من المعلومات حول تخصيص نموذج لهذه المهمة، يُرجى الاطّلاع على تخصيص النماذج لميزة التعرّف على الإيماءات.