الكاتب: آيوب علالي || موقع بايثون بالعربي
في هذه المقالة سنعمل على مشروع اكتشاف نوم اعضاء البرلمان في مقر عملهم حيث يتم ارسال تنبيه لرئيس الجلسة او يعمل منبه من اجل انذارهم او ايقاضهم, حيث سيتم استعمال انترنت الاشياء (IoT) والتعلم العميق (Deep learning) والرؤية الحاسوبية (Computer Vision). قبل أن نشرح خطوات عمل هذا المشروع أو نعمل أي تطبيق ضروري يجب معرفة ما هي الرؤية الحاسوبية و ما هي، أنترنت الأشياء و أيضا يجب معرفة الهاردوير والسوفتوير الذي سنحتاجهم .
الرؤية الحاسوبية هي فئة فرعية من الذكاء الاصطناعي تركز على بناء واستخدام الأنظمة الرقمية لمعالجة البيانات المرئية وتحليلها وتفسيرها. الهدف من الرؤية الحاسوبية هو تمكين أجهزة الحوسبة من التعرف بشكل صحيح على كائن أو شخص في صورة رقمية واتخاذ الإجراء المناسب.
تستخدم الرؤية الحاسوبية الشبكات العصبية التلافيفية (CNN) لمعالجة البيانات المرئية على مستوى البكسل والشبكة العصبية المتكررة (RNN) لفهم كيفية ارتباط بكسل واحد بآخر. CNN و RNN هما نوع من أنواع الشبكات العصبية العميقة.
إنترنت الأشياء، هو نظام من أجهزة الحوسبة المترابطة، والآلات الميكانيكية والرقمية ، والأشياء ، والحيوانات أو الأشخاص التي يتم تزويدها بمعرفات فريدة (ID) ، لها القدرة على نقل البيانات عبر الشبكة دون الحاجة إلى التفاعل بين الإنسان و والحاسوب.
بالنسبة لخطوات عمل هاد المشروع:
أولا يجب أن تكتشف الكاميرا نوم أحد أعضاء البرلمان عن طريق الرؤية الحاسوبية ثم بعدها يتم إرسال المعلومات المراد إرسالها من Raspberry pi إلى كلاود (سحابة إلكترونية) عن طريق الأنترنت، ثم بعدها يتم إرسال ذلك المعلومات من الكلاود إلى التطبيق الخاص برئيس الجلسة . بالنسبة للكلاود ممكن أن نعمل ب PUSHBULLET التي تسمح لنا بربط و إيصال أجهزتنا و نقل بعض المعلومات بينهم من خلال سكريبت بايثون الخاص بنا.
بالنسبة لخطوات اكتشاف نوم شخص معين ، أول شيء نحدد موقع الوجه و الكشف عن الهياكل الأساسية للوجه (معالم الوجه) عن طريق مكتبة Dlib التي تسمح لنا بالتحكم في كل نقطة من هذه النقاط.
ثم بعدها يتم استخراج النقاط الخاصة بالعيون فقط ، ثم يتم حساب نسبة عرض إلى ارتفاع العين أو eye aspect ratios ، لمعرفة هل العين مغمضة أم لا ، و من طبيعة الحال سيكون أيضا عداد لحساب كم من الوقت والعين مغمضة ، لأن إذا كانت العين مغمضة لا يعني أن الشخص نائم، ممكن يكون سبب ثاني، و لكن إذا كانت العين مغمضة مدة معينة فهذا يعني أن الشخص نائم .
بالنسبة للهاردوير الذي سنحتاجه :
- Raspberrypi3
- card SD
- CAMERA_V2
و بالنسبة للسوفتوير الذي سنحتاجه :
- opencv
- Dlib لتحديد موقع الوجه و التحكم في معالم الوجه ثم اكتشاف نوم الشخص
- picamera للتحكم في كاميرا Raspberryp من خلال سكريبت بايثون .
في هذا المشروع سنعمل تطبيق للجزء الخاص بالرؤية الحاسوبية فقط لأننا لا نتوفر على لهاردور لتطبيق أنترنت الأشياء ، و أيضا لأن جزء الرؤية الحاسوبية هو الذي يحتاج الكثير من العمل .
كما نعلم ، أن الفيديو مكون من مجموعة من الصور ، إذن سنعمل أولا على صورة معينة فقط و بعدها سنعمل فقط تغييرات خفيفة في سكريبت لتطبيقه على فيديو .
ستجدون هنا الأكواد الخاصة بالمشروع على GitHub