基于人工鱼群的Gentle Adaboost快速训练算法
2010-05-11钟汉亭
许 恒 李 浩 钟汉亭
(1、浙江省质量技术监督检测研究院,浙江 杭州 310013 2、上海计量测试研究院,上海 200000)
1 引言
人脸检测,是指对于任意一幅给定的图像,采用一定的策略对其进行搜索以确定其中是否含有人脸的过程,在现代人机自然交互(HCNI)、身份认证和安全防护中有着广泛的应用[1][2]。Viola和Jones于2001年提出了一种基于Adaboost的人脸检测算法[3],较之以往的算法,这种方法检测率高、检测速度快,在CMU测试集上的检测率为92.1%,检测速度达到每秒15帧(PIII700MHZ)。目前,Adaboost方法已经成为了研究的热点。在Adaboost算法诸多变种中,Gentle Adaboost算法较少强调野点,并对样本的过适应有一定的抑制作用。Rainer Lienhart等通过试验证明Gentle Adaboost运用于人脸检测领域有较好的性能[4]。Adaboost通过重复搜索给定的类Haar矩形特征空间来选择有效的弱分类器,尽管能在每一次迭代过程中取得最优的分类特征,但大量的迭代和前向搜索也将消耗巨量的时间[3]。完全遍历特征空间中的特征数量十分巨大,以一张20×20的灰度图像为例,选取八种矩形特征类型进行遍历,共需计算64409个特征。对于形状相同、位置相近但长宽不等的矩形特征而言,特征与特征之间存在着大量相关性信息,矩形越相似,相关性越大。因此,在保证有效检测性能的基础上可以通过减少特征空间中不必要的冗余,以缩短训练时间。
本文提出一种基于人工鱼群的Gentle Adaboost快速训练算法。人工鱼群是由李晓磊等在2003年提出的一种基于动物行为的新型群体智能优化算法[5],通过对鱼群行为的模拟能在解空间快速地得到一个较优值。算法通过模拟人工鱼群觅食、聚群、追尾等行为,减少搜索次数,达到快速搜索的目的。在对MIT和FERET人脸库上部分样本的仿真实验表明,该算法在保证检测性能的要求下约能将训练时间缩短至原始训练时间的1/3。
2 Gentle Adaboost算法的训练机制
Adaboost算法通过寻找一组在自然界中分类能力一般的弱分类器,针对它们对不同样本的分类能力,赋予不同的权重,并使用加权投票机制,集合成强分类器。在这个过程中,结合人工鱼群算法在特征空间中挑选分类结果最好的特征作为弱分类器。
2.1 类Haar矩形特征
基于人脸模式的特定性,Adaboost算法使用类Haar矩形特征实现对人脸形态的描述。图1显示了几类基本的矩形特征,每一类型通过对矩形尺寸和位置的不同定义构建特征空间,训练样本尺寸越大,特征数量越多,特征值由矩形覆盖的象素面积决定,其值等于不同颜色区域覆盖象素值之差。
图1 几类基本的矩形特征
2.2 弱分类器的选取
Gentle Adaboost根据不同样本的分类结果更新样本权重,在分类均方误差最小准则下选择特征作为弱分类器,算法流程如下:
2.2.1初始化样本权重
2.2.2 For i=1:n
·归一化样本权重
·计算每个特征的均方分类误差
其中,m为样本总数,wk表示第k个样本的权重,yk表示第k个样本,正样本等于你1负样本等于-1,j=1,...m。
·选择均方分类误差 最小的特征作为弱分类器
·更新样本权重
3 基于人工鱼群算法的Gentle Adaboost
本文尝试结合人工鱼群算法减少计算机的训练时间。利用人工鱼群的活动尝试接近每次循环中的最优弱分流器。人工鱼群算法是一种模拟鱼群行为的优化算法,通过对鱼群中各个体的局部寻优,达到全局最优值在群体中突现出来的目的[6]。人工鱼群个体的全局状态可表示为向量 X=(x1,x2,…,xn),对于类 Haar矩形特征空间,选取n=5,其中x1~n分别为矩形类型、矩形长度、矩形宽度、位置横坐标和位置纵坐标。在特征的遍历过程中,同类型特征的上一特征的结果对下一特征的结果有一定延伸性,因此,人工鱼群在搜索特征时,无需遍历整个特征空间,就能减少训练时间,得到较好的结果。
3.1 人工鱼群的行为描述
觅食行为。对于人工鱼群个体状态Xi,在其感知范围内随机选择一个状态Xj,如果该状态所在位置食物浓度较多(目标函数Yj较优),则向该方向前进一步,否则重新随机选择状态Xj,判断是否满足前进条件,在try_number次后仍不满足前进条件时,则随机移动一步。
聚群行为。对于人工鱼群个体状态Xi,探索当前邻域内,即 di,j 追尾行为。对于人工鱼群个体状态为Xi,探索当前邻域内,即di,j 人工鱼群算法是通过搜寻目标函数的极值,评价寻优的状态。当极值满足终止条件或搜索次数时,搜索过程结束。Gentle Adaboost按照均方分类误差最小选择特征,选择函数 作为目标函数,鱼群游移时,记录最小的 值和相应特征。 参照文献[7]的方法设定初始视野,visual=总特征数/4和初始步长step=visual/8;并引入衰减因子,随着迭代的增加减少步长和视野,增加鱼群的寻优能力。衰减因子a=exp(-30*(t/Tmax)S)。 鱼群按追尾、觅食、聚群的行为策略进行游移。即先执行追尾行为,如果没有进步则执行觅食行为,如果仍然没有进步则执行聚群行为。 人工鱼群的每一次游移都会产生新的结果,考虑按鱼群追尾、觅食、聚群的行为策略进行循环,并对结果进行评估。如果循环一定次数后连续几次得到的结果的均方误差均小于规定值,或循环次数已满则跳出循环。否则程序继续进行循环,直到设定次数完成为止。 实际检测中,Adaboost算法采用级联结构组合强分类器,对于存在的大量非人脸目标,检测器只需通过前几层分类器就能将其快速滤除。并且算法在关注单级强分类器的检测率(目标的正分率)时,也允许一定误检率(非目标的误分率)的存在。 本文使用MIT和FERET人脸数据库进行仿真实验,在每个数据库中挑选500张人脸样本和大约2000张左右的非人脸样本作为训练集,由于只能找到FERET数据库中的人脸样本,训练中的非人脸样本是通过Internet获得的。使用传统的Gentle Adaboost和基于人工鱼群的Gentle Adaboost算法(简称GAB.人工鱼群),在MATLB7.0上进行实验,平台为Intel Centrino Duo 1.6GHZ、1G内存的笔记本计算机,构建了多级的级联分类器。 图2 算法流程 将人工鱼群的循环设置为10次,终止条件设置为:连续得到6次的均方误差小于0.001或者循环满30次,鱼群数目设置为1000条。 表1显示了传统Gentle Adaboost和GAB.人工鱼群算法对MIT和FERET人脸数据库部分样本的训练结果。其中对检测率和误检数的结果是对MIT人脸数据库中1000张样本图片(正负样本图片各为500张)分类得到的结果。鉴于FERET人脸数据库中样本尺寸为14×14,因此对测试集中图像做了裁剪处理。通过实验可知相比传统算法GAB.人工鱼群训练时间大大缩短,检测率和误检率基本与其一致,可以满足应用要求。 ? 本文提出了一种基于人工鱼群的Gentle Adaboost人脸检测算法。介绍了Gentle Adaboos选择特征作为弱分类器的原理,并将分类最小均方误差作为人工鱼群寻优的目标函数。人工鱼群算法通过设定鱼群相关参数,规定了算法的终止条件,实现了对特征的快速搜索,构建了级联结构的分类器。在对MIT和FERET人脸数据库上的仿真实验表明该算法在保证相当检测精度的要求下,约能缩短训练时间至原始训练时间的1/4。 利用人工鱼群算法求解弱分类器虽然能减少整个算法的训练时间,保证一定的分类器分类精度。但在鱼群求解的过程中,并不能一定保证所得到的弱分类器是当前循环中最优的。因此可能导致弱分类器个数的增加。因此,在未来的研究工作中,我们将致力于研究更适应Adaboost的人工鱼群算法,提高鱼群获得精确解的能力,从而求的更为优秀的分类器。 [1]孙宁,邹采荣,赵力.人脸检测综述 [J].电路与系统学报,2006,11(6):101-108. [2]魏冬生,李林青.Adaboost人脸检测方法的改进 [J].计算机应用 2006,26(3):619-620. [3]李晓磊.一种新型的智能优化算法-人工鱼群算法 [D].杭州:浙江大学,2003. [4]郑晓鸣.人工鱼群的改进及应用 [D].上海:上海海事大学,2006. [5]王联国,洪毅,赵付青,余冬梅.一种改进的人工鱼群算法[J].计算机工程 2008,34(19):192.3.2 目标函数的确定
3.3 初始化和行为策略
3.4 算法的终止条件
4 仿真实验
5 结论