Как работает метод распознавания лиц Виолы-Джонса?

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


person BlackShadow    schedule 27.04.2011    source источник
comment
вот ответ en.wikipedia.org/wiki/Viola-Jones_object_detection_framework спросите, что не так Чисто   -  person Andrey Sboev    schedule 27.04.2011


Ответы (2)


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

Each weak detector is an extremely simple binary classifier

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

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

введите здесь описание изображения

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

Базовый слабый классификатор основан на очень простом визуальном признаке (такие признаки часто называют «признаками, подобными Хаару»)
введите здесь описание изображения

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

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

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

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

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

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

Итак, у нас есть что-то вроде: введите здесь описание изображения

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

введите здесь описание изображения

Наконец, вот реализация C++, которая использует ViolaJones.h Ивана Кусалича

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

person edgarmtze    schedule 27.04.2011
comment
Можете ли вы объяснить мне немного лучше, что такое визуальный признак (значение квадратов на картинке) и что означает конечная формула, которая есть в вашем ответе? - person BlackShadow; 27.04.2011
comment
Хорошо, большое спасибо. У меня есть последний вопрос (со ссылкой на ответ JCooper): как может работать распознавание лиц с чертами лица, если у нас есть белый парень с голубыми или зелеными глазами (чтобы разница в освещении между носом и глазами не была значительный)? - person BlackShadow; 27.04.2011
comment
@BlackShadow Это все еще работает довольно хорошо, потому что глаза посажены назад в голову. Тени от нисходящего освещения могут активировать эту функцию. - person JCooper; 28.04.2011
comment
@cMinor +1 за такое хорошее объяснение, не могли бы вы просто сообщить мне, что такое интегральные изображения? - person ARG; 17.10.2015
comment
Интегральное изображение вычисляет значение для каждого пикселя (x, y), которое представляет собой сумму значений пикселей выше и слева от (x, y) включительно (это можно быстро вычислить за один проход по изображению). Роберт Фергус объясняет это здесь cs.nyu.edu/courses /fall12/CSCI-GA.2560-001/ - person edgarmtze; 18.10.2015

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

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

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

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

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

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

введите здесь описание изображения

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

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

введите здесь описание изображения

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

введите здесь описание изображения

Cascade Classifier:

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

введите здесь описание изображения

Больше подробностей:

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

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

Вот код python Python-реализация алгоритма распознавания лиц Пола Виолы и Майкла Дж. Джонса.

код Matlab здесь .

person Jayhello    schedule 15.06.2018