Приложение машинного обучения для обнаружения лиц в маске с помощью OpenCV, Keras/Tensorflow.
COVID-19 быстро распространяется по всему миру. Ношение маски может уменьшить его распространение, позволяя избежать комплаентности вируса.
Структура:
Компьютерное зрение можно использовать для разработки модели для определения в режиме реального времени, носит ли лицо маску или нет. Требуется множество методов, чтобы построить модель, способную выполнить такую специфическую задачу. В частности, в дополнение к базовой теории моделей глубокого обучения и машинного обучения используется несколько важных методов:
- Ориентиры по лицам: найти набор данных, содержащий лица в масках 😷, непросто. Существует практичное, быстрое и эффективное решение — Ориентиры на лице. Facial Landmarks позволяет обнаруживать определенные области на лице, так называемые области интереса (ROI), такие как глаза, нос, рот и т. д. В частности, в этом проекте, начиная с набора данных, содержащего людей лица, получен новый набор данных, содержащий лица людей в масках 🎭. Прежде всего, Facial Landmarks используется для выделения 👃 и 👄 на изображении, а затем в эту позицию добавляется изображение-маска. Таким образом создается искусственный, но реально применимый набор данных.
- Точная настройка/перенос обучения: для решения конкретной задачи архитектура базовой модели, индивидуализация с архитектурой MobileNet V2 (перенос обучения) те, будет тонкая настройка. Точная настройка заключается в добавлении определенных слоев к архитектуре базовой модели и обучении только этих добавленных слоев с использованием весов предварительно обученной модели в качестве начальных весов.
- Агументация данных: на этапе обучения к изображениям будет добавляться шум, чтобы улучшить обобщение. Этот метод известен как увеличение данных, при котором изображения вращаются, сдвигаются или транслируются "на лету" на этапе обучения.
Начнем:
После создания набора данных с человеческими лицами в маске первым шагом будет обучение нашей модели.
Как уже было сказано, используются методы трансферного обучения и тонкой настройки. Архитектура базовой модели — это MobileNet V2 с весами, обученными набору данных ImageNet. Архитектура MobileNet V2 позволяет использовать модель даже во встроенных системах, таких как микропроцессоры и/или смартфон. Это может снизить стоимость инфраструктуры, используемой для службы.
Этап тонкой настройки состоит из трех шагов:
- Загрузите MobileNet V2 с предварительно обученными весами ImageNet. Это будет наша базовая модель.
- Создайте новую полносвязную нейронную сеть и добавьте ее к заголовку базовой модели (выходной слой).
- Заморозьте слои базовой сети. Вес слоев базовой сети не обновляется на новом этапе обучения.
Техника тонкой настройки позволяет сэкономить много времени, при этом обучая новую мощную модель с большими возможностями, чем у базовой модели. В данном конкретном случае новая возможность заключается в обнаружении маски на человеческом лице. Благодаря методике тонкой настройки наша новая модель потратит время только на обучение новой задаче: «обнаружить маску», не обучаясь заново распознавать человека на изображении, так как эта задача хорошо решается выбранной базой модель.
Модель обучается с помощью оптимизатора Адама, чтобы использовать его функцию графика затухания скорости обучения, в то время как бинарная функция кросс-энтропии используется в качестве функции потерь, поскольку задача заключается в классификации двух возможных классов: маска, а не -маска. Наконец, Data Augmentation используется через класс Keras ImageDataGenerator для добавления шума к исходному набору данных и, следовательно, для повышения надежности модели. В частности, на этапе обучения используются пакеты мутированных изображений. Это достигается путем добавления объекта ImageDataGenerator в метод подгонки и использования его метода потока.
Хорошо, теперь давайте посмотрим, как наша модель обучается, взглянув на некоторые показатели, такие как потери и точность. Результаты довольно хорошие, показывая, как модель достигла значений точности, близких к 100%, без каких-либо сигналов о переоснащении или недообучении.