آردوینو برد Esp32 ماژول دوربین پردازش تصویر

سیستم تشخیص انسان مبتنی برد تراشه ESP32 و نرم افزار TensorFlow

نوشته شده توسط CiferTech

در پروژه های قبلی با استفاده از برد ESP32-cam و ساخت یک وب سرور با فراخوانی TensoeFlow.js توانستیم پردازش تصویر و یادگیری ماشین را مبتنی بر وب سرور اجرا کنیم اما در این پروژه تنها با استفاده از برد ESP32-CAM این مورد را عملی خواهیم کرد، به این صورت که با دوربین موجود در برد مربوط، تصاویر در لحظه تحلیل می‌شوند و در سریال مانیتور میزان درصد تطابق تصویر موجود با یک انسان نمایش داده می‌شود. در این پزوژه از کتابخانه TensorFlowLite_ESP32 کردیم که در سال ۲۰۱۹ توسط توسعه دهندگان Tensorflow منتشر شده است. این کتابخانه مدل های یادگیری ماشین TensorFlow را روی میکروکنترلرها اجرا می کند و به شما امکان می دهد برنامه های AI / ML را با استفاده از شبکه های عصبی و یادگیری عمیق ایجاد کنید. با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


TensorFlow Lite for Microcontrollers


TensorFlow Lite برای میکروکنترلرها برای اجرای مدلهای یادگیری ماشین در میکروکنترلرها و سایر دستگاهها با فقط چند کیلوبایت حافظه طراحی شده است. زمان اجرای هسته فقط ۱۶ کیلوبایت بر روی Arm Cortex M3 قرار دارد و می تواند بسیاری از مدل های اصلی را اجرا کند. نیازی به پشتیبانی سیستم عامل ، هیچ کتابخانه استاندارد C یا C یا تخصیص حافظه پویا ندارد.

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

 


شناخت برد ESP32-CAM


ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوت‌های آن بلوتوث داخلی‌اش می‌باشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC می‌باشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی می‌باشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیق‌تر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته می‌شود.

از دیگر امکانات ماژول ESP32-cam می‌توان به دوربین OV2640 با قابلیت ثبت تصویر با فرمت JPEG, BMP, grayscale اشاره کرد. همچنین با LED flash مونتاژ شده بر روی این ماژول قادر به تصویر برداری در مکان‌های تاریک نیز خواهید بود. یکی از ویژگی‌های کاربردی این ماژول ورودی micro SD با قابلیت ارتقا تا ۴GB است که به کاربر اجازه ذخیره تصاویر را هم می‌دهد.

 


نحوه کار پروژه


در پروژه سیستم تشخیص انسان مدل های یادگیری ماشین را به صورت محلی روی دستگاه ESP32 خود اجرا کردیم. با استفاده از کتابخانه TensorFlowLite_ESP32 که این کتابخانه مدل های یادگیری ماشین TensorFlow را روی میکروکنترلرها اجرا می کند و به شما امکان می دهد هوش مصنوعی بسازیم. در این پروژه بر خلاف پروژه های پیشین که تمام پردازش در وب‌سرور ایجاد شده توسط ما انجام می‌شد، در این پروژه تمام پردازش به گردن خود میکروکنترلر قرار داد و نتیجه بصورت تصاویر فریم به فریم با کد های ASCII در سریال مانیتور Arduino IDE نمایش داده می‌شود. همچنین درصد شباهت سوژه به مدل مدنظر ما یعنی انسان در همین طریق اطلاع رسانی می‌شود.

 


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


ماژول ESP32-CAM

ماژول مبدل FT232 برای پروگرام

 


نصب افزونه ESP32


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

 

سپس با مراجعه به بخش برد ها در Tools > Board > Boards Manager  و جسجوی ESP32 قادر به دانلود کتابخانه مربوط خواهید بود.

 


پروگرام کردن ESP32-cam


برای پروگرام کردن برد ESP-CAM در پرورژه سیستم تشخیص انسان نیاز به نرم افزار Arduino-IDE داریم و البته دانلود برد مربوط در محیط نرم افزار و همچنین نصب کتابخانه های مورد نیاز، برای اطلاع از این موارد می توانید به این آموزش مراجعه کنید. اتصالات را مطابق شماتیک زیر متناسب با USB TO TTL استفاده شده برقرار کنید. دقت داشته باشد که در زمان پروگرام شدن کد یعنی پس از کامپایل کردن کد، دو پین GPIO 0 و GND به یکدیگر متصل هستند و پس از کامپایل موفق کد، برای اجرا شدن پروژه باید این اتصال را جدا کنید.

پروگرام کردن ESP32-cam تشخیص اشیا با دوربین - دیجی اسپارک

 

  • اتصالات به شرح زیر می‌باشد.

اتصالات پروگرام کردن برد ESP-Cam - دیجی اسپارک

 


راه‌اندازی و اجرای پروژه


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

 

در کد های این پروژه تمام هدر فایل ها بصورت منظم و سلسه مراتبی به یکدیگر متصل هستند پس اگر تمام هدر فایل ها در کد اول فراخوانی نشده، به این دلیل است که در فایلی دیگر مورد نظر فراخوانی و اجرا شده. در کد پایین مطابق روال پروژه های گذشته باید نوع ماژول مورد استفاده را انتخاب کنیم، در غیر این صورت  هنگام آپلود و کامپایل کد با ارور مواجه خواهید شد. برای در این مورد من از تراشه Ai-Thinker استفاده کردم، پس در کد این گزینه را از کامنت خارج کردم.

 

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

 

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

 


نتیجه نهایی


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

 


جمع بندی


در این پروژه با استفاده از Tensorflow Lite اقدام به پردازش تصویر دریافتی از ESP32-CAM کردیم و مقادیر را با مدل های تعریف شده تطابق دادیم. همچنین تصاویر برای درک بهتر به صورت مقادیر ASCII نمایش داده شدند، این پروژه وابستگی به اینترنت وب‌سرور نداشت و تنها با استفاده خود برد ESP پردازش و اجرا شد. با تعریف مدل های بیشتر این قابلیت وجود دارد که مقادیر مد نظر ما تحلیل شوند و در پردازش نهایی برای ما نمایش داده شوند.

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

CiferTech

فقط 10 نوع آدم در این دنیا وجود داره، اونی که باینری میفهمه و اونی که باینری نمیفهمه! ^-^

~ اینستاگرام: CiferTech

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