Сетевое издание
Международный студенческий научный вестник
ISSN 2409-529X

APPLICATION OF OPENCV LIBRARY FOR FACE RECOGNITION PROBLEM

Mikhalin D.A. 1 Belov Y.S. 1
1 Kaluga Branch of Bauman Moscow State Technical University, Russia (National research university of technology)
The field of computer vision in information technology has always been in demand and relevant. One of the tasks within this area is face recognition. There is also an OpenCV library that allows you to solve this problem, so it was decided in this article to consider the use of the OpenCV library for the problem of face recognition. OpenCV is an open source library that contains algorithms for solving computer vision, image processing, and general-purpose numerical algorithms. An overview of the structure of the library. It consists of 5 main components: CV, MLL, CXCORE, HighGUI, CvAux. Further, the process of applying the library functionality to the face recognition process is considered directly. It consists of such aspects as obtaining images from a camera, detecting faces on it, and then recognizing. Previously required to generate training data for the recognizer. For face detection, the Viola-Jones method is used, its advantages and disadvantages are considered, and a brief flowchart of the algorithm is given. For the recognition process, the Fisherface algorithm is used, which is a modification of the own-faces algorithm based on the principal component method. At the end, a conclusion is given about the possibility of using OpenCV for the problem of face recognition.
face recognition
opencv
viola-jones method
fisherface algorithm
principal component method

Введение. В связи с прогрессом, происходящим в сфере информационных технологий, а также ростом объема информации, которую люди хотят обрабатывать, средства автоматизации различных процессов входят в нашу жизнь постоянно. Задачи, решаемые областью компьютерного зрения, наиболее широко исследуются в настоящее время. Одной из подобластей является анализ изображений лица человека (Рисунок 1).

Рисунок 1 – Задачи, решаемые в рамках анализа изображений лиц человека

Применение технологий распознавания лиц в настоящее время очень актуально. Данные решения используются для идентификации людей в биометрических системах безопасности или как дополнительный сервис, например, в социальных сетях [4]. Такие системы могут повысить уровень безопасности какого-либо устройства или сервиса, а также предоставить пользователям удобные возможности по поиску запечатленных на фото людей. Чтобы обычному разработчику реализовать такую систему, понадобятся глубокие знания в алгоритмах распознавания лиц человека и умение правильно это применить в конкретном языке программирования. Чтобы облегчить жизнь разработчикам, занимающихся вопросами компьютерного зрения, была создана библиотека OpenCV, которая предоставляет аппарат для выполнения задач компьютерного зрения [5].

Библиотека OpenCV. OpenCV – это библиотека с открытым исходным исходом, которая содержит алгоритмы для решения задач компьютерного зрения, обработки изображений и численных алгоритмов общего назначения [1]. Она написана на языках C и C++ и может работать на компьютерах под управлением разных операционных систем. Главной ее целью является предоставление простого интерфейса, позволяющего разрабатывать приложения с использованием возможностей компьютерного зрения. Библиотека OpenCV содержит множество функций из разных областей компьютерного зрения [6].

Структура библиотеки. OpenCV структурирована по пяти основным компонентам (Рисунок 2). Первый компонент содержит основные алгоритмы для обработки изображений и алгоритмы машинного зрения высокого уровня. Следующий компонент представляет из себя библиотеку машинного обучения, которая может решать задачи статистической классификации и кластеризации. Есть также компонент, предоставляющий функции для взаимодействия с операционной системой, файловой системой и аппаратными средствами компьютера. Он позволяет отображать различные изображения, работать с камерами для записи видео или фото, сохранять информацию в файлы и другое. Еще один компонент просто хранит в себе основные структуры данных для работы с остальными модулями.

Рисунок 2 – Основные модули OpenCV

Пятый компонент CvAux здесь не показан, он содержит устаревшие области и экспериментальные алгоритмы, конкретной документации по нему нету.

Применение OpenCV. Для начала нужно получить изображение с камеры, это делается очень просто с помощью компонента HighGui [9]. Зациклив получение изображения, можно получить поток изображений – видео. Затем с помощью встроенных структур Mat и Image нужно представить изображение в сером цвете. Все это происходит в видеопотоке, то есть каждый кадр передается на обработку каскадному классификатору, который и будет обнаруживать лицо. Данный классификатор работает по методу Виолы-Джонса.

Метод Виолы-Джонса. Данный алгоритм позволяет обнаруживать различные объекты на изображениях в реальном времени [2,3]. Основной его задачей было обнаружение лиц. Несмотря на то, что обучение классификаторов происходит очень долго, поиск лица осуществляется быстро. Недостатком алгоритма является то, что он распознает черты лица только под небольшим углом до 30 градусов, если больше количество обнаружений резко падает [4].

Алгоритм строится на следующих основных принципах (Рисунок 3, 4):

· Интегральное представление подаваемых на вход алгоритма изображений;

· Применение признаков Хаара для поиска лица;

· Использование каскадов признаков для быстрого отбрасывания участков, где нет лица;

· Использование алгоритма бустинга для выбора подходящих признаков;

· Использование классификатора для анализа признаков на присутствие характеристик лица;

· Обработка изображения методом скользящего окна;

Рисунок 3 – Алгоритм метода Виолы-Джонса

Рисунок 4 – Обработка изображения скользящим окном

Результатом работы классификатора является набор прямоугольников, которые обозначают обнаруженные лица. Эти прямоугольники можно отобразить на изображении при помощи функции Draw. Далее нужно сформировать обучающее множество для дальнейшего обучения распознавателя. Множество должно представлять набор нормализованных изображений, приведенных к серому цвету, и соответствующих им идентификаторов.

Алгоритм Fisherface. Полученные данные нужно подать на вход распознавателю, который работает по алгоритму Fisherface, он является модификацией Eigenface и производит более точное распознавание при различном освещении и выражениях лица [7]. Метод собственных лиц (Eigenface) основан на методе главных компонент или по-другому. С его помощью можно уменьшить размерность данных без потери большого количества информации. Из выборки путем линейных преобразований формируются собственные векторы для каждого изображения, они называются собственными лицами. Данные векторы записываются в специальный файл с расширением yaml. Затем можно производить процесс идентификации, подав желаемое изображение на вход распознавателю. Он также вычисляет собственный вектор для поданного изображения и сравнивает его со значениями в файле, найдя наиболее подходящее, он возвращает соответствующий идентификатор [8]. По этому идентификатору можно понять, какому человеку принадлежит распознанное лицо.

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