برد هوش مصنوعی Sipeed

شروع پردازش تصویر با برد Maixduino توسط شبکه عصبی mobilenet

image-processing-with-maixduino-camera-sipeed-in-mobilenet-neural-network-digispark
نوشته شده توسط معین صابری

در مجموعه آموزش های برد Maixduino، فصل دوم قسمت سوم را به توانایی پردازش تصویر و طبقه بندی اشیا اختصاص می دهیم. پردازش تصاویر یا به عبارت دیگر بینایی ماشین، یکی از قابلیت های کلیدی و کاربردی برد Maixduino  به شمار می رود. در این روش، برد می تواند به کمک دوربین خود، تصاویر را ثبت کند. پس از ثبت تصاویر، به کمک واحد پردازش یادگیری(KPU)، تصاویر دریافتی پردازش شده و با الگو های قرار گرفته در حافظه، مقایسه می گردد. در صورت یافتن تطابق بین تصاویر دریافتی و تصاویر موجود در حافظه، عبارت مناسب در خروجی ارسال می گردد. برد Maixduino با پردازنده قدرتمند K210، جهت پردازش تصویر و اجرای بینایی ماشین، از شبکه عصبی mobilenet بهره می برد. بدین ترتیب با دقتی بالا و حجمی کم، پردازش تصویر بر روی برد Maixduino اجرا خواهد شد. در این آموزش به بررسی شبکه عصبی mobilenet روی برد Maixduino می پردازیم. در ابتدای آموزش به طور مختصر شبکه عصبی mobilenet را از نظر می گذارنیم. سپس در ادامه به اجرای نمونه برنامه و چالش های اجرای آن، خواهیم پرداخت. در ادامه این آموزش با مرجع تخصصی برد هوش مصنوعی Sipeed به زبان فارسی، دیجی اسپارک همراه باشید.

 


شبکه عصبی mobilenet


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

شبکه عصبی و برد مایکس دوینو maixduino - دیجی اسپارک

 

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

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

 

جهت اجرای شبکه های عصبی بر روی میکروکنترلرها، نیازمند شبکه ای با حجم پایین هستیم. این در حالیست که به عنوان یک اصل، این شبکه باید از دقت مناسبی هم برخوردار باشد. برای حل این مشکل، شبکه عصبی mobilenet توسعه داده شده است. این شبکه از حجم بسیار پایینی برخوردار است. به طوریکه می تواند روی میکروکنترلرها (البته با توان پردازش قابل قبول)، تبلت ها، کامپیوترهای تک بردی و تلفن های همراه اجرا شود. البته این حجم کم دلیلی بر کاهش دقت نیست. به طوریکه طبق گفته این مرجع دقت شبکه mobilenet در برابر ۱۰۰ شی، برابر با ۶۵ درصد است. بنابراین با یک دقت قابل قبول در کنار حجم کم، رو به رو هستیم.

دقت شبکه عصبی mobilenet - دیجی اسپارک

 

همانطور که گفته شد، برد Maixduino قابلیت اجرای شبکه عصبی mobilenet را در خود جای داده است. بدین ترتیب به کمک این شبکه عصبی، می توان به تشخیص اشیای محیط پرداخت. در کنار این، برد Maixduino از پردازنده قدرتمند ESP32 نیز بهره می برد. این پردازنده می تواند شبکه عصبی tensorFlow Lite را اجرا نماید. بدین ترتیب شما می توانید دقت مضاعفی در تشخیص اشیا داشته باشید؛ درحالیکه حجم بسیار کمی هم از پردازنده ها اشغال شده است.

راه اندازی شبکه عصبی tensorFlow Lite در maixduino - دیجی اسپارک

 

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

 


اجرای نمونه برنامه mobilenet بخش اول مدل تصویر


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

http://dl.sipeed.com/MAIX/MaixPy/model/mobilenet_0x300000.kfpkg

 

 پس از دانلود فایل فوق، باید آن را از حالت فشرده خارج کنید. در صورتیکه با نرم افزار winrar یا winzip نمی توانید فایل را unzip کنید، می بایست از سرویس های آنلاین بهره ببرید. به این منظور، وارد سرویس unzip آنلاین https://extract.me/ شوید. با باز شدن این صفحه، با تصویر زیر رو به رو خواهید شد.

اجرای نمونه برنامه mobilenet در maixduino - دیجی اسپارک

 

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

unzip کردن نمونه برنامه mobilenet در مایکسدوینو - دیجی اسپارک

 

مطابق تصویر فوق، فایل m.kmodel را دانلود کنید. اگر هم با سیستم عامل ویندوز unzip کرده اید، این فایل را انتخاب کنید. پس از انتخاب، این فایل را به نام m تغییر دهید. به عبارت دیگر  .kmodel را از نام فایل حذف کنید. پس از این مرحله، این فایل را در کارت SD و در مسیر ROOT قرار دهید. سپس کارت SD را از برد خارج کرده و درون سوکت برد Maixduino قرار دهید. در قسمت بعدی، به آپلود برنامه و اجرای آن می پردازد.

 


اجرای نمونه برنامه mobilenet بخش دوم اجرای مدل تصویری


پس از قرار گیری فایل مدل تصویری درون کارت SD، نوبت به آپلود برنامه نمونه و اجرای آن می رسد. برای این مورد، مطابق تصویر زیر، روی منوی File->Examplse->Maix_KPU->mobilenet_v1 کلیک کنید.

اجرای نمونه برنامه mobilenet در نرم افزار آردوینو - دیجی اسپارک

 

همانطور که مشاهده می کنید، این برنامه خود از چندین زیر برنامه تشکیل شده است. یکی از این فایل ها مربوط به نام های اشیا است. هرگاه که واحد KPU(Knowledge Processing Unit ) تصویری را مطابق با الگو تشخیص دهد، نام آن را روی نمایشگر، نمایش می دهد. پس از آپلود کد، ابتدا مطابق تصویر زیر برای چند لحظه می بایست صبر کنید تا مدل از حافظه SD لود شود.

شروع پردازش تصویر با برد maixduino و ال سی دی - دیجی اسپارک

 

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

تشخیص اشیا توسط برد Maixduino در شبکه عصبی mobilenet - دیجی اسپارک

 


لوازم مورد نیاز


بردهای مبتنی بر هوش مصنوعی Sipeed

برد Maixduino

 


جمع بندی


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰ دیدگاه

  • با سلام و خسته نباشید خدمت اعضای محترم دیجی اسپارک و استاد عزیز.
    استاد من سه سوال داشتم.
    ۱. آیا با برد Maixduino میتوانیم شبکه های سنگینی مثل yolo v4 هم استفاده کنیم؟
    ۲. بین برد رزبری پای v3 و برد Maixduino کدام در مورد پردازش تصویر قدرت و کارایی بالایی دارد؟
    ۳. آیا میتوانیم با زبان پایتون این برد را پروگرم کنیم؟

    • سلام و متشکرم از شما
      دو سوال نخست شما را اطلاعی ندارم و از دیگر دوستان تقاضای شرکت در بحث را دارم. برای مورد سوم بله، با این زبان قابلیت برنامه نویسی را این برد، داراست.

  • سلام من ایلیا لطفی هستم تو این پروژه به یک مشکلی که برخورم اینه که وقتی میخوام کد های این پروژه رو اپلود کنم فقط یک خط از برنامه رو ارور میدهSipeed_OV2640 camera(224, 224, PIXFORMAT_RGB565); منظورم این خط بود که ارور میده اگه میشه راهنماییم کنید
    باتشکر.

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

  • سلام با این برد میتوان چهره انسان را شناسایی کرد یا به عبارت دیگر دوربین مدار بسته تشخیص چهره؟

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