دیپ لرنینگ و تشخیص چراغ راهنمایی

چالش

هدف از این چالش تشخیص چراغ راهنمایی در تصاویر گرفته شده توسط رانندگان با استفاده از اپلیکیشن Nexar بود. در هر تصویر داده شده، لازم بود “طبقه بندی گر” چراغ راهنمایی را تشخیص داده و قرمز یا سبز بودن آن را مشخص کند. به طور خاص، فقط می بایست چراغ راهنمایی را در جهت رانندگی شناسایی کرد.

این چالش بر اساس شبکه های عصبی پیچشی است، روشی بسیار رایج که در تشخیص تصویر با شبکه های عصبی عمیق مورد استفاده قرار می گیرد. مدل های کوچکتر نمرات بالاتری کسب کردند. علاوه بر این، حداقل دقت لازم برای پیروزی ٩۵ درصد بود.
Nexar تعداد ١٨۶۵٩ تصویر دارای برچسب را به عنوان داده های آموزشی ارائه می داد. هر تصویر با یکی از سه کلاس: بدون چراغ راهنمایی، چراغ قرمز و چراغ سبز برچسب گذاری شده است.

نرم افزار و سخت افزار

برای آموزش مدل ها از Caffe استفاده کردم. دلیل اصلی که Caffe انتخاب شد به دلیل تنوع زیاد مدل های از قبل آموزش دیده آن بود. برای تجزیه و تحلیل نتایج، بررسی داده ها از Python ، NumPy و Jupyter notebook استفاده شد. از نمونه های GPU آمازون برای آموزش مدل ها استفاده شد.

 

طبقه بندی نهایی

طبقه بندی نهایی در مجموعه آزمون Nexar با اندازه مدل ٨۴/٧ مگابایت به دقت ٩۵/٩۴ درصد دست یافت. فرایند دستیابی به دقت بالاتر شامل تعداد زیادی آزمون و خطاست. در پشت برخی از آن ها منطقی وجود داشت و بعضی دیگر فقط بر اساس حدس و گمان جلو رفتند.

 

یادگیری انتقال

با تلاش برای تنظیم دقیق (fine-tuning) مدلی که در ImageNet با معماری GoogLeNet از قبل آموزش داده شده بود، شروع کردیم. خیلی به دقت بالای ٩٠ درصد دست یافتیم!

 

SqueezeNet

اخیرا بیشتر شبکه های منتشر شده بسیار عمیق بوده و پارامترهای زیادی دارند. به نظر می رسید که SqueezeNet بسیار مناسب بوده و همچنین دارای یک مدل از قبل آموزش دیده شده در ImageNet بود.
دیپ لرنینگ و تشخیص چراغ راهنمایی
شبکه عصبی با استفاده از فیلترهای پیچشی یک در یک و بعضا سه در سه و همچنین با کاهش تعداد کانال های ورودی به فیلترهای سه در سه، می تواند خود را فشرده سازد.
بعد از مقداری سعی و خطا در تنظیم میزان یادگیری توانستیم مدل از قبل آموزش داده شده را با دقت ٩٢ درصد تنظیم کنیم.

 

چرخش تصاویر

دیپ لرنینگ و تشخیص چراغ راهنمایی
بیشتر تصاویر مانند تصویر فوق افقی بودند، اما حدود ۴/٢ درصد عمودی بودند و بعضی از آن ها از بالا گرفته شده بودند.

دیپ لرنینگ و تشخیص چراغ راهنمایی

اگرچه این بخش بزرگی از مجموعه داده ها نیست، اما می خواستیم مدل، آن ها را به درستی طبقه بندی کند.
متأسفانه ، هیچ داده ای در تصاویر jpeg که جهت گیری را مشخص می کند، وجود نداشت. به منظور تکمیل تصاویر از آموزش مدل در “میانگین پیش بینی ها” در چرخش های ٠⁰ ، ٩٠⁰ ، ١٨٠⁰ و ٢٧٠⁰ استفاده کردیم. منظور از میانگین پیش بینی ها، میانگین احتمالات تولید شده توسط مدل در هر یک از این چرخش هاست.

 

برش نمونه ها

در طول آموزش، شبکه SqueezeNet برای اولین بار به طور پیش فرض برش تصادفی تصاویر ورودی را انجام داد و ما آن را تغییر ندادیم. این نوع تقویت داده باعث می شود که شبکه بهتر تعمیم پیدا کند. به طور مشابه، هنگام تولید پیش بینی، چندین برش روی تصویر ورودی ایجاد کرده و میانگین نتایج را به دست آوردیم. از ۵ برش استفاده کردیم. ۴ برش از گوشه و ١ برش از مرکز ( با استفاده از کد Caffe).
چرخش و برش تصاویر پیشرفت بسیار کمی را نشان داد. از ٩٢ درصد به ۴۶/٩٢ درصد.

 

آموزش اضافی با میزان یادگیری پایین

همه مدل ها بعد از یک نقطه خاص شروع به بیش برازش (overfit) کردند. این امر از طریق مشاهده صعود “تنظیم اعتبار” در برخی نقاط قابل دستیابی است. در این مرحله آموزش را متوقف می کنیم زیرا احتمالا مدل دیگر تعمیم نمی یابد. سعی کردیم آموزش را در نقطه ای که مدل شروع به بیش برازش با نرخ یادگیری ١٠ بار کمتر از سطح اصلی می کند، از سر بگیریم. این امر معمولا دقت را تا ۵/٠ درصد بهبود می بخشد.

 

داده های آموزشی تکمیلی

در ابتدا داده های خود را به سه مجموعه تقسیم کردم: آموزش (۶۴٪) ، اعتبارسنجی (١۶٪) و آزمون (٢٠٪). بعد از گذشت چند روز به این نتیجه رسیدیم که صرف نظر کردن از ٣۶٪ از داده ها ممکن است خیلی زیاد باشد. در نتیجه مجموعه های آموزشی و اعتبار سنجی را با هم ادغام شده و از مجموعه آزمون برای بررسی نتایج استفاده شد.

 

مطالعه مقالات زیر در حوزه دیپ لرنینگ به شما توصبه می‌شود:

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

انجام گام به گام پروژه دیپ لرنینگ در پایتون 

 

رفع اشتباه در داده های آموزش

هنگام تجزیه و تحلیل اشتباهات طبقه بندی گر در اعتبارسنجی ، متوجه اشتباهات فاحشی شدیم. به عنوان مثال، مدل با اطمینان می گفت چراغ سبز است در حالی که داده های آموزش می گفتند چراغ قرمز است. تصمیم گرفتیم این خطاها را در مجموعه آموزش برطرف کنیم. استدلال این بود که این اشتباهات باعث سردرگمی مدل می شوند و تعمیم آن را سخت تر می کنند. حتی اگر مجموعه آزمایش نهایی در پاسخ خود دارای خطای باشد، یک مدل عمومی تر شانس بیشتری برای دستیابی به دقت بالا در بین تصاویر دارد. در یکی از مدل های دارای اشتباه، ٧٠٩ تصویر را برچسب گذاری کردیم. این کار با Python script حدود یک ساعت زمان برد و تعداد خطاها را به ٣٣٧ عدد کاهش داد.

 

نقص های مدل دیپ لرنینگ

متعادل کردن داده ها

داده ها متعادل نبودند. ١٩ درصد از تصاویر بدون چراغ راهنمایی، ۵٣ درصد در چراغ قرمز و ٢٨ درصد در چراغ سبز بودند. ما سعی کردیم با بیش نمونه گیری ( oversampling) داده های کمتر متداول، مجموعه داده ها را متعادل کنیم؛ اما پیشرفتی حاصل نشد.

 

جداسازی روز و شب

دریافتیم که تشخیص چراغ راهنمایی در روز و شب بسیار متفاوت است. فکر کردیم که شاید با جداسازی تصاویر روز و شب بتوانیم به مدل کمک کنیم. با در نظر گرفتن میانگین شدت پیکسل ها، جداسازی تصاویر روز و شب بسیار ساده بود. ما دو رویکرد را امتحان کردم که هیچ یک نتیجه بخش نبود:
آموزش دو مدل جداگانه برای تصاویر روز و تصاویر شب
آموزش شبکه برای پیش بینی ۶ کلاس به جای ٣ کلاس، با پیش بینی اینکه آیا روز است یا شب

 

آموزش طبقه بندی گر برای موارد سخت

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

 

نمونه هایی از اشتباهات مدل در تشخیص چراغ راهنمایی

دیپ لرنینگ و تشخیص چراغ راهنمایی

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

 

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

 

دیپ لرنینگ و تشخیص چراغ راهنمایی
این مدل هیچ چراغ راهنمایی را تشخیص نداد در حالی که یک چراغ راهنمایی سبز در تصویر دیده می شود.


شما عزیزان همچنین می‌توانید فایل pdf این مقاله را دانلود کرده و در فرصت های دیگر به مطالعه آن بپردازید.


 

آیا این مطلب برای شما مفید بود؟

امتیازشو ثبت کنید

میانگین / 5. تعداد رای

اولین نفر شما امتیاز دهید

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

یادگیری یکی از تخصص های محبوب بازار کاری

پایتون که برخی آن را پایتان (python) نیز میگویند یک زبان برنامه نویسی سطح بالا ،شئ گرا ، Open Source و تفسیری است که دارای دستورها و کدهای ساده و پویاست. زبان برنامه نویسی پایتون بسیار ساده تر از زبان های برنامه نویسی دیگر است. بوسیله پایتون ساخت برنامه های کاربردی به صورت ساده تر برای ما ممکن شد.
پایتون از سال 1991 ایجاد شد و از آن زمان و مخصوصا سال های اخیر توجه بسیاری از برنامه نویسان و کسانی که میخواهند با برنامه نویسی آشنا شوند را به خود جلب کرد . یکی از مهم ترین دلیل های توجه بسیار به این زبان برنامه نویسی دوست داشتنی کابردها و قابلیت های فراوان آن است :
ادامه...

شاید به این مطالب نیز علاقه مند باشید.

آموزش دیپ لرنینگ

شبکه عصبی کانولوشن چیست؟

یکی از داغ ترین و مهم ترین بحث های حال حاضر در هوش مصنوعی و یادگیری ماشین، "شبکه عصبی کانولوشن" هست. واژه شبکه عصبی در سال ۲۰۱۲ به شهرت رسید.…

دیپ لرنینگ و مصاحبه دیپ لرنینگ

١٢ سوال که در مصاحبه دیپ لرنینگ با آن مواجه خواهید شد

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

اجرای FaceID در Keras و دیپ لرنینگ و دیپ لرنینگ در پایتون و شبکه های عصبی و iphone x

چگونه می توان با استفاده از دیپ لرنینگ در پایتون ، FaceID را در آیفون X اجرا کرد؟

یکی از ویژگی های بحث برانگیز آیفون X روش باز کردن قفل با استفاده از تشخیص چهره ( FaceID ) است که جایگزین TouchID شده است. اپل پس از ساخت…

0 0 رای
امتیازدهی به مقاله
دنبال کردن
با خبر کردن از
guest
0 دیدگاه
بازخورد داخلی
دیدن همه نظرات
آکادمی آمانج
مهارت آموزی جهت ورود به بازار کار

تاییدیه ها

تهران - امیرآباد، دانشکده فنی دانشگاه تهران، ساختمان مکانیک جدید واحد ۱۱۴

آیا این مطلب برای شما مفید بود؟

امتیازشو ثبت کنید

میانگین / 5. تعداد رای

اولین نفر شما امتیاز دهید

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

یادگیری یکی از تخصص های محبوب بازار کاری

پایتون که برخی آن را پایتان (python) نیز میگویند یک زبان برنامه نویسی سطح بالا ،شئ گرا ، Open Source و تفسیری است که دارای دستورها و کدهای ساده و پویاست. زبان برنامه نویسی پایتون بسیار ساده تر از زبان های برنامه نویسی دیگر است. بوسیله پایتون ساخت برنامه های کاربردی به صورت ساده تر برای ما ممکن شد.
پایتون از سال 1991 ایجاد شد و از آن زمان و مخصوصا سال های اخیر توجه بسیاری از برنامه نویسان و کسانی که میخواهند با برنامه نویسی آشنا شوند را به خود جلب کرد . یکی از مهم ترین دلیل های توجه بسیار به این زبان برنامه نویسی دوست داشتنی کابردها و قابلیت های فراوان آن است :
ادامه...

کد تخفیف نمیخوای؟

اگه میخوای کد تخفیف شرکت در دوره‌ها، وبینارهای رایگان، بهترین مقالات آکادمی آمانج رو از دست ندی ایمیلت رو این زیر وارد کن!
همین الان عضو شو
close-link
من اینجام