К содержимому
  1. Главная
  2. Документация
  3. Камеры для Arduino и MCU
  4. Как обучить модель машинного обучения для Raspberry Pi Pico в Edge Impulse

Как обучить модель машинного обучения для Raspberry Pi Pico в Edge Impulse

Документация Arducam · перевод arducam-russia.ru

Введение

КраткоEdge Impulse — платформа для разработки моделей машинного обучения для периферийных устройств. Разработчики пользуются ею бесплатно, платформу развивает одноимённая компания.

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

Сейчас 99 % данных с датчиков отбрасывается из-за ограничений по стоимости, пропускной способности канала или энергопотреблению. Машинное обучение на периферийных устройствах позволяет эти данные использовать.

Основатель Edge Impulse считает, что машинное обучение способно приносить пользу обществу, и компания поддерживает прикладные проекты, которые помогают людям.

Установка зависимостей

Перед работой с платформой установите зависимости:

  1. Node.js версии 12 или новее.
  2. Откройте командную строку или терминал, установите и запустите edge-impulse-cli:
npm install -g edge-impulse-cli

Пересылка данных

Утилита data forwarder передаёт данные с устройств в Edge Impulse через последовательный порт. Устройство выводит значения датчиков в последовательный порт, утилита собирает эти данные, подписывает их и отправляет в сервис приёма данных.

С её помощью можно быстро собирать данные с разных отладочных плат, не перенося на них полноценный протокол удалённого управления и последовательный протокол. Ограничение — поддерживается только сбор данных с относительно низкой частотой.

Подключение устройства

Выполните в командной строке:

edge-impulse-data-forwarder

Пример вывода утилиты:

Edge Impulse data forwarder v1.5.0
? What is your user name or e-mail address (edgeimpulse.com)? jan@edgeimpulse.com
? What is your password? [hidden]
Endpoints:
    Websocket: wss://remote-mgmt.edgeimpulse.com
    API:       https://studio.edgeimpulse.com
    Ingestion: https://ingestion.edgeimpulse.com

[SER] Connecting to /dev/tty.usbmodem401203
[SER] Serial is connected
[WS ] Connecting to wss://remote-mgmt.edgeimpulse.com
[WS ] Connected to wss://remote-mgmt.edgeimpulse.com
? To which project do you want to add this device? accelerometer-demo-1
? 3 sensor axes detected. What do you want to call them? Separate the names with ',': accX, accY, accZ
? What name do you want to give this device? Jan's DISCO-L475VG
[WS ] Authenticated

Утилита спросит, к какому серверу подключиться, предложит войти в учётную запись, а затем настроит устройство.

Регистрация и создание проекта

Чтобы пользоваться платформой, сначала зарегистрируйте учётную запись Edge Impulse.

Регистрация учётной записи на платформе

После регистрации войдите на платформу и создайте проект.

Создание проекта на платформе

Повторное подключение устройства

СоветПорядок подключения устройства к созданному проекту:
  1. Выполните в командной строке edge-impulse-data-forwarder.
  2. Войдите в учётную запись.
  3. Проект на платформе уже создан — выберите его и нажмите Enter.
  4. Задайте псевдонимы для выходных данных через запятую. Обратите внимание: программа на устройстве должна выводить только данные, разделённые запятыми.
  5. Задайте псевдоним устройства.

Устройство подключено к платформе. Чтобы открыть список устройств, нажмите Devices в левой части страницы.

Список подключённых устройств на платформе

Сброс настроек

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

edge-impulse-data-forwarder --clean

Добавление обучающей и тестовой выборок

Добавить данные можно несколькими способами.

Способы добавления данных
  • Снимайте движение, звук или изображения смартфоном — на нём можно даже запустить модель, обученную локально.
Сбор данных со смартфона
  • Записывайте звук или изображения на компьютере — с веб-камеры, микрофона или внешнего аудиоустройства.
Сбор данных на компьютере
  • Собирайте данные с устройств или отладочных плат.
Сбор данных с устройства
  • Загрузите готовые наборы данных в форматах WAV, JPG, PNG, CBOR или JSON.
Загрузка готового набора данных

Проектирование конвейера нейросети

Выберите подходящие блоки обработки и обучения — платформа сформирует конфигурацию по умолчанию на основе собранных данных.

Выбор блоков обработки и обучения

Выбрав блок, откройте его, чтобы настроить параметры подробно. Не забудьте сохранить настройки.

Обучение модели

Обучите модель с заданными параметрами.

Обучение модели

Тестирование модели

Тестирование модели

Здесь можно получить тестовые данные с устройства или использовать уже имеющиеся.

Развёртывание модели

Готовый конвейер (impulse) можно развернуть на любом устройстве. Тогда модель работает без подключения к интернету, с минимальным энергопотреблением и минимальной задержкой.

Варианты развёртывания модели
  1. Получить исходный код. Модель нейросети преобразуется в оптимизированный исходный код, который запускается на любом устройстве.
  2. Собрать прошивку. Платформа готовит двоичный файл для вашей отладочной платы, в который уже входит модель нейросети.

Подключение Pico к Edge Impulse

Ниже показано, как подключить Pico к платформе и собрать данные в Ubuntu. С помощью Pico будем рисовать в воздухе жесты «Wing», «Slope» и «Circle».

Подключение устройства

  • Войдите в учётную запись.
Вход в учётную запись из утилиты
  • Выберите проект.
Выбор проекта
  • Задайте псевдонимы данных.
Настройка псевдонимов данных

Плата Pico подключена к платформе.

Плата Pico в списке устройств

Сбор данных

Задайте метку класса и нажмите Start sampling.

Настройка сбора данных
Сбор данных с Pico

Когда сбор завершится, появится график сигнала. Данные для каждого из трёх жестов собирались отдельно.

Проектирование конвейера

Конвейер для распознавания жестов

Блок обработки

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

Настройки спектрального анализа

Блок обучения

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

Настройка нейросети, шаг 1
Настройка нейросети, шаг 2
Настройка нейросети, шаг 3

Тестирование модели

Результаты тестирования модели

Развёртывание модели

Выбор варианта развёртывания

Скачайте исходный код на C++.

Добавьте содержимое архива в свой проект.

Файлы модели в проекте

Результат

Распознавание жестов на Pico

Запросить цену

Укажите количество — пришлём коммерческое предложение.