基于肤色分割和改进AdaBoost 算法的人脸检测

基于肤色分割和改进AdaBoost 算法的人脸检测

段玉波,任璐, 任伟建, 霍凤财
(东北石油大学电气信息工程学院, 黑龙江大庆163318)
摘要: 为解决当被检测图像中具有复杂背景或者含有多人脸时,不能够快速准确的进行人脸检测的问题,本文提出一种基于肤色分割和改进AdaBoost 算法的人脸检测方法。首先利用肤色分割方法对样本图像实现图像的预处理,排除样本图像的复杂背景和人体非肤色区域,简化后续的人脸检测工作。然后对AdaBoost 算法的弱分类器使用双阈值判决方法,以减少弱分类器个数,提升训练速度;改进权值更新规则,防止训练过程中出现过分配现象。最后对基于肤色分割得到的区域图像利用改进后的Adaboost 算法进行最后的精确人脸检测。仿真试验表明,两种算法结合后在训练速度上提升,在检测速度和检测率上有明显提高。
关键词: 肤色分割;双阈值;权值更新;预处理;过分配;人脸检测


Abstract: To solve the problem that can not detect face quickly and accurately when the detected images has complex background or contain more faces,A face detection algorithm combined with skin color segmentation and improved Adaboost algorithm is presented.Firstly,pretreatment of sample images to achieve image by using skin color segmentation,exclusion of sample images with complex background and human non鄄skin regions,the follow鄄up work has been simplified.Then the dual鄄threshold decision method of weak classifiers Adaboost algorithm is used to reduce the number of weak classifiers and improve the training speed.Improved weight update rules to prevent distribution of the phenomenon appeared in the training process.Finally, the improved Adaboost algorithm is used to get the final accurate face detection based on areas of the image through skin color segmentation. Simulation results show that the combination of two algorithms improved the training speed the detection speed and detection rate has improved significantly.
Key words: shin color; segmentation; dual鄄threshold; weight update; pretreatment; distribution; face detection


人脸检测是指对于任意一幅给定的图像,采用一定的略对其进行搜索以确定其中是否含有人脸,如果有则返回人脸的位置、大小、姿态。目前,基于神经网络、Adaboost(AdaptiveBoost)、隐马尔可夫、支持向量机等统计模型的算法是现今国内外比较流行的人脸检测方法[1]。2001 年,Paul Viola 和Michael Jones [2] 提出一种利用Haar-Like 特征的AdaBoost 人脸检测,这些方法从根本上解决检测速度的问题,并且具有较好的识别效果。但由于AdaBoost 算法本身在训练样本的过程非常耗时, 导致基于AdaBoost 的检测系统不能够灵活扩展。李闯等[3]提出针对目标检测问题的改进AdaBoost 算法,采用新的参数求解方法,提高对正样本的识别能力,减少了训练时间,但检测效果提升不明显。
本文首先提出利用双阈值构造弱分类器,改进AdaBoost算法中因为样本特征过多,单阈值划分出的大量特征,形成的弱分类器会导致的训练时间过长。其次,提出改进权重更新规则,解决训练困难样本时会因为算法对这些样本分配高权重,造成的过分配而影响算法性能。最后,结合肤色分割降低对检测样本人脸检测的误检率,实现快速准确的人脸检测。


1 肤色检测
研究证明[4],肤色的主要差异在于灰度信息即亮度信息,而不是色度信息。通过在合适的颜色空间上对肤色采样,建立一个分部函数或区分肤色与非肤色的合适阈值,就可以实现肤色和非肤色的区分。本节主要做人脸检测的肤色预检部分, 利用光线补偿排除光线条件对样本图像的影响, 采用YCgCr 颜色空间的高斯肤色模型来分割肤色区域,最后对分割后的二值图像进行数学形态和连通区域处理,实现对样本图像中的人脸初定位。肤色模型分为阈值分割模型、直方图模型、简单高斯模型和混合高斯模型等模型,本文采用的是简单高斯模型对肤色建模。确定肤色点在CgCr 二维子空间的二维高斯模型联合概率密度函数为:



其中x=(Cg,Cr)为像素点的色度向量,C 和m分别表示协方差矩阵和均值向量。根据式(1)将每个像素点的颜色空间由RGB 转换到YCgCr, 得到的每个肤色像素的色度值(Cg,Cr)。利用得到的每个像素点的色度值进行统计计算,得到相应的估计参数:m=(C軍g,C軍r)。N 为肤色像素点的数量,C軍g,C軍r 表示Cg,Cr 的统计平均值。


肤色似然概率P(x)表示像素点与肤色的相似程度,P 值越大,表示属于肤色的可能性越大,反之越小。得到肤色似然图后,采用Otsu 自适应阈值法将图像转换成二值图像来获取肤色区域。然后通过运用数学形态学运算的膨胀腐蚀对二值图像进行去噪处理,再通过对图像的连通域搜索和几何筛选,确定肤色区域。


2 改进的AdaBoost 算法
AdaBoost 算法的核心思想是针对同一个训练集, 训练一系列分类能力不强的弱分类器, 然后把这些弱分类器集合起
来,构成分类能力强的强分类器。对弱分类器的要求只要其分类的准确度大于50%即可[5]。
本节针对Adaboost 算法的改进有两点:1)采用双阈值构造弱分类器, 解决传统单阈值构造弱分类器因为采集的样本特征多,会形成大量弱分类器,造成训练时间过长。2)通过在每轮训练中定义阈值, 再结合样本是否被错误分类来更新样本权重,解决困难样本在每轮训练中由于被过分分配权重,发生的权重过增益现象。结合两点改进, 使改进后的Adaboost算法样本训练时间减少,使优化后的Adaboost 算法分类器检测效果增强


2.2 算法改进
2.2.1 双阈值构造弱分类器
以24×24 像素的训练样本为例,Haar-Like 特征的总数超过16 000 个,而且训练样本数量很大。根据每个特征对应一个弱分类器,需要非常庞大的弱分类器。用双阈值的方法构造弱分类器,通过双阈值控制阈值范围,减少训练的特征数量,使用更少的弱分类器达到同样的分类效果[6]。双阈值分类器有上限、下限两个阈值,两个阈值分别对应两个方向参数,设阈值1、2 分别为θ1 和θ2。双阈值确定首先要求出真样本、假样本的特征曲线,分别为P(x)和Q(x),然后对每个特征x 计算P(x)-Q(x),求出max[P(x)-Q(x)]对应的特征值x′。从求得的特征值x′左右两边搜索两个阈值点,使P(x1)-Q(x1)=0,P(x2)-Q(x2)=0。x1,x2 分对应阈值θ1 和θ2。当θ2≥θ1,对应图2(a)生成的弱分类器真假样本的分类结果:

基于肤色分割和改进AdaBoost 算法的人脸检测_第1张图片


式(2)中θ2为将真样本分类在坐标轴负方向的最佳阈值,θ1 为将真样本分布在坐标轴正方向的最佳阈值, 将两者结合起来,样本分布概率图如图1(a)所示。式(3)同理,样本分布概率图如图1(b)所示。

基于肤色分割和改进AdaBoost 算法的人脸检测_第2张图片


2.2.2 权重阈值设定
AdaBoost 算法在每一轮训练之后,样本的权重都要变化,针对训练失败的样本给予较大的权重, 使算法集中在没有被正确分类的样本上[7-8]。当训练中出现一些难以训练的困难样本时,算法会给这些困难样本分配高权重,使样本权重分布扭曲,出现过度分配现象。同时,由于训练轮数不断增加,可能会逐渐破坏或丢失之前生成的比较准确的分类规则, 导致算法检测能力下降。为了避免训练过程中的过分配现象,本文采用这样的权重更新方法, 控制正确识别样本与错误识别样本的权重增长:对每轮训练设置一个阈值HWt,结合样本是否被分类错误以及当前权重阈值是否大于HWt来给样本更新权重。改进过程如下:对于每个样本中的特征j, 根据双阈值θ1,θ2得到相对于该特征的一个弱分类器hj,并求出错误率在已经确定的弱分类器中,找出具有最小错误率的ht(xi)。设定训练中的权重更新阈值HWt=nj=1 移wt, j /n,并根据此轮选中的弱分类器的分类结果来更新样本权重:

基于肤色分割和改进AdaBoost 算法的人脸检测_第3张图片


其中Zt 是使ni=1 移wt+1,j=1 的归一化因子,HWt 是第t 轮训练中的权重更新阈值。T 轮训练结束后,最终的强分类器为:

基于肤色分割和改进AdaBoost 算法的人脸检测_第4张图片


将预测函数H(x)作为人脸检测函数来判断人脸,集合所有的强分类器形成级联分类器。根据式(6),当样本被正确分类,即ht(xi)=yi 时,权重更新如图3 (4);当样本没有被正确分类ht(xi)≠yi,并且该轮的权重wt,i 小于该轮的权重更新阈值HWt,由上知εt<0.5,则第t+1 轮样本权重更新系数为Zt(1-εt)/εt>1。此样本的权重才会被增加,否则,权重被减小。采用这种新的权重更新规则, 即使当困难样本在每轮训练中都被错误分类, 其权重不会被过分增加, 在一定程度上避免了AdaBoost分类器发生的过分配现象。


3 结合肤色和改进AdaBoost算法的人脸检测
单独用肤色检测方法对样本图像进行检测可以快速实现图像中对肤色的分割,并划分出人脸区域,但此方法的缺点的误检率较高,易把类肤色的物体当成人脸被检测出。因此,为了提高正检率,本文利用肤色检测与改进后的AdaBoost 算法构造的人脸分类器来共同实现人脸检测。基本思想:将样本图像中肤色区域从被检测图像中分割出来, 然后利用
Adaboost 分类器进行第二步检测,这样可以从原来需要对整个图像进行扫描的步骤中解脱出来,提高检测速度。检测系统流程图如图2 所示。


3.1 人脸检测
首先,初始样本图像如图3(a)所示,对其进行光线补偿后的图像如图3(b)所示。然后在选定的YCgCr 颜色空间上建立高斯肤色模型,得到肤色似然图像如图3 (c)所示。通过Otsu 法确定最优阈值得到最优阈值图像如3(d)所示。利用数学形态学去除细小的不相关区域如图3(e)所示,接着通过区域长宽比确定肤色分割后的区域如图3(f)所示。最后, 利用改进的Adaboost 分类器对经过肤色分割的肤色候选区域图像如图3 (f)所示进行最终检测,得到
精确地人脸检测图像如图3(g)所示,最终检测结果如图3(h)所示。


3.2 检测率与速度比较
本文采用MIT 人脸数据库中的训练样本用于AdaBoost分类器的训练,MIT 人脸数据库中人脸样本和非人脸样本的数量分别为2 429 和4 581,从人脸样本中抽取246 个作为分类器检测样本, 剩余人脸样本和非人脸样本用作训练样本。图像大小为19×19 像素,人脸图像包含多人种多人多角度多姿态的人脸,非人脸图像包含除人脸图像的类人脸、背景、衣物等非人脸部分, 这样的人脸数据库提供的样本具有多样性,训练出的分类器实用性强。测试环境为win7 操作系统,在Matlab7.0 平台实现编程。表1 是传统AdaBoost 算法与本文改进的AdaBoost 算法在分类器检测率上的比较,由表可见本文方法在检测率上明显优于传统算法。表2 是传统

基于肤色分割和改进AdaBoost 算法的人脸检测_第5张图片

AdaBoost 算法和本文方法对图4 在检测速度上的比较以及两种方法训练样本速度的比较。

4 结论
文中首先利用肤色分割提取出被检测图像中的肤色部分,然后针对传统AdaBoost 算法在大量弱分类器中选取所需要弱分类器的漫长过程,采用双阈值的方法构造弱分类器减少训练时间,改进了每轮训练中的权重更新规则,避免过分
配现象,提高检测率。最后,将肤色分割后的结果输入到改进后的AdaBoost 分类器进行检测,确定人脸区域。上图结果表明,基于肤色分割和改进AdaBoost 算法的人脸检测具有较高检测率,达到了较好的检测效果。



你可能感兴趣的:(人脸识别)