@Pudjak

Как работают Каскады Хаара в OpenCV?

Можете на доступном языке объяснить, как это работает?
Вот допустим есть некоторое изображение, на котором нужно определить лица, и мы пропускаем его через этот алгоритм.
В нём мы имеем чёрно-белые маски и признаки размером 24 на 24. Ещё и 25 уровней каких-то есть.

Так и что в итоге с ними происходит?
Предполагаю типа признаком 24 на 24 проходимся по всему изображению. На каждом таком проходе ещё проходим и масками, чтобы определить может ли быть на этом месте лицо или нет (если так, то как?). В итоге имеем изображение с несколькими отметками 24 на 24, на которых по идее лицо. И как в итоге будет решено, есть ли на всём изображении это лицо?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
«Признак Хаара» это прямоугольный фильтр, разделенный на две области – светлую и темную. Данный фильтр накладывается на некоторую область изображения (окно). Значением (откликом) признака является сумма яркостей пикселей изображения в светлой области минус сумма яркостей пикселей в темной области. Если эта разность превышает некоторый порог, то мы считаем, что данный фильтр дал отклик в данном месте изображения.
Это примитивный признак-классификатор. При обучении классификатора Хаара с помощью алгоритма бустинга набор таких примитивных классификаторов складывается в один составной классификатор. Но такой классификатор либо работает долго, либо даёт много ложных срабатываний. Даже шанс в 0,01% - это много, учитывая сколько возможнных окон (возможных позиций лица) может быть на изображении.
Поэтому использует принцип "каскада внимания". Формируется цепочка из нескольких составных классификаторов таким образом, чтобы каждый последующий отсеивал как можно больше отрицательных примеров, но при этом пропускал все или почти все положительные (уровень обнаружения >95%). Это позволяет ограничиться вычислением сравнительно быстрых и простых составных классификаторов для подавляющего большинства окон на изображении.

Под конец несколько близлежащих окон могут быть слиты в одно с помощью non-maximum suppression. Это нужно, так как лицо может попасть сразу в несколько соседних окон, чуть смещённых относительно друг друга.
Если в итоге у нас есть отклики, то мы знаем позиции и размеры возможных лиц на изображении. А дальше уже эвристика на основании этих сведений. Например, если нам нужен крупный план, то мы можем отвергнуть изображение, если наибольшее лицо занимает менее 75% площади изображения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект