Контроль соблюдения масочного режима на базе Raspberry Pi и Google Coral
Использование медицинских масок сегодня считается одним из самых эффективных способов остановить распространение эпидемии. Рассмотрим, как искусственный интеллект помогает осуществлять контроль соблюдения масочного режима.
Сегодня мир столкнулся с угрозой, аналогов которой современное поколение не встречало. Да, это COVID-19. И хотя человечество не раз встречалось с эпидемиями, уничтожавшими целые страны: чума, оспа, испанка и т.д., сейчас мы имеем значительные преимущества: развитая гигиена, высокий уровень медицины, а главное — мощные технологии.
Мы знаем, как замедлить темпы распространения вируса. Необходимо соблюдать профилактические меры, в частности, носить медицинские маски. В такое время человеческие ресурсы крайне важны, так для контроля соблюдения подобных мер нам приходит на помощь искусственный интеллект.
Расскажем подробнее о том, как определить наличие медицинских масок на людях на базе Raspberry Pi и Google Coral.
Raspberry Pi — это одноплатный компьютер, то есть различные части компьютера, которые обычно располагаются на отдельных платах, здесь представлены на одной. Плата имеет относительно небольшой размер. Иногда ее называют миникомпьютером.
Сегодня Raspberry Pi – наиболее популярная платформа своей области. Она используется как мозг робота, сервер или просто компьютер.
Нашей задачей является сконфигурировать программно-аппаратный комплекс для распознавания медицинских масок на маломощных устройствах обработки данных. Нам потребуется Raspberry Pi 3 model B ссылка на ресурс.
Перед началом работы необходимо:
- установить на миникомпьютер Raspberry Pi OS на базе OC Debian 20.04 для ARM процессоров ссылка;
- настроить автоматическое подключение к источнику Wi-Fi или LAN-подключение. Для этого воспользуйтесь универсальной инструкцией по настройке для Debian/Ubuntu-подобных систем младше версии 18.04 — ссылка;
- настроить SSH-server для удаленного терминального доступа и настройке. Для этого устанавливаем OpenSSH из терминала командой:
В метапакете SSH содержится как клиент, так и сервер. При установке SSH-сервер автоматически прописывается в автозагрузку. Управлять его запуском, остановкой или перезапуском можно с помощью команд:
Для более детального описания воспользуйтесь этой информацией.
Затем мы использовали камеру IR-CUT B с интерфейсом CSI по ссылке, но работа возможна и с обычной USB-камерой. В нашем случае достаточно в самой ОС запустить raspi-config для консольного управления конфигурацией Raspberry Pi и выбрать пункт «Включить камеру». Проверить работу CSI-камеры можно с помощью следующих команд:
Подробная инструкция: здесь.
Далее необходимо установить зависимости для работы Google Coral по инструкции размещена по ссылке. Мы использовали связку Coral USB Accelerator с Raspberry Pi. Coral предназначен для использования упрощенных моделей TensorFlow – TensorFlow Lite. На этом процесс конфигурации завершен.
Так как Google Coral предназначен для работы с моделями TensorFlow Lite, воспользуемся официальными noteboo`ами для дотренеровки подготовленных моделей, используя colab.research.google.com.
Минимальным требованием является использование модели для классификации изображений по двум классам — «человек в маске», «человек без маски».
Для этого воспользуемся Image classification with TensorFlow Lite Model Make — предварительно сформированный dataset с необходимыми классами изображений (лица людей с масками и без) загружаем в notebook, в котором выполняем дотренеровку и экспорт модели в TensorFlow Lite (.tflite).
Дополнительно, для определения наличия маски на лице у нескольких людей и/или с разных экспозиций добавим модель по определению объектов в кадре. Аналогично, дотренировываем модель.
Для применения полученных моделей воспользуемся официальными примерами их использования и объединим в один скрипт, который выполняет поиск объектов с видео-потока CSI-камеры – лица людей (с масками и без), получает эти фрагменты изображений и проводит по ним классификацию – лицо с маской или без:
Рассмотрим фрагмент кода, который объединяет код из примеров по классификации и определению объектов на фотографии — из видеопотока CSI-камеры анализируем покадрово изображения на наличие лиц людей. Если такие объекты были найдены, обрезаем данные фрагменты изображения и проводим классификацию для выявления на лице медицинской маски.
Полученный программно-аппаратный комплекс позволяет в режиме реального времени определять людей, пренебрегающими профилактическими мерами, то есть без маски. Сравним быстродействие данного комплекса с Coral и без него:
Таким образом, Coral ускоряет работу в 10 раз. Кроме того, скорость более 10-13 кадров в секунду является достаточной для использования комплекса в режиме реального времени. Отметим также, что минимальные энергозатраты, около 2.5 Вт/ч, делают возможным применение комплекса не только в офисах с развитой энергосетью, но даже и в общественном транспорте.
Тысячи людей работают на жизнеобеспечивающих предприятиях. Карантинные меры слабеют, а значит все больше людей выходит в офисы, торговые центры и другие общественные места.
Как никогда важно следить за соблюдением масочного режима. По прогнозам экспертов, это будет актуально многие месяцы. Компании, использующие, подобные программно-аппаратные комплексы экономят свои ресурсы и остаются конкурентоспособными в столь кризисные времена.
Отличная подача материала. Спасибо . Какого уровня ошибки смогли достичь? Освещение / расположение камеры тестировали?
Andrey, добрый день, спасибо! Освещение, положение камер не тестировали. На нашей маленькой обучающей модели мы смогли достичь точности чуть лучше, чем случайное угадывание (около 60%). Для лучших результатов модель нужно дообучать.