- المتطلبات المسبقة
- كيف يعمل التعرف على الوجوه مع OpenCV
- اكتشاف الوجه باستخدام Cascade Classifiers في OpenCV
تزداد شعبية التعرف على الوجوه ويستخدمه معظمنا بالفعل دون أن يدرك ذلك. سواء كان ذلك اقتراحًا بسيطًا على Facebook Tag أو Snapchat Filter أو مراقبة أمنية متقدمة للمطار ، فقد عملت ميزة التعرف على الوجه بالفعل في ذلك. بدأت الصين في استخدام التعرف على الوجوه في المدارس لمراقبة حضور الطلاب وسلوكياتهم. بدأت متاجر البيع بالتجزئة في استخدام التعرف على الوجوه لتصنيف عملائها وعزل الأشخاص الذين لديهم تاريخ من الاحتيال. مع المزيد من التغييرات الجارية ، ليس هناك شك في أن هذه التكنولوجيا ستظهر في كل مكان في المستقبل القريب.
في هذا البرنامج التعليمي سوف نتعلم كيف يمكننا بناء نظام التعرف على الوجوه الخاص بنا باستخدام مكتبة OpenCV على Raspberry Pi. ميزة تثبيت هذا النظام على Raspberry Pi المحمول هو أنه يمكنك تثبيته في أي مكان للعمل به كنظام مراقبة. مثل جميع أنظمة التعرف على الوجوه ، سيشمل البرنامج التعليمي نصي Python ، أحدهما عبارة عن برنامج تدريب يقوم بتحليل مجموعة من الصور لشخص معين وإنشاء مجموعة بيانات (ملف YML). البرنامج الثاني هو برنامج Recognizerالذي يكتشف وجهًا ثم يستخدم ملف YML هذا للتعرف على الوجه وذكر اسم الشخص. كلا البرنامجين اللذين سنناقشه هنا مخصصان لـ Raspberry Pi (Linux) ، ولكنهما سيعملان أيضًا على أجهزة كمبيوتر Windows مع تغييرات طفيفة جدًا. لدينا بالفعل سلسلة من البرامج التعليمية للمبتدئين لبدء استخدام OpenCV ، يمكنك التحقق من جميع دروس OpenCV هنا.
المتطلبات المسبقة
كما قيل سابقًا ، سنستخدم مكتبة OpenCV لاكتشاف الوجوه والتعرف عليها. لذا تأكد من تثبيت OpenCV Library على Pi قبل متابعة هذا البرنامج التعليمي. قم أيضًا بتشغيل Pi الخاص بك بمحول 2A وقم بتوصيله بشاشة عرض عبر كابل HDMI لأننا لن نتمكن من الحصول على إخراج الفيديو من خلال SSH.
كما أنني لن أشرح كيفية عمل OpenCV بالضبط ، إذا كنت مهتمًا بتعلم معالجة الصور ، فراجع أساسيات OpenCV والبرامج التعليمية المتقدمة لمعالجة الصور. يمكنك أيضًا التعرف على الخطوط العريضة واكتشاف النقطة الثنائية وغيرها في هذا البرنامج التعليمي لتجزئة الصور.
كيف يعمل التعرف على الوجوه مع OpenCV
قبل أن نبدأ ، من المهم أن نفهم أن اكتشاف الوجه والتعرف على الوجوه هما شيئان مختلفان. في اكتشاف الوجه يتم اكتشاف وجه الشخص فقط ولن يكون لدى البرنامج فكرة عن هوية هذا الشخص. في التعرف على الوجوه ، لن يكتشف البرنامج الوجه فحسب ، بل سيتعرف أيضًا على الشخص. الآن ، يجب أن يكون واضحًا أننا بحاجة إلى إجراء اكتشاف الوجه قبل إجراء التعرف على الوجوه. لن يكون من الممكن لي أن أشرح كيف يكتشف OpenCV بالضبط وجهًا أو أي كائن آخر في هذا الشأن. لذلك ، إذا كنت مهتمًا بمعرفة أنه يمكنك اتباع هذا البرنامج التعليمي لاكتشاف الكائنات.
إن تغذية الفيديو من كاميرا الويب ليست أكثر من سلسلة طويلة من الصور الثابتة التي يتم تحديثها واحدة تلو الأخرى. وكل صورة من هذه الصور هي مجرد مجموعة من وحدات البكسل ذات القيم المختلفة مجتمعة في موضعها الخاص. فكيف يمكن للبرنامج اكتشاف وجه من هذه البكسلات والتعرف أكثر على الشخص الموجود فيه؟ هناك الكثير من الخوارزميات وراءها ومحاولة شرحها خارج نطاق هذه المقالة ، ولكن نظرًا لأننا نستخدم مكتبة OpenCV ، فمن السهل جدًا إجراء التعرف على الوجوه دون التعمق في المفاهيم
اكتشاف الوجه باستخدام Cascade Classifiers في OpenCV
فقط إذا تمكنا من اكتشاف الوجه ، سنتمكن من التعرف عليه أو تذكره. لاكتشاف كائن مثل الوجه ، يستخدم OpenCV شيئًا يسمى المصنفات. هذه المصنفات عبارة عن مجموعة بيانات مُدربة مسبقًا (ملف XML) يمكن استخدامها للكشف عن كائن معين في حالتنا وجهًا. يمكنك معرفة المزيد حول مصنّفات اكتشاف الوجه هنا. بصرف النظر عن اكتشاف الوجه ، يمكن للمصنفات اكتشاف أشياء أخرى مثل الأنف والعينين ولوحة ترخيص السيارة والابتسامة وما إلى ذلك. يمكن تنزيل قائمة مصنّفات الحالات من ملف ZIP أدناه
المصنفات لاكتشاف الكائنات في بايثون
بدلاً من ذلك ، يتيح لك OpenCV أيضًا إنشاء المصنف الخاص بك والذي يمكن استخدامه للكشف عن أي كائن آخر في صورة عن طريق تدريب جهاز التصنيف المتتالي الخاص بك. في هذا البرنامج التعليمي ، سنستخدم مصنفًا يسمى "haarcascade_frontalface_default.xml" والذي سيكتشف الوجه من الموضع الأمامي. سنرى