1

У меня проблема с пониманием тренировочной фазы Viola Jones algorithm.этап обучения Viola Jones/AdaBoost

Даю алгоритм в псевдокоде, насколько я понимаю:

# learning phase of Viola Jones 
foreach feature # these are the pattern, see figure 1, page 139 
    # these features are moved over the entire 24x24 sample pictures 
    foreach (x,y) so that the feature still matches the 24x24 sample picture 
     # the features are scaled over the window from [(x,y) - (24,24)] 
     foreach scaling of the feature 
      # calc the best threshold for a single, scaled feature 
      # for this, the feature is put over each sample image (all 24x24 in the paper) 
      foreach positive_image 
       thresh_pos[this positive image] := HaarFeatureCalc(position of the window, scaling, feature) 
      foreach negative_image 
       thresh_neg[this negative image] := HaarFeatureCalc(position of the window, scaling, feature) 
      #### what's next? 
      #### how do I use the thresholds (pos/neg)? 

Это, кстати кадр, как в этом SO Вопрос: Viola-Jones' face detection claims 180k features

Этот алгоритм вызывает HaarFeatureCalc-функция , который, как мне кажется, я понял:

function: HaarFeatureCalc 
    threshold := (sum of the pixel in the sample picture that are white in the feature pattern) - 
     (sum of the pixel in the sample picture that are grey in the feature pattern) 
    # this is calculated with the integral image, described in 2.1 of the paper 
    return the threshold 

ошибки были сделаны до сих пор?

Фаза обучения Viola Jones, в основном, определяет, какие из функций/детекторов являются наиболее решающими. Я не понимаю, как работает AdaBoost, что описано в статье.

Вопрос: как будет выглядеть AdaBoost из бумаги в псевдокоде?

+0

ask ml связанные вопросы в metaoptimize .. Для этого вопрос подходит больше там :) – Fraz

+0

Я сделал, http://metaoptimize.com/qa/questions/9931/learning-phase-of-viola-jones-adaboost –

ответ

0

Viola Джонс:

  • Сначала вы жесткий код 180K классификаторы (Feartures)
  • И изначально все обучающие данные на будут иметь одинаковые веса
  • Теперь каждый классификатор (функция) будет применяться к все данные обучения у вас есть
  • Каждая функция будет классифицировать ваши данные обучения как лицо или не лицо
  • на основе этих классификаций для каждой функции вы вычислите ошибку
  • После вычисления ошибки каждой функции вы выбираете функцию с ошибкой, которая находится далеко от 50%, на что я имею в виду, если у вас есть одна функция с ошибкой 90% и другая функция с ошибкой 20% то вы выберете эту функцию с ошибкой 90% и добавьте ее в сильный класс.
  • Вы обновите вес каждого учебного материала
  • Теперь вы повторите этот процесс, пока не получите хорошую точность для данных валидации с сильным классификатор, который вы создали
  • AdaBoost - это метод создания сильных классификаторов из слабого классификатора