К содержимому
  1. Главная
  2. Блог
  3. TinyML: машинное обучение на Raspberry Pi Pico с TensorFlow Lite Micro и Arducam (на примере обнаружения человека)

TinyML: машинное обучение на Raspberry Pi Pico с TensorFlow Lite Micro и Arducam (на примере обнаружения человека)

4 февраля 2021 · По материалам Arducam

Будущее машинного обучения — за крошечными устройствами

«Будущее машинного обучения — за крошечными устройствами». Пит Уорден, технический руководитель группы мобильного и встраиваемого TensorFlow в команде Google Brain.
Пит Уорден: будущее машинного обучения — за крошечными устройствами
Пит Уорден выступает на конференции O’Reilly по искусственному интеллекту в Пекине, 2019 год. Фото: O’Reilly

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

Крошечное машинное обучение (TinyML) находится на стыке машинного обучения и встраиваемых устройств интернета вещей (IoT). Эта область способна коренным образом изменить многие отрасли.

Краткое введение в эту новую область от HarvardX — в видео на YouTube.

TensorFlow Lite Micro (tflmicro)

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

Он поддерживает такие микроконтроллерные платформы, как Arduino Nano 33 BLE Sense, ESP32, STM32F746 Discovery kit и другие. С выходом недорогой Raspberry Pi Pico, которая быстро набирает популярность у мейкеров, Arducam переносит на Pico то, что уже умеют другие микроконтроллерные платформы.

Первые шаги в машинном обучении на Pico

Это руководство по запуску фреймворка машинного обучения TensorFlow Lite Micro на Pico для обнаружения человека. Если вас больше интересует камера, посмотрите серию камер для Raspberry Pi Pico от Arducam.

Демонстрация 1: обнаружение человека на Raspberry Pi Pico

Видео — на YouTube.

Демонстрация 2: обнаружение человека на Arducam Pico4ML

Видео — на YouTube.

Демонстрация 3: «волшебная палочка» (распознавание жестов) на Pico4ML

Видео — на YouTube.

Демонстрация 4: распознавание ключевого слова на Pico4ML

Видео — на YouTube.

Демонстрация 5: камера Arducam HM01B0 для Raspberry Pi Pico

Видео — на YouTube.

Компоненты и материалы

Готовый комплект для обнаружения человека на Pico

Комплект для обнаружения человека на Raspberry Pi Pico

Комплект TinyML для обнаружения человека на Raspberry Pi Pico

Pico4ML — одна отладочная плата для всех примеров TensorFlow Lite Micro

Отладочная плата Arducam Pico4ML

Отладочная плата на RP2040 с камерой QVGA, микрофоном, ЖК-дисплеем и другими компонентами.

Компоненты проекта обнаружения человека на Pico

  • 1 × Arducam Mini 2MP Plus
  • 1 × Raspberry Pi Pico
  • 1 × преобразователь USB–TTL
  • Провода-перемычки
  • 1 × кабель Micro USB

Как подготовить Pico к работе, описано в официальном руководстве «Начало работы с Raspberry Pi Pico» и в файле README репозитория pico-sdk.

Быстрая настройка Pico

Если вы разрабатываете для Raspberry Pi Pico на Raspberry Pi 4B или Raspberry Pi 400, большинство шагов установки из руководства «Начало работы» можно пропустить и запустить скрипт настройки. Скачайте скрипт:

git clone https://github.com/raspberrypi/pico-setup.git

Затем запустите его:

 pico-setup/pico_setup.sh

Скрипт:

  • создаст каталог pico;
  • установит нужные зависимости;
  • скачает репозитории pico-sdk, pico-examples, pico-extras и pico-playground;
  • пропишет PICO_SDK_PATH, PICO_EXAMPLES_PATH, PICO_EXTRAS_PATH и PICO_PLAYGROUND_PATH в файл ~/.bashrc;
  • соберёт примеры blink и hello_world в pico-examples/build/blink и pico-examples/build/hello_world;
  • скачает и соберёт picotool (см. приложение B официального руководства) и скопирует его в /usr/local/bin;
  • скачает и соберёт picoprobe (см. приложение A);
  • скачает и скомпилирует OpenOCD (для отладки);
  • скачает и установит Visual Studio Code;
  • установит для неё нужные расширения (подробнее — в главе 6);
  • настроит UART Raspberry Pi для работы с Raspberry Pi Pico.

После выполнения скрипта перезагрузите Raspberry Pi:

sudo reboot

Обнаружение человека

Схема обнаружения человека

Схема проекта обнаружения человека
  • Скачайте RPI-Pico-Cam:
git clone https://github.com/ArduCAM/RPI-Pico-Cam.git
  • Скомпилируйте проект.
СоветЕсли не хотите компилировать, возьмите готовый файл uf2: останется собрать схему и загрузить uf2 на устройство.
cd RPI-Pico-Cam/tflmicro
mkdir build 
cd build 
cmake ..
Вывод CMake
make

В каталоге RPI-Pico-Cam/tflmicro/build/examples/person_detection появятся файлы:

ФайлОписание
person_detection_int8.uf2Основная программа person_detection. Её можно перетащить на запоминающее устройство USB, которым определяется RP2040.
person_detection_benchmark.uf2Тест производительности person_detection: показывает, как быстро обнаружение человека работает на Pico.
image_provider_benchmark.uf2Тест производительности image_provider: показывает скорость получения данных изображения.
Файлы, созданные после сборки

Проверка обнаружения человека

ПриложениеОписание
person_detection_int8Демонстрация обнаружения человека.
  • Подключите оборудование.
Схема подключения Arducam Mini к Raspberry Pi Pico
Подключение камеры Arducam к Raspberry Pi Pico
  • Загрузите и запустите person_detection.

Проще всего загрузить программу на плату на RP2040, подключив её как запоминающее устройство USB: тогда для записи флеш-памяти достаточно перетащить файл на плату. Подключите Raspberry Pi Pico к Raspberry Pi кабелем Micro USB, удерживая кнопку BOOTSEL, — так плата перейдёт в режим запоминающего устройства USB.

Если вы, например, работаете по SSH, запоминающее устройство, возможно, придётся смонтировать вручную:

$ dmesg | tail
[ 371.973555] sd 0:0:0:0: [sda] Attached SCSI removable disk
$ sudo mkdir -p /mnt/pico
$ sudo mount /dev/sda1 /mnt/pico

Если в /mnt/pico видны файлы, запоминающее устройство USB смонтировано правильно:

$ ls /mnt/pico/
INDEX.HTM INFO_UF2.TXT

Скопируйте person_detection_int8.uf2 на RP2040:

sudo cp examples/person_detection/person_detection_int8.uf2 /mnt/pico
sudo sync

Просмотр результата

Пример обнаружения человека выводит информацию по USB. Посмотреть её можно в minicom:

minicom -b 115200 -o -D /dev/ttyACM0
Вывод примера в терминале

Кроме того, пример передаёт по UART данные изображения и результаты обнаружения человека. Для их отображения Arducam подготовила программу на Processing:

СоветСкачайте среду Processing — для компьютера или в версии для Raspberry Pi.
Результат: человек не обнаружен
Результат: человек обнаружен

Дополнительные материалы

  • На сайте TensorFlow — сведения об обучении моделей, руководства и другие материалы.
  • Книга о TinyML — руководство по использованию TensorFlow Lite Micro на самых разных системах.
  • В статье «TensorFlow Lite Micro: встраиваемое машинное обучение на системах TinyML» подробно описаны устройство и реализация фреймворка.
  • Репозиторий Arducam RPI-Pico-Cam на GitHub: заходите, ставьте звезду или делайте форк.

Ещё по теме

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

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