Распознавание объектов на Raspberry Pi с помощью Edge Impulse TinyML


Edge Impulse Studio – это платформа для машинного обучения, позволяющая разработчикам формировать модели машинного обучения в облачном сервисе (облаке) и импортировать их потом на микроконтроллеры (к примеру, Arduino или STM32) или на одноплатные компьютеры, подобные Raspberry Pi. До недавнего времени Edge Impulse не поддерживала работу с Raspberry Pi, однако в апреле 2021 г. она объявила о своей полной поддержке платы Raspberry Pi. Поэтому теперь мы имеем возможность загружать данные, тренировать их в платформе Edge Impulse и затем использовать сформированную модель на Raspberry Pi.

Внешний вид проекта распознавания объектов на Raspberry Pi с помощью Edge Impulse TinyML

Таким образом, в данной статье мы рассмотрим обучение (тренировку) модели классификатора изображений в платформе Edge Impulse и затем будем импортировать (развертывать) эту модель на плату Raspberry Pi. Ранее на нашем сайте мы использовали тренировку (обучение) моделей с помощью пакета Tensorflow для их использования при обнаружении масок на лицах людей и распознавании жестов с помощью Raspberry Pi и OpenCV.

Ранее Edge Impulse на нашем сайте мы использовали в проектах контролера пчел и распознавания речи на Arduino Nano 33 BLE Sense.

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Камера для Raspberry Pi (купить на AliExpress).

Программное обеспечение

Edge Impulse Studio.

Начало работы с Edge Impulse

Для того, чтобы сформировать (натренировать) модель в Edge Impulse, сначала там необходимо создать себе аккаунт, потом верифицировать свой аккаунт и начать новый проект.

Создание нового проекта в Edge Impulse

Установка Edge Impulse на Raspberry Pi

Для установки Edge Impulse на Raspberry Pi используйте следующие команды:

Для запуска Edge Impulse введите команду:

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

Соединение с вашим аккаунтом на Edge Impulse

Теперь, когда Edge Impulse у нас запущен на Raspberry Pi, нам необходимо подключить к плате камеру для сбора (считывания) изображений. Подключите камеру к плате Raspberry Pi как показано на следующем рисунке.

Подключение модуля камеры к плате Raspberry Pi

Создание набора данных

Как мы уже отмечали ранее, мы будем использовать Edge Impulse Studio для обучения нашей модели распознавания изображений. Для этого нам необходимо собрать набор данных, содержащий образцы объектов, которые мы хотим классифицировать (распознать) с помощью платы Raspberry Pi и ее камеры. В нашем проекте мы будем распознавать такие объекты как картофель (Potato) и репчатый лук (Onion), поэтому нам необходимо собрать образцы изображений лука и картофеля, чтобы в дальнейшем наша модель смогла их различать.

Вы можете собрать образцы изображений с помощью смартфона, платы Raspberry Pi, или вы можете импортировать набор данных в ваш аккаунт на Edge Impulse. Самый простой способ загрузить образцы изображений в Edge Impulse – это использовать смартфон (мобильный телефон). Для этого подключите ваш смартфон к компьютеры.

Чтобы подключить ваш смартфон к Edge Impulse, нажмите в нем на ‘Devices’ (устройства) и затем на ‘Connect a New Device’ (подключить новое устройство).

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

В следующем окне нажмите ‘Use your Mobile Phone’, после чего появится QR код. Считайте этот QR код вашим смартфоном с помощью приложения Google Lens или любого другого приложения, способного сканировать QR коды. После этого ваш смартфон будет подключен к Edge Impulse studio.

Выбор варианта сбора данных

После того, как ваш смартфон будет подключен к Edge Impulse Studio, вы можете начать загружать свои образцы изображений – для этого нажмите на ‘Data acquisition’. Далее на странице загрузки изображений (Data acquisition page) введите имя метки (label name) ‘potato’ и выберите ‘Camera’ в качестве датчика. Затем нажмите на ‘Start sampling’.

Начало процесса сбора данных в Edge Impulse

После этого можно будет приступать к загрузке образцов изображения картофеля в облако Edge Impulse. Сделайте от 10 до 20 фотографий картофеля под разными углами и загрузите их в сервис. После этого установите имя метки в ‘onion’ (репчатый лук) и аналогичным образом загрузите от 10 до 20 изображений лука.

Загрузка обучающих данных для объекта картофеля завершена

Загруженные нами образцы изображений будут использоваться для обучения модели. На следующих шагах нам необходимо собрать тестовые данные (Test Data), их количество должно составлять по меньшей мере 20% от количества данных для обучения модели (training data), поэтому необходимо загрузить еще 3 изображения картофеля и 3 изображения лука.

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

Когда наш набор данных будет готов, создадим импульс для наших данных. Для этого перейдите на страницу ‘Create impulse’.

Страница для создания импульса в Edge Impulse

На странице ‘Create impulse’ нажмите на ‘Add a processing block’ (добавить блок обработки) и затем нажмите на кнопку “Add” рядом с блоком “Image” чтобы добавить блок обработки, который будет нормализовать данные изображения и уменьшать глубину цвета. После этого нажмите на блок “Transfer Learning (images)” (передать обучающие изображения) чтобы использовать заранее обученную модель для классификации (распознавания) изображений, в которую мы будем передавать изображения чтобы произвести ее точную настройку для нашей задачи распознавания картофеля и лука. Затем нажмите на ‘Save Impulse’.

Сохранение импульса в Edge Impulse

Затем перейдите на подпункт меню “Images”, находящийся под пунктом “Impulse design” и затем нажмите на вкладку ‘Generate Features’, затем на зеленую кнопку “Generate features”.

Переход к заданию свойств модели в Edge Impulse

После этого нажмите на подпункт “Transfer learning”, находящийся под пунктом меню “Impulse design” и затем нажмите на кнопку “Start training” внизу страницы. В нашем проекте мы использовали модель по умолчанию MobileNetV2. Однако вы, если захотите, можете использовать и другие обучающие модели.

Выбор модели в Edge Impulse

Обучение модели займет некоторое время. После завершения процесса обучения модели вам будет показан результат обучения. В нашем случае точность модели получилась равной 75%, а потери составили 0.58.

Результаты обучения модели в Edge Impulse

После завершения процесса обучения можно протестировать полученную модель. Для этого нажмите на вкладку “Live classification” в меню слева, после этого можно будет с помощью камеры Raspberry Pi захватывать изображения и подавать их в полученную модель.

Развертывание полученной модели машинного обучения на Raspberry Pi

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

Если у вас в данное время выполняется команда edge-impulse-linux, то нажмите Control-C чтобы остановить ее и после этого вводите указанную команду.

С помощью команды edge-impulse-runner ваша плата Raspberry Pi подключится к облаку Edge Impulse и скачает недавно полученную модель, затем запустится видео трансляция с камеры, в поле зрения которой вы можете помещать картофель и лук. Результаты распознавания этих предметов будут отображаться в окне терминала.

Результаты распознавания объектов в окне терминала платы Raspberry Pi

Вы также можете просматривать видео поток с камеры в браузере, для этого скопируйте URL (обведенный красным прямоугольником на предыдущем рисунке) из окна терминала и вставьте его в строку браузера. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Тестирование работы проекта распознавания объектов в браузере

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

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
1 601 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *