Как работает метод определения лица Виолы-Джонса? - PullRequest
21 голосов
/ 27 апреля 2011

Пожалуйста, объясните мне, в двух словах, как работает метод определения лица Виолы-Джонса.

Ответы [ 2 ]

78 голосов
/ 27 апреля 2011

Детектор Виолы-Джонса - сильный, двоичный классификатор , состоящий из нескольких слабых детекторов

Each weak detector is an extremely simple binary classifier

На этапе обучения, каскад слабых детекторовобучается так, чтобы получить желаемую частоту попаданий / промах (или точность / отзыв) с использованием Adaboost. Для обнаружения объектов исходное изображение разбивается на несколько прямоугольных участков, каждый из которых передается в каскад

Еслипрямоугольный участок изображения проходит через все каскадные стадии, затем он классифицируется как «положительный». Процесс повторяется в разных масштабах

enter image description here

На самом деле, при низкойУровень, основной компонент детектора объекта - это просто то, что нужно сказать, если определенная подобласть исходного изображения содержит историю интересующего объекта или нет.Это то, что делает двоичный классификатор.

Базовый, слабый классификатор основан на очень простой визуальной функции (такие функции часто называют «хаар-подобными функциями»)
enter image description here

Хаар-подобные объекты состоят из класса локальных объектов, которые рассчитываются путем вычитания суммы субрегиона объекта из суммы оставшейся области объекта .

enter image description here
Эти особенности характеризуются тем, что их легко рассчитать и с помощью интегрального изображения очень эффективно рассчитать.

Lienhart представил расширенный наборскрученной хаароподобной функции (см. изображение)

enter image description here
Это стандартная хаароподобная функция, которая была повернута на 45 градусов.Изначально Lienhart не использовал функцию Haar-подобной скрученной шахматной доски (x2y2), поскольку представляемые ими диагональные элементы могут быть просто представлены с использованием скрученных функций, однако очевидно, что витая версия этой функции также может быть реализована и использована,

Эти скрученные функции, подобные Хаару, также можно быстро и эффективно рассчитать с использованием интегрального изображения, повернутого на 45 градусов.Единственная проблема реализации заключается в том, что скрученные объекты должны быть округлены до целых значений, чтобы они были выровнены по границам пикселей.Этот процесс аналогичен округлению, используемому при масштабировании объекта типа Хаара для больших или меньших окон, однако одно отличие состоит в том, что для искривленного объекта под углом 45 градусов целое число пикселей, используемых для высоты и ширины объекта, означает, чтодиагональные координаты пикселя всегда будут на одном и том же диагональном наборе пикселей

enter image description here
Это означает, что количество доступных изогнутых объектов различного размера под углом 45 градусов значительно уменьшено по сравнению со стандартными вертикалями игоризонтально выровненные объекты.

Итак, у нас есть что-то вроде: enter image description here

Что касается формулы, быстрое вычисление объектов типа Хаара с использованием интегральных изображений выглядит следующим образом:

enter image description here

Наконец, - это реализация на C ++ , которая использует ViolaJones.h от Ivan Kusalic

, чтобы увидеть полный проект c ++ иди сюда

3 голосов
/ 15 июня 2018

Детектор Виолы-Джонса представляет собой сильный двоичный классификатор , состоящий из нескольких слабых детекторов. Каждый слабый детектор - это чрезвычайно простой двоичный классификатор

Обнаружение состоит из следующих частей:

Haar Filter: извлечение объектов из изображения для калибровки (функции действуют для кодирования специальных знаний в области)

Integral Image: позволяет очень быстро оценить функциональность

Cascade Classifier: каскадный классификатор состоит из нескольких этапов фильтров, для классификации изображения (скользящего окна изображения) используется лицо.

Ниже приведен обзор того, как распознать лицо на изображении.

enter image description here

Окно обнаружения смещается вокруг всей функции извлечения изображения (на haar filter, вычисленной на Integral Image, затем отправьте извлеченную функцию на Cascade Classifier для классификации, если это лицо). Скользящее окно сдвигается попиксельно. Каждый раз, когда окно сдвигается, область изображения внутри окна будет проходить через каскадный классификатор.

Haar Filter: Вы можете понять, что фильтр может извлекать такие функции, как eyes, bridge of the nose и т. Д.

enter image description here

Integral Image: позволяет очень быстро оценить функциональность

enter image description here

Cascade Classifier:

Каскадный классификатор состоит из нескольких ступеней фильтров, как показано на рисунке ниже. Каждый раз, когда скользящее окно сдвигается, новая область внутри скользящего окна будет поэтапно проходить через каскадный классификатор. Если входная область не может пройти порог стадии, каскадный классификатор немедленно отклонит область как грань. Если регион успешно пройдет все этапы, он будет классифицирован как кандидат в лицо, что может быть уточнено при дальнейшей обработке.

enter image description here

Для более подробной информации:

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

Если вы не можете понять это ясно, вы можете увидеть Обнаружение лица Виолы-Джонса или Реализация алгоритма обнаружения лица Виолы-Джонса или Исследование Альта-Джонса Детектор лица в реальном времени для более подробной информации.

Вот код Python Реализация алгоритма обнаружения лица Python Полом Виолой и Майклом Дж. Джонсом .

код Matlab здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...