عصای جادویی هوش مصنوعی با TensorFlow Lite برای میکروکنترلرها و آردوینو

1. معرفی

چیزی که خواهی ساخت

در این کد لبه، ما یاد خواهیم گرفت که از TensorFlow Lite برای میکروکنترلرها برای اجرای یک مدل یادگیری عمیق در آردوینو نانو 33 BLE استفاده کنیم. میکروکنترلر توسط کاربر به یک «عصای جادویی» دیجیتال تبدیل می‌شود تا طلسم‌های مختلفی را به صدا درآورد. همانطور که کاربر گرز را حرکت می‌دهد، این داده‌های حسگر پیچیده و چند بعدی که برای انسان غیرقابل درک است، به‌عنوان ورودی به مدل ارسال می‌شود، که یک طبقه‌بندی ساده را ارائه می‌دهد که در صورت وقوع یکی از چندین حرکت به ما هشدار می‌دهد.

9208eb1207211349.gif

یادگیری ماشین روی میکروکنترلرها

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

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

1914a419dfacf0b5.jpeg

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

TensorFlow Lite برای میکروکنترلرها (نرم افزار)

864114d0c2b4c919.png

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

TensorFlow Lite For Microcontrollers یک چارچوب نرم افزاری، نسخه بهینه شده TensorFlow است که برای اجرای مدل های tensorflow بر روی سخت افزارهای کوچک و کم مصرف مانند میکروکنترلرها هدف قرار گرفته است. به محدودیت‌های مورد نیاز در این محیط‌های تعبیه‌شده پایبند است، به عنوان مثال، اندازه باینری کوچکی دارد، به پشتیبانی سیستم‌عامل، کتابخانه‌های استاندارد C یا C++، یا تخصیص حافظه پویا و غیره نیاز ندارد.

آردوینو نانو 33 BLE (سخت افزار)

bcd452d4d660efa9.jpeg

آردوینو یک پلتفرم منبع باز محبوب است که برای ساخت پروژه های الکترونیکی استفاده می شود. متشکل از:

  1. یک برد مدار قابل برنامه ریزی فیزیکی (اغلب یک میکروکنترلر) مانند Arduino Nano 33 BLE که در این کد لبه استفاده می شود.
  2. 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. میکروکنترلر آردوینو را راه اندازی کنید

آردوینو خود را باز کنید

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

6ed84a651c871a58.jpeg

آن را به لپ تاپ خود وصل کنید

  • کابل MicroUSB را به سوکت تراشه وصل کنید.
  • سر دیگر کابل را به یک سوکت USB لپ تاپ خود وصل کنید.
  • LED پایین سمت چپ در آردوینو (بالا سمت چپ در تصویر زیر) باید روشن شود.

c6936696f9659104.jpeg

با گردش کار آشنا شوید

99852afbed7e78b0.png

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

3. Arduino IDE را راه اندازی کنید

1. Arduino IDE را دانلود کنید

برای استقرار برنامه در میکروکنترلر آردوینو، از Arduino IDE استفاده می کنیم.

پس از دانلود آن، Arduino IDE را با کلیک بر روی برنامه ای که نماد آن به شکل زیر است را نصب و باز کنید: 75717f13527f36b9.png

صفحه فرود اولیه به صورت زیر باز می شود:

933c91e6e1997c61.png

2. مدیر هیئت مدیره را راه اندازی کنید

  1. از منوی آردوینو، Tools -> Board: "Arduino .." —> Boards Manager انتخاب کنید
  2. "Arduino Nano 33 BLE" را جستجو کنید و Arduino nRF528x Boards (Mbed OS) را نصب کنید. این اطمینان حاصل می کند که میکروکنترلر Arduino Nano 33 BLE ما توسط Arduino IDE پشتیبانی می شود. 817c63346152eda9.png
  1. از منوی آردوینو، Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE" را انتخاب کنید.

9357691e1a1348eb.png

  1. در نهایت، بررسی کنید که برد انتخابی شما "Arduino Nano 33 BLE" در سمت راست پایین IDE باشد.

aa08706bb84fa9b2.png

3. پورت را راه اندازی کنید

از منوی آردوینو، Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) انتخاب کنید. شما باید چیزی شبیه به این را ببینید:

8c25990d0c6fb6f8.png

4. اتصال برد را بررسی کنید

از منوی آردوینو، Tools -> Get Board Info انتخاب کنید. شما باید چیزی شبیه به این را ببینید:

ccd8f5305be6cf59.png

4. کتابخانه ها را نصب کنید

1. کتابخانه آردوینو TensorFlow

این کتابخانه حاوی تمام نمونه‌های TensorFlow Lite برای میکروکنترلر است که شامل کد منبع عصای جادویی مورد نیاز برای این آزمایشگاه است.

  1. از منوی آردوینو، Sketch -> Include Library -> Add .ZIP Library...
  2. کتابخانه TensorFlow Arduino .zip که دانلود کرده اید اضافه کنید.

2. کتابخانه آردوینو LSM9DS1

این کتابخانه به شما امکان می‌دهد مقادیر شتاب‌سنج، مغناطیس‌سنج و ژیروسکوپ را از LSM9DS1 IMU در Arduino Nano 33 BLE Sense خود بخوانید.

  1. از منوی آردوینو، Sketch -> Include -> Manage Libraries...
  2. "Arduino_LSM9DS1" جستجو و نصب کنید. ac2f78a737c5f233.png

5. بارگذاری و ساختن مثال

1. مثال را بارگذاری کنید

از منوی آردوینو، File -> Examples -> Arduino_TensorFlowLite -> magic_wand را انتخاب کنید تا کد نمونه بارگیری شود.

de349f2d3cb49b98.png

این کد منبع عصای جادویی را بارگیری می کند.

cda8c35a597b0798.png

2. مثال را بسازید

روی دکمه Upload در پنجره طرح کلیک کنید.

71cb1474d5e14669.png

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

3df1d0858c6e40a4.png

6. نسخه ی نمایشی

عصای جادویی در حال حاضر می تواند 3 ژست را مطابق شکل زیر تشخیص دهد: 99a607da66af9fc8.png

  1. بال : از گوشه سمت چپ بالا شروع کنید و حرف "W" را به مدت دو ثانیه با دقت دنبال کنید.
  2. حلقه : به صورت عمودی شروع کنید، عصا را در یک دایره در جهت عقربه های ساعت به مدت یک ثانیه حرکت دهید.
  3. شیب : با نگه داشتن عصا رو به بالا و LED ها به سمت خود شروع کنید. عصا را با شیب به سمت چپ و سپس به مدت یک ثانیه به صورت افقی به سمت راست حرکت دهید.

تصویر زیر دو ژست را نشان می دهد. ابتدا یک Slope و سپس یک Wing (از این به عنوان مرجع برای نسخه ی نمایشی خود استفاده کنید).

9208eb1207211349.gif

برای اجرای دمو، دستورالعمل های زیر را دنبال کنید:

  1. وقتی USB وصل است، از منوی آردوینو، Tools -> Serial Monitor انتخاب کنید. در ابتدا یک صفحه خالی بدون خروجی باز می شود.

38e8d53652eb28f2.png

  1. میکروکنترلر آردوینو را حرکت دهید تا هر یک از اشکال بالا را با دقت ردیابی کنید و ببینید آیا مانیتور سریال ژست را تشخیص می دهد یا خیر.

60b8a0017bcae419.png

  1. از خروجی مانیتور سریال متوجه می شویم که عصای جادویی واقعاً همه اشکال را تشخیص داده است! همچنین متوجه خواهید شد که LED سمت راست روشن می شود.

7. مراحل بعدی

تبریک می‌گوییم، شما با موفقیت اولین "عصای جادویی" تشخیص حرکت خود را بر روی یک میکروکنترلر آردوینو ساختید!

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

اسناد مرجع

647c3ef0dc103804.png

با تشکر، و از ساختن لذت ببرید!