الأخبار التكنولوجية والاستعراضات والنصائح!

اكتشاف الوجه في الوقت الحقيقي لوحدة المعالجة المركزية باستخدام Python – نحو الذكاء الاصطناعي

ستساعدك المقالة التالية: اكتشاف الوجه في الوقت الحقيقي لوحدة المعالجة المركزية باستخدام Python – نحو الذكاء الاصطناعي

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

سيعلمنا هذا البرنامج التعليمي اكتشاف الوجوه ومعالم الوجوه في الصورة أو الفيديو أو دفق كاميرا الويب باستخدام مكتبة MediaPipe وعرضها!

هل من الممكن تنفيذ نماذج اكتشاف كائنات الأداء في الوقت الفعلي بدون وحدة معالجة الرسومات؟ يعد اكتشاف الوجه MediaPipe دليلًا على المفهوم الذي يجعل من الممكن تشغيل اكتشاف الوجه من فئة واحدة في الوقت الفعلي على أي وحدة معالجة مركزية تقريبًا.

ما المشكلة؟

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

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

كان الحل الأكثر سهولة واستخدامًا لحل هذه المهمة قبل بضع سنوات (والعديد من الحلول الأخرى في رؤية الكمبيوتر) هو إجراء نقل التعلم على النماذج المدربة مسبقًا (بشكل عام ، النماذج القياسية المدربة على مجموعات البيانات الضخمة مثل تلك الموجودة في Tensorflow Hub أو TF Object Detection API).

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

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

مقدمة:

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

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

صورة

قليل من تطبيقات اكتشاف الوجه:

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

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

اكتشاف الوجه باستخدام مكتبة MediaPipe

في هذا البرنامج التعليمي ، سنقوم بوظيفة اكتشاف الوجه باستخدام نموذج Mediapipe للكشف عن الوجه. إذا فتحنا نظرة عامة على العمق لهذا النموذج ، فيمكننا اكتشاف أنه يعتمد بالكامل على نموذج BlazeFace ، وهو جيد الأداء وخفيف الوزن. يركز هذا النموذج على التشغيل على وحدات المعالجة المركزية منخفضة الجودة ووحدات معالجة الرسومات المحمولة لإنتاج استدلال في الوقت الفعلي. تقول أن سرعة الاستدلال هي 200-1000 إطار في الثانية ، اعتمادًا على مواصفات الأجهزة.

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

إليك كائن اكتشاف الوجه الكامل لاستخدام كاشف الوجه MediaPipe:

قبل استخدام نموذج اكتشاف الوجه Mediapipe ، يتعين علينا أولاً تهيئة النموذج. لذلك ، سنستخدم الصيغة البسيطة مثل mp.solution.face_detection ، وبعد تهيئة النموذج ، سنقوم باستدعاء وظيفة اكتشاف الوجه مع بعض الوسائط. فيما يلي حجتان أساسيتان أثناء تهيئة النموذج:

  • اختيار_النموذج: تأخذ هذه الوسيطة فهرس الأعداد الصحيحة (0 أو 1). يوصى باستخدام الرقم 0 للوجوه قصيرة المدى ، والتي تعمل بشكل أفضل على بعد مترين من الكاميرا. يوصى باستخدام الرقم 1 لطراز كامل النطاق ، وهو الأفضل للوجوه التي تقع في نطاق 5 أمتار. القيمة الافتراضية ، إذا لم يتم تحديدها ، هي 0.
  • الحد الأدنى لاكتشاف_الثقة: تأخذ هذه الوسيطة القيمة العائمة ضمن نطاق 0.0 و 1.0. القيمة الافتراضية هنا هي 0.5 ، والتي تُترجم إلى ثقة بنسبة 50٪. على سبيل المثال ، عند اكتشاف الوجوه ، يجب أن يكون للنتائج ثقة بنسبة 50٪ على الأقل بوجود الوجه ؛ وإلا فلن يكتشف أي شيء.

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

لرسم مستطيل حول وجهنا ، يحتوي MediaPipe على وظيفة مضمنة تسمى mp.drawing ، والتي قمنا بتهيئتها في خطوة تهيئة الكائنات لدينا. يعد رسم المستطيلات وأجزاء الوجه الرئيسية أمرًا بسيطًا مثل استدعاء وظيفة mp_drawing.draw_detection لكل اكتشاف للوجه.

أضفت أيضًا وسيطة “mp_drawing_utils = True” ، باستخدام هذه الوسيطة ، نستخدم أدوات mp.drawing. وإلا ، يمكننا استخدام دالة OpenCV cv2.rectangle لرسم اكتشافات على إطارنا باستخدام لوننا وسمكنا. أيضًا ، في بعض الأحيان مهتمون فقط بالحصول على إحداثيات الكشف. يمكننا الحصول عليها من خلال ضبط خيار return_tlbr bool عندما ننادي كائننا. لذلك ، يمكننا إرجاع نتائج الاكتشاف فقط في حالات مختلفة بدلاً من رسم مستطيلات على إطار ، اعتمادًا على حالة الاستخدام.

فيما يلي مثال بسيط على رمز لتشغيل محركنا فقط باستخدام كائن اكتشاف الوجه هذا على تدفق كاميرا الويب:

مع ذلك ، يجب أن نرى وجهة نظر مماثلة لي:

خاتمة:

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

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

في البرنامج التعليمي التالي ، سأقوم بإنشاء كائن آخر يسمح لنا برسم أو تحريك أنفسنا. سوف يكون هذا رائعا!

شكرا للقراءة! كما هو الحال دائمًا ، يمكن العثور على جميع التعليمات البرمجية الواردة في هذا البرنامج التعليمي على صفحة GitHub الخاصة بي وهي مجانية الاستخدام!


تم نشر اكتشاف الوجه في الوقت الفعلي لوحدة المعالجة المركزية باستخدام Python في الأصل في Towards AI on Medium ، حيث يواصل الأشخاص المحادثة من خلال تسليط الضوء على هذه القصة والرد عليها.

تم النشر عبر نحو الذكاء الاصطناعي