ESP32 + MLX90640: тепловизор с искусственным интеллектом. DIY.. DIY. embedded systems.. DIY. embedded systems. esp32.. DIY. embedded systems. esp32. microtf.. DIY. embedded systems. esp32. microtf. MLX90640.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация. искусственный интеллект.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация. искусственный интеллект. микроконтроллеры.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация. искусственный интеллект. микроконтроллеры. Программирование микроконтроллеров.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация. искусственный интеллект. микроконтроллеры. Программирование микроконтроллеров. Промышленное программирование.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация. искусственный интеллект. микроконтроллеры. Программирование микроконтроллеров. Промышленное программирование. робототехника.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация. искусственный интеллект. микроконтроллеры. Программирование микроконтроллеров. Промышленное программирование. робототехника. тепловизор.. DIY. embedded systems. esp32. microtf. MLX90640. tensorflow. автоматизация. искусственный интеллект. микроконтроллеры. Программирование микроконтроллеров. Промышленное программирование. робототехника. тепловизор. Электроника для начинающих.
ESP32 + MLX90640

ESP32 + MLX90640

Сегодня я хочу показать и рассказать вам, как, подключив к ESP32-S3 тепловизионную матрицу MLX90640, можно запустить веб-сервер для стриминга теплового изображения с определением в реальном времени того, какие сущности попали в поле зрения тепловизора.

В моём случае была обучена свёртончная нейронная сеть для классификации трёх сущностей в инфракрасном спектре: кошки, человека или же отсутствия двух предыдущих.

Данная система является полностью автономной, и инференс TensorFlow Lite-модели происходит прямо на борту микроконтроллера.

Демонстрация работы + исходный код:

📹VK: https://vkvideo.ru/video-229753773_456239024
📂GitHub: https://github.com/DenissStepanjuk/ESP32.MLX90640.Classification_with_TensorFlowLite

Сбор датасета

Первый этап – собрать набор данных, на котором будет обучена нейросеть для классификации сущностей. Тепловизионная матрица MLX90640 представляет собой матрицу 24×32 пикселя из 768 инфракрасных датчиков. Каждый из датчиков измеряет температуру в своей точке поля зрения, благодаря чему два раза в секунду от MLX90640 по интерфейсу I2C можно получить полноценное тепловое изоброжение окружающего пространства.

В репозитории на GitHUB реализован скетч “01_MLX90640_collect_dataset“, который реализует стриминг теплового изображения с матрицы MLX90640, благодаря чему тепловизор можно корректно навести на интересующий обьект и прозвести захват изображения.

Для обучения свёрточной нейросети потребуется собрать как минимум около 50 снимков на каждую категорию: человек, кошка и пустота.

Обучение свёртончной нейронной сети

Свёртончная нейронная сеть
Свёртончная нейронная сеть

В репозитории на GitHUB есть ноутбук “MLX90640-CNN-TFL.ipynb“, в котором полностью реализован процесс обучения нейросети средствами библиотеки глубокого обучения TensorFlow, тут же давайте разберём ключевые этапы.

1) Загрузка данных
На этом шаге происходит базовая подготовка данных:
Загрузка тепловых матриц из папок dataset/cat, dataset/person, dataset/empty, преобразование файлов в массивы NumPy и формирование единого набора данных и соответствующих меток классов.

2) Масштабирование данных
Тепловизор MLX90640 возвращает тепловые матрицы размерности 24×32, где каждый элемент матрицы это температуры в градусах Цельсия, то есть float значение.

Для нейросети, которая будет залита на ESP32, такой диапазон значений не подходит – модель должна работать с нормализованными входами в формате int8.

Каждое значение нормализуется в диапазон от –128 до +127.

3) Визуализация данных
Перед обучением важно убедиться, что данные корректны. Поэтому в ноутбуке выполняется визуализация тепловыз изображений 24×32. Отобразив нескольких образцов для каждой категории (кошка, человек, пустота), можно убедиться, что данные читаемы и различимы.

Этот этап помогает выявить ошибки: неправильный формат данных, перепутанные метки или некорректное чтение файлов.

4) Прописать структуру модели средствами TensorFlow
Далее создаётся архитектура свёрточной нейросети – это особый тип реализации искусственного интеллекта, который использует специальную математическую операцию, называемую свёрткой, для обработки данных из изображений. Свёртка выполняется путём перемножения двух матриц и получения третьей, меньшей матрицы.

Сеть принимает входное изображение и использует фильтр (ядро) для создания карты признаков, описывающей изображение.

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

Квантование модели

Квантование – это процесс преобразования весов модели из формата float32 в формат int8. Это уменьшает размер модели и ускоряет инференс модели в десятки раз. Такой формат значительно экономит память, что критично для микроконтроллеров. В итоге получается лёгкая и быстрая модель, пригодная для запуска прямо на ESP32.

После квантования модель сохраняется в формате TensorFlow Lite, а затем конвертируется в C-массив, который в свою очередь можно загрузить в память ESP32 и после компиляции и загрузки прошивки получить полностью автономную систему для стриминга теплового изображения с определением в реальном времени того, какие сущности попали в поле зрения тепловизора. Данный скетч можно найти в репозитории на GitHUB 02_MLX90640_CNN_TFL“.

Автор: dsb42

Источник

Rambler's Top100