في الوقت الحقيقي الشبكات العصبية لتتبع اليد

في الآونة الأخيرة ، أظهر باحثو GoogleAI طريقة تعاملهم مع مهمة تتبع الأيدي وتحديد الإيماءات في الوقت الفعلي. لقد انخرطت في مهمة مماثلة ، ولذا قررت معرفة الطريقة التي تعاملوا بها مع الحل والتقنيات التي استخدموها وكيف حققوا دقة جيدة أثناء العمل في الوقت الفعلي على جهاز محمول. أطلقت أيضا نموذج على الروبوت واختبارها في ظروف حقيقية.


لماذا هذا مهم؟


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

صورة

ما هي الصعوبة؟


الإدراك الطبيعي للأيدي في الوقت الحقيقي يمثل تحديًا حقيقيًا لرؤية الكمبيوتر ، وغالبًا ما تتداخل الأيدي مع بعضها البعض (أصابع متقاطعة أو مصافحة). في حين أن الوجوه لها أنماط عالية التباين ، على سبيل المثال ، في منطقة العينين والفم ، فإن عدم وجود مثل هذه العلامات في اليدين يجعل الاكتشاف الموثوق به فقط عن طريق علاماتهما البصرية.

الأيدي تعمل باستمرار ، وتغير زوايا الميل وتتداخل مع بعضها البعض. للحصول على تجربة مستخدم مقبولة ، يجب أن يعمل التعرف باستخدام FPS العالي (25+). بالإضافة إلى ذلك ، يجب أن يعمل كل هذا على الأجهزة المحمولة ، مما يضيف إلى متطلبات السرعة ، وكذلك حدود الموارد.

ماذا فعل GoogleAI؟


قاموا بتطبيق تقنية للتتبع الدقيق للأيدي والأصابع باستخدام التعلم الآلي (ML). يحدد البرنامج 21 نقطة أساسية في مساحة ثلاثية الأبعاد (الطول والطول والعمق) وعلى أساس هذه البيانات يصنف الإيماءات التي تظهرها اليد. كل هذا على أساس إطار فيديو واحد فقط ، يعمل في الوقت الفعلي على الأجهزة المحمولة والمقاييس بعدة أيدي.

كيف فعلوا ذلك؟


يتم تطبيق هذا النهج باستخدام MediaPipe ، وهو إطار عمل مفتوح المصدر مفتوح لبناء خطوط أنابيب معالجة البيانات (فيديو ، صوت ، سلسلة زمنية). شيء من هذا القبيل Deepstream من نفيديا ، ولكن مع مجموعة من الميزات وعبر منصة.

يتكون الحل من ثلاثة طرز رئيسية تعمل معًا:

كاشف النخيل (BlazePalm)

  • يأخذ صورة كاملة من الفيديو
  • إرجاع مربع المحيط الموجه (مربع الإحاطة)

نموذج لتحديد النقاط الرئيسية في اليد

  • يأخذ صورة من اقتصاص اليد
  • إرجاع 21 نقطة أساسية في مؤشر ثقة + مساحة ثلاثية الأبعاد (مزيد من التفاصيل لاحقًا في المقالة)

خوارزمية التعرف على الإيماءات

  • يأخذ النقاط الرئيسية في اليد
  • إرجاع اسم الإيماءة التي تظهرها اليد

تشبه البنية تلك المستخدمة في مهمة تقدير الوضع . من خلال توفير صورة دقيقة ومحاذاة لليد بدقة ، تقل الحاجة إلى زيادة المعطيات (التناوب ، والترجمات ، والتحجيم) بشكل كبير ، وبدلاً من ذلك يمكن أن يركز النموذج على دقة تنبؤ الإحداثيات.

كاشف النخيل


للعثور على راحة اليد ، يتم استخدام نموذج يسمى BlazePalm - نموذج للكشف عن طلقة واحدة (SSD) تم تحسينه للعمل على جهاز محمول في الوقت الفعلي.

قامت دراسة GoogleAI بتدريب جهاز للكشف عن راحة اليد بدلاً من جهاز للكشف عن الذراع بالكامل (النخيل هو قاعدة راحة اليد بدون أصابع). تتمثل ميزة هذا النهج في أنه من الأسهل التعرف على كف اليد أو القبضة من اليد بأكملها بأصابع الإيماءة ، ويمكن أيضًا اختيار راحة اليد باستخدام مربعات مربعة مربعة (المراسي) ، وتجاهل نسب العرض ، وبالتالي تقليل عدد المراس التي تتطلبها 3-5 مرات

تم استخدام مستخرج ميزة Pyramid Networks for Object Detection (FPN) أيضًا لفهم سياق الصورة بشكل أفضل حتى بالنسبة للكائنات الصغيرة.

كدالة فقدان ، تم أخذ فقد بؤري ، والذي يتكيف بشكل جيد مع عدم توازن الطبقات التي تحدث عند توليد عدد كبير من المراسي.

Entropy الكلاسيكية: CE (pt) = -log (pt)
الخسارة البؤرية: FL (نقطة) = - (نقطة واحدة) سجل (نقطة)

يمكن العثور على مزيد من المعلومات حول فقد Focall في جهاز النداء الممتاز من Facebook AI Research (يوصى بقراءة)

باستخدام التقنيات المذكورة أعلاه ، تم تحقيق متوسط ​​دقة 95.7 ٪. عند استخدام إنتروبيا بسيطة وبدون FPN - 86.22٪.

تحديد النقاط الرئيسية


بعد أن يحدد كاشف النخيل موضع راحة اليد على الصورة بأكملها ، تنتقل المنطقة بمعامل معين للأعلى وتتوسع لتشمل اليد بأكملها. علاوة على الصورة التي تم اقتصاصها ، يتم حل مشكلة الانحدار - يتم تحديد الموضع الدقيق البالغ 21 نقطة في الفضاء ثلاثي الأبعاد.

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


أعلاه: صور حقيقية مع نقاط رئيسية ملحوظة. أدناه: صور اصطناعية لليد مصنوعة باستخدام نموذج ثلاثي الأبعاد

لفتة الاعتراف


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

الأمثل


يتم إخفاء السر الرئيسي لاستنتاج سريع في الوقت الحقيقي في التحسين واحد مهم. كاشف النخيل ، الذي يستغرق معظم الوقت ، يبدأ فقط عند الضرورة (نادرًا جدًا). يتم تحقيق ذلك من خلال حساب موضع اليد في الإطار التالي استنادًا إلى النقاط الرئيسية السابقة في اليد.

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


اختبار الواقع


أطلقت هذا الحل على جهاز يعمل بنظام Android (Xiaomi Redmi Note 5) لإجراء اختبار في ظروف حقيقية. يتصرف النموذج بشكل جيد ، ويقوم برسم الهيكل العظمي لليد بشكل صحيح ويحسب العمق بعدد كبير من الإطارات في الثانية.


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


تحدث بعض المشكلات أيضًا عندما تتقاطع اليد مع الوجه أو الخلفيات المعقدة المشابهة. خلاف ذلك ، عمل رائع من GoogleAI ، وهذا هو مساهمة كبيرة في تطوير التكنولوجيا في المستقبل.

مقال مدونة GoogleAI
Github mediapipe تتبع اليد

Source: https://habr.com/ru/post/ar466781/


All Articles