كيف نحسب الناس باستخدام رؤية الكمبيوتر

صورة
صور من مصادر مفتوحة

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

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

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

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

وبالتالي ، فإن عملنا سيوفر للعملاء الكثير من الأعصاب.

نماذج التعلم الآلي المستخدمة


كشف الناس الصور الظلية


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

لذلك ، في مكتبة TensorFlow هناك عدد كبير من النماذج المدربة مسبقًا .

بعد إجراء الاختبارات ، استقرنا أولاً على بنيتين: Faster R-CNN و YOLO v2. في وقت لاحق ، بعد ظهور الإصدار الجديد ، أضفنا YOLO v3.

وصف النماذج .

مثال على نتيجة التعرف على YOLO v2 (فيما يلي ، يتم التقاط الصور من مصادر مجانية - لا يمكننا نشر إطارات من كاميرات العملاء):

صورة

مثال على نتيجة التعرف على Faster R-CNN:

صورة

ميزة YOLO هي أن النموذج يستجيب بشكل أسرع ، وهذا مهم في بعض المهام. ومع ذلك ، اكتشفنا عمليًا أنه إذا لم يكن من الممكن استخدام نسخة مدربة مسبقًا من النموذج ، وكانت إعادة التدريب مطلوبة في مجموعة التدريب المتخصصة الخاصة بك ، فمن الأصح استخدام أسرع R-CNN. إذا تم تثبيت الكاميرا بعيدًا بما يكفي عن الأشخاص (ارتفاع الصورة الظلية أقل من 100 بكسل لدقة 1920 × 1080) أو كان من الضروري أيضًا التعرف على معدات الحماية الشخصية لشخص ما: الخوذات ، السحابات ، عناصر الملابس الواقية ، في مثل هذه المواقف ، جودة نتيجة التدريب على مجموعة البيانات الخاصة بك (حتى 10 ألف كائنات مختلفة) لـ YOLO v2 لم نكن راضين.

أظهر YOLO v3 نتائج مقبولة ، ومع ذلك ، لم تعطي اختبارات السرعة ميزة كبيرة لـ YOLO v3 مقارنةً بـ Faster R-CNN. بالإضافة إلى ذلك ، وجدنا طريقة لزيادة سرعة التعرف باستخدام الدُفعة (المعالجة الجماعية للصور) ، والتحليل الانتقائي للصور (المزيد عن هذا أدناه).

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

مثال على استخدام نموذج أسرع R-CNN ، تم تدريبه على مجموعة البيانات الخاصة بنا:

صورة

الآن نجري اختبارات باستخدام نموذج SSD-300. نأمل أن يمنحنا زيادة في الإنتاجية مع الحفاظ على جودة مقبولة من التقدير.

إنشاء مجموعة بيانات التدريب الخاصة بك


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

استخدام مناطق الكشف


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

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

لأسباب واضحة ، من الخطأ التحقق من أن مستطيل الحدود (المربع / الإطار) ، الذي يقيد الشخص بأكمله ، يقع في المنطقة (المضلع). في هذه الحالة ، ينقسم الجزء السفلي (المستطيل / النصف) من النقاط إلى نقاط - العقد (يتم أخذ شبكة 10 × 10 عقد) ويتم فحص السقوط في منطقة العقد الفردية المحددة. يتم تخصيص العقد "الهامة" من قبل مسؤول النظام بناءً على الشكل الهندسي للغرفة (يتم تحديد القيم الافتراضية أيضًا - إذا لم يتم إدخال إعداد غرفة معينة).

صورة

بالإضافة إلى ذلك ، يتم اختبار تطبيق بنية Mask R-CNN لمهامنا . تسمح لك الطريقة بتحديد مخطط الصورة الظلية - وهذا سيجعل من الممكن الابتعاد عن استخدام مستطيل الحدود عند تحليل التقاطع مع المنطقة .

صورة

نهج آخر: كشف الرأس (التدريب النموذجي)


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

التقط الصورة أدناه. نغمض أعيننا على حقيقة أن الصورة تم التقاطها على الهاتف ، وزاوية ميلها لا تتوافق مع زاوية ميل كاميرات الدوائر التلفزيونية المغلقة. هناك 18 شخصًا على الإطار ، وحدد نموذج الكشف عن الصور الظلية 11 شخصًا:

صورة

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

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

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

على سبيل المثال ، في مجموعة بيانات التدريب ، قمنا بتسمية الرؤوس:

صورة- هذه رؤوس في مجموعة بيانات ؛

صورة- وهذا هو الجزء الخلفي من الكرسي ، لكن النموذج يريد أن يعتقد أن هذا هو الرأس.

ومع ذلك ، بشكل عام ، يتواءم هذا النموذج بشكل جيد تمامًا في الحالات التي يوجد فيها تركيز هائل من الناس. لذا ، في الإطار أعلاه ، حدد نموذجنا 15 شخصًا:

صورة

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

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

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

الصور الظلية والرؤوس ، مثال على نتيجة الاعتراف:

صورة

تصنيف الدقة


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

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

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

على الإطارات من الكاميرات في مواقع الاختبار (الصور في هذه الغرف كانت على مجموعة البيانات) مقاييس:

صورة

على الإطارات من الكاميرات الجديدة (هذه الغرف لم تكن في مجموعة البيانات):

صورة

عندما يحتاج العميل إلى رقم واحد ، وهو مزيج من الدقة والاكتمال ، قدمنا متوسطًا توافقيًا أو قياسًا :
صورة

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


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

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

يتم تحديد حجم الفاصل الزمني وعدد الفترات بناءً على عدد الغرف وقوة الحوسبة المستخدمة. لكل فاصل زمني ، يتم تشكيل مجموعة من القيم مع عدد الأشخاص في الغرفة.

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

القيمة الناتجة هي عدد الأشخاص في قائمة الانتظار في الوقت tمباشرة بعد الفاصل الزمني المعني. في ساعة واحدة فقط ، يتم الحصول على مجموعة من القيم لفترات مختلفة - بمعنى ، القيم في الوقت المحدد t_1 ، t_2 .... t_n .

المزيد عن t_1 ، t_2 .... t_n ، يتم حساب القيم القصوى والمتوسطة لعدد الأشخاص - يتم عرض هذه القيم في التقرير كذروة ومتوسط ​​الأحمال لساعة معينة.

رسم تخطيطي لتوزيع الأشخاص حسب الوقت لأقصى حمولة (مثال بسيط):

صورة

رسم تخطيطي لتوزيع الأشخاص حسب الوقت لمتوسط ​​الحمل (مثال بسيط):

صورة

الحشود


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

تتعلق هذه المهام بتقدير حجم الحشد: إذا كان عدد الحشود 300 شخص ، فإن إجابة 312 أو 270 تعتبر مقبولة.

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

تم استنساخ نتيجة النموذج من المراجعة (نموذج تم تدريبه مسبقًا على CSRNet):

صورة

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

كتاب المقال: تاتيانا فورونوفا (tvoronova) ، إلفيرا ديامينوفا (الفيرا)

All Articles