Метод Виолы-Джонса (Viola-Jones) как основа для распознавания лиц

Метод был разработан и представлен в 2001 году Полом Виолой и Майклом Джонсом, он до сих пор является основополагающим для поиска объектов на изображении в реальном времени

Основные принципы

  • используются изображения в интегральном представлении, что позволяет вычислять быстро необходимые объекты;
  • используются признаки Хаара, с помощью которых происходит поиск нужного объекта (в данном контексте, лица и его черт);
  • используется бустинг (от англ. boost – улучшение, усиление) для выбора наиболее подходящих признаков для искомого объекта на данной части изображения;
  • все признаки поступают на вход классификатора, который даёт результат «верно» либо «ложь»;
  • используются каскады признаков для быстрого отбрасывания окон, где не найдено лицо.

Обучение классификаторов идет очень медленно, но результаты поиска лица очень быстры, именно поэтому был выбран данный метод распознавания лиц на изображении. Виола-Джонс является одним из лучших по соотношению показателей эффективность распознавания/скорость работы. Также этот детектор обладает крайне низкой вероятностью ложного обнаружения лица. Алгоритм даже хорошо работает и распознает черты лица под небольшим углом, примерно до 30 градусов. При угле наклона больше 30 градусов процент обнаружений резко падает. И это не позволяет в стандартной реализации детектировать повернутое лицо человека под произвольным углом, что в значительной мере затрудняет или делает невозможным использование алгоритма в современных производственных системах с учетом их растущих потребностей.
Требуется подробный разбор принципов, на которых основан алгоритм Виолы-Джонса. Данный метод в общем виде ищет лица и черты лица по общему принципу сканирующего окна.

Принцип сканирующего окна

В общем виде, задача обнаружения лица и черт лица человека на цифровом изображении выглядит именно так:

  • имеется изображение, на котором есть искомые объекты. Оно представлено двумерной матрицей пикселей размером w*h, в которой каждый пиксель имеет значение:
    — от 0 до 255, если это черно-белое изображение;
    — от 0 до 2553, если это цветное изображение (компоненты R, G, B).
  • в результате своей работы, алгоритм должен определить лица и их черты и пометить их – поиск осуществляется в активной области изображения прямоугольными признаками, с помощью которых и описывается найденное лицо и его черты:
    rectanglei = {x,y,w,h,a}, (1.1)
    где x, y – координаты центра i-го прямоугольника, w – ширина, h – высота, a – угол наклона прямоугольника к вертикальной оси изображения.

Иными словами, применительно к рисункам и фотографиям используется подход на основе сканирующего окна (scanning window): сканируется изображение окном поиска (так называемое, окно сканирования), а затем применяется классификатор к каждому положению. Система обучения и выбора наиболее значимых признаков полностью автоматизирована и не требует вмешательства человека, поэтому данный подход работает быстро.
Задача поиска и нахождения лиц на изображении с помощью данного принципа часто бывает очередным шагом на пути к распознаванию характерных черт, к примеру, верификации человека по распознанному лицу или распознавания мимики лица.

Интегральное представление изображений

Для того, чтобы производить какие-либо действия с данными, используется интегральное представление изображений [3] в методе Виолы-Джонса. Такое представление используется часто и в других методах, к примеру, в вейвлет-преобразованиях, SURF и многих других разобранных алгоритмах. Интегральное представление позволяет быстро рассчитывать суммарную яркость произвольного прямоугольника на данном изображении, причем какой бы прямоугольник не был, время расчета неизменно.
Интегральное представление изображения – это матрица, совпадающая по размерам с исходным изображением. В каждом элементе ее хранится сумма интенсивностей всех пикселей, находящихся левее и выше данного элемента.

Элементы матрицы рассчитываются по следующей формуле:

где I(i,j) — яркость пикселя исходного изображения.
Каждый элемент матрицы L[x,y] представляет собой сумму пикселей в прямоугольнике от (0,0) до (x,y), т.е. значение каждого пикселя (x,y) равно сумме значений всех пикселов левее и выше данного пикселя (x,y). Расчет матрицы занимает линейное время, пропорциональное числу пикселей в изображении, поэтому интегральное изображение просчитывается за один проход.

Расчет матрицы возможен по формуле

L(x,y) = I(x,y) – L(x-1,y-1) + L(x,y-1) + L(x-1,y)

По такой интегральной матрице можно очень быстро вычислить сумму пикселей произвольного прямоугольника, произвольной площади.
Пусть в прямоугольнике ABCD есть интересующий нас объект D:

Из рисунка понятно, что сумму внутри прямоугольника можно выразить через суммы и разности смежных прямоугольников по следующей формуле:
S(ABCD) = L(A) + L(С) — L(B) — L(D)
Примерный просчет показан на рисунке ниже:

Признаки Хаара

Признак — отображение f: X => Df, где Df — множество допустимых значений признака. Если заданы признаки f1,…,fn, то вектор признаков x = (f1(x),…,fn(x)) называется признаковым описанием объекта x ∈ X. Признаковые описания допустимо отождествлять с самими объектами. При этом множество X = Df1* …* Dfn называют признаковым пространством [1].
Признаки делятся на следующие типы в зависимости от множества Df:

  • бинарный признак, Df = {0,1};
  • номинальный признак: Df — конечное множество;
  • порядковый признак: Df — конечное упорядоченное множество;
  • количественный признак: Df — множество действительных чисел.

В стандартном методе Виолы – Джонса используются прямоугольные признаки, изображенные на рисунке ниже, они называются примитивами Хаара:

В расширенном методе Виолы – Джонса, использующемся в библиотеке OpenCV используются дополнительные признаки:

Вычисляемым значением такого признака будет

F = X-Y
где X – сумма значений яркостей точек закрываемых светлой частью признака, а Y – сумма значений яркостей точек закрываемых темной частью признака. Для их вычисления используется понятие интегрального изображения, рассмотренное выше.
Признаки Хаара дают точечное значение перепада яркости по оси X и Y соответственно.

Сканирование окна

Алгоритм сканирования окна с признаками

  • есть исследуемое изображение, выбрано окно сканирования, выбраны используемые признаки;
  • далее окно сканирования начинает последовательно двигаться по изображению с шагом в 1 ячейку окна (допустим, размер самого окна есть 24*24 ячейки);
  • при сканировании изображения в каждом окне вычисляется приблизительно 200 000 вариантов расположения признаков, за счет изменения масштаба признаков и их положения в окне сканирования;
  • сканирование производится последовательно для различных масштабов;
  • масштабируется не само изображение, а сканирующее окно (изменяется размер ячейки);
  • все найденные признаки попадают к классификатору, который «выносит вердикт».

В процессе поиска вычислять все признаки на маломощных настольных ПК просто нереально. Следовательно, классификатор должен реагировать только на определенное, нужное подмножество всех признаков. Совершенно логично, что надо обучить классификатор нахождению лиц по данному определенному подмножеству. Это можно сделать, обучая вычислительную машину автоматически.

Процесс обучения машины

Дякую за увагу!

Copy of Метод Виолы-Джонса (Viola-Jones) как основа для распознавания лиц

By Sania Sutula

Copy of Метод Виолы-Джонса (Viola-Jones) как основа для распознавания лиц

  • 527