Пожалуйста, объясните мне в нескольких словах, как работает метод распознавания лиц Виолы-Джонса.
Как работает метод распознавания лиц Виолы-Джонса?
Ответы (2)
Детектор Виолы-Джонса – это надежный бинарный классификатор, состоящий из нескольких слабых детекторов.
Each weak detector is an extremely simple binary classifier
На этапе обучения каскад слабых детекторов обучается таким образом, чтобы получить желаемую частоту попаданий/промахов (или точность/отзыв) с помощью Adaboost. Для обнаружения объектов исходное изображение разбивается на несколько прямоугольных участков, каждый из которых к каскаду
Если прямоугольный участок изображения проходит через все этапы каскада, то он классифицируется как «положительный». Процесс повторяется в разных масштабах.
На самом деле, на низком уровне базовый компонент детектора объектов — это просто что-то, что требуется, чтобы сказать, содержит ли определенная область исходного изображения объект, представляющий интерес, или нет. Это то, что делает бинарный классификатор.
Базовый слабый классификатор основан на очень простом визуальном признаке (такие признаки часто называют «признаками, подобными Хаару»)
Объекты, подобные Хаару, состоят из класса локальных объектов, которые рассчитываются путем вычитания суммы части области объекта из суммы оставшейся области объекта.
Эти функции характеризуются тем, что их легко вычислить и с помощью интегрального изображения, очень эффективного для расчета.
Линхарт представил расширенный набор скрученных функций, подобных Хаару (см. Изображение)
Это стандартная особенность Хаара, повернутая на 45 градусов. Линхарт изначально не использовал функцию Хаара, похожую на скрученную шахматную доску (x2y2), поскольку диагональные элементы, которые они представляют, могут быть просто представлены с использованием скрученных функций, однако ясно, что скрученная версия этой функции также может быть реализована и использована. .
Эти скрученные функции, подобные Хаару, также могут быть быстро и эффективно рассчитаны с использованием интегрального изображения, свернутого на 45 градусов. Единственная проблема с реализацией заключается в том, что скрученные элементы должны быть округлены до целых значений, чтобы они совпадали с границами пикселей. Этот процесс аналогичен округлению, используемому при масштабировании элемента типа Хаара для больших или меньших окон, однако одно отличие состоит в том, что для элемента, изогнутого на 45 градусов, целое число пикселей, используемое для высоты и ширины элемента, означает, что диагональные координаты пикселя всегда будут на одном и том же диагональном наборе пикселей
Это означает, что количество доступных элементов разного размера, изогнутых под углом 45 градусов, значительно сокращается, поскольку по сравнению со стандартными вертикально и горизонтально выровненными элементами.
Итак, у нас есть что-то вроде:
О формуле Быстрое вычисление функций, подобных Хаару, с использованием интегральных изображений выглядит так:
Наконец, вот реализация C++, которая использует ViolaJones.h Ивана Кусалича
чтобы увидеть полный проект c++, перейдите сюда
Детектор Виолы-Джонса представляет собой сильный бинарный классификатор, состоящий из нескольких слабых детекторов. Каждый слабый детектор представляет собой чрезвычайно простой бинарный классификатор.
Обнаружение состоит из следующих частей:
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 здесь .