基于AdaBoost算法的人脸检测——赵楠 北京大学 下载本文

北京大学本科生毕业论文

图 17 矩形特征 A 对人脸和非人脸图像的特征值分布(横坐标为排序表编号)。这里看不出 A 有区分能力。

基于 AdaBoost 算法的人脸检测 赵楠

49

北京大学本科生毕业论文 非人脸图像特征值分布

图 18 矩形特征 B 对人脸和非人脸图像的特征值分布(横坐标为排序表编号)。这里 B 表现了很强的分辨能力。

6.2.2 阈值q、方向指示符 p

由上述的分析,阈值q的含义就清晰可见了。而方向指示符 p 用以改变不等号的方向。

一个弱学习器(一个特征)的要求仅仅是:它能够以稍低于 50%的错误率来区分人脸和非人脸图像,因此上面提到只能在某个概率范围内准确地进行区分就已经完全足够。

按照这个要求,可以把所有错误率低于 50%的矩形特征都找到(适当地选择阈值,对于固定的训练集,几乎所有的矩形特征都可以满足上述要求)。每轮训练,将选取当轮中的最佳弱分类器(在算法中,迭代 T 次即是选择 T 个最佳弱分

基于 AdaBoost 算法的人脸检测 赵楠 50

北京大学本科生毕业论文 类器),最后将每轮得到的最佳弱分类器按照一定方法提升(Boosting)为强分类器(参见 6.3 节)。

下节将说明如何训练并选取最佳弱分类器。

6.2.3 弱分类器的训练及选取

训练一个弱分类器(特征 f)就是在当前权重分布的情况下,确定 f 的最优阈值,使得这个弱分类器(特征 f)对所有训练样本的分类误差最低。

选取一个最佳弱分类器就是选择那个对所有训练样本的分类误差在所有弱分类器中最低的那个弱分类器(特征)。

对于每个特征 f,计算所有训练样本的特征值,并将其排序。通过扫描一遍排好序的特征值,可以为这个特征确定一个最优的阈值,从而训练成一个弱分类器(参考图 19)。具体来说,对排好序的表中的每个元素8,计算下面四个值:

1) 全部人脸样本的权重的和T +; 2) 全部非人脸样本的权重的和T ?;

3) 在此元素之前的人脸样本的权重的和S+;

4) 在此元素之前的非人脸样本的权重的和S?;这样,当选取当前元素的特征值 Fk j 和它前面的一个特征值 Fk j?1 之间的数作

8

这里一个元素指排序表中的一个对应某个样本的特征值

基于 AdaBoost 算法的人脸检测 赵楠 51

北京大学本科生毕业论文 为阈值时,所得到的弱分类器就在当前元素处把样本分开——也就是说这个阈值对应的弱分类器将当前元素前的所有元素分类为人脸(或非人脸),而把当前元素后(含)的所有元素分类为非人脸(或人脸)。

可以认为这个阈值所带来的分类误差为9:

e = min( S + + (T ? ? S ?), S? + (T + ? S+ ))

于是,通过把这个排序的表扫描从头到尾扫描一遍就可以为弱分类器选择使分类误差最小的阈值(最优阈值),也就是选取了一个最佳弱分类器。

征特按征特的值序排 f F

图 19 训练并选取最佳分类器算法

9

这个分类误差就是加权错误率。

基于 AdaBoost 算法的人脸检测 赵楠 52

北京大学本科生毕业论文 6.3 强分类器 Strong Classifier

6.3.1 构成

经过 T 次迭代后,获得了 T 个最佳弱分类器h1(x),?,hT (x),可以按照下面的

方式组合成一个强分类器:

C(x)

1 ∑Tt=1a tht (x) ≥ 12 ∑Tt=1a t 0

其它

11其中a t = log bt = log?etet =?loget

那么,这个强分类器对待一幅待检测图像时,相当于让所有弱分类器投票, 再对投票结果按照弱分类器的错误率加权求和,将投票加权求和的结果与平均投票结果比较得出最终的结果。

平均投票结果,即假设所有的弱分类器投“ 赞同” 票和“ 反对” 票的概率都

相同下,求出的概率平均,

Tt=1

a t 。

实验结果表明,当 T=200 时,构成的强分类器可以获得很好的检测效果。

6.3.2 错误率上限

可以证明用上述强分类器进行人脸检测的错误率上限为:

基于 AdaBoost 算法的人脸检测 赵楠

53