Adaboost算法自己整理.docVIP

  • 7
  • 0
  • 约1.97千字
  • 约 5页
  • 2017-07-03 发布于天津
  • 举报
Adaboost算法自己整理.doc

Adaboost算法整理 Adaboost算法流程图: 弱分类器的训练过程: 一个弱分类器h(x, f , p, )由一个特征f,阈值 θ 和指示不等号方向的p 组成: 一个haar特征对应一个弱分类器。 训练一个弱分类器(特征f)就是在当前权重分布的情况下,确定f 的最优阈值以及不等号的方向,使得这个弱分类器(特征f)对所有训练样本的分类误差最低。具体方法如下: 对于每个特征 f,计算所有训练样本的特征值,并将其排序。通过扫描一遍排好序的特征值,可以为这个特征确定一个最优的阈值,从而训练成一个弱分类器。具体来说,对排好序的表中的每个元素,计算下面四个值: 1)全部人脸样本的权重的和T+; 2) 全部非人脸样本的权重的和T-; 3) 在此元素之前的人脸样本的权重的和S+; 4) 在此元素之前的非人脸样本的权重的和S=; 这样,当选取当前任意元素的特征值作为阈值时,所得到的弱分类器就在当前元素处把样本分开——也就是说这个阈值对应的弱分类器将当前元素前的所有元素分类为人脸(或非人脸),而把当前元素后(含)的所有元素分类为非人脸(或人脸)。 可以认为这个阈值所带来的分类误差为: 于是,通过把这个排序的表扫描从头到尾扫描一遍就可以为弱分类器选择使分类误差最小的阈值(最优阈值),也就是选取了一个最佳弱分类器。同时,选择最小权重错误率的过程中也决定了弱分类器的不等式方向。 具体的弱分类器学习演示表如下: X Y F w T(f) T(nf) S(f) S(nf) A B e X(1) 0 1 0.2 0.6 0.4 0 0.2 0.2 0.8 0.2 X(2) 1 3 0.1 0.6 0.4 0.1 0.2 0.3 0.7 0.3 X(3) 0 4 0.2 0.6 0.4 0.1 0.4 0.1 0.9 0.1 X(4) 1 6 0.3 0.6 0.4 0.4 0.4 0.4 0.6 0.4 X(5) 1 9 0.1 0.6 0.4 0.5 0.4 0.5 0.5 0.5 X(6) 1 10 0.1 0.6 0.4 0.6 0.4 0.6 0.4 0.4 其中: 通过演示表我们可以得到这个矩形特征的学习结果,这个弱分类器阈值为4,不等号方向为p=-1,这个弱分类器的权重错误率为0.1。 Adaboost算法的具体描述如下: 一组训练集: , 其中 为样本描述, 为样本标识, ;其中0,1分别表示正例子和反例。在人脸检测中,可以定义0为非人脸,1为人脸。 初始化:初始化训练样本的权重,D(i),其中 或者 (人脸样本和非人脸样本初始化为不同的值,m为非人脸样本总数,l为人脸样本总数)。 对t=1,2,...,T,循环执行下面的步骤: 1.归一化权重: 2.对每个特征f,训练一个弱分器 h(x,f,p,θ);计算所有特征的弱分类器的加权错误率 选取最佳弱分类器 ,按最小错误率。 说明:第一步中的表示在训练的第t个弱分类器的第i个样本的权重。 第二步中的为分错样本权重之和。表示对f特征的弱分类器的加权错误率 表示的是对第i个样本 是人脸还是非人脸。故第二步中的绝对值的值为1时说明分错了,为0时,分对了。 第三步中表示第t个特征f。 按照这个最佳弱分类器,调整权重: 其中 被正确分类,被错误分类。 5.最后的强分类器为: 其中: 在选择最佳的弱分类器的过程中,训练一个最优的弱分类器进行一次权重变化。 第二步讲述的是:如何训练一个弱分类器 第三步讲述的是:如何选择一个最优的弱分类器 第四步:主要是为下一个最优弱分类器服务的,即调整权重。然后从第一步开始循环执行。循环T次,得到T个最优的弱分类器。 然后利用第五步,进行级联得到一个强分类器,也就是在训练过程中完成了一个stage。 在训练过程中显示的弱分类器都是最优的弱分类器。 训练L层级联分类器的步骤如下: (1)训练第i层强分类器 ; (2)保存强分类器 的参数,即各弱分类器的参数、强分类器的阈值以及被 误判为人脸的非人脸样本; (3)补充非人脸样本集,组合前i层强分类器对候选非人脸样本进行检测,将被误判为人脸的非人脸样本加入到样本集中(人脸样本不更新); (4)训练第i+1层强分类器。 为什么要补充非人脸样本:貌似是什么进入死循环?????

文档评论(0)

1亿VIP精品文档

相关文档