
TinyML: اجرای مدل یادگیری ماشین روی میکروکنترلر با TensorFlow Lite
چگونه یک شبکه عصبی کوچک را کوانتیزه و روی ESP32 اجرا کنیم: جمعآوری داده، آموزش مدل، تولید آرایه C و سنجش تأخیر و حافظه.
مسیر کار TinyML
- جمعآوری داده از سنسور (شتابسنج، میکروفون یا سنسور جریان).
- آموزش یک مدل کوچک (MLP یا CNN یکبعدی) در Keras یا PyTorch.
- کوانتیزاسیون int8 و تبدیل مدل به آرایه C.
- اجرای استنتاج روی میکروکنترلر با 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 تجربههای عملی، آموزشهای کاربردی و ابزارهای مهندسی را در اختیار…
درباره نویسنده