РАЗРАБОТКА СИСТЕМЫ РАСПОЗНАВАНИЯ МАСКИ ПО ВИЗУАЛЬНЫМ ДАННЫМ
По статистическим данным с официального сайта Федеральной службы по надзору в сфере защиты прав потребителей и благополучия человека за последние пять лет выявлен рост инфекционных заболеваний. Они являются самыми частыми причинами обращения за медицинской помощью. Инфекционные заболевания могут быть вызваны различными патогенами: вирусами, бактериями, грибками и др.
Пути передачи данных патогенов похожи. Самым основным считается «от человека к человеку» при близком контакте. Также передача патогенов может произойти при контакте с биологическими жидкостями человека, например, при кашле и чихании. Так передаются не только известные нам ранее вирусные инфекции, например, ВИЧ, ОРВИ, но и новая коронавирусная инфекция [1]. Еще одним путем передачи является соприкосновение с зараженными поверхностями, где вирусы и бактерии живут в биологических средах.
Для защиты себя, своего здоровья и здоровья окружающих в моменты эпидемиологической опасности вносят постановление о ношении масок. Данная мера помогает защитить организм от заражения воздушным путем. Своевременное обнаружение маски на лице поможет защитить большое количество людей от возможного заражения. С данной задачей могут справить камеры видео наблюдения, которые расположены сейчас почти на каждом углу и на входах в помещения. И используя данные с камер видеонаблюдения мы можем уберечь большое количество народа.
Распознавание объектов — это отнесение исходных данных к определенному классу с помощью выделения существенных признаков, характеризующих эти данные, из общей массы данных.
Методов обнаружения маски на лице существует много и большинство из них представляют собой комбинацию других методов. Но все их можно разбить на две категории:
• методы на основе знаний, которые основываются на опыте человека;
• методы обнаружения по внешним признакам (методы при которых необходимо провести этап обучения системы, путем обработки тестовых изображений).
Методы, основанные на знаниях, используют некий набор правил (свойств и особенностей объекта), которым должен отвечать фрагмент кадра. Определить такой набор правил довольно легко. Все правила — это формализованные знания, которыми руководствуется человек, когда определяет необходимый объект.
Методы на основе знаний получили довольно широкое распространение и имеют неплохие показатели, однако они показывают хорошие результаты только на изображениях с хорошим расширением, без шумов и с несложным фоном.
Методы обнаружения по внешним признакам выявляют закономерности и свойства изображения, применяя методы математической статистики машинного обучения. Методы этой группы имеют меньше недостатков и поэтому стали чаще применятся в системах распознавания.
За счет такого большого объема работы методы обладают избыточностью и большой вычислительной сложностью. Чтобы уменьшить количество вычислений ускорить процесс распознавания, авторы применяют различные дополнительные методы для сокращения количества рассматриваемых фрагментов.
Сравнительная характеристика нескольких наиболее актуальных методов обнаружения рассмотрены в Приложении А. Одним из популярных алгоритмов является алгоритм Виолы-Джонса. Метод Виолы-Джонса назван в честь двух исследователей компьютерного зрения, предложивших этот метод в 2001 году, Пола Виолы и Майкла Джонса [2]. Несмотря на устаревший фреймворк, метод довольно мощен, и его особенностью является обработка видеопотока в режиме реального времени. Этот метод медленно обучается, но обнаруживает лица в режиме реального времени с впечатляющей скоростью.
Учитывая изображение (этот алгоритм работает на изображении в оттенках серого), алгоритм просматривает множество меньших подобластей и пытается найти лицо, ища конкретные черты в каждом подобласти. Он должен проверять множество различных положений и масштабов, потому что изображение может содержать множество граней различных размеров. Виола и Джонс использовали Хаар-подобные функции для обнаружения лиц в этом алгоритме.
Разработка системы распознавания соблюдения масочного режима по визуальным данным состоит из двух основных этапов. На первом этапе происходит обнаружение лиц в кадре, а на втором – непосредственно само распознавание средств индивидуальной защиты. Данные этапы используют общий метод для распознавания и обнаружения.
Основные принципы метода Виолы-Джонса:
• использование изображения/видеоряда в интегральном представлении;
• использование признаков Хаара, с помощью которых происходит поиск нужного объекта;
• использование каскадов признаков для быстрого отбрасывания окон, где не найдено лицо. 
Интегральное представление изображения – это матрица, которая совпадает по размерам с исходным изображением. Каждый ее элемент хранит сумму интенсивностей всех пикселей, находящихся левее и выше данного элемента [9]. Элементы матрицы рассчитываются по следующей формуле:
𝐿(𝑥, 𝑦) = ∑ ∑ 𝐼(𝑖, 𝑗), 𝑦 𝑗=0 𝑥 𝑖=0
где 𝐼 (𝑖,𝑗) – яркость текущего пиксела исходного изображения, (i, j) – координаты текущего пиксела.
Каждый элемент матрицы 𝐿 представляет собой сумму пикселей в прямоугольнике от (0,0) до 𝑥, 𝑦, т.е. значение каждого пикселя 𝑥, 𝑦 равно сумме значений всех пикселов левее и выше данного пикселя 𝑥, 𝑦. Расчет матрицы возможен по формуле:
𝐿(𝑥,𝑦) = 𝐼(𝑥,𝑦) – 𝐿(𝑥−1,𝑦−1) + 𝐿(𝑥,𝑦−1) + 𝐿(𝑥−1,𝑦)
По такой интегральной матрице можно быстро вычислить сумму пикселей произвольного прямоугольника и произвольной площади. Интегральное представление позволяет быстро рассчитывать суммарную яркость произвольного прямоугольника на данном изображении, причем какой бы прямоугольник не был, время расчета неизменно.
Через интегральное представление очень быстро считаются каскады из признаков Хаара, которые обычно упоминают как база для построения систем выделения сложных объектов, таких как лица, руки, или другие предметы. Каскад Хаара — это набор примитивов, для которых считается их свёртка с изображением. Используются самые простые примитивы, состоящих из прямоугольников и имеющих всего два уровня, +1 и -1. При этом каждый прямоугольник используется несколько раз разного размера [3].
Под свёрткой тут подразумевается:
F=X-Y
где X – сумма значений яркостей точек закрываемых светлой частью признака, а Y – сумма значений яркостей точек закрываемых темной частью признака.
Вычисление признаков Хаара выполняется следующим образом. По полутоновому изображению перемещается сканирующее окно, состоящее из смежных прямоугольников. В OpenCV уже есть несколько обученных каскадных моделей Хаара, которые называют дополнительные примитивы [4].
Рисунок 1 – Основные и дополнительные примитивы Хаара
Признаки Хаара в алгоритме Виолы-Джонса организуются в каскадный классификатор. Каскадная классификация заключается в постепенном увеличении количества применяемых примитивов, для увеличения скорости работы алгоритма.
Каскадная модель сильных классификаторов – это по сути то же дерево принятия решений, где каждый узел дерева построен таким образом, чтобы детектировать почти все интересующие образы и отклонять регионы, не являющиеся образами. Помимо этого, узлы дерева размещены таким образом, что чем ближе узел находится к корню дерева, тем из меньшего количества примитивов он состоит и тем самым требует меньшего времени на принятие решения [5].
Применение данного классификатора в методе Виолы-Джонса помогает:
• легко обучить классификатор, естественным образом избегая проблемы «бесконечной» обучающей выборки;
• обеспечить быстрое отсечение «пустых» регионов при детекции объектов, за счет чего достигается высокая производительность в среднем.
В результате этапы алгоритма обработки кадров разрабатываемой системы: получение изображения, перевод из цветного в полутоновое, поиск области лица методом Виолы-Джонса, поиск маски методом Виолы-Джонса, распознавание маски. Этапы работы системы представлены на рисунке 2.
Рисунок 2 – Этапы работы системы
Разработка системы велась на объектно-ориентированном языке программирования C# в среде разработки Microsoft Visual Studio 2017. В качестве основного выбран язык C#, так как он обладает нужными качествами для реализации, имеет встроенную поддержку обобщений, делегатов и событий, что облегчит реализацию [6]. Для разработки системы, также решено использовать в качестве одной из основных - библиотеку OpenCV [7]. Это библиотека алгоритмов с открытым исходным кодом для обработки изображений и видео в реальном времени с возможностью машинного обучения. Данная библиотека разработана на C/C++ и имеет обертку для .NET языков – EmguCV, которая и использована в работе. EmguCV содержит алгоритмы для обработки, реконструкции и очистки изображений, распознания образов, захвата видео, слежения за объектами, калибровки камер и др. Библиотека распространяется по лицензии BSD, а значит, может свободно использоваться в академических и коммерческих целях [8].
Для описания вариантов использования разрабатываемой системы необходимо воспользоваться языком графического описания UML. Диаграмма вариантов использования необходима для определения сценариев работы системы, выявления целей, которых помогает добиться система, а также определения области действия системы.
Также для наглядности рассмотрим функциональную модель процесса, представленная на рисунке 3. На диаграмме представлен пользователь, которому необходимо распознать есть ли на лице человека средство индивидуальной защиты. На входе у нас есть такие параметры, как: загрузка видеороликов и изображений и работа с видеопотоком в реальном времени. Приказ президента представлен, как управляющая информация. На выходе мы получаем видео с распознанной маской.
Рисунок 3 - Функциональная модель «Распознавание маски»
Принцип работы системы распознавания соблюдения масочного режима по визуальным данным заключается в том, что, когда человек приближается к веб-камере, код определяет, надел он маску или нет. При разработке интерфейса было реализовано одно главное окно, которое содержит в себе области вывода данных о распознавании масок. Интерфейс приложения содержит несколько областей: область вывода видеопотока с камеры или с файла, область вывода информации о ношении маски и область выбора загрузки информации. Общий вид главной формы приложения представлен на рисунке 4.
Рисунок 4 – Интерфейс системы
Рассмотрим подробнее различные области интерфейса разработанной системы. Область вывода видеопотока предназначена для отображения обработанных кадров. Помимо этого, данная область включает кнопки вызова диалогового окна открытия видеоролика и фото-изображения. В качестве источника видеопотока может использоваться подключенная к компьютеру веб-камера, либо видеофайл. Для выбора видеофайла-источника необходимо нажать кнопку Add Video. Для выбора фото-источника необходимо нажать кнопку Add photo. После выбора файла в появившемся диалоговом окне и нажатия кнопки ОК.
Область вывода информации предназначена для отображения данных о распознавании масок. Источником данных для отображения является распознанная маска. В данной области формы выводятся прямоугольная область текущего кадра, с соответствующей надписью. У людей без масок будет в рамке отображаться надпись: «Маски нет», а у людей в масках текст: «Маска есть».
Для решения задачи обнаружения лиц и распознавания масок выбран метод «Виолы-Джонса», основу которого составляют применение заранее обученных основных и дополнительных признаков Хаара, сканирующего окна и использование каскадной классификации. Описан инструментарий разработки программы; язык программирования, среда разработки и библиотеки.
Во время пандемии — это бюджетное решение может пригодиться небольшим магазинам. Небольшой одноплатный компьютер может распознать, надели вы маску или нет. Разработка также может помочь предприятиям и организациям эффективно противодействовать распространению вирусных инфекций в период пандемии так как, может своевременно сообщать о нарушителях мер безопасности администраторам или напрямую руководству компаний. 