基于肤色及改进的Adaboost算法的人脸检测
2013-04-25赵怀勋刘锡蔚
王 寻,赵怀勋,刘锡蔚
(1.武警工程大学 研究生管理大队,陕西 西安710086;2.武警工程大学 信息工程系,陕西 西安710086)
人脸检测是指采取一定的算法将输入图像中的人脸的姿态、位置等进行定位的过程。人脸检测是一个复杂的过程,是进行疲劳检测和人脸识别重要的预处理步骤[1]。目前人脸检测的方法可大致分为以下4类:基于知识的方法、基于特征的方法、基于表象的方法和基于模板匹配的方法。其中基于知识的检测方法中最经典的是肤色检测,但该方法仅依靠人脸的肤色信息,受光照、环境等条件的影响较大,并对于类肤色区域的鲁棒性较差[2]。而由Viola P和Jones M提出的Adaboost人脸检测算法,从根本上解决了人脸检测的速度问题,但它仅利用人脸的灰度特征,没有综合考虑肤色分布,因此其误检率较高。本文有效地结合了两种人脸检测方法,并分别对它们进行了相应的改进,通过实验分析,本文方法不仅提高了人脸检测的精度和速度,同时还实现了高检测率和低错误率。
1 肤色检测
肤色对于人的脸部是重要信息,具有相对的稳定性而且它与大多数背景存在差异,不依赖于人脸面部的细节特征[3]。研究表明,肤色差别主要体现在亮度方面,而相对于色度来说差异较小,也就是说肤色在色度空间上有较好的聚类性,且肤色与人脸的表情、姿态变化无关,通过肤色特征可以快速确定人脸区域。本文先进行光照补偿预处理,然后再利用YCbCr色彩空间对彩色图像进行人脸粗定位。
1.1 光照补偿
在人脸检测研究中,研究对象易受采集条件的影响,相对来说,光照的影响较大,使实验结果产生了偏差。为提高人脸检测的正确率,检测前需要先对图像进行光照补偿预处理。算法为取得所有输入图像的灰度值,并将像素灰度值按由高到低进行排列,取其前5%的像素,并以它的亮度作为“参考白”[1]。然后将它们的R、G、B色彩分量亮度值调整到最大值255,与前5%像素亮度的平均值除以255,就可以得到图像补偿系数,图像中其余像素亮度值按此系数进行线性放大。
实验表明,当光照补偿系数过大时,光照补偿可能会造成肤色在色彩分量上产生较大的偏离。因此,应使用自适应的光照补偿算法。通过实验得到一个自适应门限值,将其与计算得到的光线补偿系数相比较,若值在门限值以内,则进行光照补偿,否则舍弃。这样避免了因补偿不当造成的肤色在色彩分量上的过度偏离。
1.2 色彩空间转换
YCbCr是一种常见的色彩空间,被广泛应用于电视色彩显示中。其中,Y分量给出所有的亮度信息;Cb分量表示红色分量;Cr分量表示蓝色分量。YCbCr色彩空间有着与人视觉感知结构原理相类似,它是一种理想的色彩空间。RGB色彩空间到YCbCr色彩空间变换公式为
1.3 肤色模型
肤色区域相对集中的分布在二维肤色空间YCbCr内,人脸皮肤上像素的色彩值服从高斯分布。因此,文中使用基于高斯模型的肤色建模方法[4]。高斯模型通过计算像素的概率值得到连续数据信息,并得到一个肤色概率图,依照概率的大小进行肤色确认。该模型对肤色像素点的特性进行统计和分析,求出高斯分布各色度分量的均值和方差,然后利用概率密度公式计算图像中的像素点属于肤色点的概率,并对其进行判断。2D Gaussian模型G(m,v2)公式为
其中,Cb,Cr所对应的平均值分别为V为协方差矩阵。计算像素点距高斯分布中心的距离就可得到肤色相似度,计算公式为
用P(Cb,Cr)除以图像中最大的肤色相似度Pmax(Cb,Cr)就可以得到归一化的肤色相似度图像,各像素点的相似度值在(0,1)之间。肤色相似值越大则该点属于肤色的概率越大[5]。
2 改进的Adaboost算法
2.1 Adaboost算法的不足
Adaboost算法是一种分类器算法[6],是由Freund和Schapire提出的一种将弱分类器训练成强分类器的方法。该算法不需要预知弱分类器的误差,只要求弱分类器误差比随机猜测略好,当弱分类器个数趋于无限时,强分类器的错误率也趋近于零。
Adaboost算法的描述如下[7]:
假设给定训练样本{x1,y1},{x2,y2},…,{xn,yn},其中,yi={0,1},i=1,2,…,n,0代表非人脸样本;1代表人脸样本;n为训练样本总数量。
(1)设ωt,i为第t次循环中第i个样本的权重系数。首先对权值进行初始化,对于yi=1的人脸样本,设置权重ωt,i=1/2a;对于yi=0的非人脸样本,设置权重ωt,i=1/2b;其中,a、b分别是人脸样本和非人脸样本的样本总数。
(2)对于t=1,2,…,T,其中T是训练次数。
②对于每个特征j,训练与之对应的弱分类器hj,即确定阈值θj和偏置ρj,使它对应的误差函数εj=达到最小值。
③根据步骤②得到的弱分类器,寻找具有最小分类误差εt的弱分类器,并将其加入到强分类器中。
(3)最终所构成的强分类器为
相对于正面人脸图像,基于Adaboost算法的人脸检测检测效果良好,其检测率高、速度快、误检率低,但对于侧面人脸及不同表情的人脸漏检率高、检测率低。另一方面,通过检测发现,对于有一定倾斜的人脸,Adaboost算法存在漏检情况。同时当很少见到的困难样本或含有噪声的样本出现在训练样本集时,Adaboost算法会将这些样本列为重点考虑的对象,经过多次的重点对待,易使这些样本的权值大幅增长,最终可能会出现退化现象。因此需要对Adaboost算法进行改进,以优化侧面人脸检测率和减少退化现象的产生。
2.2 改进的Adaboost算法
(1)Harr矩形特征扩展。本文添加了两种新的矩形特征模板,如图1所示,以增强对具有倾斜角度人脸的检测效果,并将它加入到训练弱分类器模板之中。
图1 新的Haar特征模板
如图1所示,当人脸有一定的倾斜角度时,新增加的两种特征模板可以良好地反映出斜线方向上的灰度特征,达到更好的分类效果。新加入的特征模板所训练生成的强分类器对倾斜的人脸具有一定的针对性。
(2)样本权值更新的改进。在Adaboost算法的训练学习中,训练弱分类器的重要因素是集中各样本的权值。因此样本权值的调整需要谨慎,避免出现退化现象。而在原始的Adaboost算法迭代训练中,每个样本权值更新原则采用的方法是相同的,即只根据样本被分类的情况来决定对它的权值是否进行调整。文中通过定义一个阈值TH,结合样本被分类正确与否,以及当前样本权值是否大于TH来决定该样本的权值是否需要做出调整[8]。
至于改进的Adaboost算法步骤而言,前3步与传统Adaboost算法一致,在第4步权值更新时做如下改进:
④设置本轮训练的权值更新阈值
⑤对样本权值进行更新
通过以上步骤可以看出,更新某个样本权值是由本次迭代的权值更新阈值TH和样本的当前权值决定的。当样本分类错误时,且样本目前的权值ωt,i比权值更新阈值TH小时,就增加这个样本权值,否则就相应减少样本权值,这种情况下,如果在每次迭代训练中一个困难样本都被分类错误,该样本的权值也不会出现过度增大,这样可以在一定程度上防止训练弱分类器时出现退化现象[9]。
3 改进的Adaboost算法的人脸检测
基于Adaboost算法的人脸检测具有检测率高、检测速度快的优点,但其在某些复杂背景下会出现一定的误检[10]。肤色特征检测人脸的速度快,但容易出现误检、漏检。为增加算法的实时性和准确性,本文提出了一种基于YCbCr空间下的高斯肤色模型和改进的Adaboost算法结合的人脸检测方法。算法实现过程如图2所示。
图2 肤色及改进Adaboost算法相结合的人脸检测方法实现过程
4 实验结果及分析
本文在P4 2.0 GHz CPU的PC上对该算法进行实验,人脸测试样本由自拍和网上下载的方式获得的200幅不同背景、尺寸及光照条件下的人脸图像,非人脸测试集是从漫画、风景、建筑等图片中获得的,表1统计了3种人脸检测方法对采集到测试图像的检测结果,包括其所对应的检测率及误检率等内容。
表1 种人脸检测方法
图3分别给出了3种人脸检测方法的部分人脸检测结果图,其中图3(a)是基于肤色的人脸检测方法,图3(b)是基于Adaboost算法的人脸检测方法,图3(c)是基于肤色及改进的Adaboost算法的人脸检测方法。
图3 人脸检测的结果图
5 结束语
基于Adaboost算法的人脸检测具有检测率高、检测速度快的优点,但由于它是基于人脸的灰度特征,具有一定的局限性。本文将基于肤色信息的人脸检测与改进的Adaboost算法相结合,首先将图像转换到YCbCr空间,对肤色建模以排除非肤色区域,再将处理后的图像送入改进的Adaboost分类器检测,将两种方法有机结合既保证了检测速度快,又提高了检测的精度,能够达到实时性的要求,可以很好地用于实时跟踪和视频监控。
[1]MILAN S,VACLAV H,ROGER B.图像处理分析与机器视觉[M].2版.艾海舟,武勃,译.北京:人民邮电出版社,2003.
[2] 王建国,华继钊,杨静宇.基于YCgCr颜色空间的光照自适应的肤色区域检测[J].计算机应用研究,2008,25(2):467-482.
[3] 张争珍,石跃祥.YCgCr与YCgCb颜色空间的肤色检测[J].计算机工程与应用,2010,46(36):167-170.
[4] 林庆,罗敏.基于颜色和几何关系的人脸检测方法[J].计算机工程与设计,2008,29(7):3396-3398.
[5] 郭秀梅.基于肤色的人脸检测算法的研究LDI[D].泰安:山东农业大学,2008.
[6] 阮锦新,尹俊勋.基于人脸特征和Adaboost算法的多姿态人脸检测[S].计算机应用,2010,30(4):967-970.
[7] 徐前,赵德安,赵建波.基于改进的AdaBoost算法的人脸检测与定位[J].传感器与微系统,2010,29(1):94-97.
[8] 张君昌,李倩,贾靖.基于分类器相关性的Adaboost人脸检测算法[J].计算机应用,2009,29(12):3346-3348.
[9] 宋义伟,王秀,赵雪竹,等.基于肤色分割和AdaBoost算法的彩色图像的人脸检测[J].自动化与信息工程,2009(1):116-119.
[10]崔潇潇,王贵锦,林行刚.基于AdaBoost权值更新以及K-L距离的特征选择算法[J].自动化学报,2009(5):45-50.