مقدمه ای بر بینایی کامپیوتری برای خودروهای خودران

در این مقاله قصد داریم بررسی کنیم که بینایی کامپیوتری (Computer Vision) چیست و چگونه در خودرو های خودران پیاده سازی می شود.

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

حس و درک یک محیط با استفاده از دوربین چگونه صورت انجام می شود؟ بینایی کامپیوتری در چه بخش هایی از خودرو های خودران کاربرد دارد؟

 تصویر زیر چهار مراحل اصلی در عملکرد یک خودرو خودران را نشان می دهد.

بینایی کامپیوتری خودرو های خودران
نحوه عملکرد خودرو خودران
  • بینایی کامپیوتری و ترکیب حسگر ها را ادراک می نامیم که منظور از آن شناسایی و درک محیط است. بینایی کامپیوتری از دوربین استفاده می کند و امکان شناسایی خودرو ها، عابرین پیاده، جاده‌ها، … را فراهم می کند. ترکیب حسگر ها از داده های سایر حسگرها مانند رادار و Lidar استفاده می کند و با ادغام آن ها نتایج حاصل از دوربین را تکمیل می کند. این فرآیند، امکان تخمین موقعیت و سرعت اجسام شناسایی شده توسط دوربین را فراهم می کند.
  • مکان یابی مرحله ای است که می تواند مکان خودرو را دقیق تر از GPS تعیین کند.
  • تعیین مسیر، هسته مرکزی یک وسیله نقلیه خودران را پیاده سازی می کند. یک طراح مسیر از داده های دو مرحله اول استفاده می‌کند تا پیش بینی کند که وسایل نقلیه، عابرین پیاده، و اشیاء اطرافشان برای حرکت از مسیر نقطه A تا نقطه B چه کاری انجام می دهند.
  • بخش هدایت از کنترل کننده ها برای به حرکت درآوردن وسایل نقلیه استفاده می کند.

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

بینایی کامپیوتری

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

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

بینایی کامپیوتری در دهه ۵۰ و با کپی برداری اشکال برخی از اشیاء شروع شد که در نهایت به توسعه ی تکنیک هایی مانند تشخیص لبه Canny به منظور تشخیص تغییرات رنگ در یک تصویر، منتهی شد.

تشخیص لبه با الگوریتم canny
اعمال تشخیص لبه عمودی روی تصویر جاده

در سال ۲۰۰۱، الگوریتم Viola-Jones قدرت کامپیوتر در تشخیص چهره را نشان داد که امروزه از آن در تشخیص اشیا مختلف استفاده می شود.

هیستوگرام گرادیان های جهت دار
هیستوگرام گرادیان های جهت دار

در سال های بعد، یادگیری ماشین برای تشخیص اشیا با استفاده گسترده از هیستوگرام گرادیان های جهت‌دار (HOG) و کلاسه بند ها رواج پیدا کرد. هدف، آموزش مدلی برای تشخیص اشکال یک شی با تشخیص جهت گیری های مختلف آن گرادیان است. هیستوگرام گرادیان های جهت دار، شکل ها و جهت های هر پیکسل را حفظ می کند.

همچنین یادگیری عمیق به دلیل ظهور پردازنده ‌های گرافیکی قدرتمند (واحد پردازنده‌های گرافیکی GPU که عملیات موازی را امکان‌پذیر می‌کنند) و تجمیع داده‌ها، به دلیل عملکرد خود بسیار مورد استفاده قرار گرفتند. قبل از پردازنده های گرافیکی، الگوریتم های یادگیری عمیق روی دستگاه های آن زمان هیچ کارایی نداشت.

بینایی کامپیوتری به سه روش انجام می شود:

  • بدون هوش مصنوعی، با تجزیه و تحلیل اشکال و رنگ ها
  • یادگیری ماشین با یادگیری ویژگی ها
  • یادگیری عمیق، یادگیری به تنهایی

یادگیری ماشین

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

۱- یادگیری نظارت شده به ما این امکان را می دهد که قوانین را به طور خودکار از پایگاه داده یادگیری بدست آوریم. می توان آن را به دو بخش تقسیم کرد:

الف. کلاسه بندی : پیش بینی این که داده ها به یک کلاس تعلق دارند یا خیر. (مثال:شناسایی سگ یا گربه).

ب. رگرسیون : پیش بینی یک داده بر اساس داده های دیگر (به عنوان مثال: قیمت یک خانه از اندازه یا کد پستی آن)

۲- یادگیری بدون نظارت به این معنی است که داده های مشابه به طور خودکار در یک گروه قرار می گیرند.

در فرآیند یادگیری نظارت شده چهار مرحله برای تشخیص خودرو وجود دارد.

۱- اولین مورد ایجاد یک پایگاه داده از تصاویر خودرو ها و جاده ها است. در یادگیری نظارت شده باید به سیستم نشان دهیم که کدام تصویر نشان دهنده به یک ماشین است و کدام تصویر پس زمینه است. به این فرآیند برچسب گذاری نامیده می شود.

مجموعه داده بینایی کامپیوتری
مجموعه داده

۲- برای اینکه ببینیم کدام ویژگی متعلق به یک ماشین است، تصویر خود را با فضاهای رنگی مختلف امتحان می کنیم. ما ساختار را با استفاده از ویژگی های HOG دریافت می کنیم. یعنی تصویر به بردارهای ویژگی تبدیل می شود.

استخراج ویژگی ها بینایی کامپیوتری
استخراج ویژگی های HOG و ویژگی های رنگ

۳- این بردار ها ویژگی به هم متصل شده و به عنوان شروع آموزش استفاده می شوند. در نمودار زیر شکل ها و رنگ ها در محورهای عمودی و افقی مشخص شده اند.

کلاس های ما نقاط آبی (ماشین) و نارنجی (غیر ماشین) هستند. همچنین باید یک کلاسه بند انتخاب کنیم.

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

کلاسه بندی بینایی کامپیوتری
کلاسه بندی

۴- آخرین مرحله پیش بینی است. در این مرحله الگوریتمی پیاده سازی می شود که تصویر را بررسی می کند و آن را به یک بردار با همان ویژگی های مورد استفاده برای آموزش تبدیل می کند. هر قسمت از تصویر تجزیه و تحلیل می شود و به کلاسه بند ارسال می شود تا کادر های محدودکننده را در اطراف خودرو ترسیم می کند.

پیش بینی بینایی کامپیوتری
پیش بینی

الگوریتم های یادگیری ماشین امکان انتخاب ویژگی‌های مورد استفاده برای آموزش را می‌دهند. این الگوریتم ها امروزه به دلیل ظهور یادگیری ماشین و شبکه های عصبی، بیشتر در دستکاری داده‌ها استفاده می‌شوند تا در تشخیص تصویر. علاوه بر این، تشخیص کُند و زمان بر است و نتایج مثبت کاذب زیادی ایجاد می کند. برای از بین بردن آن ها، به تعداد زیادی تصاویر پس زمینه (جاده ها، خیابان ها و…) نیاز داریم.

شبکه های عصبی

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

شبکه عصبی با یک لایه پنهان
یک شبکه عصبی (یادگیری ماشین)

در تصویر بالا، هر دایره نشان دهنده یک نورون به نام پرسپترون است. ورودی های سمت چپ به لایه ی میانی از نورون ها ارسال می شوند. هر اتصال بین نورون ها دارای وزن W است (اهمیت اختصاص داده  شده به یک پارامتر). هدف یک الگوریتم، بهینه سازی این وزن ها است. در هر نورون از لایه میانی عملیاتی برای پیش بینی یک کلاس انجام می شود. در نهایت هر کلاس با یک نورون خروجی نشان داده می شود.

شبکه عصبی پرسپترون
عملکرد یک نورون مصنوعی

در هر نورون، الگوریتمی وجود دارد که داده ها را بر اساس ویژگی ها کلاسه بندی می کند. هنگام آموزش یک مدل با داده های زیاد، شبکه یاد می گیرد که کدام وزن از دیگری مهم تر بوده است. هدف دستیابی به تفکیک کامل کلاس هاست.

آموزش شبکه عصبی برای کلاسه بندی
آموزش شبکه عصبی برای کلاسه بندی

برای آموزش، شبکه ابتدا وزن ها را به صورت تصادفی تنظیم می کند و بررسی می کند که آیا نقاط به درستی کلاسه بندی شده اند یا خیر. برای بخشی از نقاط که به درستی پیش بینی نخواهند شد، وزن ها را خیلی کم در یک جهت تنظیم می‌کند تا خطای محاسبه شده توسط یک تابع کاهش یابد. این عمل را صدها بار تکرار می کند تا زمانی که خطی که همه داده های آموزشی را به درستی طبقه بندی کند حاصل شود.

شبکه عصبی دو مدل خطی
مجموع دو مدل خطی در یک شبکه عصبی

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

با اینکه شبکه های عصبی از الگوریتم های کانولوشنی بهتر عمل می کنند، اما مانند یک جعبه سیاه به نظر می رسد زیرا ما ویژگی ‌ها یا وزن ها را انتخاب نمی کنیم. الگوریتم آن ها را به تنهایی بر اساس داده ها و برچسب گذاری های ما پیش بینی می کند.

یادگیری عمیق چیست؟

 شبکه های عصبی از سایر الگوریتم های یادگیری ماشین بهتر عمل می کنند.

یادگیری عمیق چیست و چرا اینقدر محبوب است؟

یادگیری عمیق، پیاده سازی «شبکه های عصبی» یادگیری ماشین با بیش از یک لایه میانی است.

مقایسه شبکه عصبی معمولی و عمیق

در عملیات پیچیده تر، چندین لایه در یک شبکه عصبی، نتایج بهتری را در مقایسه با یک تک لایه ارائه می دهد. با مدل های بیشتر، تعداد نقاطی که اشتباه کلاسه بندی می شوند کاهش میابد.

هر چه پارامترها و داده های چالش بر انگیز بیشتر باشد، یک شبکه عصبی عمیق مفیدتر و موثرتر خواهد بود و عملکرد بهتری خواهد داشت.

مهم تر از همه، مزیت چند لایه بودن وجود دارد: یعنی خروجی یک نورون (احتمال تعلق به یک کلاس) در ورودی نورون بعدی مورد استفاده قرار می گیرد: به این حالت تغذیه رو به جلو (feed-forward) می‌گویند.

کلاسه بندی شبکه عصبی عمیق

شبکه های عصبی عمیق (DNN) بسیار موثر هستند و امروزه برای بسیاری از مسائل پیچیده مانند دستیار صوتی، تجزیه و تحلیل تصویر و … مورد استفاده قرار می گیرند. این بخش زیرمجموعه یادگیری ماشین، در بسیاری از کاربردها، از هر الگوریتم دیگری عملکرد بهتری دارد.

یادگیری عمیق و تشخیص تصویر: CNN

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

در تجزیه و تحلیل تصویر، ما به طور کلی از یادگیری عمیق تحت عنوان CNN صحبت می کنیم: شبکه های عصبی کانولوشنی یا CNN. ComvNets ها شبکه های عصبی هستند که وزن خود را در شبکه به اشتراک می گذارند.

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

در چندین تصویر، ساختار اشیایی که تکرار می شوند را تشخیص داده و شبکه خود را روی این ساختار ها آموزش می دهیم.

دیاگرام کلاسه بند

برای تشخیص یک شی، CNN ها لایه های مختلف را بر اساس سطوح پیچیدگی یاد می گیرند.

نحوه تصمیم گیری شبکه عصبی کانولوشنی
CNN

در مثال ما، لایه اول اشکال ساده مانند دایره ها و خطوط را یاد می گیرد، در حالی که لایه بعدی اشکال کمی پیچیده تر را یاد می گیرد. تا زمانی که یاد بگیریم شی ما بطور کلی چگونه به نظر می رسد.

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

نتایج

 یادگیری عمیق زیرمجموعه یادگیری ماشین است، زیرا پیاده سازی یکی از الگوریتم های یادگیری ماشین است که به جای یک لایه از چندین لایه استفاده می کند. این الگوریتم به نام شبکه های عصبی کاملاً متفاوت از سایر الگوریتم هاست زیرا ویژگی های مربوطه را حدس می زند در حالی که سایر الگوریتم های یادگیری ماشین توسط ویژگی هایی که ما به آن می دهیم تغذیه می شوند.

تفاوت یادگیری ماشین و یادگیری عمیق

 در ادامه پروژه‌هایی ارائه شده است که بینایی کامپیوتر را با سه رویکرد مورد بررسی قرار می دهد: مورد اول برای شناسایی خطوط در یک جاده، مورد دوم شناسایی وسایل نقلیه و پروژه آخر از یادگیری عمیق برای پیش بینی اینکه بسته به موقعیت چه زاویه ای را اتخاذ کند، استفاده می کند.

استفاده از تکنیک های بینایی کامپیوتری برای تشخیص جاده ها

استفاده از یادگیری ماشین برای شناسایی وسایل نقلیه

استفاده از یادگیری عمیق برای شبیه سازی رفتار انسان

در قسمت بعد در مورد انواع کاربرد های بینایی کامپیوتری در خودرو های خودران صحبت خواهیم کرد.

بیشتر بخوانید :

منبع Think Autonomous

درباره‌ی امیر اقتدائی

همچنین ببینید

تبدیل متن به تصویر با Stable Diffusion

تبدیل متن به تصویر با ابزار Stable Diffusion

در دنیای مدل های هوش مصنوعی برای تبدیل متن به تصویر، Dall-E2 از OpenAI بهترین …

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

نشانی ایمیل شما منتشر نخواهد شد.