Как стать автором
Обновить

TinyML — машинное обучение на микроконтроллерах

Время на прочтение9 мин
Количество просмотров15K
Всего голосов 18: ↑18 и ↓0+18
Комментарии11

Комментарии 11

 (потребление которых при работе этих алгоритмов измеряется милливольтами).

Может быть милливаттами?

Вы правы, очепятался — поправил.

Очень интересно, но не всё понятно. А именно "3. Экспортирование обученной модели в код C ". Это имеется ввиду сама нейросеть с её весами? Она хранится в виде кода или в виде коэффициентов (весов)? Что делает МК при "распознавании" таким образом?

Вопрос 2. const uint16_t imageWidth = 320; const uint16_t imageHeight = 240; А разве памяти в ESP32 хватит на такой кадр? особенно если ещё нейросеть в ОЗУ висит?

там под 512кБ памяти внутренней, без учёта мегабайтов внешней psram на qspi.

75кб (150 для 16ти битного цвета) можно под буфер кадра и выделить

The ESP32 chip contains 520KB of RAM. Похоже, только на такой размер видеобуфера и хватает, не больше.

есть возможноть то ли 8 то ли 16МБайт внешнего psram если так уж хочется мегапикселями ворочать, медленно и печально.

В разных мануалах обычно подчёркивается что «экспортированная модель представляет собой простой массив» (и даже в этом примере, в статье) — поэтому, я так полагаю, этот массив в виде кода C, — является набором поправочных коэффициентов для предсказания результатов, при получении входных данных (с микрофона, камеры и откуда либо ещё) — но, могу ошибаться.

По поводу размера кадра: так как везде в дальнейшем идёт речь только о работе с уменьшенной версией кадра — видимо это ошибка автора этого конкретного решения (уменьшил кадр и добился приемлемой производительности, а в коде поправить забыл).

Для ML моделей очень важны вычислительная производительность и количество памяти. Для того, чтобы уместить модель в 2кб или добиться приличной производительности, надо хорошо понимать всё, что происходит "под капотом". Специально под ограничения МК подобрать архитектуру модели и потом обучить ее.

Просто в статье формально говориться в целом о машинном обучении, и приведённые алгоритмы (и нейросети), действительно, являются ML. Но во многих моментах создаётся впечатление, что речь идёт о именно нейросетях (в 2 кб, вах!).

Вот только там где говорится о ATtiny85 или о 2-х килобайтах, там приводятся примеры машинного обучения без нейросетей. Ну а в таком разрезе, чему удивляться, к примеру, дереву решений? Оно вообще может из трёх узлов состоять. А в сотню байт можно засунуть настоящее дерево для расчёта ОСАГО:)

Реально полезная сеть содержала бы тысячи/десятки тысяч параметров (можно 1 к 1 перевести в байты чтобы получить требования к оперативе).

Привет! Да, за TinyML будущее. Но статья немного сумбурно написала, особенно со стороны ML-специалиста.
1) У вас идет путаница TensorFlow/TensorFlow lite/TensorFlow Micro и системами их инференса (не все из того что вы приводите использует /требует TensorFlow)
2) Вы приводите лишь несколько вариантов запуска на ESP32. В реальности из больше. И у того же Eloquent много проблем (например у него нет моделей исходных для CV, он конвертирует рандомно найденные в инете). Если хотите, посмотрите, я тут обзор делал про другие способы — youtu.be/w_sCTPDuutQ
3) Сегодня есть платы примерно в цену ESP32, но с куда большей производительностью. Про k210 и Alwinner'овский процессор я тут рассказываю — youtu.be/Hf4Ra59_DCA

И, может быть любопытно, вот тут я показываю минималистический End-to-end пример с обучением для ESP32 — youtu.be/ms6uoZr-4dc

Если типичному современному "десктопно-мобильному" программисту сказать, что задачи распознавания образов, движений и звуков можно успешно решать на МК с памятью в килобайты, он охрипнет, доказывая, что это невозможно в принципе. :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий