您的位置:首页 > 其它

Haar+cascade AdaBoost分类器学习训练总结

2017-01-31 17:22 357 查看
尽量用简单的语言总结一下,利用haar特征,结合级联分类器进行XX检测,这里以XX代表人脸。

整体思路分为5大步:

1、准备人脸、非人脸样本集;

2、计算特征值和积分图;

3、挑选最优分类器;

4、利用AdaBoost把这些分类器训练成一个强分类器;

5、级联,也就是强分类器的强强联手。

在开始前,一定要记住,以24*24窗口为例,就有16万+的特征数量,所以首先要从中筛选有用的特征(即最优弱分类器),然后利用AdaBoost将这些最优弱分类器训练成一个强分类器,最后将强分类器进行级联。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1、准备人脸、非人脸样本集

这一步没什么好说的,

2、计算特征值和积分图

Haar特征,也就是那三种特征,边缘特征、线性特征、特征方向特征,

haar特征及特征值计算,推荐博文,点击链接

积分图计算也很简单,一搜一大把,给个例子

如下图



那么如何利用积分图进行计算呢?举例如下图



假设计算特征 1 1 2 2,直接 sum(蓝色区域) - sum(粉色区域) = (2+2) - (1+1) = 2

利用积分图像计算 区域A = (9+2) - (3+6) =2,  区域B = (17+6) - (10+9) = 4,  区域B - 区域A = 4 - 2 = 2。

使用积分图,可以对haar特征值计算进行加速。

3、挑选最优分类器

这一步是很多教程讲解不清楚的地方。

之前一直以为计算到haar特征值后,然后直接用AdaBoost进行训练强分类器,大错特错!

以24*24为例,16万+个特征值,如果直接利AdaBoost训练,那么工作量是极其极其巨大的。

所以必须有个筛选的过程,筛选出T个优秀的特征值(即最优弱分类器),然后把这个T个最优弱分类器传给AdaBoost进行训练。

如何挑选?

链接,只需了解 3.1即可

4、利用AdaBoost训练一个强分类器

此时,我们手中有T个最优弱分类器(在第3步中得到),现在就要利用AdaBoost算法了

换句话说,a weighted combination of all these found weak classifiers to evalute and decide any given window has a face or not.



这里有个非常好的讲解,结合实例来说,更明朗

PPT中的Y值 是1 or -1,可以理解为正样本和负样本,或者理解为人脸和非人脸,

X为haar特征值,所以从这个角度来讲,每个haar特征值就是一个弱分类器。

5、级联,也就是强分类器的强强联手

推荐这篇文章 的2.3节,虽然我也没有看明白, 感觉就是决策树的问题了。

就这么多了,有问题一起探讨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: