【这是一篇之前总结的文档,大部分来源于csdn和文献,如有未标明引用,请联系我加上。】
目录
1 Adaboost方法的引入
1.1 Boosting方法的提出和发展
1.2 AdaBoost算法的提出
1.3 级联分类器介绍
2 矩形特征
2.1 Haar特征\矩形特征
2.2 子窗口内的条件矩形,矩形特征个数的计算
2.3条件矩形的数量
3 积分图
3.1 积分图的概念
3.2 利用积分图计算特征值
3.3计算特征值
4 级联分类器与检测过程
4.1 弱分类器
4.2 训练强分类器
4.3弱分类器使用Haar特征进行分类
4.4 弱分类器的训练及选取
4.5 强分类器
4.6 图像检测过程
1 Adaboost方法的引入
1.1 Boosting方法的提出和发展
在了解Adaboost方法之前,先了解一下Boosting方法。
回答一个是与否的问题,随机猜测可以获得50%的正确率。如果一种方法能获得比随机猜测稍微高一点的正确率,则就可以称该得到这个方法的过程为弱学习;如果一个方法可以显著提高猜测的正确率,则称获取该方法的过程为强学习。
1994年,Kearns和Valiant证明,在Valiant的PAC(ProbablyApproximately Correct)模型中,只要数据足够多,就可以将弱学习算法通过集成的方式提高到任意精度。实际上,1990年,SChapire就首先构造出一种多项式级的算法,将弱学习算法提升为强学习算法,就是最初的Boosting算法。
Boosting意思为提升、加强,现在一般指将弱学习提升为强学习的一类算法。1993年,Drucker和Schapire首次以神经网络作为弱学习器,利用Boosting算法解决实际问题。前面指出,将弱学习算法通过集成的方式提高到任意精度,是Kearns和Valiant在1994年才证明的,虽然Boosting方法在1990年已经提出,但它的真正成熟,也是在1994年之后才开始的。1995年,Freund提出了一种效率更高的Boosting算法。
1.2 AdaBoost算法的提出
1995年,Freund和Schapire提出了Adaboost算法,是对Boosting算法的一大提升。Adaboost是Boosting家族的代表算法之一,全称为Adaptive Boosting。
Adaptively,即适应地,该方法根据弱学习的结果反馈适应地调整假设的错误率,所以Adaboost不需要预先知道假设的错误率下限。也正因为如此,它不需要任何关于弱学习器性能的先验知识,而且和Boosting算法具有同样的效率,所以在提出之后得到了广泛的应用。
首先,Adaboost是一种基于级联分类模型的分类器。级联分类模型可以用图1表示:
图1
1.3 级联分类器介绍
级联分类器就是将多个强分类器连接在一起进行操作。每一个强分类器都由若干个弱分类器加权组成,
例如,有些强分类器可能包含10个弱分类器,有些则包含20个弱分类器,一般情况下一个级联用的强分类器包含20个左右的弱分类器,然后在将10个强分类器级联起来,就构成了一个级联强分类器,这个级联强分类器中总共包括200弱分类器。因为每一个强分类器对负样本的判别准确度非常高,所以一旦发现检测到的目标位负样本,就不在继续调用下面的强分类器,减少了很多的检测时间。因为一幅图像中待检测的区域很多都是负样本,这样由级联分类器在分类器的初期就抛弃了很多负样本的复杂检测,所以级联分类器的速度是非常快的;只有正样本才会送到下一个强分类器进行再次检验,这样就保证了最后输出的正样本的伪正(falsepositive)的可能性非常低。
也有一些情况下不适用级联分类器,就简单的使用一个强分类器的情况,这种情况下一般强分类器都包含200个左右的弱分类器可以达到最佳效果。不过级联分类器的效果和单独的一个强分类器差不多,但是速度上却有很大的提升。
级联结构分类器由多个弱分类器组成,每一级都比前一级复杂。每个分类器可以让几乎所有的正例通过,同时滤除大部分负例。这样每一级的待检测正例就比前一级少,排除了大量的非检测目标,可大大提高检测速度。
其次,Adaboost是一种迭代算法。初始时,所有训练样本的权重都被设为相等,在此样本分布下训练出一个弱分类器。在第(=1,2,3,…T,T