1. معرفی
چیزی که خواهی ساخت
در این کد لبه، ما یاد خواهیم گرفت که از TensorFlow Lite برای میکروکنترلرها برای اجرای یک مدل یادگیری عمیق در آردوینو نانو 33 BLE استفاده کنیم. میکروکنترلر توسط کاربر به یک «عصای جادویی» دیجیتال تبدیل میشود تا طلسمهای مختلفی را به صدا درآورد. همانطور که کاربر گرز را حرکت میدهد، این دادههای حسگر پیچیده و چند بعدی که برای انسان غیرقابل درک است، بهعنوان ورودی به مدل ارسال میشود، که یک طبقهبندی ساده را ارائه میدهد که در صورت وقوع یکی از چندین حرکت به ما هشدار میدهد.
یادگیری ماشین روی میکروکنترلرها
از یادگیری ماشینی میتوان برای ایجاد ابزارهای هوشمندی استفاده کرد که زندگی کاربران را آسانتر میکند، مانند Google Assistant . اما اغلب، این تجربیات به محاسبات یا منابع زیادی نیاز دارند که می تواند شامل یک سرور ابری قدرتمند یا یک دسکتاپ باشد. با این حال، اکنون می توان استنباط یادگیری ماشین را روی سخت افزارهای کوچک و کم مصرف مانند میکروکنترلرها اجرا کرد.
میکروکنترلرها بسیار رایج، ارزان هستند، به انرژی بسیار کمی نیاز دارند و بسیار قابل اعتماد هستند. آنها بخشی از انواع وسایل خانگی هستند: وسایل فکری، ماشین ها و اسباب بازی ها. در واقع، سالانه حدود 30 میلیارد دستگاه با میکروکنترلر تولید می شود.
با آوردن یادگیری ماشین به میکروکنترلرهای کوچک، می توانیم هوش میلیاردها دستگاهی را که در زندگی خود استفاده می کنیم، بدون تکیه بر سخت افزار گران قیمت یا اتصالات اینترنتی قابل اعتماد، افزایش دهیم. وسایل هوشمندی را تصور کنید که میتوانند با کارهای روزمره شما سازگار شوند، حسگرهای صنعتی هوشمند که تفاوت بین مشکلات و عملکرد عادی را درک میکنند، و اسباببازیهای جادویی که میتوانند به کودکان کمک کنند تا به روشهای سرگرمکننده و لذتبخش یاد بگیرند.
TensorFlow Lite برای میکروکنترلرها (نرم افزار)
TensorFlow چارچوب یادگیری ماشین منبع باز گوگل برای آموزش و اجرای مدلها است. TensorFlow Lite یک چارچوب نرم افزاری، نسخه بهینه شده TensorFlow است که برای اجرای مدل های tensorflow در دستگاه های کوچک و نسبتا کم مصرف مانند تلفن های همراه هدف قرار گرفته است.
TensorFlow Lite For Microcontrollers یک چارچوب نرم افزاری، نسخه بهینه شده TensorFlow است که برای اجرای مدل های tensorflow بر روی سخت افزارهای کوچک و کم مصرف مانند میکروکنترلرها هدف قرار گرفته است. به محدودیتهای مورد نیاز در این محیطهای تعبیهشده پایبند است، به عنوان مثال، اندازه باینری کوچکی دارد، به پشتیبانی سیستمعامل، کتابخانههای استاندارد C یا C++، یا تخصیص حافظه پویا و غیره نیاز ندارد.
آردوینو نانو 33 BLE (سخت افزار)
آردوینو یک پلتفرم منبع باز محبوب است که برای ساخت پروژه های الکترونیکی استفاده می شود. متشکل از:
- یک برد مدار قابل برنامه ریزی فیزیکی (اغلب یک میکروکنترلر) مانند Arduino Nano 33 BLE که در این کد لبه استفاده می شود.
- Arduino IDE (محیط توسعه یکپارچه)، نرم افزاری که برای نوشتن و آپلود کدهای کامپیوتری روی برد فیزیکی استفاده می شود.
Arduino Nano 33 BLE یک پلت فرم مبتنی بر میکروکنترلر است: یک کامپیوتر کوچک روی یک برد مدار. دارای پردازنده، حافظه و سخت افزار ورودی/خروجی است که به آن امکان ارسال و دریافت سیگنال های دیجیتال به دستگاه های دیگر را می دهد. برخلاف کامپیوتر، میکروکنترلر قدرتمند نیست و معمولاً سیستم عاملی را اجرا نمی کند. در عوض، آنها پردازنده های کوچکی دارند، حافظه زیادی ندارند و برنامه هایی که می نویسید مستقیماً روی سخت افزار اجرا می شوند. اما از آنجایی که آنها تا حد امکان ساده طراحی شده اند، یک میکروکنترلر می تواند انرژی بسیار کمی مصرف کند.
کاری که خواهی کرد
- میکروکنترلر Arduino Nano 33 BLE را راه اندازی کنید و آن را به یک "عصای جادویی" دیجیتال تبدیل کنید.
- Arduino IDE را راه اندازی کرده و کتابخانه های مورد نیاز را نصب کنید
- برنامه را روی دستگاه اجرا کنید
- انواع طلسم ها را با تکان دادن عصای جادویی انجام دهید و پیش بینی ها را مشاهده کنید
آنچه شما نیاز دارید
- لپ تاپ لینوکس، MacOS یا ویندوز
- Arduino Nano BLE Sense 33 (بدون هدر)
- کابل Micro USB (اگر از یک لپ تاپ USB-C استفاده می کنید، به جای آن یک کابل USB-C به Micro USB بگیرید)
- (اختیاری) چوب، حدود 12 اینچ (30 سانتی متر طول)
- (اختیاری) نوار چسب
2. میکروکنترلر آردوینو را راه اندازی کنید
آردوینو خود را باز کنید
آن را از جعبه خارج کرده و از کف بسته بندی بیرون بیاورید. رسانا است و در غیر این صورت می تواند مشکلاتی ایجاد کند!
آن را به لپ تاپ خود وصل کنید
- کابل MicroUSB را به سوکت تراشه وصل کنید.
- سر دیگر کابل را به یک سوکت USB لپ تاپ خود وصل کنید.
- LED پایین سمت چپ در آردوینو (بالا سمت چپ در تصویر زیر) باید روشن شود.
با گردش کار آشنا شوید
همانطور که در نمودار بالا نشان داده شده است، مفسر TFLite در آردوینو به صورت دوره ای استنتاج را روی مدل اجرا می کند. این مدل از دادههای شتابسنج پردازش شده به عنوان ورودی استفاده میکند و یک پیشبینی را خروجی میدهد که نشاندهنده حرکتی است که به احتمال زیاد رخ داده است. علاوه بر این، یک خروجی مورد نظر چاپ می شود و LED های مناسب روشن می شوند.
3. Arduino IDE را راه اندازی کنید
1. Arduino IDE را دانلود کنید
برای استقرار برنامه در میکروکنترلر آردوینو، از Arduino IDE استفاده می کنیم.
پس از دانلود آن، Arduino IDE را با کلیک بر روی برنامه ای که نماد آن به شکل زیر است را نصب و باز کنید:
صفحه فرود اولیه به صورت زیر باز می شود:
2. مدیر هیئت مدیره را راه اندازی کنید
- از منوی آردوینو،
Tools -> Board: "Arduino .." —> Boards Manager
انتخاب کنید -
"Arduino Nano 33 BLE"
را جستجو کنید وArduino nRF528x Boards (Mbed OS)
را نصب کنید. این اطمینان حاصل می کند که میکروکنترلر Arduino Nano 33 BLE ما توسط Arduino IDE پشتیبانی می شود.
- از منوی آردوینو،
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"
را انتخاب کنید.
- در نهایت، بررسی کنید که برد انتخابی شما "Arduino Nano 33 BLE" در سمت راست پایین IDE باشد.
3. پورت را راه اندازی کنید
از منوی آردوینو، Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE)
انتخاب کنید. شما باید چیزی شبیه به این را ببینید:
4. اتصال برد را بررسی کنید
از منوی آردوینو، Tools -> Get Board Info
انتخاب کنید. شما باید چیزی شبیه به این را ببینید:
4. کتابخانه ها را نصب کنید
1. کتابخانه آردوینو TensorFlow
این کتابخانه حاوی تمام نمونههای TensorFlow Lite برای میکروکنترلر است که شامل کد منبع عصای جادویی مورد نیاز برای این آزمایشگاه است.
- از منوی آردوینو،
Sketch -> Include Library -> Add .ZIP Library...
- کتابخانه TensorFlow Arduino
.zip
که دانلود کرده اید اضافه کنید.
2. کتابخانه آردوینو LSM9DS1
این کتابخانه به شما امکان میدهد مقادیر شتابسنج، مغناطیسسنج و ژیروسکوپ را از LSM9DS1 IMU در Arduino Nano 33 BLE Sense خود بخوانید.
- از منوی آردوینو،
Sketch -> Include -> Manage Libraries...
-
"Arduino_LSM9DS1"
جستجو و نصب کنید.
5. بارگذاری و ساختن مثال
1. مثال را بارگذاری کنید
از منوی آردوینو، File -> Examples -> Arduino_TensorFlowLite -> magic_wand
را انتخاب کنید تا کد نمونه بارگیری شود.
این کد منبع عصای جادویی را بارگیری می کند.
2. مثال را بسازید
روی دکمه Upload
در پنجره طرح کلیک کنید.
بعد از چند دقیقه باید متن قرمز رنگی را مشاهده کنید که نشان می دهد چشمک زدن کامل شده است. در حین آپلود، LED سمت راست باید پالس کند و در پایان تاریک شود.
6. نسخه ی نمایشی
عصای جادویی در حال حاضر می تواند 3 ژست را مطابق شکل زیر تشخیص دهد:
- بال : از گوشه سمت چپ بالا شروع کنید و حرف "W" را به مدت دو ثانیه با دقت دنبال کنید.
- حلقه : به صورت عمودی شروع کنید، عصا را در یک دایره در جهت عقربه های ساعت به مدت یک ثانیه حرکت دهید.
- شیب : با نگه داشتن عصا رو به بالا و LED ها به سمت خود شروع کنید. عصا را با شیب به سمت چپ و سپس به مدت یک ثانیه به صورت افقی به سمت راست حرکت دهید.
تصویر زیر دو ژست را نشان می دهد. ابتدا یک Slope و سپس یک Wing (از این به عنوان مرجع برای نسخه ی نمایشی خود استفاده کنید).
برای اجرای دمو، دستورالعمل های زیر را دنبال کنید:
- وقتی USB وصل است، از منوی آردوینو،
Tools -> Serial Monitor
انتخاب کنید. در ابتدا یک صفحه خالی بدون خروجی باز می شود.
- میکروکنترلر آردوینو را حرکت دهید تا هر یک از اشکال بالا را با دقت ردیابی کنید و ببینید آیا مانیتور سریال ژست را تشخیص می دهد یا خیر.
- از خروجی مانیتور سریال متوجه می شویم که عصای جادویی واقعاً همه اشکال را تشخیص داده است! همچنین متوجه خواهید شد که LED سمت راست روشن می شود.
7. مراحل بعدی
تبریک میگوییم، شما با موفقیت اولین "عصای جادویی" تشخیص حرکت خود را بر روی یک میکروکنترلر آردوینو ساختید!
امیدواریم از این معرفی مختصر توسعه با TensorFlow Lite برای میکروکنترلرها لذت برده باشید. ایده یادگیری عمیق در میکروکنترلرها جدید و هیجان انگیز است و ما شما را تشویق می کنیم که بیرون بروید و آزمایش کنید!
اسناد مرجع
- اکنون که تجربه کار با برنامه پایه را دارید، مدل خود را آموزش دهید .
- درباره TensorFlow Lite برای میکروکنترلرها ( وب سایت ، GitHub ) بیشتر بیاموزید.
- نمونه های دیگر را امتحان کنید و در صورت پشتیبانی آن ها را روی آردوینو اجرا کنید.
- آزمایشگاه کد دیگر را امتحان کنید: هوش مصنوعی روی میکروکنترلر با TensorFlow Lite و SparkFun Edge
- به کتاب O'Reilly TinyML: Learning Machine with TensorFlow در Arduino و Micro-Controllers Ultra-Low Power مراجعه کنید، که یادگیری ماشین را در دستگاه های کوچک معرفی می کند و چندین پروژه سرگرم کننده را طی می کند. این کد لبه بر اساس فصل 11 این کتاب است.
با تشکر، و از ساختن لذت ببرید!