TinyML: машинное обучение на Raspberry Pi Pico с TensorFlow Lite Micro и Arducam (на примере обнаружения человека)
Будущее машинного обучения — за крошечными устройствами
«Будущее машинного обучения — за крошечными устройствами». Пит Уорден, технический руководитель группы мобильного и встраиваемого TensorFlow в команде Google Brain.

Машинное обучение — раздел искусственного интеллекта, который изучает компьютерные алгоритмы, автоматически улучшающиеся с опытом.
Крошечное машинное обучение (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

Комплект TinyML для обнаружения человека на Raspberry Pi Pico
Pico4ML — одна отладочная плата для всех примеров TensorFlow Lite Micro

Отладочная плата на 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
- Скомпилируйте проект.
cd RPI-Pico-Cam/tflmicro
mkdir build
cd build
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 | Демонстрация обнаружения человека. |
- Подключите оборудование.

- Загрузите и запустите
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:


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


