基于肤色和Adaboost算法的人脸检测作者:付炜孔祥栋来源:《现代电子技术》2010年第06期摘要:人脸检测是人脸识别的第一环节,也是非常关键的环节。
试验中主要针对静态彩色图像进行人脸检测,研究肤色在人脸检测中的应用。
不同图像背景、人脸的可变性和光照条件变化都增加了人脸检测的难度。
因此,从一幅图像中检测人脸是一项具有挑战性的任务。
采用Adaboost 的人脸检测,并提出肤色与Adaboost 算法相结合的人脸检测方法。
对输入的彩色图像进行从RGB 空间到YCbCr 空间的转换,然后进行肤色分割,排除背景干扰,最后用Adaboost 算法对可能区域进行检测,得到人脸位置。
实验表明,该方法误检率低,鲁棒性好,对人脸检测有较强的实用性。
关键词:人脸检测;Adaboost算法;Haar特征;肤色分割中图分类号:TP391文献标识码:A文章编号:1004-373X(2010)06-131-04Face Detection Based on Skin Color and Adaboost ArithmeticFU Wei,KONG Xiangdong(Information Institute,Yanshan University,Qinhuangdao,066004,China)Abstract:Face detection is the first link and a key link in face recognition.static color image is used for detecting human face,and the primary research is skin color application in face detection.Different image background,face variability and change in light conditions have increased the difficulty of face detection.Therefore,face detection from an image is a challenge.Adaboost algorithm is used to detect human face,and a new method of face detection,which combines skin color with Adaboost is presented.Conversion of the input image from RGB to RCbCr,and then skin color is segmented,background interference is excluded,Adaboost is used to get face location from possible regional.Experiments show that this method has low rate of false detection,good robustness,and strong practicality to face detection problem.Keywords:face detection;Adaboost;Haar;skin segmentation人脸作为人类最重要的外部特征,在人与人的通信交流中起着极为重要的作用。
随着人机交互技术日益成为人工智能领域中的研究热点,人脸的检测已成为计算机视觉中一个备受关注的研究方向,在虚拟现实和人机交互等领域有广泛的应用前景。
目前,人脸检测方法主要有基于颜色特征的方法、人工神经网络方法、Adaboost 算法、主分量分析方法、模板匹配方法等。
针对人脸检测,各国的科研人员做了很多研究。
国外的有CMU,MIT 等,国内的有微软亚洲研究院、中科院计算所、中科院自动化研究所,清华大学等[3]。
长期以来,人脸检测受到检测精度和检测速度的困扰[4],直到Paul Viola 和Michael Jones于2001年提出基于Adaboost 算法的人脸检测方法,才极大地提高了人脸检测的速度和精度,使人脸检测技术真正走向实用。
但是,Adaboost 算法只是运用了人脸的灰度特征,有一定的局限。
在此,提出一种肤色与 Adaboost 相结合的人脸检测方法,利用肤色分割和基于Adaboost 算法的人脸检测既能快速地检测不同大小及一定旋转角度的人脸,又能快速准确地检测出多人脸图像。
1 光线补偿考虑到肤色等色彩信息经常受到光源颜色、图像采集设备中色彩偏差等因素的影响,在整体上偏离本质色彩而向某一方向移动,即通常所说的色彩偏冷、偏暖,照片偏黄、偏蓝等。
为了抵消这种整个图像中存在着的色彩偏差,将整个图像中所有像素的亮度从高到低进行排列,取前5%的像素,如果这些像素的数目足够多(例如,大于100),就将它们的亮度作为“参考白”[5],将它们的R,G,B分量值都调整为最大的255。
整幅图像的其他像素点的色彩值也都按这一调整尺度进行变换。
2 肤色分割研究发现[5],虽然不同人的皮肤颜色相差很大(特别是不同人种之间),但它们在色度上的差异远远小于亮度上的差异,为利用皮肤颜色在色度空间的聚类性,需要把图像中表达颜色的色度信息与亮度信息分开。
通常将图像中获取的用RGB三基色颜色分量表达的色彩空间转换为色度信息与亮度信息分开的色彩表达空间即可达到目的。
文中,肤色分割只作为人脸图像的预处理阶段,所以对精度的要求低,仅仅能去除掉大部分的非人脸区域即可,以便为下一步的人脸检测减少运算量,缩减运算时间。
经实验得知,在YCbCr空间,肤色在Cb和Cr信息上都在一个比较稳定的分布范围内:80≤Cb≤135,136≤Cr≤177。
符合这个区域的都将被认为是皮肤区域,进入下一轮的Adaboost算法检测。
在本文实验中,选用YCbCr空间作为肤色分布统计的映射空间,该空间的优点是受亮度变化的影响较小,而且是两维独立分布的,能较好地限制肤色分布区域[7]。
在YCbCr颜色空间中,Cb 和Cr分别表示蓝色和红色的色度,具有在HSV模型中将亮度分离的优点,而且还可以从RGB格式经线性变化得到[8],因此以它为基础的变换模型应用非常广泛。
RGB 空间可按公式(1)转换到YCbCr 空间:Y=0.299R+0.587G+0.114BCb=-0.168R-0.331 3G+0.5BCr=0.5R-0.418 7G-0.081 3B(1)因为人脸区域在图片中占有一定的比例,如果连通区域小于一定的阈值,就将该连通区域去除。
这样就可以有效去除由于彩色图像转换和二值化所造成孤立点噪声的影响。
3 Adaboost算法3.1 Haar特征Adaboost用于人脸检测是基于特征的方法,而不再基于像素。
在训练和检测时需要从人脸中抽取大量的简单特征,这里的特征是一种由矩形构成的特征向量,可以称为Haar特征。
Haar特征有几种典型的特征模板,它们是两矩形特征、三矩形特征和四矩形特征。
如图1所示,每个特征模板中矩形区域的大小是一样的,对于一个图像,可以在图像中任意位置放入任何尺寸的特征,但前提是不能超出图像的区域。
人脸的一些特征能够由矩形特征简单地描绘,例如,通常眼睛要比脸颊颜色更深,鼻梁两侧要比鼻梁颜色更深,嘴巴要比周围颜色更深。
所以构造这种Haar特征可以反映出一定的人脸特性。
矩形特征值指图像上两个或多个形状大小相同的矩形内部所有像素灰度值之和的差值。
在系统中统一采用白色区域所有像素灰度值之和减去黑色区域所有像素灰度值之和。
具体而言,一个两矩形特征的特征值是这两个矩形各自内部所有像素和的差值,这两个矩形拥有相同的大小和形状,并且是垂直或者水平相邻的;一个三矩形特征的特征值是由两边两个矩形各自内部所有像素及与中间矩形内部所有像素和的差值得到的;一个四矩形特征的特征值是由对角线上两个矩形各自内部所有像素和的和与另一对角线上两个矩形各自内部所有像素和的和之间的差值得到的。
图1 Haar特征模板为了加快Haar特征的计算,Viola 等提出积分图像的定义,积分图能够在多种尺度下,使用相同的时间来计算不同的特征,因此大大提高了检测速度。
通过引入积分图像(Integral Image)技术,使得这些矩形特征可以在常数时间内快速计算,从而在有效表示人脸特征的同时,提高计算速度。
下面介绍如何在每个像素点位置计算其积分图像的值。
如图2所示,(x,y)点的积分图像就是图中阴影区域的所有像素i(x′,y′)的灰度之和。
其中即(x,y)的积分图像值为:ii(x,y)=∑x′≤x,y′≤yi(x′,y′)(2)图2 积分图像积分图的求解十分简单,耗时也非常少,借助于下面的公式,经过对原始图像的一次遍历就可以获得原始图像的积分图像值为:s(x,y)=s(x,y-1)+i(x,y)(3)ii(x,y)=ii(x-1,y)+s(x,y)(4)式中:s(x,y)表示行积累和,并且初始条件为-1)=0,ii(-1,y)=0。
3.2 Adaboost算法描述Adaboost是一种迭代算法,其核心思想是针对不同的训练集训练一个弱分类器,然后把在不同训练集上得到的分类器集合起来,构成一个强分类器。
在算法中,每个训练样本都被赋予一个权重,表明它被某个分量分类器选入训练集的概率。
如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被正确分类,那么它的权重就得到提高[4]。
通过轮这样的训练,Adaboost算法能够“聚焦于”那些较困难的样本上,综合得出用于目标检测的强分类器。
算法过程如下:(1) 给定一个训练集{(x1,y1),(x2,y2),…,(xn,yn)}。
其中,xi是输入的训练样本向量,yi∈表示非人脸样本,yi=1表示人脸样本。
(2) 初始化样本的权重:ω1(xi)=1n,i=1,2,…,n(5)(3) 进行T轮训练,t=1,2,…,n,归一化样本权重:ωt(xi)=ωt(xi)∑nj=1ωt(xj)(6)(4) 对于每个特征j,训练一个简单分类器hj(x):hj(x)=1,pjfj(x)0,其他(7)式中:θj是一个阈值;pj=±1,用来控制不等式的方向,然后算出每个特征j所对应的分类错误率: εj=∑ni=1ωi(xi)|hj(xi)-yi|(8)选出分类错误类最低的简单分类器作为弱分类器将该错误率记为εt,调整所有样本权重:ωt+1(xi)=ωt(xi)βt,xi被ht正确分类ωt(xi),其他(9)式中:βt=εt1-εt。