Комментарии 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. Похоже, только на такой размер видеобуфера и хватает, не больше.
По поводу размера кадра: так как везде в дальнейшем идёт речь только о работе с уменьшенной версией кадра — видимо это ошибка автора этого конкретного решения (уменьшил кадр и добился приемлемой производительности, а в коде поправить забыл).
Для ML моделей очень важны вычислительная производительность и количество памяти. Для того, чтобы уместить модель в 2кб или добиться приличной производительности, надо хорошо понимать всё, что происходит "под капотом". Специально под ограничения МК подобрать архитектуру модели и потом обучить ее.
Просто в статье формально говориться в целом о машинном обучении, и приведённые алгоритмы (и нейросети), действительно, являются ML. Но во многих моментах создаётся впечатление, что речь идёт о именно нейросетях (в 2 кб, вах!).
Вот только там где говорится о ATtiny85 или о 2-х килобайтах, там приводятся примеры машинного обучения без нейросетей. Ну а в таком разрезе, чему удивляться, к примеру, дереву решений? Оно вообще может из трёх узлов состоять. А в сотню байт можно засунуть настоящее дерево для расчёта ОСАГО:)
Реально полезная сеть содержала бы тысячи/десятки тысяч параметров (можно 1 к 1 перевести в байты чтобы получить требования к оперативе).
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
Если типичному современному "десктопно-мобильному" программисту сказать, что задачи распознавания образов, движений и звуков можно успешно решать на МК с памятью в килобайты, он охрипнет, доказывая, что это невозможно в принципе. :)
TinyML — машинное обучение на микроконтроллерах