1

我在理解Viola Jones 算法的训练阶段时遇到问题。

据我所知,我用伪代码给出算法:

# 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 的面部检测声称有 18 万个特征

这个算法调用了 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 在伪代码中看起来如何?

4

1 回答 1

0

维奥拉琼斯:

  • 首先,您将硬编码 180k 分类器(特征)
  • 最初所有的训练数据都将具有相同的权重
  • 现在每个分类器(特征)都将应用于您拥有的每个训练数据
  • 每个特征都会将您的训练数据分类为人脸或非人脸
  • 根据每个特征的分类,您将计算错误
  • 在计算每个特征的误差后,您选择误差最远离 50% 的特征,我的意思是,如果您有一个误差为 90% 的特征和另一个误差为 20% 的特征,那么您将选择 90 的特征% 错误并将其添加到强分类器中
  • 您将更新每个训练数据的权重
  • 现在您将重复该过程,直到您使用已构建的强分类器为您的验证数据获得良好的准确性
  • AdaBoost 是一种从弱分类器中生成强分类器的技术
于 2017-12-25T06:13:27.267 回答