جدول المحتويات:
- الخطوة 1: المتطلبات
- الخطوة الثانية: تدريب البيانات
- الخطوة 3: تنفيذ توقعات كاميرا Pi
- الخطوة 4: Arduino Robot
- الخطوة 5: الاختبار
- الخطوة 6: جميع الملفات الإضافية
فيديو: روبوت التعرف على إشارات المرور Raspberry Pi 4: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
تستند هذه التعليمات إلى مشروع جامعتي. كان الهدف هو إنشاء نظام تقوم فيه الشبكة العصبية بتحليل صورة ثم بناءً على التعرف ، ستخبر روبوت اردوينو بالتحرك عبر روس.
على سبيل المثال ، إذا تم التعرف على علامة الانعطاف إلى اليمين ، فسيتحول الروبوت إلى اليمين ، وإذا تم التعرف على علامة الانعطاف إلى اليسار ، فسيتحول الروبوت إلى اليسار ، وإذا لم يتم التعرف على أي منهما ، فسيستمر الروبوت في التقدم. مجموعة البيانات التي سيتم استخدامها هي التعرف الرسمي على إشارات المرور من INI (2019) (Institut Fur Neuroinformatik) ، تحتوي مجموعة البيانات هذه على 43 فئة ولكن هناك حاجة إلى فئتين فقط ؛ تعد مجلدات 00033 و 00034 في مجموعة البيانات علامتي انعطاف يسار ويمين.
الخطوة 1: المتطلبات
متطلبات هذا المشروع هي كالتالي:
روبوت اردوينو. (في الأساس اردوينو أونو ، وسائق محرك ومحركات) (ليست هناك حاجة إذا كنت لا تستخدم روبوتًا)
التوت باي 4.
كاميرا بي.
البرمجيات المطلوبة:
بايثون 3.
OpenCV 4.
Tensorflow.
اردوينو IDE (ليس ضروريًا إذا كنت لا تستخدم روبوتًا)
روس (غير مطلوب إذا كنت لا تستخدم روبوتًا)
مهما كانت لغة python المفضلة لديك (على raspberry pi ، أستخدم Thonny).
لإعداد OpenCV و Tensorflow ، اتبع التعليمات التي وضعها Adrian. الرابط:
أوصي بالنظر إلى أكبر عدد ممكن من دروسه التعليمية ، فهي ممتعة حقًا ومفيدة للمبتدئين وكذلك الوسطاء.
الخطوة الثانية: تدريب البيانات
تم تصميم البرنامج النصي للقطار للوصول إلى مجموعة البيانات التي تجمع حوالي 50000 صورة من 43 فئة. تمت كتابة النص بلغة python ، باستخدام مجموعة متنوعة من المكتبات: os - هذا لربط نص Python بالمجلد الصحيح حيث توجد مجموعة البيانات. Matplotlib - هذا لعرض البيانات من نموذج التدريب. Tensorflow و keras - هذه هي المكتبات المستخدمة لإنشاء نموذج الشبكة العصبية الاصطناعية ، وتستخدم لتصميم النموذج. Numpy - هذه المكتبة لتحويل الصور إلى مصفوفة يمكن وضعها بعد ذلك من خلال النموذج لاسترداد التنبؤ.
النص المرفق هو رمز Python لعمل نموذج من مجموعة البيانات. يتكون هذا من 2D تلافيفي مع إدخال (5 ، 5) وتفعيل relu ثم تجميع ، بمجرد الانتهاء من ذلك ، يمر الإدخال عبر التفاف آخر مع إدخال (3 ، 3) بنفس التنشيط والتجميع. يحدث هذا مرة أخيرة قبل أن يتم تسطيحها ثم يتم تطبيق الكثافة على عدد الفئات الموجودة ، في هذه الحالة 43.
كانت الخطوة التالية هي تجميع النموذج. هذا هو الجزء الذي يحدد المُحسِّن ، وكان sgd هو الأكثر ملاءمة لأنه كان مشابهًا للمحسِّن المستخدم في المهمة 1. Sgd تعني هبوط التدرج العشوائي. يجب أيضًا ضبط الخسارة داخل المترجم ، واختيار الخسارة المتناثرة_الفئة_الخطية هو أفضل ملاءمة لأن الفئات هي بمثابة أعداد صحيحة وسيخرج النموذج تنبؤًا لكل فئة كعوامة بين 0 و 1. 1 تكون دقة 100٪.
بمجرد اكتمال المترجم ، يجب تطبيق المولد للنموذج لبدء معالجة مدخلات الصورة. يتكون المولد من أجزاء متعددة: training_set - هذا هو الرابط إلى مجموعة البيانات المستخدمة للتدريب ، steps_per_epoch - هذا هو عدد الخطوات المطلوبة لكل حقبة ، العهود - هذه هي عدد المرات التي سيتكرر فيها البرنامج عبر مجموعة كاملة من البيانات ، validation_data - هذا هو الرابط إلى مجموعة البيانات المستخدمة للتحقق ، Validation_steps - عدد الخطوات المستخدمة للتحقق ، يحدث التحقق في نهاية كل حقبة.
بشكل عام ، يجب إكمال المسح الكامل لمجموعة البيانات بأكملها في كل فترة. ومن ثم ، على سبيل المثال ، ستتطلب مجموعة بيانات مكونة من 1024 صورة: حجم الدُفعة = 32 ، والخطوات لكل حقبة = 32 ، والعهود = 1. تشتمل كل خطوة على حجم الدُفعة بالكامل ، لذا مع حجم الدُفعة 32 ، ستكون الخطوات 32. من ناحية أخرى يدويًا ، من الأفضل أن يكون حجم الدُفعة أكبر من عدد الفئات ، وذلك لأنه إذا كان حجم الدُفعة أصغر ، فلا يمكن أن تتضمن كل خطوة صورة من كل فئة.
بمجرد انتهاء النموذج من التدريب ، باستخدام matplotlib ، سيقوم البرنامج بعمل رسم بياني للمخرجات ، وهذا يوضح تاريخ التدريب من البداية إلى النهاية. يتكون الرسم البياني من الدقة ودقة التحقق من الصحة والخسارة وفقدان التحقق من الصحة ، ويتم تقسيم هذا لكل فترة لإظهار كيفية تقدم التدريب. المرحلة الأخيرة هي حفظ النموذج كملف h5. والذي يمكن الوصول إليه لاحقًا لعملية التنبؤ. يعني حفظ النموذج أنه في كل مرة يتم فيها تشغيل برنامج التنبؤ ، لا يلزم تشغيل برنامج التدريب مرة أخرى. يمكن أن يستغرق البرنامج التدريبي ما يصل إلى 10 دقائق لكل فترة على التوت بي.
مرفق نص التدريب:
الخطوة 3: تنفيذ توقعات كاميرا Pi
البرنامج التالي هو سيناريو التنبؤ والناشر.
المرحلة الأولى هي تحميل النموذج باستخدام model.load (). المرحلة الثانية هي التكرار من خلال الإطارات من كاميرا pi باستخدام opencv ثم تغيير حجم الإطار إلى نفس حجم أحجام الإدخال المستخدمة في مرحلة التدريب ، 32 × 32 بكسل. بمجرد الانتهاء من ذلك ، يتم وضع الإطار الجديد الذي تم تغيير حجمه من خلال النموذج باستخدام model.prict () الذي ينتج مصفوفة ، كل عنصر من عناصر المصفوفة يكون عائمًا من 0 إلى 1 ، ويكون فهرس العنصر هو نفسه الفئة التي يمثلها ، ومن ثم العنصر الأول هو الفئة الأولى والرقم هو توقع اليقين من أن الصورة من تلك الفئة. على سبيل المثال يوضح
ملاحظة: إذا كنت لا تستخدم جانب الروبوت. فقط قم بإزالة الخطوط:
"استيراد rospy"
المتحدث def (الاتجاه):
الرسالة = سلسلة ()
pub = rospy. Publisher ('robot'، String، queue_size = 10)
rospy.init_node ('talker' ، مجهول = صحيح)
رسالة = الاتجاه
rospy.loginfo (رسالة)
pub.publish (رسالة)"
"المتكلم (الاتجاه)"
مرفق نص كاميرا Pi.
الخطوة 4: Arduino Robot
الخطوة الأخيرة هي نص برنامج الروبوت.
هذا مكتوب بلغة C ++ وهو ملف.ino لـ arduino uno. يتطلب البرنامج مكتبة روس التي يمكن العثور عليها في مدير المكتبات داخل بيئة تطوير متكاملة. بمجرد استيراد هذا ، توجد ملفات أمثلة ، اخترت التوسيع في ملف وميض LED لأن هذا سيؤدي إلى هدف مماثل لما أحتاجه. يستمر البرنامج في التكرار حتى يتم فصل الطاقة ، أولاً يستمع إلى الروبوت الموضوع ، عندما يمسك أمرًا من هذا الموضوع ، سيكون لديه عبارة if لمعرفة ما يقوله الأمر. إذا تم ترك الأمر ، فسيؤدي البرنامج النصي إلى تشغيل طريقة الانعطاف إلى اليسار ، وإذا كان الأمر على اليمين ، فسيتم تشغيل طريقة الانعطاف إلى اليمين وإلا فسيتم تشغيل طريقة التوجيه. هذه الطرق الثلاث متشابهة جدًا مع بعضها البعض ، فهي تخبر الدبابيس الرقمية أن تكون إما منخفضة (أرضي) أو 100 (PWM) ، وذلك حتى لا يكون الروبوت سريعًا جدًا عن طريق إخبار سائق المحرك بالسماح قليلاً فقط الجهد خارج. ترتيب هذه المخرجات هو ما يجعل الروبوت يستدير لليسار ولليمين أو يتقدم للأمام ، ويرجع ذلك إلى اتجاه الجهد المتجه إلى المحركات.
مرفق بالبرنامج النصي.ino لاردوينو.
الخطوة 5: الاختبار
الصور المرفقة حتى المشروع من البداية إلى النهاية. توضح الصورة الأولى التدريب قيد التنفيذ. بمجرد اكتمال ذلك ، يتم عرض نسخة مطبوعة من النموذج المصنوع. تُظهر الصورة الثالثة تنبؤًا من نص التدريب. هذه هي المرحلة الأخيرة من البرنامج النصي للتدريب. إذا نظرت في المجلد الذي يوجد به البرنامج النصي للتدريب ، فقد تم عمل رسم بياني ونموذج. يجب أن يبدو الرسم البياني مثل الصورة 4 هنا ، وهذا يوضح تاريخ التدريب من البداية إلى النهاية.
الصورة النهائية أثناء تشغيل البرنامج النصي pi camera ، وهي عبارة عن دفق مباشر من كاميرا pi. يتم عمل توقع على كل إطار ويتم طباعة التوقع في الجهاز. يُظهر الإطار ما تراه الكاميرا.
مرفق تقرير جامعتي لهذا المشروع. يرجى قراءة لمزيد من التفاصيل عن المشروع.
الخطوة 6: جميع الملفات الإضافية
كان بعضها يختبر الملفات التي قمت بإنشائها على طول الطريق.
موصى به:
إشارات المرور الذكية: 6 خطوات
إشارات المرور الذكية: لماذا صنعت هذا المشروع أنا طالب في Howest Kortijk. إنه مشروع مدرسي للفصل الدراسي الثاني MCT. عندما أقود سيارتي والهدوء في الشوارع ، لا فائدة من الوقوف أمام الأضواء الحمراء عندما لا تكون هناك حركة مرور أخرى في الجهة المقابلة
وحدة تحكم إشارات المرور في اردوينو - 4 طرق: 3 خطوات
وحدة تحكم إشارات المرور في اردوينو | 4-Way: في هذا المنشور ، ستتعرف على كيفية إنشاء وحدة تحكم في إشارة المرور من Arduino. سيتم استخدام وحدة التحكم في إشارة المرور هذه للتحكم في تدفق حركة المرور. يمكن تطبيقها في المناطق ذات الازدحام الشديد لتجنب الازدحام المروري أو الحوادث
لعبة تعلم إشارات المرور: 5 خطوات
لعبة تعلم إشارات المرور: في هذا البرنامج التعليمي ، سوف تتعلم كيفية صنع لعبة تعلم إشارات المرور من Arduino. من خلال ممارسة اللعبة ، يستطيع الأطفال التحقق مما إذا كانت لديهم المعرفة الصحيحة بإشارات المرور. يتم تقسيم اللعبة إلى قسمين ، إذا اتبع اللاعب
اردوينو كيفية التحكم في إشارات المرور: 7 خطوات
Arduino كيفية التحكم في إشارات المرور: في هذا البرنامج التعليمي سوف نتعلم كيفية التحكم في إشارات المرور باستخدام اردوينو و Visuino ، هذا البرنامج التعليمي رائع للمبتدئين
محاكي إشارات المرور: 7 خطوات
Traffic Light Simulator: يجمع مشروع Arduino هذا بين الأزرار والأضواء لإنشاء محاكاة صغيرة لطيفة لإشارات المرور بطريقة متقاطعة. استمتع وراقب! لقد أجريت بعض التغييرات ، بما في ذلك ترميز الأزرار والاختلافات في إشارات المرور. يشمل هذا المشروع 2 حد ذاته