Проект устройства для распознавания маски на основе M5Stack Core2 и UnitV2
Во время пандемии, ношение масок в общественных местах стало обязательным. Маска ограничивает распространение вируса и является одним из средств профилактики от SARS-CoV-2. На наш взгляд, проект имеет высокую актуальность и может быть использован для решения многих задач. В данном решении мы опишем проект аудиовизуальной системы распознавания лицевой маски на основе платформы для прототипирования и робототехники M5Stack.
Вводная часть и определения
Для реализации проекта нам понадобится:
UnitV2 USB — это модуль ИИ распознавания от M5Stack, использующий для работы управляющее ядро Sigmstar SSD202D с объёмом памяти 128 МБ-DDR3 и 512 МБ флэш-памяти NAND. Универсальный интерфейс USB-A, позволяет подключать различные камеры UVC. Встроенная операционная система Linux, интегрированная с богатыми аппаратными и программными ресурсами, облегчат процесс программирования для начинающих пользователей.M5Stack CORE2 относится к линейке базовых модулей M5Stack 2-го поколения с самым производительным чипом серии, «Мозгом» устройства является микроконтроллер ESP32. Модуль выполняет функции координирующего и управляющего устройства для задач конструирования, прототипирования, создания робототехнических систем, а также систем умного дома и систем контроля доступа. В данных системах автоматического управления, совместим с датчиками, функциональными модулями серии, а также внешними устройствами через поддерживаемые протоколы и интерфейсы. Платформой разработки и языками программирования для этого продукта являются Arduino, UIFlow и MicroPython.
TinyML
TinyML — это область машинного обучения, касающаяся моделей, подходящих для маломощных и встроенных устройств, таких как M5Stack UnitV2.
Подробная информация о TinyML доступна по ссылке.
Загрузка пользовательского набора данных из Kaggle
Машинное обучение не может обойтись без данных. Следовательно, первым шагом был сбор данных обучения. Любая модель глубокого обучения потребует большого объема обучающих данных, чтобы дать хорошие результаты вывода.
Нам нужно найти набор данных маски для лица с помощью веб-сайта Kaggle. Для использования ресурсов Kaggle необходимо авторизоваться на сайте Kaggle. В качестве первого шага загрузите набор данных из Kaggle. Этот набор данных доступен для загрузки по следующей ссылке.
Классы:
Распакуйте zip-файл.
Служба обучения модели распознавания объектов V-Training
V-Training — это сервис, который позволяет легко распознавать объекты с помощью M5Stack UnitV2.
Шаг 1: Регистрация на V-обучение
Перейдите по этой ссылке и создайте бесплатную учетную запись в V-Training. Если у вас уже есть учетная запись на форуме M5, просто войдите в систему.
Шаг 2: Загрузите изображения из набора данных
Минимальное количество изображений, необходимых для обучения, составляет 30 изображений на класс. Общий размер обучающих наборов изображений не может превышать 200.
Рассмотрим некоторые примеры лиц из нашего набора данных.
Шаг 3: Создание меток
Создаются два образца меток. С маской и без маски.
Шаг 4: Маркировка данных
Рисуем квадрат вокруг каждого объекта, так квадрат попадает в область видимости детектора. Далее помечаем каждую квадрат классом объекта, который мы хотели бы, чтобы детектор распознал.
На этом снимке экрана размещаем прямоугольник, чтобы отметить маску для лица. Обозначаем прямоугольник как With_mask.
Шаг 5: Обучите свою модель
Выберите Эффективный режим и нажмите кнопку Загрузить.
Дождитесь завершения обучения, чтобы создать модель. Если модель обучения будет успешно создана, вы получите результат, подобный приведенному ниже.
Обученную модель можно скачать в виде сжатого файла с веб-сайта.
Шаг 6. Развертывание модели
Теперь, когда модель обучена, пришло время развернуть ее в M5Stack UnitV2. Поскольку он имеет встроенную программу обнаружения объектов с самого начала, вам нужно загрузить обученную модель, поместив ее с помощью веб-интерфейса. После запуска UnitV2 точка доступа AP (SSID: M5UV2_XXX: PWD:12345678) будет включена по умолчанию, и пользователь может установить сетевое соединение с UnitV2 через Wi-Fi.
Этот сжатый файл не нужно копировать на TF-карту, переходим на доменное имя unitv2.py или через IP: 10.254.239.1, переключаем функцию на Распознавание объектов и нажимаем кнопку добавления, чтобы загрузить модель.
Повторите его еще раз, например, с маской
На данный момент мы можем использовать UnitV2 в качестве камеры ИИ и отправлять результаты обнаружения цели с последовательного порта. Он будет непрерывно выводить идентификационные данные образца через последовательный порт (интерфейс HY2.0-4P). При обмене данными по последовательному порту UART все идентификационное содержимое выводится в формате JSON через последовательный порт.
UnitV2 распознает его и отправляет в M5Stack через UART в формате JSON.
Установка M5Stack Core2
Чтобы использовать M5Stack Core2, вам нужно сначала настроить его.
В отличие от других плат, функциональность UIFlow по умолчанию не используется в M5Stack Core2. Это первое, что вам нужно сделать, чтобы начать программировать свои платы с помощью UIFlow.
Теперь вы можете начать программирование с помощью UIFlow!
Написание блочной программы распознавания маски лица с помощью UIFlow
UIFlow — это веб-среда визуального программирования, разработанная для серии M5Stack на основе среды визуального программирования с открытым исходным кодом Google Block. Вы можете переключаться между блочным программированием и кодированием на Python.Скопируйте следующие блоки в область Блочное редактирование, затем нажмите кнопку Выполнить в правом верхнем углу, чтобы выполнить код. Перетащите также элементы элементов управления.
Приведенная ниже программа просто отображает класс прогнозирования на экране M5Stack Core2, также она издает звук, когда обнаруживает наличие маски на лице.
Подключите M5Unit V2 к M5 Core2 с помощью кабеля grove.