如果在 Viola-jones 人脸检测方法中,每一轮 boosting 都选择相同的 Haar 特征怎么办?

Posted

技术标签:

【中文标题】如果在 Viola-jones 人脸检测方法中,每一轮 boosting 都选择相同的 Haar 特征怎么办?【英文标题】:What if each round of boosting selects same Haar-feature in Viola-jones face detection method? 【发布时间】:2013-11-11 09:05:29 【问题描述】:

我正在实施 Viola-Jones 人脸检测来检测人脸。在使用 Adaboost 进行训练时,boosting round 会选择相同的 haar 特征。例如,如果前三轮选择的 Haar 特征 (x,y,w,h,f,p)(0,0,4,2,1,0)(1,3,5,2,3,1)(2,4,7,2,4,1),那么对于剩下的一轮提升,它选择相同的 haar 特征,这样我的列表选定的 Haar-feature 变为,

[(0,0,4,2,1,0),(1,3,5,2,3,1),(2,4,7,2,4,1),(1,2,4,8,1,0),(1,2,4,8,1,0),(1,2,4,8,1,0),(1,2,4,8,1,0),(1,2,4,8,1,0)]

这里, x,y = x_y coordinate, w = width of Haar-feature, h = height of Haar-feature, f = feature type, p = parity of Haar-feature.

我的问题:

1) 如果每一轮boosting选择相同的Haar-feature,我应该选择下一个具有相对最小误差的Haar-feature。

谢谢!

【问题讨论】:

【参考方案1】:

不,你不应该。 Adaboost 确实可以在每次 boosting 运行中多次选择相同的特征,但通常该特征会有不同的权重值(alpha 值)。

您得到的结果可能有许多不同的原因。例如,您的 Adaboost 代码中可能存在错误。您的特征或弱分类器中也可能存在错误。或者你没有为你的提升算法提供足够的样本。或者,你的弱分类器太弱了。或者你的强分类器过拟合非常快。

【讨论】:

我使用了 2500 个正样本和 4500 个负样本,因此不应出现“没有提供足够样本”的情况。 '你的弱分类器太弱'是什么意思?有什么方法可以知道我的 Adaboost 或 Weak 分类器有任何错误吗?另一件事,当我尝试选择另一个具有相对较低错误的特征而不是选择相同的 Haar 特征时,我在验证数据集上获得了与我选择相同 Haar 特征的结果相比的良好结果。谢谢! 样本数量可能取决于您处理的问题类型。为了检测人脸,Viola 和 Jones 使用了近 5000 个正例,在某些情况下使用了 5000 个负例或 15000 个负例。如果加权分类误差太接近 50%,则弱分类器可能太弱。调试 Adaboost 或弱分类器就像调试任何软件一样,所以我没有任何具体的提示。无论如何,很高兴知道你得到了选择另一个分类器的结果,但我不知道有报道有人这样做的论文。但是,嘿,如果它对你有用,我还能说什么?

以上是关于如果在 Viola-jones 人脸检测方法中,每一轮 boosting 都选择相同的 Haar 特征怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

matlab中的人脸检测(viola-jones)

Viola-Jones 人脸检测:像素之间的高对比度

Viola-Jones(人脸检测)

Viola-Jones 的人脸检测声称拥有 18 万个特征

有没有办法在不使用 viola-jones 算法的情况下用 opencv 检测人脸? [关闭]

收集adaboost算法的负样本进行人脸检测