陈立阳,赵逢禹
(上海理工大学 光电信息与计算机工程学院,上海 200093)
人脸检测[1-2]主要检测视频和数字图像中的人脸,在人机交互界面、安防系统、监控系统、基于内容的图像检索等方面有广泛的应用。一般来说,人脸检测系统的目标是获取图像并准确检测出面部,并且不受人物姿势、图像尺寸或面部表情等因素的影响。
文中主要针对图像中重叠的人脸检测问题进行研究。当两个或多个人脸重叠时,单独地使用传统的人脸检测方法来检测面部是一项具有挑战性的任务。文献[3]提出了基于肤色方法的面部检测模型,该模型能够迅速地检测出有效的人脸区域。但是当图像中存在重叠的多个人脸时,该模型倾向于将它们检测为一个人脸。在基于面部特征的方法中,Hear-Like特征[4]将人脸以一种量化的方式表示,但是如果重叠区域大于另一个区域,则丢弃区域可能性低的区域,这种做法可能导致丢失人脸中其他的重要信息。同时,在基于模板匹配[5]的人脸检测方法中,使用特征脸(Eigenfaces)来匹配图像中的人脸,但是重叠的人脸的低匹配系数会导致整体的匹配度下降,虽然使用边缘检测方法可以改善这一现象,但是增加了算法的复杂性。最近,文献[6-8]提出了基于卷积神经网络(convolutional neural network,CNN)的多任务CNN人脸检测方法,该方法通过多个特征分类器来检测人脸,但是文献[6]的算法需要额外的人脸边框校准开销,文献[7]的算法虽然大大减少了这种开销,但是算法中的检测召回依然受到弱人脸检测器产生的初始人脸检测窗口的限制。为了解决这种限制,文献[8]牺牲了部分的检测时效性以使得检测结果更加准确。因此,对于重叠人脸的检测,这种方法的检测时效性和准确性依然有待改善。
尽管人脸检测的方法比较多,但是在检测时效性和准确性上依然存在不足。MTCNN在重叠人脸检测时,虽然检测准确性和时效性有待提高,但仍是一个比较有效的框架。因此,针对重叠人脸检测问题,文中以MTCNN作为基本框架,通过合适的特征提取算法收集大量的重叠与非重叠人脸特征数据集,将这些数据集用于训练多任务卷积神经网络模型,然后优化人脸框与人脸特征点的标记算法,使检测出的人脸更加准确,最终使整个框架能够成为在重叠人脸检测场景下的一个高效的解决方案。
将改进后的MTCNN称之为多特征多任务级联卷积神经网络MF-MTCNN(mixed feature MTCNN)。在检测重叠人脸时,先区分人脸和非人脸部分,然后得到大量的人脸候选框,并给这些人脸候选框一个初始得分。然后使用人脸肤色检测法二次检测来过滤掉无效的人脸候选框,并重新调整人脸候选框的得分,接着使用非极大值抑制法[9](non-maximum suppression,NMS)比较候选窗口之间的重叠度[9](intersection over union,IoU),删除重叠度大于阈值的候选窗口获得最终的人脸检测窗口。重叠人脸检测框流程如图1所示。
人脸分类学习的目的是区分人脸和非人脸部分,因此框架的第一步是训练出一个人脸分类器[10]来摒除非人脸部分。文中通过人脸特征提取来构建多个人脸特征分类器,根据这些人脸特征分类器的分类结果来区分人脸和非人脸。主要是研究重叠人脸的检测问题,但是最终还是需要检测出单个人脸,因此既要考虑单个人脸具有的特征也要考虑重叠人脸具有的特征。结合人脸的多种特征可以更为准确地区分出人脸,最终通过人脸分类器分类后会输出包含人脸的图像和对应的图像得分,人脸候选框集合为B={B1,…,Bi,…,BN},人脸候选框得分列表为S={S1,…,Si,…,SN}。文中选择了人脸的五个特征来构建人脸特征分类器,分别为左眼、右眼,鼻子,左嘴唇、右嘴唇。每个特征的得分权重都为0.2,通过这五个特征分类器的分类结果可以确定最终的人脸候选框集合和候选框得分集合。
图1 重叠人脸检测流程
由于主要研究的是重叠人脸的检测问题,人脸的重叠数量越多,人脸候选框的数量也会越多,因此在第一步中会产生大量的人脸候选框。为了快速地筛选出有效的人脸候选框,文中采用了人脸肤色检测[11]方法。第一步中主要依靠人脸的特征来辨别人脸,检测结果可能不够准确,因此根据第一步得到的候选框在原图中截取对应的区域,然后结合人脸肤色来进行二次检测,重新确定这些候选框的得分。调整得分的规则为新的得分等于旧的得分乘肤色区域在图像中的比例,然后去除得分低于得分阈值St的人脸候选框。
经过上述两个步骤之后,可以得到有效的人脸候选框,但是同一张人脸依然可能得到多个有效的人脸候选框,因此去掉冗余的人脸候选框之后才能得到最终的结果。在这一步中,主要利用NMS算法来比较人脸候选框之间的重叠度,然后去除重叠度高的人脸候选框来获得最终的人脸检测窗口。
人脸候选框的去重过程主要涉及到候选框重叠度的计算,文中的人脸候选框重叠度计算过程为:
(1)从人脸候选框集合B={B1,…,Bi,…,BN}中选择一个候选框得分最大的人脸候选框M;
(2)对于任意一个人脸候选框Mi,当Mi不属于B时,计算M与Mi的重叠度I(M,Mi);
(3)I(M,Mi)的计算采用基于人脸特征向量的相似性度量算法。
输入:
M与Mi的人脸特征向量,人脸特征向量为X={X1,X2,…,X9},Xi分别表示为人脸宽度(cm),人脸高度(cm),人脸平均肤色的RGB值,左眼长度(cm),右眼长度(cm),鼻子长度(cm),嘴唇宽度(cm)。
输出:
两组向量的相关系数,即人脸重叠度I(M,Mi)。
处理过程:
先计算两个向量的协方差,协方差计算如下:
(1)
然后计算两个向量各自的方差,方差计算如下:
(2)
最后计算人脸重叠度,人脸重叠度计算如下:
(3)
在MF-MTCNN模型中,用于训练的数据集需要有人脸特征,良好的特征提取算法可以快速提取出人脸特征,在输出人脸候选框时起到关键性的作用。为了获取人脸的特征,收集了100个人的单独人脸图像、重叠人脸图像、人工合成的重叠人脸图像。最终目的是输出准确的人脸候选框。因此,选择的实验素材一般都具有明显的人脸特征。但是当人脸互相遮挡时,对于同一张脸的特征,单人脸图像和重叠人脸图像有很大的区别,所以在特征提取的时候,选用不同的特征提取算法对同一人脸进行处理,特征分类器构建流程如图2所示。在图2中对单一人脸图像采用HOG特征[12]算法提取特征,对重叠人脸图像采用LBP特征[12]算法提取特征。提取出人脸特征后,对这些特征做归一化处理[13],将特征值缩放到相同区间可以获取性能更好的人脸检测模型。
图2 特征分类器构建流程
为了提高算法的迭代效率,需要尽可能地减少在每层网络中生成的大量人脸候选框,图3给出了人脸候选框筛选处理流程。
图3 人脸候选框筛选流程
在某一层网络中获取到大量的人脸候选框之后,根据候选框的区域截取对应的图像。然后文中决定采用通过从NTSC色彩空间[14]获得的Chrominance通道减去从HSV色彩空间[14]获得的Hue通道形成的混合色彩空间进行人脸肤色检测,通过通道相减可以对人脸肤色进行定性定量的分析,主要用于得到人脸肤色由哪些颜色构成和不同颜色像素的数量,这种方法相对于传统的人脸肤色RGB[15]值判别法更加准确。
在每一层网络中会生成大量的人脸候选框,虽然对人脸候选框进行有效的过滤后,会减少一些无关的人脸候选框,但是依然会有大量的人脸候选框存在,而最终的输出结果要保证每一个独立的人脸只有一个人脸框。因此,MF-MTCNN模型中主要使用NMS算法对这些冗余的窗口进行筛选和删除。
MF-MTCNN的NMS算法:
输入:
NMS算法的输入为人脸候选框集合B={B1,…,Bi,…,BN}和人脸候选窗口的得分列表S={S1,…,Si,…,SN}。
输出:
NMS算法最终的输出结果为每一个人脸只保留一张人脸候选框及其对应的得分。
处理过程:
(1)最终检测结果集D设置为空。
(2)当人脸候选框集B为空时,转步骤6。
(3)从集合B中选择一个得分最大的人脸候选框记为M,从集合B中移除M,并将M加入到D中。
(4)for eachMi∈B,计算M与Mi的重叠度I(M,Mi)。将得分S改为重叠度的函数,如下:
Si=Si(1-I3(M,Mi))
(4)
其中,当Si≤St,则把Mi从B中删除。
(5)转步骤2。
(6)输出集合D。
(7)结束。
为了验证文中提出的算法在重叠人脸检测上有更好的时效性和准确性,将该算法与其他主流算法在FDDB数据集和WIDER FACE数据集上进行人脸检测性能比较。参与对比的算法包括V-J、Cascade CNN和MTCNN。验证的标准主要包括两个方面:检测正确率和检测时间。
3.2.1 人脸检测正确率验证
人脸检测正确率曲线如图4所示。
图4 人脸检测正确率曲线
计算公式为:
检测率=(已检测人脸数-误检测人脸数-重复的人脸数)/总人脸数
式中,已检测人脸数表示根据算法检测出来的人脸框,误检测人脸数表示假阳性人脸框,重复的人脸数表示同一张人脸重复检测的次数。对图4分析可知,当人脸个数比较少的时候(小于10个),四种模型的检测正确率相差不大(0.1以内);当人脸个数继续增大时,几种模型的检测正确率的差距就显现出来了,观察图4可知,随机选择十个样本进行检测,MF-MTCNN模型的平均人脸检测正确率约为92.3%。
3.2.2 人脸检测时效性验证
图5展示的是四种模型的人脸检测算法耗费的时间。从整体上来看,四种算法的耗时都随着样本数的增加而增加,但是很明显地可以看到,MF-MTCNN模型的增长速率和增长量几乎都是最小的,即MF-MTCNN模型相对其他模型能够快速地检测出人脸。具体到数据来看,MF-MTCNN模型最终检测时间为35 s,平均处理每张图片的时间为0.035 s,其他三种算法的平均处理时间分别为0.042 s,0.045 s,0.05 s,相比之下,MF-MTCNN模型在检测效率上有所提升。
图5 人脸检测时效性曲线
从测试样本中随机选取三张图片,分别使用V-J、Cascade CNN、MTCNN、MF-MTCNN来检测图片中的人脸并标记特征,检测结果如图6所示。分析图6可知,MF-MTCNN相较于其他算法,检测的人脸数和特征数都更多。
图6 四种算法的检测结果
提出了一种重叠人脸检测方法,主要是对MTCNN模型的改进。在研究过程中,遇到的第一个问题就是重叠人脸实验数据的匮乏,利用现有的成熟的人脸数据集,对这些数据进行筛选并进行一些人工图片合成来完成实验数据的准备工作;接着分析了MTCNN模型存在的一些缺陷,主要有两点,一是在网络中生成的人脸候选框数量太多,导致每一层网络中筛选次数太多,进而影响整个算法的性能,二是NMS算法的重叠人脸漏检问题。对此,提出在原有的MTCNN模型中加入一个过滤层和改进的NMS算法来提高性能;最后与现有的一些重叠人脸检测算法进行对比,发现该算法在正确率和性能上都有所提升,验证了算法的可行性和可靠性。