刘志波,周石琳,闫军伟
(1.国防科学技术大学电子科学与工程学院,长沙 410073;2.武警石家庄士官学校通信二系,石家庄 050050)
随着计算机和现代传感技术的发展,人机交互技术日益成为人工智能领域中的研究热点,其中人脸检测已成为计算机视觉中一个备受关注的研究方向,在视频监视、人机交互、人脸识别等应用中起着非常重要的作用。人脸检测就是确定输入图像中是否存在人脸,如果存在则定位出每个人脸的位置、大小以及姿态。
目前,人脸检测方法大致可分为4类:基于知识的方法、基于特征不变量的方法、模板匹配方法和基于表象的方法[1-2]。其中基于特征不变量法和基于表象的方法较为常用。基于特征不变量法立足于不随光线、表情、视角等变化的结构特征,例如肤色、脸部特征纹理等[3],此方法主要用在人脸定位上。通常来说这种方法处理速度较快。缺点是由于噪声和遮挡等使图像特征被破坏,人脸的特征被弱化,可能使得检测算法的性能下降甚至失效。基于表象的方法的主要思想是学习大量的人脸样本,从而抓住人脸的典型表象来实现人脸的检测,如神经网络、支持向量机(SVM)、Ada-Boost算法等[4-5]。其中基于 AdaBoost学习算法的人脸检测方法实现了实时的正面人脸检测,并且能达到较高的检测率和较好的实时性,因此在实际中得到了广泛运用。但该方法由于需要对所有可能的检测窗口进行穷举搜索,所以计算复杂度很高,而且在训练过程中存在过增益现象[6]。为了充分利用了肤色检测的速度和AdaBoost算法检测的高检测率,本文将肤色检测和AdaBoost算法结合起来,并针对传统的AdaBoost算法训练过程中的过增益缺陷进行了改进,对其算法权重的更新规则进行了调整,增加了构建层叠分类器训练过程。实验结果表明,改进后的方法在检测性能上得到了明显提高。
肤色是人脸重要信息,它不依赖于面部的细节特征,且对于旋转、表情变化都具有相对稳定性。肤色检测方法可以很快在图像中搜索到包含人脸的肤色区域。大量的结果表明,肤色之间的差异主要是由于亮度信息引起的,为利用皮肤颜色在色度空间的聚类性,需要把图像中表达颜色的色度信息与亮度信息分开,因此选择一个更适合于肤色分割的彩色空间很重要。目前,常用的彩色空间有 RGB、HSI、YUV、YCbCr等。YCbCr色彩空间和人的视觉预处理过程有着相似的结构规则,特别是人脸检测在YCbCr空间有着较好的聚类效果。De Dios[7]提出将YCgCr色彩空间用于人脸检测,它同 YCbCr空间比较相似。Wang[8]证实,对于肤色,YCgCr空间比YCbCr空间有着更好的聚类性。因此,本文采用YCgCr色彩空间检测可能的人脸区域。RGB空间可按式(1)转换到YCgCr空间。
肤色检测即通过特定的算法获取可能的肤色区域,包括肤色提取和肤色分割。本文采用高斯模型来提取和分割被检图像的肤色。YCgCr空间将亮度信息和色度信息分开,这样可以降低亮度的影响,肤色点在Cg和Cr分量上存在一个比较稳定的聚类分布。确定肤色点在Cg和Cr二维空间中的二维高斯模型[9]为:
其中:x为每个像素点的色度分量;Cg为第1个分量;Cr为第2个分量;M和C分别为统计出来的均值和协方差。
对于输入图像,按照式(1)将其从RGB色彩空间转换到YCgCr色彩空间,然后按照上面的高斯肤色模型计算其中任何像素属于肤色区域的概率,即根据该点与高斯分布中心的距离得到其与肤色的相似度[9],计算公式为
P(Cg,Cr)体现了各像素与肤色的相似程度。P(Cg,Cr)值越大表示属于肤色的可能性也越大,反之越小。
根据肤色相似度,采用阈值化技术将图像转换成二值图像来获取肤色区域。然后,对肤色二值图利用数学形态学运算滤除噪声,去除小的不相关区域,再通过对图像的连通域搜索、二值图像的孔洞信息等条件进行筛选,得到一个比较平滑的人脸区域,如图1所示。
图1 肤色分割结果
AdaBoost算法[10]的基本思想是集合大量的弱分类器来形成一个强分类器。这种算法的缺点是[11]当训练集包含少数难以分类的样本时,Ada-Boost算法会聚焦于这些特殊样本,给这些样本分配很高的权值,最终由于反复迭代导致权重分布严重扭曲,产生过增益现象。
为避免训练过程中的过增益现象,本文采用了一种新的权重更新方法[11],基本思想是对每次循环设置一个权重阈值,当样本被错误分类并且其当前权值小于阈值时,则增加样本权值,否则减小其权值。同时在训练过程中构建级联分类器,这样就不需要再单独构建分类器[12]。算法描述如下:
给定训练样本{(x1,y1),(x2,y2),…,(xn,yn)},其中真假样本的数量分别为 m和 h,yi={0,1},i=1,2,…,n 分别对应样本的假和真。
1)首先,需要确定强分类器的数量P和强分类器的平均错误率RP、RP是序列递减的。
2)初始化权重。设 ωt,i为t次循环中第 i个样本的误差权重,如果 yi=1,则 ωt,i=1/2m;否则ωt,i=1/2h。
3)进行迭代操作。
②采用弱分类器算法,从确定的弱分类器中找出一个具有最小错误εt的弱分类器ht;
③设训练过程中的权重阈值为
④更新样本权重:
其中:βt=εt/(1 - εt),vt是使的一化因子;
⑤t=t+1。
4)计算当前强分类器的平均错误率。
①集合最优弱分类器形成强分类器
②计算强分类器的平均错误率
③如果ε≥Rp,进入步骤3),其他情况进入步骤5)。
5)输出强分类器,更新样本进入步骤2)。
集合所有强分类器形成级联分类器,采用改进的权重更新规则,进而有效地避免了过增益现象。
肤色检测具有较快的速度,但由于光照的影响,那些不包括人脸的肤色区域以及和肤色相似的背景区域容易被错误地认为是人脸区域,因此造成高虚警率。为了在提高检测速度和检测率的同时降低虚警率,本文将肤色检测算法和改进的AdaBoost算法相结合来实现人脸检测。基本思想是:将候选人脸区域从被检图像中分割出来,然后输入到AdaBoost分类器中进行检测。这样就不需要对整个图像进行扫描,因此,检测速度可以明显提高。图2和图3给出了每一步的检测结果。
图2 组合算法的单个人脸检测结果
本文的训练样本采用 Bao face database[13]数据库中的人脸图像,真假样本数量分别为2 439和4 381。测试环境为 P4,3GHz CPU,2G 内存,操作系统为 Windows XP,在VC++6.0平台上编程实现。部分检测结果如图4所示。表1是检测率比较。表2是检测速度比较。实验结果表明,本文的算法较能有效避免传统的AdaBoost算法中的过增益现象,充分利用了肤色检测的快速性和Ada-Boost算法的准确性,在检测速度和检测率上都比基于传统 AdaBoost算法的人脸检测方法有所提高。
图3 组合算法的单个人脸检测结果
图4 部分检测结果
表1 比较检测率和虚警率
表2 比较检测速度 ms
将肤色检测和改进AdaBoost算法检测相结合,提出了一种新的人脸检测方法。首先,利用肤色检测方法确定被检图像中可能的人脸区域。然后,针对传统AdaBoost算法在训练过程中的过增益现象进行了改进,通过新的权重更新方法,使其有效避免过增益现象,提高检测率,降低误识率。最后,将肤色检测结果输入到改进AdaBoost分类器中进行检测,确定人脸。实验结果表明,这种方法具备了肤色检测的高速性和改进AdaBoost算法的高检测率,达到了较好检测效果。
[1]Cha Zhang,Zhengyou Zhang.A Survey of Recent Advances Face Detection[J].Tech Rep,Microsoft Research,2010(3):125 -127.
[2]王展飞.基于监控视频的人脸检测与实时跟踪提取[D].南京:南京理工大学,2009.
[3]徐锦.人脸检测的自适应肤色分割算法研究[J].贵州大学学报:自然科学版,2007,24(2):171 -174.
[4]任成娟,胡淑芳,刘崇文.子模式局部保持映射人脸识别算法[J].重庆理工大学学报:自然科学版,2011,25(6):84-89.
[5]张彤,卢雯雯,肖南峰.基于BP网络的人脸朝向识别方法[J].重庆理工大学学报:自然科学版,2010,24(6):61-65.
[6]Paul Viola,Michael J.Jones.Robust Real-time Object Detection[M].Cambridge:Cambridge Research Laboratory,2001:1 -24.
[7]De Dios J,Garcia N.Face Detection Based on a New color Space YCgCr[C]//Proceedings of International Conference on Image Processing.USA:[s.n.],2003:909-912.
[8]Jian-Guo Wang,Yu-Sheng Lin,Jing-Yu Yang.First Faceregion Location Based on a Novel Color Space YcgCr[J].Computer Science,2007,34(5):228 -233.
[9]赵明华.人脸检测和识别技术的研究[D].成都:四川大学,2006.
[10]Paul Viola,Michael Jones.Rapid Object Detection using a Boosted Cascade of Simple Features[C]//IEEE CVPR.USA:[s.n.],2001.
[11]Xiong Sheng-wu,Zong Xin-lu,Zhu Guo-feng.Improved face detection method based on AdaBoost algorithm[J].Application Research of Computers,2007,24(11):298-300.
[12]Lin Peng.Study And Implementation of Face Detection Based on AdaBoost Algorithm[D].Xi’an:Xi’an University of Technology,2007:24 -28.
[13]Frischholz R.Bao face database at the face detection homepage[EB/OL].[2010 - 08 - 11].http://www.facedetection.com.