Приложение машинного обучения для обнаружения лиц в маске с помощью OpenCV, Keras/Tensorflow.

COVID-19 быстро распространяется по всему миру. Ношение маски может уменьшить его распространение, позволяя избежать комплаентности вируса.

Структура:

Компьютерное зрение можно использовать для разработки модели для определения в режиме реального времени, носит ли лицо маску или нет. Требуется множество методов, чтобы построить модель, способную выполнить такую ​​​​специфическую задачу. В частности, в дополнение к базовой теории моделей глубокого обучения и машинного обучения используется несколько важных методов:

  1. Ориентиры по лицам: найти набор данных, содержащий лица в масках 😷, непросто. Существует практичное, быстрое и эффективное решение — Ориентиры на лице. Facial Landmarks позволяет обнаруживать определенные области на лице, так называемые области интереса (ROI), такие как глаза, нос, рот и т. д. В частности, в этом проекте, начиная с набора данных, содержащего людей лица, получен новый набор данных, содержащий лица людей в масках 🎭. Прежде всего, Facial Landmarks используется для выделения 👃 и 👄 на изображении, а затем в эту позицию добавляется изображение-маска. Таким образом создается искусственный, но реально применимый набор данных.
  2. Точная настройка/перенос обучения: для решения конкретной задачи архитектура базовой модели, индивидуализация с архитектурой MobileNet V2 (перенос обучения) те, будет тонкая настройка. Точная настройка заключается в добавлении определенных слоев к архитектуре базовой модели и обучении только этих добавленных слоев с использованием весов предварительно обученной модели в качестве начальных весов.
  3. Агументация данных: на этапе обучения к изображениям будет добавляться шум, чтобы улучшить обобщение. Этот метод известен как увеличение данных, при котором изображения вращаются, сдвигаются или транслируются "на лету" на этапе обучения.

Начнем:

После создания набора данных с человеческими лицами в маске первым шагом будет обучение нашей модели.

Как уже было сказано, используются методы трансферного обучения и тонкой настройки. Архитектура базовой модели — это MobileNet V2 с весами, обученными набору данных ImageNet. Архитектура MobileNet V2 позволяет использовать модель даже во встроенных системах, таких как микропроцессоры и/или смартфон. Это может снизить стоимость инфраструктуры, используемой для службы.

Этап тонкой настройки состоит из трех шагов:

  1. Загрузите MobileNet V2 с предварительно обученными весами ImageNet. Это будет наша базовая модель.
  2. Создайте новую полносвязную нейронную сеть и добавьте ее к заголовку базовой модели (выходной слой).
  3. Заморозьте слои базовой сети. Вес слоев базовой сети не обновляется на новом этапе обучения.

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

Модель обучается с помощью оптимизатора Адама, чтобы использовать его функцию графика затухания скорости обучения, в то время как бинарная функция кросс-энтропии используется в качестве функции потерь, поскольку задача заключается в классификации двух возможных классов: маска, а не -маска. Наконец, Data Augmentation используется через класс Keras ImageDataGenerator для добавления шума к исходному набору данных и, следовательно, для повышения надежности модели. В частности, на этапе обучения используются пакеты мутированных изображений. Это достигается путем добавления объекта ImageDataGenerator в метод подгонки и использования его метода потока.

Хорошо, теперь давайте посмотрим, как наша модель обучается, взглянув на некоторые показатели, такие как потери и точность. Результаты довольно хорошие, показывая, как модель достигла значений точности, близких к 100%, без каких-либо сигналов о переоснащении или недообучении.

Обнаружение 😷 в режиме реального времени с помощью нашего детектора масок и OpenCV: