Поиск контрольных точек с использованием Python, OpenCV и DLib.
В данной статье мы напишем систему для расстановки контрольных точек на видеоизображении лица. Будем использовать библиотеки OpenCV и DLib.
Расстановка контрольных точек на изображении лица не является самой целью, это всего лишь инструмент, открывающий обширные возможности: с их помощью возможно отслеживать двигательные единицы, участвующие в формировании эмоций, направление взгляда, определять эмоциональное состояние человека, а также производить верификацию и идентификацию.
Системы, определяющие эмоциональное состояние, могут значительно повысить уровень безопасности. Данные системы могут определять лиц, потенциально настроенных на совершение противоправных действий, и информировать правоохранительные органы до совершений оных. Также они позволят ограничить доступ людей с отрицательной валентностью к объектам повышенной опасности, таким как атомная энергетика, оружие, авиационная и дорожная техника.
Определение направления взгляда упростит работу с электронными устройствами, а также поможет людям с ограниченными возможностями вести полноценный образ жизни.
Идентификация и верификация по видеоизображению позволяют упростить процесс доступа к различным устройствам и системам. На текущий момент эти технологии широко внедрены в нашу жизнь. В большинстве современных телефонов встроен сканер видеоизображения лица. С введением единой биометрической системы в банках возможно использовать биометрическое изображение лица вместо пин-кода, а система распознавания лиц широко внедряется в камеры видеонаблюдения в общественных местах и позволяет выявлять лиц, находящихся в розыске.
В рамках данной статьи будет написана программа, определяющая контрольные точки на видеоизображении лица. Данная статья по большей части рассчитана на людей, не имеющих обширного опыта в программировании. Рабочее окружение будет настраиваться с нуля.
Перед написанием кода программы проведем установку необходимых компонентов.
Для начала нужно установить Python. У автора установлена версия 3.7.4. Подробно о том, как установить Python.
Для упрощения жизни и ускорения разработки необходимо установить IDE, можно разрабатывать и в текстовом редакторе, но хорошая среда разработки значительно ускорит работу.
Поскольку автор является адептом компании JetBrains, рассмотрим установку PyCharm. Если вы являетесь студентом или активным контрибьютором, то возможно получить бесплатную студенческую лицензию. В остальных случаях можно воспользоваться бесплатной версией PyCharm Community Edition, в рамках данного проекта ее функционала будет достаточно.
Разобравшись с IDE, создаем новый проект. У компании JetBrains есть хороший туториал, там же описывается процесс запуска приложения.
В данном проекте будем использовать библиотеки OpenCV, Dlib и NumPy. Рассмотрим их подробнее:
- OpenCV (Open Source Computer Vision Library) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. В данном проекте применяется для работы с изображениями.
- Dlib — содержит алгоритмы машинного обучения и различные инструменты для работы с изображениями лиц. На dlib распространяется тип лицензии Boost, позволяющий использовать ее в коммерческих проектах, это способствовало ее широкому распространению. Многие библиотеки и фреймворки, заточенные под работу с изображениями лиц, используют dlib под капотом.
- NumPy — включает большой набор математических функций, включает инструменты для анализа данных, машинного обучения, обработки векторов и матриц. Многие библиотеки используют NumPy как один из основных элементов своей инфраструктуры. Подробнее про NumPy, можно прочитать тут.
Перейдем в терминал PyCharm и выполним установку необходимых библиотек в проект с помощью пакетного менеджера pip. На windows вместо pip необходимо выполнить команду pip3.
pip install dlib
pip install opencv-python
pip install numpy
Возможно, терминал выведет ошибку:
CMake must be installed to build the following extensions: dlib
Тогда будет необходимо выполнить установку cmake:
pip install cmake
Для локализации контрольных точек нам понадобится обученная модель. Можно обучить модель самостоятельно (процесс обучения модели длителен и заслуживает отдельной статьи) или воспользоваться готовой моделью. Скачать ее можно с официального сайта dlib, нас интересует shape_predictor_68_face_landmarks.dat, данная модель осуществляет расстановку 68 контрольных точек. Распределение точек по группам и их номера можно посмотреть в таблице. Пронумерованные точки расставлены на изображении в начале статьи.
Создадим директорию utils в корне проекта и поместим модель в нее.
После того как все приготовления выполнены, можно приступать к написанию кода. Создадим файл landmarkDetections.py и поместим в него код программы.
Процесс запуска программы описан в туториале от компании JetBrains.
После запуска программы откроется окно, и будет выполнена расстановка контрольных точек.
В дальнейших статьях мы рассмотрим данную тему подробнее, а также разберём различные примеры работы с контрольными точками: распознавание лиц, определение эмоций и направление взгляда.