标签:
本系列文章总共有七篇,目录索引如下:
AdaBoost 人脸检测介绍(1) : AdaBoost身世之谜
AdaBoost 人脸检测介绍(2) : 矩形特征和积分图
AdaBoost 人脸检测介绍(3) : AdaBoost算法流程
AdaBoost 人脸检测介绍(4) : AdaBoost算法举例
AdaBoost 人脸检测介绍(5) : AdaBoost算法的误差界限
AdaBoost 人脸检测介绍(6) : 使用OpenCV自带的 AdaBoost程序训练并检测目标
AdaBoost 人脸检测介绍(7) : Haar特征CvHaarClassifierCascade等结构分析
Adaboost是一种迭代方法,其核心思想是针对不同的训练集训练同一个弱分类器,然后把在不同训练集上得到的弱分类器集合起来,构成一个最终的强分类器。
最初的弱分类器可能只是一个最基本的Haar-like特征,计算输入图像的Haar-like特征值,和最初的弱分类器的特征值比较,以此来判断输入图像是不是人脸,然而这个弱分类器太简陋了,可能并不比随机判断的效果好,对弱分类器的孵化就是训练弱分类器成为最优弱分类器,注意这里的最优不是指强分类器,只是一个误差相对稍低的弱分类器,训练弱分类器实际上是为分类器进行设置的过程。至于如何设置分类器,设置什么,我们首先分别看下弱分类器的数学结构。
其中
弱分类器训练的过程大致分为如下几步:
1)对每个特征
2)将特征值排序;
3)对排好序的每个元素计算:
3.1)全部正例的权重和
3.2)全部负例的权重和
3.3)该元素前正例的权重和
3.4)该元素前负例的权重和
4)选取当前元素的特征值
于是,通过把这个排序表从头到尾扫描一遍就可以为弱分类器选择使分类误差最小的阈值(最优阈值),也就是选取了一个最佳弱分类器。
给定一个训练数据集
步骤1:首先,初始化训练数据的权值分布。每个训练样本初始都被赋予相同的权值:1/N。
步骤2:进行多轮迭代,用
a). 使用具有权值分布
b). 计算
由上述式子可知,
c). 计算
由上述式子可知,
d). 更新训练数据集的权值分布(目的:得到样本的新的权值分布),用于下一轮迭代:
使得被基本分类器
步骤3:组合各个弱分类器
从而得到最终的分类器,如下:
简单来说,AdaBoost有很多优点:
● AdaBoost是一种有很高精度的分类器;
● 可以使用各种方法构建子分类器,AdaBoost算法提供的是框架;
● 当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单;
● 简单,不用做特征筛选;
● 不用担心overfitting!
对于本算法中的矩形特征来说,弱分类器的特征值 f(x) 就是矩形特征的特征值。由于在训练的时候,选择的训练样本集的尺寸等于检测子窗口的尺寸,检测子窗口的尺寸决定了矩形特征的数量,所以训练样本集中的每个样本的特征相同且数量相同,而且一个特征对一个样本有一个固定的特征值。
对于理想的像素值随机分布的图像来说,同一个矩形特征对不同图像的特征值的平均值应该趋于一个定值k。这个情况,也应该发生在非人脸样本上,但是由于非人脸样本不一定是像素随机的图像,因此上述判断会有一个较大的偏差。
对每一个特征,计算其对所有的一类样本(人脸或者非人脸)的特征值的平均值,最后得到所有特征对所有一类样本的平均值分布。
下图显示了20×20 子窗口里面的全部78,460 个矩形特征对全部2,706个人脸样本和4,381 个非人脸样本的特征值平均数的分布图。由分布看出,特征的绝大部分的特征值平均值都是分布在0 前后的范围内。出乎意料的是,人脸样本与非人脸样本的分布曲线差别并不大,不过注意到特征值大于或者小于某个值后,分布曲线出现了一致性差别,这说明了绝大部分特征对于识别人脸和非人脸的能力是很微小的,但是存在一些特征及相应的阈值,可以有效地区分人脸样本与非人脸样本。
为了更好地说明问题,我们从78,460 个矩形特征中随机抽取了两个特征A和B,这两个特征遍历了2,706 个人脸样本和4,381 个非人脸样本,计算了每张图像对应的特征值,最后将特征值进行了从小到大的排序,并按照这个新的顺序表绘制了分布图如下所示:
可以看出,矩形特征A在人脸样本和非人脸样本中的特征值的分布很相似,所以区分人脸和非人脸的能力很差。下面看矩形特征B在人脸样本和非人脸样本中特征值的分布:
可以看出,矩形特征B的特征值分布,尤其是0点的位置,在人脸样本和非人脸样本中差别比较大,所以可以更好的实现对人脸分类。
有关特征A和B的一些统计数据如下表:
特征 A 和特征 B 的表现大相径庭。
特征 A 对人脸和非人脸样本的特征值为0的点几乎处于相同位置(46.5%,51.5%),且都在所有特征的中间范围 (-5%)。这说明矩形特征 A对于人脸和非人脸几乎没有分辨能力。
特征 B 对非人脸样本的分布,符合我们的预想,特征值为 0的点处于所有特征的中间范围(59.4%),这说明特征 B也“ 看不到” 非人脸的特点。但是对于人脸样本,特征 B 表现了很一致的倾向性,93.4%的特征在 0 点的一侧,与非人脸样本的相差 34%。这说明特征 B 能够相当可靠地分辨人脸和非人脸。
上述的分析说明,确实存在优势的矩形特征,能够在一定的置信范围内区分人脸和非人脸。由于是使用统计的方法计算人脸图像和非人脸图像的差别,因此最后得到的区分阈值,也只能是在某个概率范围内准确地进行区分。
由上述的分析,阈值
[同步本人网易博客的文章] AdaBoost 人脸检测介绍(3) : AdaBoost算法流程
AdaBoost 人脸检测介绍(3) : AdaBoost算法流程
标签:
原文地址:http://blog.csdn.net/nk_wavelet/article/details/52601567