- BrainTools - https://www.braintools.ru -

ESP32 + MLX90640: тепловизор с искусственным интеллектом

ESP32 + MLX90640

ESP32 + MLX90640

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: dsb42

Источник [13]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/22441

URLs in this post:

[1] поле зрения: http://www.braintools.ru/article/9711

[2] https://vkvideo.ru/video-229753773_456239024: https://vkvideo.ru/video-229753773_456239024

[3] 📂: https://vkvideo.ru/video-229753773_456239020%F0%9F%93%82

[4] https://github.com/DenissStepanjuk/ESP32.MLX90640.Classification_with_TensorFlowLite: https://github.com/DenissStepanjuk/ESP32.MLX90640.Classification_with_TensorFlowLite

[5] зрения: http://www.braintools.ru/article/6238

[6] 01_MLX90640_collect_dataset: https://github.com/DenissStepanjuk/ESP32.MLX90640.Classification_with_TensorFlowLite/tree/main/01_MLX90640_collect_dataset

[7] обучения: http://www.braintools.ru/article/5125

[8] MLX90640-CNN-TFL.ipynb: https://github.com/DenissStepanjuk/ESP32.MLX90640.Classification_with_TensorFlowLite/blob/main/MLX90640_Python/MLX90640-CNN-TFL.ipynb

[9] ошибки: http://www.braintools.ru/article/4192

[10] интеллекта: http://www.braintools.ru/article/7605

[11] память: http://www.braintools.ru/article/4140

[12] 02_MLX90640_CNN_TFL: https://github.com/DenissStepanjuk/ESP32.MLX90640.Classification_with_TensorFlowLite/tree/main/02_MLX90640_CNN_TFL

[13] Источник: https://habr.com/ru/articles/970216/?utm_source=habrahabr&utm_medium=rss&utm_campaign=970216

www.BrainTools.ru

Rambler's Top100