Авторы: А.А. Суханов, Н.М. Ткачёв, О.И. Федяев
Источник:
Программная инженерия: методы и технологии разработки информационно-вычислительных систем
(ПИИВС-2022): Сборник материалов IV Международной научно-практической конференции, Донецк,
29–30 ноября 2022 года. Том 1. – Донецк: Донецкий национальный технический университет, 2022.
– С. 111-115.
Суханов А.А., Ткачёв Н.М., Федяев О.И. Визуальный контроль присутствия студентов в аудитории на основе глубокой нейронной сети. В статье рассмотрена задача автоматизации учёта присутствия студентов на занятии в аудитории. Cвёрточная нейронная сеть модели VGGFace формирует признаки лица человека. Идентификация личности происходит по сходству признаков лиц. Программная версия системы реализована с использованием библиотек Keras и OpenCV. Ключевые слова: распознавание лиц человека, глубокая нейронная сеть, видеоколнтроль.
Несмотря на достигнутые в последние годы успехи в реализации компьютерного зрения, по-прежнему есть ряд нерешённых проблем в этой области. Основные трудности компьютерного распознавания лиц, которые необходимо преодолеть, состоят в том, чтобы распознавать человека по изображению лица независимо от изменения ракурса и условий освещённости при съёмке [2]. Кроме того, с каждым годом технологии CV стали находить всё больше применений в различных отраслях индустрии и повседневной жизни.
В настоящее время большие перспективы в решении данных проблем связывают с применением глубоких нейронных сетей. К этому классу относится многослойная свёрточная нейронная сеть (Convolutional Neural Network) [1,6].
На данный момент свёрточная нейронная сеть и её модификации считаются лучшими по точности и скорости распознавания объектов на изображении. Более того, распознавание лиц из видеопотока с камеры показывает, что нейронные сети с такой архитектурой способны работать в режиме реального времени даже на устройствах с ограниченными ресурсами. Важным фактором в распространении нейросетей стали возможности аппаратного ускорения нейровычислений при помощи таких библиотек, как Nvidia CUDA и OpenCL.
В последнее время известными фирмами предложены мощные библиотеки, в которых реализованы различные модели глубоких нейронных сетей, позволяющие решать сложные задачи распознавания. Поэтому целью данной работы является оценка возможности реализации нейросетевого распознавания лиц на базе инструментальных средств библиотеки Keras и OpenCV [3,4] и создание системы оперативного визуального контроля присутствия студентов на учебных занятиях.
Задача обнаружения лица на изображении является «первым шагом», т.е. предобработкой в процессе решения поставленной задачи [5]. Однако и сама информация о присутствии и, возможно, количестве лиц на изображении или в видеопотоке может быть полезна для таких приложений, как охранные системы и содержательная индексация базы данных изображений или видеофрагментов.
Блок обнаружения лиц должен принимать изображения с веб-камеры, выделяет и локализует на них лица (см.рис.1). Эту функцию выполняет алгоритм детектирования лиц на принятом изображении. В результате формируется изображение локализованного лица и после нормализации подаётся на следующий блок системы. В работе локализация лиц выполняется методом Виола-Джонса. К достоинствам данного метода можно отнести высокую степень правильной локализации лица, малое число ложных срабатываний, высокую скорость работы. Он в меньшей степени чувствителен к освещённости. Точность выделения лиц на снимке по алгоритму Виола-Джонса в идеальных условиях достигает 90-95%, что вполне приемлемо для решения практических задач. Все изображения выделенных лиц нормируются к стандартному размеру 224×224 пикселей, каждый из которых представлен в виде трёх составляющих в формате RGB.
Далее изображение лица передаётся в блок формирования вектора признаков, который реализует распознавательную функцию f: X→Y, где X - множество входных изображений лиц; Y - множество векторов признаков для лиц из X. Таким образом, нейросетевая функция f каждому выделенному лицу x∈X ставит в соответствие вектор признаков y∈Y (y=f(x)), которыми характеризуется данное лицо.
Для выработки признаков лица применялась свёрточная нейронная сеть, которая предварительно была обучена её создателями на примерах фотографий 2622-х человек (по 1000 фотографий на человека) [1,3]. Сеть настроена на классификацию распознаваемого лица, используя в качестве классов лица из обучающего множества. Поэтому результатом работы сети является 2622-мерный вектор, каждый элемент которого представляет собой вероятность сходства лица с одним из обучающего множества. Считается, что два изображения лица относятся к одному человеку, если они в одинаковой мере похожи на каждое лицо из обучающего множества. Для этого вектора признаков этих изображений в пространстве лиц из обучающего множества должны образовывать между собой достаточно острый угол.
Рисунок 1 - Основные процессы компьютерного распознавания лиц человека
При настройке системы необходимо предварительно сформировать базу данных лиц для всех распознаваемых людей, представленных конечным множеством соответствующих фамилий L. С этой целью для ∀x с помощью нейросетевой распознавательной функции f определяется множество правильных пар
где X - множество подготовленных фотографий распознаваемых лиц, т.е. эталоны изображений распознаваемых лиц; y – вектор признаков изображения лица x∈X; l - фамилия человека, фотография которого изображена на снимке x. Всё множество пар (y,l) заносится в базу данных векторов признаков лиц.
В штатном режиме работы системы, т.е. при распознавании, в блоке сравнения вектор признаков распознаваемого лица, полученный с выхода свёрточной нейронной сети, сравнивается со всеми векторами базы данных. Процедура сравнения основывается на методе вычисления косинусного сходства вектора распознаваемого лица с каждым вектором-эталоном из базы данных по следующей формуле
где Y и Y – вектора признаков соответственно распознаваемого лица и лица-эталона из базы данных; n = 2622.
Распознаваемое лицо считается соответствующим эталону, если полученный коэффициент сходства выше определённого значения (в работе использовалось значение 0,7).
Свёрточная нейронная сеть имеет многослойную архитектуру и состоит из свёрточных слоёв (convolution layers) и субдискретизирующих слоёв (subsampling layers или pooling layers, слоёв подвыборки), которые чередуются друг с другом [6].
В каждом слое имеется набор из нескольких плоскостей признаков. Причём нейроны одной плоскости имеют одинаковые веса, ведущие к соответствующим локальным участкам предыдущего слоя. Изображение предыдущего слоя как бы сканируется небольшим окном, т.е. пропускается сквозь набор весов (ядро свёртки), и результат сканирования отображается на соответствующем нейроне текущего слоя. Ядро свёртки интерпретируют как графическое кодирование какого-либо признака, например, наличие горизонтальной или вертикальной линии. Таким образом, набор плоскостей представляет собой карты признаков (feature map), что позволяет каждой плоскости находит «свои» участки изображения в любом месте предыдущего слоя.
Операция подвыборки (объединения), выполняет уменьшение размерности сформированных карт признаков. В данной архитектуре сети считается, что информация о факте наличия искомого признака важнее точного знания его координат, поэтому из нескольких соседних нейронов карты признаков выбирается максимальный и принимается за один нейрон уплотнённой карты признаков меньшей размерности. За счёт данной операции, помимо ускорения дальнейших вычислений, сеть становится более инвариантной к масштабу входного изображения.
Рисунок 2 – Архитектура свёрточной нейронной сети модели VGGFace
Чередование слоёв позволяет из предыдущих «карт признаков» составлять следующие «карты признаков», содержащие более общие характеристики, меньше зависящие от искажений изображения. На каждом следующем слое карта уменьшается в размере, но увеличивается их количество. На практике это означает способность распознавания сложных иерархий признаков. Обычно после прохождения нескольких слоёв карта признаков вырождается в вектор или даже скаляр, но таких карт признаков становится сотни. На выходе свёрточных слоёв сети дополнительно устанавливается многослойный персептрон. Обучается сеть стандартным методом обратного распространения ошибки.
В 2014 году была продемонстрирована модель глубокой свёрточной сети VGG-16, которая достигла хороших результатов в точности распознавания изображений. Эта модель показала, что точность работы глубокой сети значительно вырастает при увеличении количества слоёв до 16-19 по сравнению со старыми моделями, использовавшими до 10 слоёв [3].
В системе видеоконтроля студентов в качестве модели свёрточной нейронной сети использовалась нейросеть VGGFace. Эта модель разработана и обучена разработчиками Visual Geometry Group Оксфордского университета. Сеть VGGFace принимает на входе RGB изображение лица размером 224×224 (фрагмент изображения, вырезанный по координатам, полученным методом Виолы-Джонса, расширяется или сжимается до этого размера). Далее изображения проходят через стек сверточных слоев, в которых используются фильтры с очень маленьким рецептивным полем размера 3×3. Шаг фильтра при сканировании свёрточного слоя составляет 1 пиксель. Пространственное дополнение (padding) входа свёрточного слоя выбрано с учётом сохранности пространственного разрешения после операции свертки, т. е. дополнение равно 1 для 3×3 свёрточных слоев. Пространственный пулинг осуществляется при помощи пяти max-pooling слоев, которые следуют за последним в группе свёрточным слоем. Операция max-pooling выполняется на окне размера 2×2 пикселей с шагом 2. Все нейроны скрытых слоёв имеют функцию активации ReLU. После стека свёрточных слоёв идут три полносвязных слоя: первые два имеют по 4096 каналов, третий — 2622 каналов (по числу распознаваемых классов). Последним в архитектуре расположен soft-max слой.
Сеть предварительно обучена на множестве из 2,6 миллионов фотографий (2622 человека, 1000 фотографий каждого). Координаты каждого измерения вектора представляют собой вероятность того, что исходное лицо принадлежит одному из людей из обучающего множества. Несмотря на то, что сеть не обучается на базе данных, с которой она используется, столь большое количество признаков позволяет каждому лицу создать уникальный отпечаток. При этом предполагалось, что лица, в равной мере схожие с соответствующими лицами из обучающего множества, также схожи между собой, потому о схожести двух образов лиц можно судить путём сравнения их векторов признаков. Этот принцип называется «Transfer learning».
Поскольку данная сеть уже предварительно обучена, весовые коэффициенты предварительно загружаются из файла. На выходе сеть формирует 2622-мерный вектор признаков лица.
При создании прототипа системы видеоконтроля были использованы язык программирования Python и библиотеки OpenCV, Keras. Библиотека Keras максимально упрощает моделирование нейронных сетей, автоматизируя расчёт размеров, данных и способов связи между слоями.
Задача автоматического учёта присутствия студентов на учебных занятиях включает следующие подзадачи:
Во время работы системы могут возникнуть различные проблемы, которые могут препятствовать точности распознавания: угол поворота головы студента был недостаточно прямым по отношению к камере, слабое освещение, студент прошёл мимо камеры очень быстро, слишком большое количество лиц на изображении, из-за чего некоторые кадры не были захвачены и т.д. Преподаватель может допустить ошибку при использовании системы, например, включив режим регистрации опозданий слишком рано. Поэтому в системе предусмотрен режим ручного редактирования электронного журнала.
На рисунке 3 представлена форма подсистемы управления студентами, с помощью которой можно осуществлять:
Рисунок 3 – Главное окно системы регистрации студентов в аудитории
Преподаватель может визуально наблюдать и управлять информацией о студентах с помощью главного окна системы видеорегистрации. В левой части окна высвечивается таблица со списком студентов группы, в которой преподаватель проводит занятие. В таблице во время входа студентов в аудиторию фиксируется время прибытия и его состояние (не отмечен, прибыл, опоздал, отсутствует). Для удобства видеоконтроля цвет строки студента меняется в зависимости от его состояния. На данном рисунке показан факт регистрации студента в таблице текущего занятия.
В окне справа находятся элемент выбора дисциплины, кнопки остановить/продолжить распознавание, перехода в режим опоздания, сброса занятия и его завершения. По умолчанию все студенты в списке имеют статус «Не отмечен» и при распознавании обозначаются как «Присутствует». При переходе в режим опоздания (кнопка «Опоздание») статус всех неотмеченных студентов изменяется на «Отсутствует», а те, кто будет распознан в этом режиме, помечаются статусом «Опоздание». В случае отката режима опоздания все отсутствующие студенты вновь становятся неотмеченными, а опоздавшие – присутствующими.
Кнопка «Завершить» прекращает визуальную регистрацию студентов и записывает данные из таблицы текущего занятия в общий журнал группы (потока).
Таким образом, цифровой журнал представляет собой реляционную таблицу, содержащую следующие данные: студент, дата проведения занятия, предмет, группа, отметка о присутствии. В системе предусмотрено визуализация журнала в двух формах: по определённому предмету в определённой группе, по конкретному студенту.
В статье предложен подход к решению задачи распознавания лица человека на основе свёрточной нейронной сети. Локализация лиц на вводимом изображении выполнена методом Виола-Джонса. Cвёрточная нейронная сеть формирует признаки лица человека. Идентификация личности происходит вычислением косинусного коэффициента сходства векторов признаков лиц. Процесс распознавания реализован при отсутствии режима реального времени.
Разработанная версия системы, использующая ресурсы библиотек Keras и OpenCV и может применяться для оперативного учёта присутствия студентов на занятиях по изображениям лиц из видеопотока.