【人脸检测——基于机器学习3】AdaBoost算法
-
简介
- 主要工作
AdaBoost算法的人脸检测算法包含的主要工作:(1)通过积分图快速求得Haar特征;(2)利用AdaBoost算法从大量的特征中选择出判别能力较强的少数特征用于人脸检测分类;(3)提出一个级联结构模型,将若干个弱分类器集成一个强分类器,其能够快速排除非人脸区域,提高算法的检测速度。
2. AdaBoost算法具体描述
AdaBoost算法的原理是通过逐级增强的方法将弱分类器组合成为分类效果较好的强分类器,具体来说:
(1) 给定一个弱学习算法和一个训练集,其中是输入的训练样本向量,是分类的类标志。
(2) 初始化时,对所有训练样本均赋以一个相同的权重。
(3)然后用该弱学习算法对训练样本进行T轮训练。在每一轮训练结束后,对负样本赋予较大的权重
(4)终止条件:迭代训练次数T或者误差率。
3. 组成成分
一个Adaboost分类器有多个强分类器组成的级联构成,而每个强分类器由多个弱分类器级联构成,而弱分类器级联由弱干个特征Node构成。
- 成分作用
强分类器:做出判决(判决为人脸还是非人脸)。
对于三个个强分类器,假设分别 有特征和对应的阈值。对于输入的窗口图像,若此时,则输出判决为人脸。
弱分类器:计算出强分类器的特征
Eg:强分类器的特征,其中为第i个弱分类器计算出来的特征
Node点:
每个haar特征对应于一个node节点
Eg: 对于node1,
若此时对应的haar1>nodeT1(node1的阈值),此时,当前节点node1的特征
若此时对应的haar1<nodeT1(node1的阈值),此时,当前节点node1的特征
整个Node节点:
若此时Z大于弱分类器的阈值,,反之,
二、弱分类器
1.什么是弱分类器
AdaBoost算法中弱分类器可以是任何分类器,包括决策树,神经网络等等。弱分类器的分类正确率一般不需要太高,只需要比随机猜测稍好,超过50%即可。大部分文献及开源代码都选择了决策树作为弱分类器。
2.弱分类器的设计
a. 基于单一Haar特征的弱分类器表达式
弱分类器一般选择尽可能简单易得的特征,而Haar特征满足这种原则,因此我们选择基于单一Haar特征的弱分类器。
图像中一个Haar特征对应一个弱分类器,弱分类器的函数表达式
其中:为Haar特征的特征值,为判定阈值,为不等式方向,指图像中某一大小的子窗口。在给定某一Haar特征后,与之对应的弱分类器就已经确定了。剩下的问题就变为如何弱分类器判决阈值。 因为每个弱分类器只允许基于一个特征,这样在筛选弱分类器的同时实际上也就完成了对特征的选择。
b.弱分类器的训练过程
在当前样本权重分布下,确定特征的最优阈值,使得使用该特征训练求得的分类器,对于整个训练样本所得的分类错误率最低,而最优弱分类器则是通过遍历整个矩形特征,从中选择某个对于整个训练集的分类错误最低的那个Haar特征。对于某一Haar矩形特征,首先采用积分图求出该特征在所有训练样本上的特征值,然后对这些特征值进行排序,最后通过遍历排序好的特征值即可完成对弱分类器的学习。