как указать порог слабого классификатора для метода adaboost детектора лиц.

#face-detection #adaboost #viola-jones

#распознавание лиц #adaboost #виола-Джонс

Вопрос:

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

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

Мой вопрос: как указать порог theta_j ?

И для сильного классификатора мой вопрос выглядит так: введите описание изображения здесь

Ответ №1:

Параметр theta_j рассчитывается для каждой функции слабым учеником. Подход Виолы и Джонса был лучше задокументирован в их версии 2004 года в их статье и, ИМХО, очень похож на анализ ROC. Вы должны протестировать каждый из ваших слабых классификаторов по сравнению с обучающим набором в поисках theta_j того, который вызывает наименьшую взвешенную ошибку. Мы говорим «взвешенный», потому что мы используем w_t,i значения, связанные с каждой обучающей выборкой, для взвешивания неправильной классификации.

Для интуитивного ответа о пороге сильного классификатора рассмотрим это все alpha_t = 1 . Это означает, что у вас должно быть не менее половины вывода слабых классификаторов 1 x для вывода сильного классификатора 1 для x . Помните, что слабые классификаторы выводят 1, если они считают, что x это лицо, и 0 в противном случае.

В Adaboost alpha_t его можно рассматривать как показатель качества слабого классификатора, т. Е. Чем меньше ошибок делает слабый классификатор, тем выше он alpha будет. Поскольку некоторые слабые классификаторы лучше других, представляется хорошей идеей взвешивать их голоса в соответствии с их качеством. Правая часть неравенства сильного классификатора отражает, что если веса составляют не менее 50% от всех весов, классифицируйте x как 1 (лицо).

Ответ №2:

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