Магистрант Шиманский Н. Д.
Костанайский государственный университет им. А.Байтурсынова, Казахстан
Использование признаков Хаара для
распознавания лиц.
Признаки Хаара (Haar-Like features) [1] —
признаки цифрового изображения, используемые в распознавании образов. Своим
название они обязаны интуитивным сходством с вейвлетами Хаара. Признаки Хаара
использовались в первом детекторе лиц, работающем в реальном времени.
Исторически сложилось так, что
алгоритмы, работающие только с интенсивностью изображения (например значение
RGB в каждом пикселе), имеют большую вычислительную сложность. В работе
Папагеоргиу, была рассмотрена работа с множеством признаков, основанных на
вейвлетах Хаара. Виола и Джонс адаптировали идею использования вейвлетов Хаара
и разработали то, что было названо признаками Хаара. Признак Хаара состоит из
смежных прямоугольных областей, как
можно видеть на Рис. 1. Они
позиционируются на изображении, далее суммируются интенсивности пикселей в
областях, после чего вычисляется разность между суммами. Эта разность и будет
значением определенного признака, определенного размера, определенным образом
спозиционированного на изображении.

Рисунок 1. Признаки Хаара
Признаки представлены набором
прямоугольников. Для каждого прямоугольника задан вес, который вычисляется как
сумма значений яркости пикселей, закрываемых данным прямоугольником. Такое
представление обусловлено тем, что возможно быстро вычислять сумму яркостей для
прямоугольных областей, но не для фигур произвольной ориентации.
Для того, чтобы за константное время (4
обращения к памяти) получить сумму пикселей внутри прямоугольного региона
изображения, используется оптимизация, называемая интегральное преобразование
изображения. Интегральным оно называется по аналогии с математической операцией
интегрирования, вычисляющей сумму значений функции на отрезке. В данном случае
функцией является яркость пикселя Ix,y.
Интегральное изображение в точке с
координатами Ix,y
представляет собой сумму значений яркости в точках, вертикальная и
горизонтальная координаты которых меньше x и y. Пример интегрального
изображения приведен на Рис. 2
Для вычисления значения в конкретной
точке используется следующая формула:
Ix,y = Ix,y-1 +
Ix-1,y - Ix-1,y-1
Рисунок 2. Интегральное представление изображения
Сумма значений яркости пикселей внутри
прямоугольника ABCD можно вычислить по формуле C – B – D = A.
Алгоритм использует базу признаков (features) для обнаружения объектов. Базу возможно сгенерировать из всех возможных
комбинаций (Haar-Like features) путем отсеивания «слабых» классификаторов,
которые дают ошибку второго рода, то есть ошибочно не находят объект на
изображении. Один из способов получения базы с применением алгоритма AdaBoost описан в [1]. В данной статье
этап генерации базы не применяется, и реализуется только этап обнаружения
объекта с применением готового набора признаков, В качеств базы используется
каскад «haarcascade_frontalface_alt.xml» из проекта Open СV [6]
Каскад признаков состоит из нескольких стадий (stages). Каждая стадия включает в себя набор признаков (features), В представлении, использующемся в каскаде из проекта OpenCV, признаки разбиваются на одноцветные прямоугольники (reets), каждому из которых назначен положительный или отрицательный вес.
Во время выполнения алгоритма, "окно" размером Wh * Ww пикселей движется вдоль изображения по горизонтали и вертикали. Начальный
размер окна выбирается равным размеру окна, записанному в каскаде-классификаторе.
На каждом шаге размер окна увеличивается, Возможны два способа увеличения
размера окна. Первый заключается в вычислении масштабирующего коэффициента и
корректировке координат прямоугольников внутри признаков. Второй заключается в
масштабировании самого исходного изображения, В данной статье описан первый
способ, поскольку он вычислительно проще при программной реализации
масштабирования изображений. При этом, размер окна на каждой итерации
умножается на масштабирующий коэффициент ITER_ SCALE. Окно сдвигается по горизонтали на w_step_x пикселей, и на w_step_y пикселей по горизонтали. Данные переменные вычисляются следующим образом:
w_step_y = max(1,min(4, Wh/10))
w_step_x
= max(1,min(4, Ww/10))
Для окна высчитывается нормировочный коэффициент win_
norm = 1/ Wh * Ww.
Внутри окна считается сумма яркостей пикселей w_sum и сумма квадратов яркостей w_ssq пикселей с
использованием интегрального представления изображений. Считается
математическое ожидание яркости пикселя mean, дисперсия var и стандартное отклонение

Для оптимизации введена пороговая константа STDDEV_MIN, и если стандартное отклонение stddev меньше этого
значения, данное "окно" пропускается. Это сделано для того, чтобы
исключить области с низкой яркостью, где отсутствует гарантия нахождения объекта.
Дня
каждой стадии из каскада считается
накопленный коэффициент sum_ stage, и сравнивается с критическим значением, записанным в
каскаде, В том случае, если значение меньше критического, стадия считается
невыполненной, и для текущего окна обработка прерывается, В случае, если все
стадии отработали корректно, считается, что в текущем окне обнаружен объект
(лицо). При этом, введена проверка, что стандартное отклонение больше STDDEV_FACE, что позволяет
регулировать порог срабатывания.
Для
каждого признака из каскада считается
отнормированное значение sum _ feature * win_norm и сравнивается с отнормированным критическим значением,
записанным в каскаде feature—
> threshold * stddev. В случае, если значение меньше критического, к значению
стадии прибавляется значение из левого поддерева признака, в противном - из
правого. Значение sum_feature считается как сумма яркостей пикселей,
которые попадают в прямоугольную область внутри признака, умноженная па вес
области. Координаты области умножаются па win_ scale.
Ниже
приведены значения констант, используемых в данной реализации алгоритма
ITER SCALE 1.2
STDDEV MIX 10.0
STDDEV FACE 25.0
На этапе обнаружения в окно
установленного размера движется по изображению, и для каждой области
изображения, над которой проходит окно, рассчитывается признак Хаара. Наличие
или отсутствие предмета в окне определяется разницей между значением признака и
обучаемым порогом. Поскольку признаки Хаара мало подходят для обучения или
классификации (качество немного выше чем у случайной нормально распределенной
величины), для описания объекта с достаточной точностью необходимо большее
число признаков. Поэтому признаки Хаара организуют в каскадный классификатор.
Ключевой особенностью
признаков Хаара является наибольшая, по сравнению с остальными признаками,
скорость. При использовании интегрального представления изображения, признаки
Хаара могут вычисляться за постоянное время (примерно 60 процессорных
инструкций на признак из двух областей), что позволяет использовать
классификатор в режиме реального времени (например, отслеживание лиц на видео,
отслеживание движений рук, отслеживание движений автомобилей и т.д.)
Литература: