مساء الخير أيها القراء! في الآونة الأخيرة ، كنت محظوظًا بما يكفي للمشاركة في هاكاثون واحد حول الذكاء الاصطناعي ، الذي نظمته مجموعة Roboauto من Artin في برنو (جمهورية التشيك) ، مما أدى إلى تطوير مركبة بدون طيار. في هذه المقالة ، أود أن أشارك انطباعاتي وأخبر كيف سار كل شيء ، وما تعلمته وما هو مفيد للتعلم. من يهتم ، من فضلك ، تحت القطة.
حول هاكاثون
كان هذا أول هاكاثون في موضوع التعلم الآلي والذكاء الاصطناعي ، وحققت مجموعة Roboauto نجاحًا كبيرًا في هذا المجال ، لذلك قمت بالتسجيل مسبقًا مقدمًا. كان الهاكاثون يستهدف في المقام الأول طلاب جامعة برنو التقنية. كما قال المؤلفون مقدمًا على صفحة hackathon على Facebook ، كان من المفترض أن يكون hackathon عبارة عن منافسة في اللعبة بين الفرق في محاكاة سيارة سباق. وعد المؤلفون بتقديم مشروع محاكاة في Java ، والذي يمكنك من خلاله توصيل برنامجك. الهدف الرئيسي: كتابة برنامج جافا لسيارتك بطريقة تجعل السيارة تمر دائرة أسرع من المنافسين. يمكنك استخدام الشبكات العصبية أو المنطق المبرمج.
تم نشر فيديو لمسار المنافسة على
صفحة الحدث على Facebook ، والتي كان علينا أن نمر بها:
قبل أيام قليلة من يوم هاكاثون ، تم إرسال جميع المشاركين عبر البريد الإلكتروني مع تعليمات موجزة حول كيفية التحضير لهذا الحدث. كان من الضروري تثبيت Intellij Idea IDE مع دعم Gradle ، Java الإصدار 8 وإنشاء حساب على GitLab.
يمكنك تسجيل فريقك أو تسجيل نفسك. في الحالة الثانية ، يوصلك المنظمون ببعض الفرق. تم تعييني في فريق مع رجل من شركتي NXP ، والذي سجل أيضًا بشكل مستقل.

الجزء النظري - مقدمة
بدأ كل شيء بساعة نظرية من ساعتين. تم منحنا إمكانية الوصول إلى شبكة wifi وكان لدينا عرض تقديمي للمنظمين وبرنامج hackathon. خلال اليوم من 12 إلى منتصف الليل ، تم التخطيط ل hackathon نفسه مع عدة سلاسل من السباقات واستراحات لتناول طعام الغداء والعشاء. من 17 إلى 19 ساعة كان هناك قسم على مرور دورة عقبة على السيارات التي يتم التحكم فيها عن بعد في غرفة منفصلة.
المتحدث الأول ، بافيل ، قدم العرض التقديمي: عرض بيئة المحاكاة ، اتصال مشاريعه ، مقدمة للذكاء الاصطناعي. الغرض: تعليم طراز السيارة في جهاز محاكاة بحيث يقود في أسرع وقت ممكن. يمكنك أيضًا التحكم في النماذج من لوحة المفاتيح. لقد ظهر لنا عرض توضيحي في محاكي وتنفيذ في التعليمات البرمجية.



لقد حصلنا على رابط لمشروع على Gitlab. كان على الجميع طلب الوصول إلى المستودع ، واستنساخ المشروع لأنفسهم محليًا على الكمبيوتر والاستيراد إلى IntelliJ IDEA. تضمن المشروع دعمًا لنظام Gradle أو نظام إنشاء من نوع Maven أو CMake. يمكنك بدء المشروع على الفور: تفتح نافذة محاكي مثل هذا:

بعد ذلك ، قدم متحدث آخر ستيبان مقدمة موجزة لنظرية التعلم الآلي وأوضح أن الهاكاثون سيستخدم الشبكات العصبية مثل التغذية للأمام والتدريب مع المعلم. الهدف هو تعليم السيارة كيفية القيادة. للقيام بذلك ، سنقوم أولاً بقيادة المسار بأنفسنا بالتحكم اليدوي ، وحفظ نقاط المسار. يتم تخزين مجموعة بيانات المسار في جدول CSV: المسافة من الخط الأوسط للطريق ، والزاوية بالنسبة للطريق ، وأحد القيم 0 ، 1 ، -1 لقيمة الدوران. ثم سنقوم بتعليم الشبكة أن تسير على طول المسار أقرب ما يمكن إلى المسار الذي يمر عبر التحكم اليدوي.
كان من بين الأسئلة التي طرحها المشاركون سؤالًا مثيرًا للاهتمام: كيفية الإشارة إلى بيانات الشبكة حول مواقف السيارات المنافسة الأخرى. قال ستيبان أن البيانات حول المنافسين يمكن أيضًا ضبطها على إدخال الشبكة العصبية. يمكنك أيضًا تعيين بيانات السرعة عند المدخل ، إذا كان ذلك يساعد في التدريب.
أظهر ستيبان كيفية تقديم مثالين للتحكم اليدوي: خطأ (تعسفي) وصحيح (أنيق ، بالقرب من منتصف الطريق). عند إظهار الشبكة المدربة ، واجهت السيارة مشاكل كبيرة في الزوايا.
كان من الممكن تكوين معلمات الشبكة المختلفة: عدد المدخلات والمخرجات وعدد فترات التدريب وعدد الخلايا العصبية في الطبقة المخفية. استخدم برنامج تنفيذ الشبكات العصبية مكتبة
DL4J :
deeplearning4j.org . لسوء الحظ ، لا تعمل المكتبة على نظام تشغيل 32 بت (واجهت مشكلة على جهاز كمبيوتر محمول مع Ubuntu 12.04).
الجزء الرئيسي هو المنافسة.
يحدد كل فريق لون سيارتهم ، والذي يجب الإشارة إليه في رمز البرنامج. قيل لنا على الفور كيفية استخدام واجهة برمجة تطبيقات التطبيق للسيطرة على سيارتك في المنافسة.

بدأت أنا وزميلي في حل مشكلة اجتياز المسار بسرعة باستخدام الأساليب المعتادة المستندة إلى واجهة برمجة التطبيقات. كان حلنا هذا: اعتمادًا على المسافة إلى المنعطف التالي واتجاه الدوران ، قمنا بتعديل التسارع وزاوية دوران السيارة. للحصول على معلومات حول قرب دوران ، استخدمنا كائن الشبكة من واجهة برمجة تطبيقات النظام. جوهر الشبكة: بالنسبة للسيارة ، يمكنك الحصول على شبكة مستطيلة من سطح الملعب أمام السيارة (يسار ويمين السيارة) بحجم تعسفي (على سبيل المثال ، عرض 8 وطول 10 خلايا). لكل خلية ، يمكنك تحديد ما إذا كان المسار يمر عبره وما إذا كانت هناك سيارة أخرى موجودة فيه حاليًا.
هنا
رابط لمشروعنا . الملفات الرئيسية: Driver_team12.java و Team12.java و RunDev.java. يقع منطق التحكم في الملف Driver_team12.java.
حتى المساء ، بدأت التعامل مع الشبكات العصبية. بدأ بتسجيل مسار بسيط مع التحكم اليدوي. من خلال التدريب على البيانات المسجلة وضبط المعلمات (عدد التكرارات ، عدد فترات التدريب ، سرعة التعلم) ، تم تحقيق العديد من النتائج الأفضل للدورة.
خلال هاكاثون ، عقدت العديد من المسابقات ، في كل منها أقيمت سلسلة من السباقات بين مجموعات الفرق. في هذه العملية ، قام المشاركون باستمرار بتحسين قراراتهم. كانت المشكلة الكبرى تصادم عدة سيارات ، مما أدى إلى عرقلة الحركة على الطريق السريع. هنا فازت الفرق التي نفذت أفضل معالجة للعقبات.




في المسابقة ، قدم نصف الفرق حلاً يعتمد على الشبكات العصبية. الفائز هو أحد هذه الفرق. قام أحد الفرق الرائدة ببناء شبكة عصبية مكونة من 25 طبقة ، وتلقى العديد من المعلمات عند الإدخال (من بينها المسافة إلى منتصف الطريق والسرعة والبيانات من كائن الشبكة). استخدم فريق آخر شبكتين عصبيتين: واحدة للقسم المستقيم (لتقليل الانحراف عن منتصف الطريق) والأخرى للانعطاف.
سباقات الهاكاثون متاحة:
أشياء أخرى مثيرة للاهتمام
بالإضافة إلى هاكاثون نفسه ، تم تضمين حدث مثير في البرنامج - مرور دورة عقبة على السيارات التي يتم التحكم فيها عن طريق الراديو. من 17 إلى 19 ساعة في غرفة منفصلة ، يمكنك تجربة يدك في التغلب على العقبات الصعبة في طرازات السيارات المزودة بالتحكم اللاسلكي.



تم تنظيم الغداء والوجبات الخفيفة طوال اليوم. في المساء طلبنا بيتزا. كان من الممكن أيضًا صب البيرة في المطبخ دون أي قيود.

كان يوم الهاكاثون مثيرًا ومثيرًا وحيويًا. كانت هناك العديد من الانطباعات السارة ، والعديد من اللحظات الممتعة من مسابقات الفريق. كان الهاكاثون تدريبًا جيدًا على الدماغ خلال عطلة نهاية الأسبوع ، حيث يمكنك تحريك عقلك على مهام الحياة الواقعية وتجربة يدك في تعلم كيفية قيادة سيارة بدون طيار في جهاز محاكاة بسيط.
حظاً طيباً للجميع وأراكم قريباً!