
سوف أخبرك اليوم كيف صنعنا نظامًا لمراقبة الدخول في المكتب استنادًا إلى خدمة
Vision للتعرف على الوجه. أولاً ، خلفية صغيرة. كما هو الحال في أي خدمة بريد إلكتروني ، أنشأنا نظامًا لمكافحة البريد العشوائي. يتم تصنيع هذه الأنظمة الآن على أساس التعلم الآلي ، لدينا فريق قوي مسؤول عن ذلك. وحيث يوجد تعلم الآلة ، هناك رؤية الكمبيوتر. لذلك ، نشأت خدمة الرؤية بشكل طبيعي وطبيعي.
بالتوازي مع هذا ، قبل بضع سنوات أطلقنا السحابة ، تخزين موثوق للملفات مع التوزيع الجغرافي لمراكز البيانات ، والتي يمكن استخدامها من قبل كل من الأفراد والشركات. بمرور الوقت ، حصلنا على "Cloud for Business" ، التي لا تخزن الملفات فحسب ، بل تتيح لك أيضًا طلب الأجهزة الافتراضية. تدريجيا ، تحول هذا إلى MCS - Mail.ru Cloud Solutions ، حيث تتناسب الرؤية مع عضويا في إحدى الخدمات.
سحابة
شبكاتنا العصبية قادرة على التعرف ليس فقط على الوجوه ، ولكن أيضًا على مختلف
الكائنات والأشياء والمشاهد ، بما في ذلك
المعالم السياحية . الآن يمكنهم التعرف على حوالي 10 آلاف فئة ، وتعمل رؤية الماكينة في بعض الأحيان بشكل أفضل من البشر.

هذه هي ابنتي في عام 2012 ، في عامي 2015 و 2018. إذا لم أكن أعرفها شخصياً ، فربما لم أفهم على الفور أن هذا الشخص هو نفسه. وكانت الشبكة العصبية قادرة على التطابق والفهم.

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

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

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

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

كتلة على اليمين نسميه "الكاميرا" - هذه هي الوحدة التي معلقة على الباب. يتكون من ثلاثة أجزاء. يستقبل Raspberry Pi الفيديو من كاميرا USB ، ويقوم بالتشفير باستخدام FFmpeg ، ويرسله. لقد اختبرنا عدة كاميرات IP ذات نطاق سعر معقول ، وكان لدى الجميع تأخير ملحوظ يبلغ حوالي 0.5 ثانية. ونظرًا لأننا نتأخر في المراحل الأخرى ، عندما يأتي شخص ما وينظر إلى الكاميرا ولم يحدث شيء لبضع ثوان ، فهو يريد بالفعل إجراء تمريرة. لذلك ، قللنا من التأخير كلما كان ذلك ممكنًا ، واتضح أن Raspberry Pi مع كاميرا USB أسرع من العديد من كاميرات IP التجارية. متصل أيضًا بـ Raspberry عبارة عن Arduino صغير مزود بمصباح LED متعدد الألوان و squeaker. الصمام الافتراضي أحمر. عندما يأتي شخص ومعترف به ، تضيء الأخضر.
لذلك ، يقوم Raspberry Pi بنقل دفق الفيديو ، والذي يدخل عبر الخادم عبر شبكة سلكية. لدينا غرفة خوادم في كل طابق ، حيث توجد مفاتيح ، وتوصيل الكابلات بمكاتب الموظفين ، ونظام للتحكم في الوصول بدوام كامل - نظام لمراقبة الدخول وإدارته.
نضع Raspberry Pi آخر في غرفة الخادم ، والذي يستقبل دفق الفيديو في الوقت الفعلي ويقوم بتشغيله عبر OpenCV. لماذا نحتاج OpenCV؟ نحن بحاجة إلى تحديد ما إذا كان هناك وجه في الصورة. تعمل الشبكة العصبية التي تعرّف الشخص في الصورة لفترة أطول قليلاً ، كما أنها مكلفة للغاية لتغذية بث الفيديو إليها باستمرار. لذلك ، من خلال OpenCV ، نحدد وجود وجه ، وإذا ظهر ، فإننا نرسله إلى Vision. تجيب الخدمة إما أنها لم تعثر على هذا الموظف ، أو ترسل معرف الموظف في قاعدة بيانات الموارد البشرية. باستخدام معرف الموظف هذا ، ننتقل إلى إنترانت المرتبطة بـ ACS ، وتقوم بإرجاع معرف المرور. علاوة على ذلك ، نلقي معرف المرور هذا في Arduino ، والذي ينقله إلى ACS. بالنسبة لنظام التحكم في الوصول ، فإن هذا يعادل الشخص الذي يطبق تصريح. أي أننا لا نغير ACS بأي شكل من الأشكال ؛ فهو لا يزال يسجل دخول وخروج الموظفين.
كيف يمكننا دمج نظامنا مع ACS؟ في مكتبنا ، يتم استخدام أجهزة Bolid C2000-2.

هذا هو نظام التحكم في الوصول المحلي. على الأرجح ، يمكنك الاتصال بهذه الأجهزة من خلال الواجهة 485 ، لكننا وصلنا عبر بروتوكول Wiegand.

وصلنا Arduino ، الذي يعمل كوكيل ، لقارئ المرور المثبت بالقرب من الباب.

تُظهر الصورة اتصال الطاقة وخطي بيانات من قارئ التمرير. يتم استخدام لوحة للاتصال أكثر ملاءمة.
يتلقى Arduino رقم المرور إما من القارئ أو من Raspberry Pi عبر USB ، ويعطيه إلى ACS. ACS لا يعرف حتى من أين هو رقم المرور.
ويغان
هذا بروتوكول قياسي لأنظمة التحكم في الوصول ، ويدعمه معظم القراء. البروتوكول بسيط للغاية: خطان للبيانات ، سطر واحد من الأصفار وسطر واحد من الوحدات. بمجرد قيامك بتوصيل خط الصفر بالأرض ، يفهم القارئ أن الصفر يتم إرساله ، كما هو الحال مع الوحدات. وهذا يعني أن البروتوكول لا يحتوي على توقيت قياسي ، ورقم التخطي سهل القراءة من خلال مقاطعة على Arduino ، ومن السهل تمثيله كسلسلة من البيانات. وبما أن التسجيل يتطلب نوعًا من التوقيت ، فقد ركزت على هذه القيم:

هناك بالفعل مكتبة جاهزة لاردوينو. يمكنها قراءة تنسيقات Wiegand المختلفة ، لكن قدراتها محدودة بهذا. وكان لا يزال يتعين علي الإرسال. لذلك ، كتبت مكتبتي ، التي تعمل فقط مع تنسيق Wiegand-26. 26 هو عدد البتات: 3 بايت للرقم تخطي و 2 بت تماثل. علاوة على ذلك ، في جميع الوثائق والمقالات المكتوبة ، على الأرجح ، سيتجاهل جهاز التحكم الحديث وحدات البت ، لذا فأنا كسول ولا أحسبها ، ولكن أرسل دائمًا الصفر. ACS يتصور هذا بشكل طبيعي.
كانت لدينا مشكلة أخرى: إذا ظهر شخص ما أمام الكاميرا لأول مرة ، وبعد ذلك ، دون انتظار العملية ، قام بتطبيق تمريرة ، ثم حدثت حالة سباق: في الوقت نفسه ، جاء رقم المرور من القارئ ومن الاعتراف. لم يتمكن ACS من التعامل مع هذا ولم يسمح للناس بالدخول. لذلك ، اضطررت إلى إضافة مخزن مؤقت للرنين مع رموز 4 إلى المكتبة. بغض النظر عن مصدر الرموز ، يتم وضعها في المخزن المؤقت ، وبعد ذلك يتم إرسال مهلة قدرها 0.5 ثانية إلى ACS. منذ ذلك الحين ، توقف الزملاء عن الشكوى بعدم السماح لهم بذلك.
موقف اختبار

تم تجميع النموذج الأولي من أي شيء فظيع. علق توت العليق بي في صندوق على رف مثير للسخرية ، وتم لصق كاميرا فوق شريط على الوجهين. اردوينو معلقة على قدد الجانب. بشكل عام ، كل ما نحبه هو DIY للغاية.
بالطبع ، في هذا النموذج كان من المستحيل المغادرة ، كان من الضروري الترتيب بشكل جميل. تحدثنا مع العديد من المقاولين ، ووعدونا بطلب عينات في الصين ، ولكن بعد ذلك انتهت جميع المواعيد النهائية المتفق عليها ، ولم يقدم لنا أحد أي شيء.
المنتجات المخصصة لها مشكلة واحدة - جميع الحلول متخصصة للغاية ، وستقدم خصيصًا لنا. أولاً ، أصبحنا نعتمد على المورد. ثانياً ، لقد ظهر تصميم دائرة فريد من نوعه مع دوران صغير ، مما يعني أن تكلفة قطعة واحدة ستكون مرتفعة. ثالثًا ، وقت الإنتاج طويل بما فيه الكفاية ، وإذا فشلت نسخة ، فلن نتمكن من شراء بديل سريع في المتجر ، وسننتظر حتى يتم تشغيل النسخة المطبوعة التالية ، وإذا فعلنا ذلك على الفور ، فسيتم نسخ النسخ المتبقية في المستودع.
بعد أن خذلنا جميع الشركاء المحتملين ، ذهبت إلى زميل من Vision وقلت: "Volodya ، اسمح لي أن أقوم بطباعة علبة على الطابعة ثلاثية الأبعاد لجعلها تبدو جميلة." تنهد وقال: "هيا. ماذا تفعل؟ "
الكاميرا الخامس 1

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

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

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

أولاً ، حاولنا إنشاء صرير على Raspberry Pi عبر gpio. اتضح بشكل سيء للغاية. لذلك ، قررنا أن نأخذ هذه الوظيفة بشكل منفصل عن Raspberry Pi عن طريق توصيل اردوينو صغير (في الواقع Iskra mini) ، والذي كان ملحومًا به squeaker و LED ، من خلال TTL مباشرة إلى الكتلة.
هذا ما بدا عليه في المعركة:
علقنا الجهاز على الأرض. في هذا النموذج ، عاش لفترة كافية. صرير ، متوهجة بشكل جميل ، وفتح الباب ، ولكن ليس في كل مرة. ومع ذلك ، اشتكى الزملاء من أن LED مشرق للغاية. اضطررت لإضعافه 4 مرات.
الكاميرا الخامس 2
ثم قاموا بهذا الخيار:

استلهم تصميم محور Xiaomi بحلقة مضيئة حول المحيط. انها تبدو جميلة جدا. يتكون شعار Vision من أجزاء فردية مطبوعة بألوان بلاستيكية مختلفة. هنا هو النموذج:


هذه المرة أضع squeaker على الحائط الخلفي ، وقمت بتركيب مؤشر LED في حلقة شفافة حول المحيط ، مطبوعة من PLA شفاف. لقد انهار الديكور على الفور تقريبًا ، لأنه تم وضعه في الأصل على الاحتكاك ، واضطررت إلى وضعه على الغراء.
مشاكل الكاميرا
كان لدينا فكرة لتكرار هذا القرار في جميع أنحاء المبنى. ولكن هناك مشكلة: جميع الطوابق تقريبًا لها بابان ، ولكل منهما كاميرتان ، 96 كاميرا فقط لأحد أبراجنا فقط ، والآن يتم تطوير الثانية بشكل نشط. من الممكن طباعة العديد من الحالات ، لكنها تبدو معقدة بالفعل. بالإضافة إلى ذلك ، لدينا عدد قليل من المكونات في الجهاز ، مما يعني العديد من نقاط الفشل. إذا قمنا بتوسيع نطاق الحل للمبنى بالكامل ، فسنحافظ على هذه الكاميرات باستمرار. مرة أخرى ، تعقيد استبدال سريع ، لأن كل كاميرا هي جهاز قطعة. وتحتاج إما إلى طباعة الكثير منها ، بهامش ، أو إذا حدث شيء ما ، فقم على الفور بتشغيل وطباعة وجمع واحدة جديدة. لقد أدركنا أن حلول DIY رائعة ، لكنك تحتاج إلى شيء أكثر ملاءمة في النسخ المتماثل. وجاءت الفكرة لنقل كل شيء إلى iPad.
aypad
باد لديها العديد من المزايا. الأول هو الشاشة. اشتكى الزملاء من عدم وجود ردود فعل ، فهي مناسبة ولا تفهم ما إذا كان الاعتراف قد بدأ أم لا ، أو انتظارهم أو عدم الانتظار.
ثانياً ، تشتمل iOS على ميزة التعرف على الوجوه المدمجة. تم تمرير الوظيفة التي يؤديها OpenCV إلى iPad. يتم عرض إطار على الشاشة ، ويجب أن يأتي الشخص بعيدًا بحيث يلائم الوجه هذا الإطار. بعد ذلك ، يبدأ النظام في التعرف عليه تلقائيًا ، لا تحتاج إلى الضغط على أي شيء.
ثالثا ، آي باد منتج كبير. إذا فشلت ، وضعنا آخر. على الرغم من أن الجهاز اللوحي نفسه يكلف حوالي 20 ألف روبل ، إلا أنه لا يزال أرخص من الكاميرات المخصصة التي قدمها لنا الشركاء. بالإضافة إلى ذلك ، أسرع وأكثر موثوقية.
العمارة الجديدة

استحوذ iPad على معظم الميزات. على Raspberry Pi ، الموجود في غرفة الخادم ، يوجد بالفعل مضيف HTTP يقبل طلب GET بمعرف مرور. انه على الفور وكيل في اردوينو ، وأنها وكلاء في ACS.
في الإصدار الأول ، تم تحميل Raspberry Pi بشدة ، لأن OpenCV كان يعمل عليه باستمرار. لم يعد من الممكن توصيل كاميرا ثانية بها ؛ لن تكون هناك طاقة حسابية كافية. لقد فكرنا بالفعل في وضع جهاز كمبيوتر صادق هناك ، والذي من شأنه تحليل 4 خيوط من بابين. لكن هذا لم يتحقق. الآن يتم إجراء البحث عن الوجه في الصورة بشكل مستقل على كل جهاز iPad. في الصليب ، هناك اثنان من اردوينو ، واحد لكل باب. تعمل كلتا اللوحتين مع تصاريح الدخول والخروج. لماذا من المهم العمل مع تصاريح الدخول والخروج؟ أولاً ، عندما يتم التعرف على الوجه ويفتح الباب ، يضيء الضوء الأخضر على قارئ البطاقات ، ويدرك الزملاء أنه يمكنك الخروج. ثانياً ، تقوم ACS بتسجيل المدخلات والمخرجات. محاكاة المدخلات والمخرجات بشكل منفصل ، نحن لا كسر نظام التشغيل ACS.
وبطبيعة الحال ، جمع المصممون أنفسهم الذين رسموا لنا واجهة جميلة. هكذا يبدو الآن في أحد طوابق مكتبنا:

العمل مع الرؤية
على الرغم من أن MCS هو منتج أعمال ، يمكن للهواة استخدامه أيضًا. تقدم الخدمة للجميع 5 آلاف معاملة مجانية شهريًا ، أي 166 يوميًا. لذلك ، يمكنك التقدم بطلب للحصول على احتياجاتك المحلية ، إذا كنت ترغب في الحد ، بالطبع. كيف يمكن القيام بذلك؟
python examples/python/smarty.py \ -u "https://smarty.mail.ru/api/v1/persons/recognize ?oauth_provider=mcs&oauth_token=e50b000614a371ce 99c01a80a4558d8ed93b313737363830" \ -p friends1.jpg \ --meta '{"space":"1", "create_new":true}' \ -v
التقط صورة وأرسلها إلى Vision مع رمز الوصول الخاص بنا. نشير إلى أننا نعمل مع المساحة الأولى
create_new
بتعيين
create_new
- ثم سيقوم النظام بإنشاء معرف جديد لكل شخص غير مألوف. هنا هو ما حصلنا عليه في الرد:
{ "status":200, "body":{ "objects": [ { "status":0, "name":"file_0", "persons":[ {"tag":"person1","coord":[102,30,184,134],"confidence":0.99999,"awesomeness":0.5025}, {"tag":"person2","coord":[393,74,461,166],"confidence":0.99987,"awesomeness":0.548}, {"tag":"person3","coord":[458,48,535,149],"confidence":0.99976,"awesomeness":0.4766}, {"tag":"person4","coord":[273,45,352,147],"confidence":0.99963,"awesomeness":0.504}, {"tag":"person5","coord":[525,81,600,184],"confidence":0.99954,"awesomeness":0.4849}, {"tag":"person6","coord":[194,76,258,167],"confidence":0.9984,"awesomeness":0.5725} ] } ], "aliases_changed":false }, "htmlencoded":false, "last_modified":0 }
أنا مهيأ JSON قليلا. تحتوي الاستجابة على معرف الشخص وإحداثيات الوجه في الصورة ومعلمتين: إلى أي مدى يتم التعرف على الوجه ومدى تطابق هذا الشخص مع المعيار. يمكنك إرسال طلب POST مع صورة بلغة البرمجة الخاصة بك ، والحصول على JSON وتحليل الاستجابة.
إذا كان لديك تقاطع كبير وتحتاج إلى تحديد أكثر من عشرة أشخاص فقط ، فيمكنك تعيينهم يدويًا. بعد ذلك ، سوف يقوم النظام بإعطاء معرفات للأشخاص المألوفين ، وغير معرف للأشخاص غير المألوفين. يمكن أيضًا إزالة الأشخاص بشكل انتقائي ، على سبيل المثال ، في حالة إنهاء الموظف.
أفكار
في أي المشاريع يمكنك استخدام التعرف على الوجوه؟ إذا كنت ترغب في تطبيق نظام النطاق الترددي ، يجب أن تقلق بشأن مكافحة الغش. على سبيل المثال ، إضافة كاميرا الأشعة تحت الحمراء لتحديد ما إذا كانت صورة أو شخص حي. أو وضع كاميرتين لتحديد عمق الكائن ، يمكن القيام بذلك باستخدام OpenCV.
يمكنك تنظيم التعرف على الناس في المدخل. إذا كان هؤلاء هم جيرانك ، فكل شيء على ما يرام ، وإذا كان شخص ما غريبًا ، فيمكنك إرسال تنبيه إليك. لدينا مثل هذه المشكلة في منزلنا ، الغرباء يأتون دوريا ويتركون الكثير من القمامة بعد هبوطهم.
إذا قمت بعمل "مرآة ذكية" ، فيمكنك تزويدها بتقدير أفراد الأسرة ، بحيث يمكن للجميع إظهار ما هو مثير للاهتمام بالنسبة له. لنفترض أن المرآة ستظهر لي جدول الاجتماعات لهذا اليوم ، ومع ابنتي ستحيي بمرح وتعرض لتنظيف أسناني ، وليس بالسرعة المعتادة ، ولكن دقيقتين.
فكرة أخرى هي التعرف على لوحة ترخيص من بوابة التلقائي في البلاد. من أجل عدم الخروج أو الضغط على مفتاح fob ، يمكنك وضع كاميرا تزيل رقمك ، وسيتم فتح البوابة تلقائيًا.