Распознавание маски на лице методами Computer Vision
В данной статье мы постараемся решить достаточно актуальную задачу для нашего времени, а именно методами computer vision будем предсказывать наличие на лице маски.
Данную задачу можно разбить на две части: нужно найти лицо человека, после чего определить есть ли на нем маска.
Для написания данной программы возьмем уже обученную нейронную сеть для второй части (ссылка), для обнаружения лица будем использовать стандартное решение для такого рода задач — каскады Хаара (ссылка). Модель обучалась на ~ 1300 примерах изображений лиц людей, 50% которых были в масках, остальные 50% без масок.
Данную программу мы реализуем в Colab, у которого не всегда работает отображение картинок от OpenCV, поэтому импортируем некоторые дополнительные модули.
Загружаем каскады и модель.
Далее создадим функцию face_mask_detector, которая принимает на вход картинку, а на выходе выдает ее же с информацией о наличии маски.
Для начала нужно полученное изображение перевести из цветного в изображение в оттенках серого (BGR -> GRAY), далее определяем лица людей на картинке, добавляя их в список. После этого проверяем наличие маски, при условии найденного лица и в отдельный список добавляем «уверенность» нашей модели в результате. В зависимости от результата выделяем лицо на изображении зеленым цветом, если маска есть, красным — если ее нет. Выводим текст и прямоугольник на картинку.
Протестируем работу данной программы. Загрузим новую картинку и передадим ее в нашу функцию, выводим результат на экран.
Модель показывает неплохие результаты и достаточно точно определяет наличие маски. Данный скрипт можно использовать для работы в реальном времени (немного его изменив), допустим, используя веб-камеру, обрабатывать каждый кадр.