چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت اول)

مقدمه : چگونه یک خودرو خودران و هوشمند بسازیم؟

سلام! به همه علاقمندان به مباحث داغ خودروهای خودران!

سلام! به همه اونهایی که با شنیدن نام تکنولوژی های خودران، Autonomous یا SelfDriving به وجد میان!

سلام! به اونهایی که اهداف بزرگ در سر دارن و هیچ چیز! نمیتونه جلوی پیشرفتشونو بگیره!

از گروه علمی آموزشی آموخ در خدمتتونیم تا باهم وارد دنیای خودروهای خودران بشیم! با ما همرا باشید!

امروزه، تسلا، گوگل، اوبر، جنرال موتورز و غیره همگی در تلاشن تا خودروهای خودران خودشونو در دنیای واقعی بسازند.

بعضی از پیش بینی ها می گن تقریبا در ۵ سال آینده، ما شاهد حرکت خودروهای کاملا خودران در شهرهای خود خواهیم بود. و در طول دوره ۳۰ ساله، تقریبا تمام خودروها نه تنها خودران بلکه خودگردان نیز می شوند و این به این معنیه که انسان ها هیچگونه دخالتی در امور خودروها نخواهند داشت.

 حالا به نظرتون مهیج نمیشه اگه شما هم بتونید خودروی خودران خودتونو با تکنولوژی های مشابه ای که شرکت های بزرگ استفاده می کنند بسازید؟ در این سری آموزش ها قصد داریم به شما آموزش بدیم چگونه خودروی خودران خودتونو با استفاده از یادگیری عمیق طراحی و به صورت عملی راه اندازی کنید. شما می تونید خودرویی بسازید که بین خطوط حرکت کنه، علائم راهنمایی و رانندگی رو تشخیص و به اونها واکنش بده، حتی مردمی که در خیابان هستند رو هم در سریع ترین زمان شناسایی کنه تا ازشون رد نشه. در زیر نمایی از دید دوربین خودرو رو می تونید ببینید

نقشه راه: چگونه یک خودرو خودران و هوشمند بسازیم؟

عزیزای دلم ما کلا شش (۶) تا پارت یا بخش داریم تا خودرو خودرانمونو بسازیم! که عکس خودرو رو در پایین میتونید ببینید

پارت اول: مقدمه و آشنایی: که همین مطالب اولیه هست که داریم میگیم!

پارت دوم: ما در این قسمت سخت افزارهای مورد نیاز رو لیست می کنیم به طور کلی شما سخت افزارهای زیر رو نیاز دارید:

  1. برد رزپری پای (اینجا ما برد رزپری۳ کار می کنیم)
  2. کیت آماده خودرویی SunFounder PiCar یا هرکیت آماده دیگه (بچه های مکانیکی میتونن خودشون بسازن!)
  3. ماژول google’s Edge TPU

پارت سوم: در این پارت ما نرم افزار بینایی ماشین و یادگیری عمیق رو پیاده سازی می کنیم. زبان برنامه نویسی ما هم پایتون (به نظر من بهترین زبان برای یادگیری ماشین)، بعدش OpenCV رو پیاده سازی می کنیم (یک پکیج قدرتمند در بینایی ماشین) و در نهایت تنسورفلو TensorFlow (فریم ورک دوست داشتنی گوگل که واقعا خدا خیرشون بده). در نظر داشته باشید تمام نرم افزارهایی که اینجا استفاده می کنیم رایگان هستن! پس خیالتون راحت (تخته تخت!)

نکته: از اسامی و اصطلاحات نترسید! همشون آبکی هستن

پارت چهارم: بعد از راه اندازی سخت افزار و نرم افزار ما وارد بخش های مهیج و خفن کار میشیم! اولین پروژه ما اینه که از پایتون و اوپن سی وی استفاده کنیم تا به خودرومون یاد بدیم شروع کنه به مسیر یابی کردن بین خطوط جاده و متناسب با اون حرکت کنه.

عکس ۵: نمایی از تشخیص خودرو

پارت پنجم: ما در این بخش به خودرو آموزش خواهیم داد بدون اینکه کد کنترل منطقی یا ثابتی توش وجود داشته باشه (همون یادگیری عمیق یعنی)بین خطوط جاده مسیریابی کنه. در اصل اینجا ما از روشی به نام “behavior cloning” استفاده می کنیم، یعنی ما در این روش تنها از یک فایل ویدئو استفاده می کنیم تا خودرو رو آموزش بدیم که خودش دیگه رانندگی کنه. انگار یه فیلم آموزشی به خودرو نشون میدیم و بهش میگیم ببین اینا خطوطن هرجا دیدی بین اونا راه برو. و درواقع ما در پیاده سازی اون از پکیج خودرو خودران NVIDIA’s DAVE-2 استفاده کردیم که از روش شبکه عصبی کانوشونال (حلقوی) عمیق برای تشخیص ویژگی های جاده و یک مسیر یابی درست استفاده کرده.

(اینا فعلا مقدماته اگه اصطلاحاتی رو نمیدونید نگران نباشید!) فیلم زیر رو که مسیر یابی خودرو رو نشون میده تماشا کنید!

فیلم ۱: حرکت بین خطوط خودرو خودران

پارت ششم: در این بخش ما از تکنیک های یادگیری عمیق استفاده می کنیم مثل (تشخیص چند شی در یک شات یا تصویر) (single shot multi-box object detection) و روش (آموزش انتقالی) (transfer learning) تا به خودرومون آموزش بدیم علائم مختلف راهنمایی رانندگی و همچنین عابران پیاده در جاده رو بتونه تشخیص بده (البته این علائم مینیاتوری یا کوچک هستند). بعدش به خودرومون یاد میدیم وقتی به چراغ قرمز رسید بایسته و وقتی سبز شد حرکت کنه، و همچنین اگه عابر پیاده وسط خیابون دید صبر کنه تا رد بشه. (جالبه نه!) علاوه بر این اگه یجا تابلوی محدودیت سرعت بود سرعتشو کم یا زیاد کنه و چیزای دیگه که بعدا خودتون می بینید.

عکس ۶: مدل آموزشی تشخیص علائم راهنمایی و رانندگی و عابران پیاده در تنسورفلو
فیلم ۲: تشخیص علائم راهنمایی و محدودیت سرعت

خب بریم سراغ پیش نیازهای انجام پروژه:

برای انجام این پروژه اگه پیش نیازهای زیر رو داشته باشید کارتون راحت تر خواهد بود:

اول: یکم دانش الکترونیکی و یجورایی دست به آچار بودن

دوم: یکم دانش پایتون: در حدی که بتونید کدهارو بخونید و بنویسید. البته سعی می کنیم همه قسمتارو بهتون توضیح بدیم و جای نگرانی نیست

سوم: یک مقدار دانش کار با لینوکس: امیدواریم یکم با محیط شل لینوکس کار کرده باشید تا بتونید با برد رزپبری پای کار کنید

چهارم: یکمی هم پووول برای خرید قطعات و ماژول ها (البته یکمی پول به دلار :)) )

پیشنهادات دیگر (اختیاری):

در این آموزش ما سعی می کنیم نکات اصلی در آموزش یادگیری عمیق رو خدمت شما ارائه بدیم اما خب بعضی از دوستان ممکنه بخوان به صورت حرفه ای این تکنولوژی رو ادامه بدن به همین خاطر چندتا لینک کمکی (البته به زبان انگلیسی) هم بهتون پیشنهاد می دیم:

در این دوره دانشگاه استنفورد مفاهیم مرسوم از تکنولوژی یادگیری ماشین رو ارائه میده، مثل مفاهیم رگرسیون خطی، رگرسیون لجستیک، ماشین های بردار پشتیبانی و غیره و البته شبکه های عصبی. این دوره در سال ۲۰۱۲ برگزار شده (یکم قدیمیه)، خب بنابراین یسری چیزاش از مد افتاده، این دوره خیلی گسترده درباره مباحث یادگیری عمیق صحبت نکرده اما مفاهیم پایه ای و ارزشمندی رو ارائه داده. و شما برای یادگیری مطالب اون کافیه فقط در حد ریاضیات دبیرستان و یسری مفاهیم پایه ای برنامه نویسی سواد داشته باشید. این دوره تقریبا ۳ ماه طول میکشه.

عکس ۷: یادگیری ماشین دانشگاه استنفورد

این دوره در اوایل سال ۲۰۱۸ برگزار شده. بنابراین تقریبا تمامی مباحث جدید رو شامل میشه مثل: شبکه های عصبی کاملا متصل (Fully Connected Neural Networks)، شبکه عصبی کانولوشنی (CNN)، مدل های دنباله ای (RNN/LSTM). به نظر دوره خیلی خوب و کاملیه. و به عنوان یک مهندس، به شما میگه که گدجت ها و شبکه های عصبی چگونه کار می کنند، مثلا به شما میگه که یه خودرو چگونه اشیاء رو در جاده تشخیص میده و یا Siri (در گوشی های آیفون) چجوری به سوالات شما پاسخ میده. این ۵ دوره حدودا ۳ یا ۴ ماه از شما وقت میگیره. لینک

عکس ۸: یادگیری عمیق – ۵ دوره پیشرفته

و اما بعد…

خب مطالب بالا تمام مقدمات شروع آموزش ساخت ماشین خودران بود.. در پارت دوم یکم دست به آچار میشیم تا ماشین خودران خودمونو بسازیم.

پارت های منتشر شده:

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت اول)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت دوم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت سوم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت چهارم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت پنجم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت ششم)

8 دیدگاه در “چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت اول)

  1. سلام ممنون بابت آموزش دوست داشتنیتون.. امیدوارم زود به زود مطالب آپدیت بشن. من یه سوال دارم: میتونم از برد رزپبری پای زیرو هم استفاده کنم؟؟

  2. سلام وقت بخیر.از انجمن مکاترونیک و اتوماسیون دانشگاه رازی مزاحمتون میشم.ما قصد برگزاری دوره خودروهای خودران رو داریم.میخواستم از شما دعوت کنم اگر فرصت دارید،این دوره رو داخل انجمن تدریس کنید.ممنون

  3. با سلام خیلی علاقمند به یادگیری این دوره هستم
    امیدوارم زودتر این دوره شروع بشه
    ممنون میشم اگر دورتون شروع شد ایمیل بزنید

    1. سلام ممنون از شما چشم حتما ادامه مطالبو میزاریم. البته یک دوره آموزشی قرار هست در دانشگاه رازی برگزار کنیم به صورت عملی اونم میتونید شرکت کنید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...