U97
#آردوینو #ESP32 #IoT #رباتیک #خانه هوشمند #سنسور #I2C #میکروکنترلر
TinyML: اجرای مدل یادگیری ماشین روی میکروکنترلر با TensorFlow Lite

TinyML: اجرای مدل یادگیری ماشین روی میکروکنترلر با TensorFlow Lite

میثم پورجعفری ۲۹ دی ۱۴۰۴ ۵۴۳ بازدید ۱ دقیقه مطالعه پیشرفته ۷۰ دقیقه
چگونه یک شبکه عصبی کوچک را کوانتیزه و روی ESP32 اجرا کنیم: جمع‌آوری داده، آموزش مدل، تولید آرایه C و سنجش تأخیر و حافظه.

مسیر کار TinyML

  1. جمع‌آوری داده از سنسور (شتاب‌سنج، میکروفون یا سنسور جریان).
  2. آموزش یک مدل کوچک (MLP یا CNN یک‌بعدی) در Keras یا PyTorch.
  3. کوانتیزاسیون int8 و تبدیل مدل به آرایه C.
  4. اجرای استنتاج روی میکروکنترلر با TensorFlow Lite for Microcontrollers.

چرا کوانتیزاسیون int8؟

مدل float32 روی میکروکنترلر حجیم و کند است. کوانتیزاسیون int8 حجم مدل را حدود ۴ برابر کوچک و زمان استنتاج را تا ۳ برابر سریع می‌کند، با افت دقت ناچیز.

import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_data
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
tflite_model = converter.convert()

اجرا روی ESP32

  • حجم Tensor Arena را تجربی پیدا کنید؛ برای مدل‌های کوچک معمولاً ۲۰ تا ۶۰ کیلوبایت کافی است.
  • برای مدل‌های بزرگ‌تر بافر را در PSRAM با AllocatePersistentBuffer بسازید.
  • از توابع بهینه‌شده esp_nn برای شتاب‌دهی به لایه‌های کانولوشن و فولی‌کانکتد استفاده کنید.

سنجش عملکرد

زمان استنتاج را با micros() قبل و بعد از Invoke() اندازه بگیرید و دقت را با ماتریس درهم‌ریختگی روی داده آزمون ارزیابی کنید.

تمرین

با شتاب‌سنج MPU6050 تشخیص «تکان دادن» و «سکون» را با یک شبکه MLP تک‌لایه پیاده کنید و نتیجه را روی یک LED نمایش دهید.

اشتراک در تلگرام

میثم پورجعفری

مهندس برق - الکترونیک

مهندس برق - الکترونیک؛ طراح و مجری پروژه‌های میکروکنترلری، برد الکترونیکی و سیستم‌های کنترل صنعتی. در U97 تجربه‌های عملی، آموزش‌های کاربردی و ابزارهای مهندسی را در اختیار…

درباره نویسنده
نصب اپلیکیشننسخه اپلیکیشن U97 را روی گوشی خود نصب کنید؛ سریع‌تر و با دسترسی آفلاین.