OpenMV
Щиты
Объектив
Робототехника
Книга
Видео
Скачать
Документы
Форум
OpenMV.io
ГитхабВ апреле прошлого года наша новая модель OpenMV4 H7 Plus вышла на рынок. Сегодня я представлю вам новую функцию OpenMV4 H7 Plus — самостоятельное обучение нейронной сети для классификации и распознавания с использованием онлайн-платформы EdgeImpulse.
В этом руководстве вы будете использовать машинное обучение для создания системы распознавания, которая с помощью интеллектуальной камеры OpenMV4 H7 Plus определяет, носит ли человек маску, то есть реализует классификацию изображений.

EdgeImpulse — это онлайн-платформа для обучения нейронных сетей, предназначенная для встраиваемых устройств. Она является партнёром OpenMV, и оба проекта входят в число официальных партнёров STMicroelectronics. В настоящее время EdgeImpulse бесплатно доступен для пользователей OpenMV, которые могут использовать платформу для обучения нейронных сетей, совместимых с OpenMV.
Добавление нейронной сети к встроенному устройству OpenMV позволяет реализовать такие функции, как различение браконьеров и слонов, контроль качества на производственных линиях, а также автономное управление радиоуправляемыми моделями автомобилей.
В этом руководстве вы узнаете, как собрать изображения для создания высококачественного набора данных, как применить трансферное обучение для тренировки нейронной сети и как развернуть систему на OpenMV.
Кроме того, мы также предоставили видеоурок, который можно посмотреть на официальном сайте, выполнив поиск по запросу "Обучение нейронной сети для распознавания масок с помощью OpenMV4 Plus".
Вы можете ознакомиться с полным содержанием проекта по следующему адресу, включая весь код и модели: https://book.openmv.cc/project/mask.html
Использование EdgeImpulse для онлайн-обучения нейронной сети, совместимой с OpenMV, в основном включает следующие четыре этапа: сбор данных, загрузка, обучение и развертывание.
01、Сбор набора данных
В этом руководстве мы создадим модель, которая сможет различать, надета ли на лице маска. Конечно, вы также можете выбрать классификацию других объектов. Для работы модели машинного обучения вам потребуется собрать большое количество примеров изображений лиц как в масках, так и без них. Во время обучения эти примеры изображений используются для тренировки различения модели.
Нам необходимо использовать OpenMV IDE для сбора нашего набора данных. Шаги по сбору изображений следующие:
Создать две категории:
Откройте в меню OpenMV IDE раздел "Инструменты", выберите "Редактор наборов данных", нажмите "Создать набор данных", затем создайте новую папку и откройте её. Внутри набора данных создайте ещё две папки, назвав их соответственно mask (для сохранения фотографий лиц в масках) и face (для сохранения фотографий лиц без масок).


Сбор изображений с помощью OpenMV
Сначала подключаем OpenMV, нажимаем "Подключить" в IDE, затем "Запустить". В буфере кадров Framebuffer можно увидеть изображение с OpenMV в реальном времени. Нажав кнопку с фото в левом меню, OpenMV автоматически сохранит это изображение — это и будет одним из данных в наборе данных.
Сначала мы сохраняем лицо человека в маске. Нажав кнопку фотографии, IDE сделает снимок в нижней части, который автоматически назовется 00000, следующий будет 00001 и так далее.
С помощью OpenMV собрать по 200 фотографий лиц в масках (по 100 мужских и женских) и 200 фотографий лиц без масок (также по 100 мужских и женских).


* Примечание: необходимо обеспечить сбор фотографий с различных ракурсов, чтобы гарантировать разнообразие для нашего обучения.
Если в процессе сбора вы обнаружите, что какое-то изображение собрано недостаточно идеально, вы можете щёлкнуть по нему правой кнопкой мыши и выбрать "Удалить".
02、Загрузка
После сбора изображений с помощью OpenMV вам необходимо зарегистрировать аккаунт и войти на официальный сайт EdgeImpulse (https://edgeimpulse.com/), чтобы начать загрузку изображений. Шаги для загрузки изображений:
Создайте новый проект на EdgeImpulse, нажмите "keys", выберите "API Key" и скопируйте "API Key". Используйте API Key для подключения OpenMV IDE к Edge Impulse.

В верхнем меню OpenMV IDE выберите "Инструменты" — "Редактор данных" — "Экспорт" — "Загрузить" — "Загрузить через API Key", скопируйте "API Key" и загрузите.
При загрузке данные автоматически разделяются на обучающую и тестовую выборки. По умолчанию мы выбираем соотношение "80% и 20%". Всего мы собрали более 400 изображений лиц, где 80% Training Date означает, что 80% данных используются для обучения, а оставшиеся 20% — для тестовой выборки.


03. Обучающий набор данных
Набор данных готов, теперь вы можете обучать его на веб-интерфейсе EdgeImpulse.
Модуль обработки конфигураций:
Сначала выберите «Impulse Design» и настройте модуль обработки:
Установить размер изображения по умолчанию как «96 x 96».
Выберите модуль "Изображения" (Images), что означает, что мы проводим обучение классификации изображений (вы также можете использовать EdgeImpulse для классификации звуков, видео и т.д.).
Выберите "Перенос обучения (изображения) Transfer Learning (Images)", настройте модель для обучения.
Выберите "Сохранить импульс Save impulse", если отображается "Successfully", значит, конфигурация успешно завершена.

Предварительная обработка изображений:
В левом меню нажмите "Изображение Image", установите цветовой формат "RGB", затем нажмите "Сохранить".

Затем выберите "Сгенерировать признаки" для запуска процесса, который выполнит предварительную обработку изображений для более чем 400 данных, а справа будет отображена 3D-визуализация полного набора данных.

Настройка модели трансферного обучения
Нажмите на пункт меню "Миграционное обучение Transfer learning" в левой части меню, все параметры настройки можно оставить по умолчанию, также их можно изменить в соответствии с потребностями:
1. Установить количество циклов обучения Number of training cycles по умолчанию равным 10
2. Установите скорость обучения (Learning rate) равной 0,0005.
3. Можно отметить или не отмечать опцию «Увеличение данных Data augmentation».
4. Установите минимальный рейтинг достоверности Minimum confidence rating по умолчанию на 0.8.
Нажмите "Начать обучение Start training", процесс обучения займет примерно 4-5 минут.
После завершения обучения модели вы можете просмотреть точность, матрицу ошибок (confusion matrix) и ожидаемую производительность устройства.

Тестирование модели:
После завершения обучения мы будем использовать тестовые данные для проверки модели.
Выберите "Тестирование модели Model testing", установите флажок рядом с "Название образца Sample name" и нажмите "Классифицировать выбранное Classify selected". Показанная здесь точность достигла 97%, что является выдающимся результатом для модели с таким малым объёмом данных.

Обнаружено, что данное изображение, отмеченное красным, является неопределенным. Нажмите на три точки справа от этого изображения, выберите "Показать классификацию Show classification", и вы перейдете в интерфейс "Классификация в реальном времени", где содержатся дополнительные детали файла. Этот интерфейс поможет вам определить причину ошибки классификации изображения.

Если данные находятся за пределами всех известных кластеров (в маске/без маски), это могут быть данные, не соответствующие ни одной из ранее наблюдаемых категорий — возможно, из-за того, что большая часть лица закрыта волосами.
04. Запуск модели на OpenMV
После завершения этапов проектирования обучения, обучения модели и проверки модели, вы можете экспортировать эту модель в свой OpenMV. Выберите "OpenMV", затем "Build" для генерации, и автоматически будут созданы три файла:
trained.tflite обученная модель нейронной сети
labels.txt два классификационных тега (face и mask)
* ei_image_classification.py — это код, который должен выполняться на OpenMV

Подключите OpenMV IDE и сохраните эти три файла во встроенную Flash-память OpenMV. Откройте файл ei_image_classification.py в OpenMV IDE, чтобы увидеть код, который мы только что сгенерировали в EdgeImpulse. Нажмите "Запуск", и результаты выполнения будут отображены в последовательном терминале.


Хорошо, вы успешно добавили функцию самостоятельного обучения нейронной сети для OpenMV.
Ждем ваших результатов!

ИИ-сторож на базе OpenMV: автоматическое уведомление о незакрытых объектах в ключевых местах
Автоматически определяет, не оставалась ли дверь в ключевых местах открытой в течение длительного времени, и своевременно уведомляет об этом.

Срабатывание тревоги при выходе человека за пределы зоны: OpenMV демонстрирует «чувство безопасности границы»
Обнаружение нарушения границы персоналом или оборудованием с помощью виртуальной охранной линии.

Появилась система «ИИ-инспектор по городскому хозяйству»: автоматическая система распознавания несанкционированной торговли на основе платформы OpenMV
Автоматическое распознавание деятельности по захвату проезжей части для содействия повседневному управлению городом.

Неправильное размещение газовых баллонов? Используйте OpenMV для автоматической активации предупреждения об опасности
Автоматическое распознавание несанкционированных мест размещения газовых баллонов и своевременное выявление потенциальных угроз безопасности при использовании газа.

Выполняете работы под напряжением без диэлектрических перчаток? OpenMV немедленно подаст сигнал тревоги!
Автоматическое распознавание того, надевают ли рабочие изолирующие перчатки, для обеспечения безопасного выполнения работ.

Использование интеллектуальной камеры OpenMV для распознавания дефектов на поверхности алюминиевых листов в режиме реального времени
Онлайн-идентификация дефектов на поверхности алюминиевых листов, таких как царапины и вмятины, для поддержки контроля качества.