朱富丽 杨 磊 姬 波
1(河南牧业经济学院 河南 郑州 450044) 2(河南信息统计职业学院 河南 郑州 450008) 3(郑州大学信息工程学院 河南 郑州 450001)
人脸检测是人脸信息处理领域的一项关键性技术,也是人脸特征点定位[1]、人脸比对[2]、人脸识别[3]、人脸超分辨率重建[4]等任务的前置操作,其检测效果直接影响后续操作的准确性,具有重要的研究价值。文献[5]提出了基于Haar特征和AdaBoost的人脸检测方法,取得了较好的人脸检测效果。文献[6]提出了基于树的集成学习方法来进行人脸检测,提高了检测精度,但仍受限于人工提取特征的表达能力和分类器的分类能力。目前,该类方法已经被基于卷积神经网络(Convolutional Neural Networks,CNN)[7-8]的深度学习方法取代,并且取得了较大的提高。尽管基于CNN的人脸检测方法得到了广泛的关注和研究,人脸检测准确率也不断提高,但是在复杂场景下,对小尺度、模糊和遮挡人脸的检测问题仍然存在困难。
目前基于CNN的人脸检测方法主要分为两类。一类是基于Faster R-CNN[9]中的区域建议网络(Region Proposal Network,RPN),它采用两阶段检测方案,在RPN中经过端到端的训练,生成高质量的区域建议图,然后送入Faster R-CNN执行进一步检测。另一类是基于单一网络(Single Shot MultiBox Detector,SSD)的人脸检测方法[10],它去除了RPN,直接在不同尺度的卷积层上进行人脸/非人脸判定和人脸边界框位置回归。文献[11]提出了一种利用人脸周边信息进行辅助的人脸检测方法,对小尺度人脸检测效果较好,但计算消耗较大。文献[12]通过规模补偿锚匹配策略提高了小尺度人脸的召回率,通过max-out背景标签降低了小尺度人脸的误报率。文献[13]提出了一种基于环境辅助的单一网络人脸检测方法,通过引入环境敏感预测模块提升了预测网络的人脸分类能力和最终输出的准确度。近年来,单一网络人脸检测框架因其高效的检测效率和直观的网络结构而备受关注。
本文在SSD人脸检测模型的基础上,针对复杂场景下的小尺度、模糊和遮挡人脸检测问题,进行三方面的改进:(1) 提出一个特征增强网络。在主网络SSD的多层特征图上,通过融合前后层特征图增强原始特征图的辨识度,并引入监督信息去学习上下文融合特征。(2) 在网络结构的设计上,集合多个增强特征图以组成附加增强网络,主网络与附加增强网络采用并行设置方式,加快对小尺度、模糊和遮挡人脸的检测速度。(3) 在训练阶段,为主网络和附加增强网络设置两种基于锚框尺寸的损失函数,并通过加权求和的方式对这两种损失函数进行融合。预测阶段仅对附加增强网络的特征图进行检测,在保持人脸检测精度的同时,降低时间损耗。
与Faster R-CNN等生成RPN的算法不同,SSD算法直接预测目标类别和候选框位置,具有很快的检测速度和精度。由于图像中的人脸具有多尺度特性,传统的人脸检测算法在检测人脸时,会先建立图像金字塔,然后在不同尺度的图像上利用滑动窗口进行人脸检测。而SSD算法另辟蹊径,通过在多尺度特征图上进行3×3大小的滑动卷积,实现了效果更佳的人脸检测效果。
基于SSD算法的人脸检测模型如图1所示,其中:Conv1_1到Conv5_3是VGG16的前5个卷积层;Conv6和Conv7是由2个全连接层改造的卷积层;Conv8_2到Conv11_2是新增的4个卷积层。该模型的输入是一幅300×300的包含单人脸或多人脸的图像,输出是一组离散人脸边界框和人脸/非人脸得分,对所有输出的人脸边界框进行非极大值抑制(Non-Maximum Suppression, NMS)后,得到最终的人脸检测结果。SSD算法在检测人脸时,利用了不同尺度特征图的信息,被检测的特征图为conv4_3、conv7、conv8_2、conv9_2、conv10_2和conv11_2,由图1可知,这些特征图的尺寸是依次减小的,这样就实现了多尺度人脸检测效果。
图1 基于SSD算法的人脸检测模型
该模型的损失函数包含了用于人脸/非人脸分类的log损失和用于人脸边界框回归的smoothL1损失,并对正负样本比例进行控制,提高了训练速度和检测结果的稳定性。
(1)
在训练时,通过计算默认检测框和真实标注框的交并比(Intersection over Union, IoU)来确定正负训练样本。取IoU>0.5的默认检测框为候选正样本集,取IoU≤0.5的默认检测框为候选负样本集。此时,候选负样本集的数量远大于候选正样本集,这会造成正负样本数量不平衡,降低训练时的收敛速度。因此,对于候选负样本集,用实际选取要投入训练的检测框与候选负样本集匹配,剔除掉匹配失败的检测框,这是因为它们的损失过小,容易被识别为背景,对整体网络训练的提升不大。
基于增强并行级联卷积神经网络的人脸检测模型如图2所示,它由主网络、特征增强网络和附加增强网络三部分组成。
主网络采用SSD算法在6个连续的卷积层上提取多尺度特征图,在不同的特征图上分别进行人脸/非人脸分类和人脸边界框回归。六个连续的卷积层为Conv3_3、Conv4_3、Conv5_3、Conv6、Conv7和Conv8_2,对应提取的特征图为f_1、f_2、f_3、f_4、f_5和f_6。由图2可知,输入图像的尺寸为384×384,因此从f_1到f_6的特征图尺寸分别为:96×96、48×48、24×24、12×12、6×6和3×3。
图2 基于增强并行级联卷积神经网络的人脸检测模型
特征增强网络对当前层的特征图和后一层的特征图进行归一化、卷积、池化、融合和激活等操作后,得到当前层的增强特征图。附加增强网络的检测层是经过特征增强网络处理后得到的,它由ef_1、ef_2、ef_3、ef_4和ef_5这5个增强特征图组成。当前层增强特征图ef_k(k=1,2,…,5)的长和宽都只有当前层特征图f_k(k=1,2,…,5)的一半,这是由于特征增强网络对当前层特征图进行了池化操作。另外,主网络和附加增强网络设置了并行的运行方式和不同的损失函数,进一步提高了人脸检测的速度和精度。
设置特征增强网络的目的是增强原始特征图的辨识度,以进一步提高对小尺度、模糊和遮挡人脸的检测精度。为了增强原始特征图,特征增强网络融合了第k层特征图和第k+1层特征图的特征信息,如图3所示。
图3 特征增强网络结构
由图3可知,第k层特征图与第k+1层特征图的维度不同,为了后续特征信息的融合,首先利用1×1大小的卷积核对第k层特征图和第k+1层特征图进行归一化处理,归一化处理后,第k层特征图和第k+1层特征图的维度都是512。此时,第k层特征图的长和宽都是第k+1层特征图的2倍,因此还要对第k层特征图进行2×2的最大池化。池化处理后两层特征图的尺寸完全一样,对其进行连接以得到a×a×1 024大小的融合特征图。最终利用512个3×3大小的卷积核进行边缘补0的卷积,得到原始特征图f_k的增强特征图ef_k。上述操作步骤可被归纳为:
ef_k=fConv3[fconnect(fpool(fConv1(f_k))+
fConv1(f_k+1))]
(2)
式中:fConv1表示归一化卷积;fpool表示对第k层特征图进行2×2最大池化;fconnect表示对第k层特征图和第k+1层特征图的连接操作;fConv3表示3×3的卷积。
(3)
(4)
(5)
为了验证本文算法的精确性和稳健性,选择FDDB[14](Face Detection Data Set and Benchmark)和WIDER FACE[15]人脸检测基准数据集进行实验,实验中选择LDCF+[6]、HR[11]、SFD[12]和PyramidBox[13]算法作为对比算法。本文网络仅使用WIDER FACE的训练数据进行训练,在两个数据集上分别进行测试。在训练时,使用反向传播的随机梯度下降来优化,最大迭代次数设置为105,前7×104次迭代,学习率为10-3,后3×104次迭代,学习率为10-4。批量大小设置为16,权重衰减设置为0.000 5,动量设置为0.9,所有卷积层参数都使用MSRA方法进行初始化。本文算法及其对比算法均采用Python代码实现,并在配置Nvidia GTX Titan X的电脑上运行。
将在WIDER FACE数据集上训练好的模型再在FDDB数据集上进行测试。FDDB人脸数据集共包含2 845幅图片,其中标记了5 171个具有遮挡、模糊、低分辨率和姿态变化的人脸图像。由于FDDB数据集用的是椭圆标注,而本文训练的模型输出的是矩形框,因此在测试之前需要将椭圆标注转化矩形框。本文算法与LDCF+、HR、SFD、PyramidBox算法在FDDB数据集上的ROC曲线如图4所示。
图4 ROC曲线
可以看出,在误识别数较低时,本文算法的检测性能略低于SFD算法,在误识别数较高时,本文算法的检测性能优于其他4种主流人脸检测算法。这说明本文算法在主网络SSD的多层特征图上,通过融合前后层特征图增强原始特征图的辨识度,并引入有监督信息去学习上下文融合特征,进而在多尺度增强特征图上完成人脸/非人脸分类和人脸边界框位置更新,可以有效提高人脸检测的精度。
WIDER FACE人脸数据集在32 203幅图像中,标记了393 703个具有遮挡、模糊、尺度变化、光照变化和姿态变化等因素的人脸图像。它包含了61种不同的事件类别,对于每种事件类别,随机选择40%、10%、50%的数据作为训练、验证、测试子集。此外,每个子集中的数据根据人脸检测的难易程度被划分为简单、适中和困难3个难度级别。
本文算法与LDCF+、HR、SFD和PyramidBox算法进行了对比,在WIDER FACE简单、适中和困难3个子测试数据集上的mAP及速度对比结果如表1所示。在WIDER FACE简单、适中和困难3个子测试数据集上的精度和召回率(Precision-Recall, PR)曲线如图5所示。
表1 mAP对比结果
图5 精度和召回率曲线
由表1可以看出,本文算法在保持低时间损耗的同时,提高了人脸检测精度。从图5的对比结果可以发现,本文算法的PR曲线均高于其他4种主流人脸检测算法。如果一种算法的PR曲线能够包围住另外一种算法的PR曲线,则前者的检测性能优于后者,这说明本文算法的人脸检测性能优于所对比的4种主流人脸检测算法。本文算法在WIDER FACE数据集上的部分检测结果如图6所示。
图6 本文算法在WIDER FACE数据集上的部分检测结果
本文提出一种基于增强并行级联卷积神经网络的人脸检测方法。该方法在主网络SSD的多层特征图上,通过融合前后层特征图增强原始特征图的辨识度,并引入有监督信息去学习上下文融合特征,进而在多尺度增强特征图上完成人脸/非人脸分类和人脸边界框位置更新。此外,在训练阶段为主网络和附加增强网络设置两种基于锚框尺寸的损失函数,增强对小尺度人脸的检测效果。在FDDB数据集和WIDER FACE数据集上的实验结果表明,本文算法具有比当前主流人脸检测方法更高的检测精度。