一种基于Viola-Jones的改进人脸定位算法

2020-10-28 01:44董林鹭赵良军杨明中林国军石小仕
计算机技术与发展 2020年10期
关键词:偏角分类器人脸

董林鹭,赵良军,杨明中,林国军,石小仕,何 岚

(1.四川轻化工大学 自动化与信息工程学院 人工智能四川省重点实验室,四川 自贡 643000;2.四川轻化工大学 企业信息化与物联网测控技术四川省高校重点实验室,四川 自贡 643000)

0 引 言

随着5G网络的普及,人们利用人工智能服务社会的步伐随之加快。其中,人脸识别的应用场合变得普遍和友好。但是在环境复杂多变的实际应用中,计算机要想快速识别出背景复杂且人流量较大的不同场景下大批量的人脸信息,预先排除干扰锁定人脸是识别过程中非常重要的一步[1-3]。因此,人脸定位的研究能提高人脸识别精度和加快识别速度,成为众多学者研究的热点。

目前涌现出许多的人脸定位算法,较为成熟的方法有模板匹配法、SVM模型、AdaBoost算法[4-5]、深度学习[6]以及肤色检测[7],但这些方法都存在一定缺陷。如基于支持向量机(support vector machine,SVM)的人脸定位算法,其中翟社平提出利用局部二元模式(LBP)对图像进行特征提取,再利用SVM对其进行分类达到人脸定位的目的,但是该算法随着分块数的不断增加,提取到的特征向量的维数也随之增加,出现了“维数灾难”,导致算法训练阶段的时间变长[8]。

利用深度学习方法进行人脸定位,张衡提出基于级联卷积网络的人脸特征点检测,该方法根据网络预测的特征点位置,对局部区域进行裁剪,然后再对局部区域预测单个特征点,完成人脸的定位检测,但该方法对训练人脸的数量要求较高,当获得的特征点的数量较少时,造成此模型的应用范围较小[9]。

模板匹配法是最原始的图像处理方法,用人脸的形态模板与图像中的人脸进行匹配,虽运算速度较快,但对于复杂多变的图像该方法将失去人脸定位的功能。对于肤色定位检测,杨明中提出将彩色图像转换为YCbCr和HSI空间图像,对变化后的色域进行阈值设定,提取肤色达到人脸定位的目的,但是该方法同样有着较高的漏检率[10-11]。

沈翔提出基于肤色与改进Adaboost算法的人脸检测,利用双阈值的权重更新方式避免了分类器训练过程中可能出现的过拟合现象;人脸检测时利用肤色的聚类性,将检测到的肤色区域作为Adaboost分类器的搜索候选区域达到人脸定位目的[12-13]。

Viola-Jones(VJ)算法是由学者Paul Viola和Michael Jones共同提出的,相比于上述方法VJ算法有着定位速度快的优点,在人脸检测算法中具有重要的地位。该算法的提出标志着机器视觉研究成果具备了投入实际应用的能力[14-15],但该算法只能检测正面的人脸,对于侧面人脸检测的鲁棒性较差,同时对于多人的图像(毕业照)或人脸皮肤被污染(矿工人脸)的人脸检测漏检率较高。为了提升VJ算法的鲁棒性,重点研究了VJ算法的缺陷并对其进行改进。

1 VJ算法介绍

VJ算法主要分为三部分。第一部分,采用积分图像的方法快速提取图像的特征信息;第二部分,利用弱分类器对提取的特征进行分类,减少计算复杂度;第三部分,再采用级联分类器进一步分类,提高人脸定位的精确度。

1.1 对原图积分获得特征信息

设图像中的像素点为(x,y),将原图像转化为积分图,原理是图像中每一像素点(x,y)的和都由该点左上角所有像素的值相加后的和构成。满足表达式:

(1)

其中,r(x',y')表示原图像素值,rr(x,y)表示积分后得到的图像像素值。

灰色区域S的和满足表达式:

S=D-B-C+A

(2)

求和的图解过程如图1所示。

图1 和计算示意图

对灰度区域S进行积分获得该图片的特征,满足表达式:

(3)

其中,wi表示灰度区域S的权重,wiRctsum(S)表示灰度区域的图像像素积分,N表示灰度区域S的数量。

1.2 强分类器

VJ算法为了提升分类速度,将多个弱分类器进行加权组合构成一个强分类器,其中弱分类器满足表达式:

(4)

其中,s表示窗口大小为24×24的像素矩阵,f表示特征,p表示极性,θ表示分类器判断矩阵s的归类属性。

(5)

根据式(5)重新定义权重,满足表达式:

(6)

则强分类器表达式满足:

(7)

1.3 级联分类器

级联分类器是由多个强分类器串联组成的多级分类器,每一级的工作就是判断上一级被确定为人脸的区域是人脸还是非人脸,若是人脸就传递给下一级继续判断,若是非人脸就摒弃。因此,一幅图像被传递的级数越多,是人脸的可能性就越大。该过程如图2所示。

图2 级联分类器示意图

2 人脸偏角对算法的影响

VJ算法对人脸的偏角敏感性较大,当人脸倾斜时会使VJ算法无法识别出人脸位置,为了解决该缺陷,该文通过实验的方法确定出人脸左偏角度和右偏角度对算法定位出人脸性能的影响。

为了验证偏角对VJ算法人脸定位精确度有影响,第一个实验如图3所示,将一位正脸的人脸进行偏转角度处理,统一到同一图像中让VJ算法进行人脸定位。第二个实验如图4所示,将有偏转的人脸进行校正处理,统一到同一图像中让VJ算法进行人脸定位。第三个实验如图5所示,将不同人脸(包含了有偏转角的人脸和正脸的人脸),让VJ算法进行人脸定位,同时选用的图像均为标准的测试像。

图3 同一人原图正脸与调整偏转角的

图4 同一人原图偏角与矫正后人脸检测对比图

分析图3~图5,无论同一人的人脸发生了偏角还是对有偏角的人脸矫正,VJ算法只能识别正面的人脸。实验验证了VJ算法对有偏角的人脸定位鲁棒性较差。同时,证实了本文猜想,调整偏角脸的角度能提高VJ算法人脸定位的性能。

图5 不同人包含正脸与偏角脸的人脸检测对比图

为了能使算法自适应调整人脸的偏角度,首先得确认VJ算法能定位人脸与不能定位人脸的角度区间。采用标准测试图正面人脸进行角度偏差实验,定义正面人脸α=90°,左偏α=45°~89°,右偏α=91°~130°。将所有图像统一到一幅图像中让VJ算法同时进行人脸检测。实验结果如图6所示。

图6 VJ算法有效检测角度实验结果图

分析图6,从实验结果可得,VJ算法的有效人脸检测偏角θ在70°~115°之间。因此,文中算法的思想是,首先将图像从RGB模式转化为YCbCr模式,利用色域阈值过滤掉非皮肤区域,再在过滤后的基础上进行人脸检测,排除检测到的人脸,对候选区域进行形态学筛选排除手臂等肤色的干扰,最后对剩下的区域进行角度矫正,达到提升VJ算法性能的目的。

3 疑似人脸区域定位与矫正

3.1 基于肤色与形态学定位疑似人脸区域

肤色转化模型算法[7]满足表达式:

(8)

再根据YCbCr模式下皮肤的颜色像素区间在90≤Cb≤130和130≤Cr≤170来设定色域阈值,滤掉大部分非皮肤颜色的背景如图7(b)所示,再利用VJ算法对图7(b)进行人脸检测,检测结果如图7(c)所示,最后利用形态学处理方法进一步去干扰,同时去掉已经检测出的人脸区域,得到疑似人脸区域如图7(d)所示。

图7 可疑人脸定位过程图

3.2 疑似区域矫正

在获得图7(d)后,利用矩形框框出图中所有的联通区域,各自在图中形成一幅独立的图像,如图8所示。

对独立图像进行图像旋转处理达到人脸矫正的目的。如图9所示,对图8中某一候选可疑人脸区域进行旋转。以标注框内图像中心为旋转中心0建立坐标系并标出x轴和y轴,设点图像中某像素点f(x1,y1)经过逆时针旋转到f(x0,y0),旋转角度为α,整个过程O点到待旋转像素点f(x1,y1)的半径距离r恒定且与x轴的夹角为β。

图8 疑似联通区域框图

图9 矫正示意图

则点f(x,y)的表达式为:

(9)

点f(x1,y1)的表达式为:

(10)

将式(9)代入式(10)化解后满足:

(11)

则图像的矫正中左偏公式满足:

(12)

同理,右偏公式满足:

(13)

为了减少计算复杂度,通过实验结合实际,规定矫正的角度α的旋转角度和旋转方式。目的是为了达到算法的自适应的性能。

对于旋转角度α,根据图5的有效偏角实验结合人脸偏角习惯分析,人脸在未被检测出来的情况时其左偏角集中在45°到70°之间,右偏角集中在115°到135°之间。即左偏角差不能检测的角度区间有35°,右偏角不能检测的角度区间有20°。即矫正步骤如下:

(1)假设未矫正前人脸左偏,则对可疑人脸区域进行矫正向右旋转35°。因为,假如未矫正之前人脸偏转角为45°加上35°后矫正到80°,则人脸偏角在VJ算法的检测角度范围内。如果未矫正之前人脸偏转角为70°加上35°后矫正到105°,同样矫正后的人脸在VJ算法的检测角度范围内。

(2)若在步骤(1)下无法检测到人脸,则考虑人脸未矫正前向右偏,对可疑人脸区域进行矫正向左旋转20°,因为,当人脸在未矫正之前偏转角为135°减去20°矫正到115度,则人脸偏角在VJ算法的检测角度范围内,如果未矫正之前人脸偏转角为115°减去20°后矫正到95°,同样矫正后的人脸在VJ算法的检测角度范围内。

(3)如果前两步都未能检测出人脸,则直接结束矫正运算,判定可疑区域为手臂、背景等干扰区域。

4 实 验

为了验证文中算法的真实有效性,以MATLAB2016a编程,以2.60 GHz的英特尔处理器、内存为8 GB的笔记本为平台进行实验仿真。实验中采用三个标准人脸检测库Faces、IMM和AFW进行人脸检测实验。同时,利用VJ算法和文献[10]算法与文中算法进行对比。

实验结果如表1所示。

表1 不同算法检测结果比较

文中算法对于有偏角人脸且背景复杂的人脸正检率较VJ算法提高较10%,较文献[10]算法提高6%。误检率对于Faces人脸库文中算法较VJ算法降低13%,对于AFW人脸库文中算法较VJ算法降低12%。实验结果表明,文中算法能有效提高正检率,降低误检率,提高VJ算法的应用性能。

5 结束语

总结了VJ算法的基本原理,并对VJ算法的偏角漏检的角度进行试验,提出了一种改进方法,对研究人脸检测的学者具有一定的参考意义。同时,该算法能有效提高多人图像中人脸的检测率,但还是存在漏检与误检的情况。接下来将进一步研究人脸检测的特点,提高人脸的检测率,降低误检率。

猜你喜欢
偏角分类器人脸
少样本条件下基于K-最近邻及多分类器协同的样本扩增分类
学贯中西(6):阐述ML分类器的工作流程
有特点的人脸
玻璃窗上的人脸
基于朴素Bayes组合的简易集成分类器①
翼吊长涵道发动机短舱内偏角优化和机理研究
2018全国Ⅱ卷选修3-4中偏角的解法探讨
欧姆表偶然误差分析
基于AdaBoost算法的在线连续极限学习机集成算法
“领家系”可爱脸VS“高冷系”美人脸