AdaBoost人脸检测训练算法 (中)


3)采用AdaBoost算法选取优化的弱分类

 

通过Adaboost算法挑选数千个有效的haar特征来组成人脸检测器,Adaboost算法中不同的训练集是通过调整每个样本对应的权重来实现的。

开始时,每个样本对应的权重是相同的,对于h1分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布U2

在新的样本分布下,再次对弱分类器进行训练,得到弱分类器h2。依次类推,经过T次循环,得到T个弱分类器,把这T个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。

 

这里,我给出训练弱分类器和选取优化的弱分类器的算法(算法图若看不清,请点击放大):

 

 

分类器训练完以后,就可以应用于输入图像中的感兴趣区域(与训练样本相同的尺寸)的检测。检测到目标区域(汽车或人脸)分类器输出为1,否则输出为0。

为了检测整副图像,可以在图像中移动搜索窗口,检测每一个位置来确定可能的目标。为了搜索不同大小的目标物体,分类器被设计为可以进行尺寸改变,这样比改变待检图像的尺寸大小更为有效。

所以,为了在图像中检测未知大小的目标物体,扫描程序通常需要用不同比例大小的搜索窗口对图片进行几次扫描。

 

4)构成级联结构的层叠分类器

 

每个特定分类器所使用的特征用形状、感兴趣区域中的位置以及比例系数(这里的比例系数跟检测时候采用的比例系数是不一样的,尽管最后会取两个系数的乘积值)来定义

分类器中的“级联”是指最终的分类器是由几个简单分类器级联组成。在图像检测中,被检窗口依次通过每一级分类器,这样在前面几层的检测中大部分的候选区域就被排除了,全部通过每一级分类器检测的区域即为目标区域。

 

 

同样,我们给定训练级联结构的分类器的算法(算法图若看不清,请点击放大):

 

补充:训练样本的选择和训练系统总体框架

 

训练样本要求是面部特写图像,下图是一簇训练样本,大小被归一化为24×24像素。

其中,正训练样本要求是面部特写图像,但是人脸形态千差万别,所以训练样本选取过程中要考虑到样本的多样性。

负训练样本,大小被归一化为24×24像素,其中各样本不完全相同,分别具有一定的代表性。

 

训练系统总体框架,由“训练部分”和“补充部分”构成。依据系统框架,本文的训练系统可分为以下几个模块:

(1)以样本集为输入,在给定的矩形特征原型下,计算并获得矩形特征集;

       (2)以特征集为输入,根据给定的弱学习算法,确定闽值,将特征与弱分类器一一对应,获得弱分类器集;

        (3)以弱分类器集为输入,在训练检出率和误判率限制下,使用A d a B o o s t算法

挑选最优的弱分类器构成强分类器;

       (4)以强分类器集为输入,将其组合为级联分类器;

        (5)以非人脸图片集为输入,组合强分类器为临时的级联分类器,筛选并补充非人脸样本。


猜你喜欢

转载自blog.csdn.net/u011314529/article/details/18036177