УДК 62:004
К.Д. Ромахов
ПРИМЕНЕНИЕ МЕТОДОВ КОМПЬЮТЕРНОГО ЗРЕНИЯ И НЕЙРОННОЙ СЕТИ ДЛЯ ОБНАРУЖЕНИЯ ЛИЦ НА ИЗОБРАЖЕНИИ
Обнаружение лиц - технология поиска человеческих лиц на фотографии или видеоизображениях с помощью алгоритмов компьютерного зрения. Система определяет границы и признаки лица и выделяет зону на изображении. Если на фотографии несколько лиц, то система выделит каждое лицо. Обнаружение лиц является первым этапом в построении систем распознавания лиц.
В данной статье рассмотрена программная реализация методов обнаружения лиц с использованием языка программирования Python 3.6 и библиотек с открытым исходным кодом OpenCV и Dlib.
В статье будут рассмотрены 3 алгоритма обнаружения лиц: каскады Хаара; гистограмма направленных градиентов; сверточные нейронные сети.
Ключевые слова: компьютерное зрение, машинное зрение, работа с изображениями, обнаружение лиц.
Каскады Хаара методом Виолы-Джонс
В данном разделе рассмотрены каскадные классификаторы с применением алгоритма Виолы-Джонса. Идея каскадирования заключается в многоступенчатом обучении цепочки классификаторов. Каскадные классификаторы обучаются на изображениях положительных и отрицательных образцов, и после обучения его можно применить на поиске лица на изображении.
Алгоритм был разработан в 2001 году Полом Виолой и Майклом Джонсом, и он основан на 4 основных концепциях:
•Выделение на изображении признаков Хаара;
•Интегральное представление изображений для определения суммарной яркости;
•Применение бустинга для обучения классификатора;
•Каскадный классификатор. [1]
На вход поступает изображение, содержащее одно или нескольких лиц. Алгоритм должен выделить области, на которых присутствует лицо.
Рис. 1. Входное изображение
© Ромахов К.Д., 2019.
Для поиска лиц используются признаки Хаара. В методе Виолы-Джонс признаками являются прямоугольники, называемые примитивами Хаара. Они представляют собой прямоугольники с белой область и черной областью, полученными разностью сумм пикселей двух смежных областей внутри прямоугольника.
Рис. 2. Признаки Хаара
Признак измеряет разницу в интенсивности между двумя признаками. Значение объекта просто вычисляется путем суммирования пикселей в темной области и вычитания пикселей в белой области. Для их вычисления используется понятие интегрального изображения, которое будет рассмотрено далее.
F = X - У,
где F - отобранный признак, X - сумма пикселей в темной области, Y - сумма пикселей в белой области.
Для расчета суммарной яркости произвольного прямоугольника на фотографии применяется интегральное представление изображений. Это матрица, размерность которой совпадает с размерностью исходного изображения. Элементы этой матрицы рассчитываются по формуле:
И(х,у) = ^¿(х,у), где И(х,у) - яркость пикселя исходного изображения.
Каждый элемент интегрального изображения И(х, у) содержит в себе сумму пикселей изображения в прямоугольнике от (0,0) до (х,у).
Расчет интегрального изображения можно производить по рекуррентной формуле:
Ь(х,у) = 1(х,у) - Ъ(х - 1,у - 1) + Ь(х,у- 1) + Ъ(х - 1,у), где Ь(х,у) - интегральное изображение.
Далее идет обучение классификатора методом машинного обучения Adaboost. Adaboost используется для выбора небольшого набора признаков и обучения классификатора. Слабый алгоритм обучения, на основе которого строится стимулирующая модель, предназначен для выбора функции одного прямоугольника, которая разделяет лучшие отрицательные и положительные примеры. Алгоритм Adaboost обучается на основе каскадов классификаторов, которые обучаются на основе предыдущих. [2]
Классификатор каскадов строится на основе дерева принятия решений: на каждом положении сканирующего окна выбирается наиболее подходящий порог для каждого признака. Классификатор отклоняет регионы, которые не являются образами. Данный вид каскадной модели хорошо подходит для обработки изображений, на которых общее количество детектируемых образов мало. В итоге алгоритм обнаруживает лицо на изображении и выделяет область обнаружения.
Рис. 3. Процесс обучения классификатора каскадов
В итоге на выходе получаем изображение с обнаруженными лицами. Важно отметить, что алгоритм Виолы-Джонс не позволяет обнаружить лицо в случае наклона лица хотя бы на 45 градусов. Здесь мы видим, что алгоритм неверно определил лица у двух людей на фотографии.
Рис. 4. Изображение с выделенными лицами методом Виолы-Джонса
Гистограмма направленных градиентов (HOG)
Идея метода обнаружения лица HOG-дескриптором заключается в преобразовании изображения в векторное представление и последующей классификации изображения алгоритмом классификации машинного обучения. Метод разработан в 2005 году.
Основные этапы в алгоритме:
1. Нормализация данных.
2. Вычисление градиента. Используется фильтр для вычисления градиента с использованием определенной маски.
3.Группировка направлений. На следующем шаге вычисляются гистограммы ячеек. Каждый пиксел в ячейке участвует во взвешенном голосовании для каналов гистограммы направлений, основанном на значении градиентов.
4.Блоки дескрипторов. Изображение делится на блоки размером 16 на 16, в каждом блоке рассчитывается единый градиент.
5.Нормализация блоков. [3]
Для эффективного поиска на изображении человеческого лица необходимо нормализовать изображение, которое поступило на вход. Все изображения должны быть одинакового размера. В программной реализации изображения приводились к формату 100x200 пикселей.
Для вычисления градиентов используются вертикальный и горизонтальный фильтр, состоящие из 3-х ячеек. Скользящие фильтры формата:
-1
-1 0 1 и 0 1
Фильтры представляют собой матрицу и транспонированную матрицу, которые проходят по изображению и преобразовывают его.
Рис. 5. Градиенты
Для группировки направлений изображение делится на 64 блока.
Чтобы оценить направление градиента внутри области, строится гистограмма среди 64 значений направлений градиента и их величины внутри каждой области. Категории гистограммы соответствуют углам градиента от 0 до 180 градусов. Всего 9 категорий: 0 °, 20 °, 40 160 °.
Рис. 6. Гистограмма с полученными значениями
Чтобы нормализовать изображение и сделать его инвариантным, например, к освещению, применятся нормализация. Она достигается путем деления каждого значения гистограммы на L2-норму:
V
Г = , ,
>22 + е2
где V - значение гистограммы, у2 - норма, е - малая константа. Алгоритм НОв обнаружил все 4 лица в отличие от каскадов Хаара.
О 100 200 300 400 500 600
Рис. 7. Изображение с выделенными лицами HOG алгоритмом
Сверточная нейронная сеть для обнаружения лица
Последний метод обнаружения лица на изображении - это сверточная нейронная сеть. Суть метода заключается в последовательном выполнении операции свертки посредством "движения" матрицы весов по изображению. После каждого сдвиг матрицы формируются активационный сигнал для следующего слоя. [4]
Сверточная нейронная сеть состоит из входного изображения, скрытых сверточных слоев, полученных путем прохождения матрицы весов по изображению и выходного значения. В случае задачи обнаружения лиц выходное значение будет содержать либо 0, либо 1.
Input Convl Conv2 Conv3 Conv4 Conv5 FC6 FC7 FC8
Рис. 8. Схема сверточной нейронной сети
Таким образом, в статье были рассмотрены основные алгоритмы обнаружения лиц на изображении. Наиболее эффективными и устойчивыми методами оказались гистограмма направленных градиентов и сверточная нейронная сеть.
Библиографический список
1.Viola P., Jones M.J. Rapid object detection using a boosted cascade of simple features // IEEE Conf. on Computer Vision and Pattern
2.Freund Y., Schapire R. A Short Introduction to Boosting // Journal of Japanese Society for Artificial Intelligence. — 1999. — Vol. 14, No 5. — Pp. 771-780.
3.Гистограмма направленных градиентов // Wikipedia [Электронныйресурс]. - URL: http://ra.wikipedia.org/wiki/Гистограмма_направленных_градиентов(дата обращения: 19.10.2019).
4.Сверточная нейронная сеть // Wikipedia [Электронныйресурс]. - URL: http://ru.wikipedia.org/wiki/Свёрточ-ная_нейронная_сеть(дата обращения: 19.10.2019).
РОМАХОВ КИРИЛЛ ДЕНИСОВИЧ - магистрант, Балтийский федеральный университет им. Иммануила Канта, Россия.