المدونةالفصل الثانيالذكاء الاصطناعي 1-2التطبيقات الروبوتية 2 | الوحدة السادسة | الدرس الثالث

التطبيقات الروبوتية 2 | الوحدة السادسة | الدرس الثالث

التطبيقات الروبوتية 2

التطبيقات الروبوتية 2 هو عنوان الدرس الثالث من الوحدة السادسة التي تحمل اسم “الذكاء الاصطناعي والمجتمع” من مقرر “الذكاء الاصطناعي” الفصل الدراسي الثاني.

ستتعرف في هذا الموضوع على كيفية تطوير نظام تحليل صور لطائرة مسيَّرة يتم استخدامها في مراقبة منطقة معيَّنة باستخدام محاكي ويبوتس (Webots)، بالإضافة إلى ترقية برنامج وحدة تحكُّم الطائرة المُسيَّرة عن طريق إضافة دوال إضافية، مثل: اكتشاف صور الحدود البشرية، وتنسيق التقارير.

التطبيقات الروبوتية 2

لذا قم بقراءة أهداف التعلُّم بعناية، ثم أعد قراءتها وتأكَّد من تحصيل محتواها بعد انتهائك من دراسة الموضوع.

أهداف التعلُّم

تطوير نظام تحليل الصور لطائرة مسيَّرة تُستخدَم في استطلاع منطقة معيَّنة.

هيا لنبدأ!

الروبوتية ورؤية الحاسب والذكاء الاصطناعي (Robotics, Computer Vision and AI)

رؤية الحاسب (Computer Vision) والروبوتية (Robotics) مجالان متطوران من مجالات التقنية يعملان معًا على متابعة التغيير السريع لطريقة حياة الناس وعملهم، وعندما يدمجان فإنهما يفتحان مجموعة واسعة من الإمكانيات للأتمتة (Automation) والتصنيع وتطوير التطبيقات الأخرى.

يعدُّ الذكاء الاصطناعي مكوِّنًا رئيسًا من مكوِّنات رؤية الحاسب والروبوتية على حدّ سواء؛ مما يمكِّن الآلات من التعلُّم والتكيُّف مع بيئتها بمرور الوقت، حيث تستطيع الروبوتات باستخدام خوارزميات الذكاء الاصطناعي أن تحلِّل وتفسِّر كميات هائلة من البيانات المرئية؛ مما يسمح لها باتّخاذ قرارات والقيام بإجراءات في الوقت الفعلي.

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

في هذا الموضوع ستعمل على ترقية المشروع الأوليّ للطائرة المُسيَّرة الذي تم توضيحه في الموضوع السابق، وذلك باستخدام رؤية الحاسب لاكتشاف وتحديد الشّخوص البشرية القريبة من المنزل، حيث يمكِن النظر إليهم على أنهم أعداء في سيناريو العالم الواقعي، وتستخدِم الطائرة المُسيَّرة الكاميرا المزود بها؛ لتكون بمثابة نظام مراقبة، كما يمكِن تطبيق هذا المثال وتنفيذه بسهولة على العديد من المباني الأخرى والبنية التحتية والممتلكات الخاصة والشركات، مثل: المصانع، ومحطات توليد الطاقة.

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

التطبيقات الروبوتية 2

يمكِن استخدام مكتبة أوبن سي في (OpenCV) في الروبوتية للقيام بمهام، مثل: اكتشاف الكائنات وتتبُّعها، وإعادة البناء ثلاثي الأبعاد، والملاحة، وتشمل ميزاتها كذلك اكتشاف الكائنات والتعرُّف عليها، واكتشاف الوجوه والتعرُّف عليها، ومعالجة الصور ومقاطع الفيديو، ومعايرة الكاميرا (Camera Calibration)، وتعلُّم الآلة، وغيرها.

يتم استخدام مكتبة أوبن سي في (OpenCV) على نطاق واسع في مشاريع البحوث والتطوير في مجالات متعدِّدة، تشمل: الروبوتية، والأتمتة، والمراقبة، والتصوير الطبي (Medical Imaging)، كما أنها يتم استخدامها في التطبيقات التجارية الخاصة بالتعرُّف على الوجوه، والمراقبة بالفيديو، والواقع المُعزَّز (Augmented Reality).

لنستعرض التغييرات التي ستُجريها لإضافة وظائف رؤية الحاسب للطائرة المُسيَّرة.

لمعرفة المزيد من المعلومات عن مكتبة أوبن سي في (OpenCV)، قم بالاطّلاع على الرابط التالي:

أوبن سي في – ويكيبيديا

إضافة المؤقَّت (Adding a Timer)

يمكِن أن يكون التقاط صورة ومعالجتها وحفظها مكلفًا من الناحية الحاسوبية إذا تم حساب لكل إطار من إطارات المُحاكاة، ولذلك ستضيف مؤقَّتًا زمنيًا لاستخدامه؛ لتنفيذ هذه الإجراءات كل خمسِ ثوانٍ فقط.

التطبيقات الروبوتية 2

إنشاء مجلد (Creating a Folder)

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

أولًا: عليك أن تستخدِم الدالة getcwd( ) لتسترد مسار دليل العمل الحالي لبرنامج المُتحكِّم (وهو المجلد الذي يتضمَّن برنامج المُتحكِّم) حتى يتعرف البرنامج على المكان الذي يضع فيه المجلد الجديد باسم: detected (تم الاكتشاف)، بحيث يتم استخدام الدالة path.join( ) لربط اسم المسار بسلسلة اسم المجلد النصيَّة، وتتمثَّل الخطوة الأخيرة في التحقُّق مما إذا كان المجلد موجودًا بالفعل أم لا، وفي تلك الحالة يتم إنشاء مجلد جديد.

معالجة الصورة (Image Processing)

في هذا التوقيت يمكِنك الآن استرداد (قراءة) الصورة من الجهاز لمعالجتها قبل محاولة الكشف.

لاحظ أن كل ما يتعلَّق بمعالجة الصورة وصولًا إلى حفظها يحدث كل خمسِ ثوانٍ فقط، كما هو مبيَّن في الشرط “self.getTime() – t2>5.0”.

التطبيقات الروبوتية 2

بعد التحقُّق من استرداد الصورة بنجاح، تنتقل الخوارزمية إلى تعديل بعض خصائصها، بحيث تكون الصورة ثلاثية الأبعاد، ولها أبعاد طول وعرض وقنوات ألوان، حيث تلتقط كاميرا الطائرة المُسيَّرة صورًا بارتفاع 240 بكسل وعرض 400 بكسل، كما أنها تستخدِم 3 قنوات ألوان لحفظ معلومات الصورة، وهي: الأحمر، والأخضر، والأزرق.

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

في هذا المثال، يجب أن يتغير تسلسل الأبعاد من (الطول، والعرض، وقنوات الألوان) إلى (قنوات الألوان، والطول، والعرض) باستخدام الدالة transpose()، حيث تُقدَّم صورة الكاميرا (Cameralmg)، والتسلسل الجديد (1، 0، 2) كمُعامِلات لهذه الدالة، بافتراض أن الترتيب الأصلي كان (2، 1، 0).

كما يجب تعديل أحجام الأبعاد بعد تغيير التسلسل، حيث يتم استخدام الدالة reshape() بالطريقة نفسها، ولكن أحجام الأبعاد المعنيَّة كالمُعامِل الثاني منها تكون (400، 240، 3).

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

التطبيقات الروبوتية 2

وأخيرًا، يتم تحويل الصورة إلى التدرُّج الرمادي باستخدام الدالة cvtColor() التي تستخدِم معامِل COLOR_BGR2GRAY لتغيير الألوان من الأزرق والأخضر والأحمر إلى التدرُّج الرمادي.

بإمكانك مراجعة محتوى موضوع “التطبيقات الروبوتية 2” من بدايته وحتى نهاية هذا القسم، من خلال الرابط التالي:

اكتشاف صور الحدود البشرية (Human Silhouette Detection)

لكي تكتشف الصورة، عليك أن تستخدِم مصنَّف هار كاسكيد (Haar Cascade Classifier)، وهو خوارزمية لاكتشاف الكائنات تعتمد على تعلُّم الآلة، ويتم استخدامها لتحديد الكائنات في الصور أو مقاطع الفيديو.

ولاستخدام هذا المُصنَّف تحتاج أن تقوم بتدريب نموذج تعلُّّم الآلة على مجموعة من الصور التي تحتوي على الكائن الذي تريد البحث عنه، وعلى صور أخرى لا تحتوي على هذا الكائن، حيث تقوم الخوارزمية بالبحث عن أنماط معيَّنة في الصور لتحديد مكان الكائن.

وفي العادة يتم استخدام هذه الخوارزمية للعثور على أشياء محدَّدة، مثل: الوجوه، أو أشخاص يسيرون في مقطع فيديو.

ومع ذلك، قد لا تعمل هذه الخوارزمية بشكلٍ جيد في بعض المواقف التي يكون فيها الكائن محجوبًا جزئيًّا أو كليًّا أو معرضًا لإضاءة منخفضة.

تم تدريب المُصنَّف في مشروعك تدريبًا خاصًّا على اكتشاف البشر، وعليك أن تستخدِم ملف haarcascade_fullbody.xml الذي ستزود به، وهو نموذج تعلُّم آلة مدرَّب مسبقًا ويشكِّل جزءًا من مكتبة أوبن سي في (OpenCV)، ويقدِّم كمُعامِل لكائن CascadeClassifier()، ثم تستخدِم الدالة detectMultiScale() للقيام بعملية الاكتشاف.

التطبيقات الروبوتية 2

تقرير الطائرة المُسيَّرة وحفظ الصور المُكتشَفة (Drone Report and Saving of the Detected Images)

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

يقوم المتغيِّر humans (البشر) بحمل المستطيلات الإطارية التي يتم اكتشاف البشر بداخلها في حال تم العثور عليهم.

يتم تعريف المستطيلات بواسطة 4 متغيِّرات: وهي الزوج x وy اللذان يمثِّلان الإحداثيين اللذين في الصورة وذلك في الزاوية العُليا من الجهة اليُسرى للمستطيل، وكذلك الزوج w وh، الذي يمثِّل عرض المستطيل وارتفاعه.

في جميع الاكتشافات الموجودة في الصورة تحدِّد الدالة rectangle() البشر بمستطيل أزرق، حيث تنظر الدالة إلى متغيِّرات الصورة على أنها تتمثّل في الزاوية اليسرى العُلوية (x, y) والزاوية اليمنى السُفلية (x+w, y+h) من المستطيل، ولون المستطيل وعرضه، وفي الصورة الموضَّحة تلاحظ أن لون المستطيل أزرق (B=255, G=0, R=0) وعرضه 2.

سيقوم نظام التقرير باسترجاع التاريخ والوقت الحاليين باستخدام الدالة datetime.now() وطباعتها على وحدة التحكُّم، بالإضافة إلى إحداثيات الطائرة المُسيَّرة في وقت التقرير، ويتم تعديل تنسيق التاريخ والوقت بطريقة بسيطة عن طريق إدراج الشرطات العُلوية (-) والشرطات السُفلية (­­_) لاستخدامها كجزء من اسم الملف المحفوظ، ثم يتم حفظها في المجلد باستخدام الدالة imwrite()، وعند اكتمال كل شيء تقوم الدالة getTime() بإعادة ضبط المؤقَّت.

التطبيقات الروبوتية 2

بإمكانك مراجعة محتوى موضوع “التطبيقات الروبوتية 2” بدايةً من عنوان “اكتشاف صور الحدود البشرية” وحتى هذه النقطة، من خلال الرابط التالي:

بعد إضافة كل هذه الوظائف يجب أن تظهر الدالة run() الخاصة ببرنامج المُتحكِّم كما يلي:

التطبيقات الروبوتية 2

الآن شغِّل المُحاكاة لترى الطائرة المُسيَّرة وهي تُقلع وتُحلِّق حول المنزل.

لاحظ مخرَجات وحدة التحكُّم الجديدة والصور التي تم إنشاؤها في المجلد.

بإمكانك مراجعة محتوى موضوع “التطبيقات الروبوتية 2” بدايةً من جملة “بعد إضافة كل هذه الوظائف يجب أن تظهر الدالة run()” وحتى نهاية الموضوع، من خلال الرابط التالي:

إلى هنا يكون قد انتهى موضوع “التطبيقات الروبوتية 2، لا تنسوا مراجعة نواتج التعلُّم أعلى المقال، وانتظرونا في الموضوع القادم!

روابط هامة

مقررات الفصل الدراسي الثاني

مشاركة المقال عبر:

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *