Распознавание лица объекта с помощью библиотеки OpenCV в реальном времени
Секция: Технические науки
XXXVIII Студенческая международная научно-практическая конференция «Технические и математические науки. Студенческий научный форум»
Распознавание лица объекта с помощью библиотеки OpenCV в реальном времени
REAL-TIME OBJECTS FACE DETECTION USING OPENCV LIBRARY
Mirshodjon Makhmudov
Master, Tashkent University of Information Technologies named after Muhammad Al-Khwarizmi, Republic of Uzbekistan, Tashkent
Mukhammadjon Musaev
Doctor of technical sciences, professor, Tashkent University of Information Technologies named after Muhammad Al-Khwarizmi, Republic of Uzbekistan, Tashkent
Аннотация. В данной работе приведены результаты разработки и тестирования программы для распознавания лица человека с использованием библиотек алгоритмов компьютерного зрения с открытым кодом OpenCV, dlib и face_recognition с привязкой к языку программирования Python v.3.6 применительно к операционной системе Mac.
Abstract. This paper presents the results of the development and testing of a program for objects face detection using the libraries of open source computer vision algorithms OpenCV, dlib and face_recognition with reference to the Python v.3.6 programming language for the Mac operating system.
Ключевые слова: распознавание лица; OpenCV
Keywords: face detection; OpenCV
При современном уровне развития информационных технологий и их внедрения в различные сферы нашей жизни (т.к. маркетинг, видеонаблюдение, медицина, автомобили) актуальным становится разработка новых систем распознавания изображений людей. Среди них биометрические системы идентификации человека, и, в частности, распознавание его по изображению лица, являются самыми простыми, не требующим специального дорогостоящего оборудования и физического контакта человека с устройствами. Основными проблемами в распознавании лица человека являются изменения ракурса, влияние освещённости при съёмке, изменения, связанные с возрастом, причёской и т.д. Для полного автоматического применения таких анализаторов выборка должна быть достаточно большой и охватывать все возможные ситуации изменения изображения лица человека [1, 2].
Одним из перспективных направлений решения задачи распознавания лица человека являются нейросетевые методы, не требующие решения аналитических уравнений. Веса в нейронной сети не вычисляются, а подстраиваются различными локальными методами при обучении [3]. Использование нейронных сетей не требует никакого предварительного изучения характера исходных данных. Получаемые нефизические модели могут и не быть максимально точным соответствием реального процесса, но дают приемлемую его аппроксимацию. Кроме того, в нейронные сети характеризуются нечётким и распределённым хранением информации. А именно, нет отдельного нейрона, отвечающего за какое-либо понятие или признак, и его удаление не приведет к неправильной работе программы [4].
Среди практических реализаций нейросетевых методов распознавания лица, находящих применение в различных сферах, становятся библиотеки с открытым исходным кодом. В настоящее время активно развиваются библиотеки с открытым исходным кодом такие как Tensorflow, PyTorch, OpenCV, dlib, face_recognition и другие. Основным их достоинством является возможность не только использования исходных кодов, но и участия в разработке этих проектов. В данной работе для распознавания лица человека был разработан проект эффективной системы обнаружения объектов с использованием библиотеки алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом OpenCV, dlib и face_recognition с привязкой к языку программирования Python v.3.6 применительно к операционной системе Mac.
Объект исследования выбирался из заранее заданной базы данных изображений, созданной специально для выполнения исследования. Основным требованием к программе было распознать объекты из созданной базы независимо от возраста, профиля и ориентации лица, вариаций внешнего вида и выражений лиц, при различных условиях съемки (т.к. освещение, качество изображения и др.). Распознавание лиц осуществлялось с помощью пакетов библиотек OpenCV и face_recognition в виде конвейера, включая нахождение лица на изображении (face_locations), анализ его особенностей на основе вычисления 128-мерных вложенных граней (face_encodings), сравнение с заданными в программе лицами (compare_faces), количественной оценки лица (face_distance), обучение методом опорных векторов Support Vector Machines и распознавание лица на изображениях/видеопотоках. Преимуществом разработанного алгоритма и программы является возможность ее дальнейшего машинного обучения. Глубокое машинное обучение выполнялось в 2 этапа: обнаружение лица и его местоположения без идентификации; извлечение 128-мерных встроенных векторов-признаков для количественного определения лица на изображении (рис.1).
Рисунок 1. Этапы распознавания лиц с помощью OpenCV [5]
Входными данными для тестирования программы были выбраны как видео в реальном времени, так и изображения, получаемые с мобильного телефона. Результат тестирования программы по распознаванию изображения лиц с мобильного телефона представлен на рис. 2.
Рисунок 2. Результаты работы программы
Тестирование показало возможность точного определения лица человека независимо от возрастных изменений, профиля лица на фотографии в базе данных, степени открытости лица, возраста объекта. Результаты исследования могут найти практическое применение в таких сферах как образование, охранных системах организаций и для решения других задач, где необходимо с высокой точностью распознавать лица людей. Однако, сама исходная база данных изображений и работа с ней подлежит в дальнейшем корректировке с учетом практического приложения данной программы.