image alt
Развертывание на устройство
это финальный и самый волнующий шаг, когда ваша обученная модель "оживает" на микроконтроллере и начинает работать автономно.
Пошаговый процесс развертывания в Edge Impulse:

Шаг 1: Переход в раздел "Deployment"

В левом меню Edge Impulse Studio выберите пункт Deployment.

Шаг 2: Выбор способа развертывания

Перед вами откроется список всех доступных вариантов. Выбор зависит от вашего устройства и задач.

Основные варианты развертывания:

⚙️ C++ Library (Библиотека)

Самый универсальный вариант.
Подходит для встраивания в ваш существующий проект на C++ (например, в PlatformIO, Arduino IDE). Вы получаете ZIP-архив с исходным кодом библиотеки, содержащей вашу модель и весь код для запуска.

📦 Arduino Library

Идеально для быстрого прототипирования на платах Arduino (Nano 33 BLE Sense, XIAO BLE Sense и т.д.). Вы получаете файл .zip, который можно добавить в Arduino IDE через Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку....

🚀 Firmware (Прошивка)

Подходит для получения готового к использованию образа. Edge Impulse соберет полную прошивку для вашей платы. Вы получаете готовый файл .bin или .hex, который можно загрузить на устройство с помощью программатора.

☁️ Edge Impulse for Linux (Linux SDK)

Подходит для одноплатных компьютеров (Raspberry Pi, Jetson Nano). Вы получаете инструкции по установке SDK и команды для запуска модели.

📚 Custom block (Настраиваемый блок)

Подходит для продвинутых пользователей, которым нужен полный контроль над логикой. Вы получаете возможность написать свою функцию на C++ между этапами обработки и вывода.

Рекомендация для начала: Для большинства микроконтроллеров (Arduino, ESP32) лучше всего подходит C++ Library или Arduino Library.

Шаг 3: Выбор оптимизаций и сборка

Edge Impulse предложит вам выбрать параметры. Чаще всего подходят настройки по умолчанию.

Платформа автоматически применит квантование (сведение чисел с плавающей запятой к 8-битным целым числам), что сократит размер модели и ускорит ее работу.

Нажмите кнопку Build (Построить). Edge Impulse упакует вашу модель, алгоритмы обработки сигналов и движок вывода (инференса) в выбранный вами формат и начнет загрузку архива.
Что делать с загруженным файлом? Интеграция в проект

Вариант A: Использование с Arduino IDE

Загрузите файл arduino-*.zip.

В Arduino IDE: Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку....

Выберите загруженный ZIP-файл.

Откройте пример: Файл -> Примеры -> Найдите свою библиотеку (она будет называться как ваш проект) -> static_buffer (или другой пример).


Этот пример уже содержит код для захвата данных с датчиков и запуска вашей модели.

Вариант B: Использование с PlatformIO (как C++ Library)

Загрузите файл cpp-*.zip.

Распакуйте архив в папку lib вашего PlatformIO-проекта.

В коде вашего проекта (main.cpp) добавьте заголовочные файлы:


#include <your_project_name_inferencing.h> // Заголовок с моделью
#include "edge-impulse-sdk/dsp/numpy.hpp"
// Для функций обработки сигналов

Используйте код из примеров в архиве для захвата данных и запуска модели.

Шаг 4: Тестирование на реальном устройстве

После загрузки прошивки на устройство:

Откройте Serial Monitor (Монитор порта) в Arduino IDE или PlatformIO.

Вы должны увидеть логи инициализации, а затем предсказания вашей модели в реальном времени.

Проведите тест: подайте на устройство тестовый сигнал (произнесите слово, сделайте жест). В мониторе порта вы должны увидеть, как меняются показания модели (например, Predictions: noise: 0.02, light: 0.01, fan: 0.97).

Ключевые моменты успешного развертывания

Точное соответствие предобработки: Код, работающий на устройстве, в точности повторяет шаги предобработки, которые вы настроили в студии Edge Impulse (нормализация, вычисление MFCC и т.д.). Библиотека делает это автоматически.

Проверка памяти (RAM/Flash): Убедитесь, что модель и буферы помещаются в память микроконтроллера. Edge Impulse показывает размер модели. Если он слишком велик, потребуется упростить модель.

Скорость работы (Latency): Замерьте, сколько времени занимает один цикл предсказания. Он должен укладываться в требования вашего приложения (например, для реального времени — десятки миллисекунд).

Реальное тестирование (In-the-wild testing): Это самый важный тест. Проверяйте устройство в тех же условиях, где оно будет работать: при разном освещении, с фоновым шумом, от разных пользователей.

Вывод: Развертывание — это мост между виртуальной моделью и физическим устройством. Успешное прохождение этого этапа означает, что вы создали полноценный продукт с машинным обучением на микроконтроллере! Если модель на устройстве работает хуже, чем в студии, вернитесь к этапам сбора данных и тестирования.

Craftum Сайт создан на Craftum