近年来卷积神经网络(CNN)取得了巨大的发展,各种优秀的目标检测网络模型层出不穷。人脸检测是目标检测的一个分支,与一般目标检测有很大相似之处,又有一定的差异。先前的目标检测大多是基于锚框(anchor-based)类型,需要经过滑动窗口产生大量的anchor作为候选框(对于640×640输入图像,RetinaFace[1]中有超过10万个锚框),还可以细分为:one-stage检测器,典型的有YOLO和SSD系列(YOLOV1-V3[2-4],SSD[5]和RetinaNet[6]),这些都是全卷积网络直接输出目标的类别和位置坐标;two-stage检测器,典型的是R-CNN系列(Fast R-CNN[7],Faster R-CNN[8]),其模型的第一阶段输出粗糙的物体候选框(proposal),第二阶段进一步回归物体坐标和分类物体类别。最近无锚框(anchor-free)型检测器表现出非常优异的性能,不需要生成大量的候选框,降低了计算开销,模型更简单,在精度不降低的情况下,极大地提升了检测速度。无锚(anchor-free)的检测器随着网络结构(如:特征金字塔网络FPN、可形变卷积DeformConv)和损失函数(如:Focal Loss、IOU Loss)的发展逐渐焕发出新的生机。如尺度鲁棒的网络结构增强模型的表达能力、训练鲁棒的损失函数解决样本的平衡和度量问题。Anchor-free 方法以 YOLOV1-V2及其衍生(FCOS[9]、ConerNet[10]、CenterNet[11]等)为代表,抛开候选框的形状先验,直接分类物体的类别和回归物体的坐标。其中CenterNet模型优于一系列最新算法,在速度和精度上都取得了优异的成绩。CenterNet是一种anchor-free型检测器,结构简单,直接检测目标的中心点和大小,并且没有非极大值抑制(non maximum suppression,NMS)。
本文基于CenterNet模型思想,主要研究:在多任务损失中,以人脸为目标,加入面部标志点损失,把人脸检测转换为关键点估计问题,通过全卷积网络得到中心点,同时预测人脸中心点位置,人脸框和5个面部关键点;针对边缘设备和移动设备的又快又精确的人脸检测需求,把CenterNet的主干网络ResNet18替换为轻量级的ShuffleNetV2[12];为了尽可能减少轻型网络降低的精度,需要对ShuffleNetV2进行改进。增大感受野,改进检测头。
1 CenterNet算法原理先前的目标检测往往在图像上将目标用矩形框形式框出,穷举出潜在目标位置,然后对该位置进行分类,这种做法浪费时间,低效,还需要额外的后处理。CenterNet采用不同的方法,构建模型时将目标作为一个点,即目标边界框的中心点,采用关键点估计来找到中心点,并回归目标尺寸,相比较于anchor-based检测器,此模型是端到端的,更简单、更快、更精确。CenterNet类似基于锚点的one-stage方法,中心点可看成形状未知的锚点,但又有区别,分配的锚点仅仅是放在位置上,没有尺寸框,没有手动设置的阈值做前后景分类,像Faster RCNN会与GT IOU>0.7的作为前景,IOU<0.3的作为背景,其他不管。CenterNet每个目标仅仅有一个正的锚点,因此不会用非极大值抑制,只提取关键点特征图上局部峰值点。如图 1所示。
Download:
|
|
多任务总损失函数为
$ {L}_{\mathrm{d}\mathrm{e}\mathrm{c}}={L}_{k}+{\lambda }_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}}{L}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}}+{\lambda }_{\mathrm{o}\mathrm{f}\mathrm{f}}{L}_{\mathrm{o}\mathrm{f}\mathrm{f}}{\text{}} $ | (1) |
式中:
${L_k} = \frac{{ - 1}}{N}\sum\limits_{xyc} {\left\{ \begin{array}{l} {(1 - {{\hat Y}_{xyc}})^\alpha }\log \left( {{{\hat Y}_{xyc}}} \right){\rm{ ,if }}Y = 1\\ {\left( {1 - {Y_{xyc}}} \right)^\beta }{({{\hat Y}_{xyc}})^\alpha }\log \left( {1 - {{\hat Y}_{xyc}}} \right){\rm{,其他}} \end{array} \right.} {\text{}}$ | (2) |
式中:N为图像中的关键点数量,用于将所有的Positive Focal Loss标准化为1;α和β是超参数,实验中分别设置为2和4,令I∈RW×H×3为输入图像,其宽为W,高为H;
Loff为局部偏移损失,类型为L1损失函数,作用是恢复由下采样时,GT的关键点位置数据离散后产生的误差,具体表示为
${L_{{\rm{off}}}} = \frac{1}{N}\sum\limits_p {\left| {{{\hat O}_{\tilde p}} - \left( {\frac{p}{R} - \tilde p} \right)} \right|} $ | (3) |
式中:
Lsize是目标大小损失,类型为L1损失函数,具体表示为
${L_{{\rm{size}}}} = \frac{1}{N}\sum\limits_{K = 1}^N {\left| {{{\hat S}_{{\rm{Pk}}}} - {S_{\rm{k}}}} \right|} $ | (4) |
式中:Sk=(x(k) 2−x(k) 1,y(k) 2−y(k) 1),是根据目标k经过下采样后的边界框(x(k) 1, y(k) 1, x(k) 2, y(k) 2)提前计算出来的目标宽高值;
为了把CenterNet用于人脸检测,让模型能够部署在移动设备或者边缘设备上,要求算法模型能实现精度和速度上的平衡[13]。本文在CenterNet算法上进行了改进,修改其损失函数,增加5个面部标志点损失,以检测5个面部标志点,实现人脸检测和人脸对齐[14]。把重型主干网络resenet18替换为ShuffleNetV2,ShuffleNetV2是轻量级网络,对计算力低且存储空间小的设备更友好。最后是对ShuffleNetV2进行改进,增大感受野,提升模型性能。图2是本文模型的整体结构。
Download:
|
|
本文采用ShuffleNetV2作为构建特征金字塔的主干网络,提取特征。由于CenterNet是采用热力图来进行回归,模型的感受野显得非常重要,而ShuffleNetV2相对于resenet18,模型更小,深度变浅,但是感受野也变小。为了使模型具有更好的性能,则需要增大感受野,把所有的3×3的深度卷积(depth-wise)卷积改为5×5的depth-wise 卷积,这样就能获得2倍的感受野,只增加了极少的计算量,如图3所示)。
Download:
|
|
CenterNet的检测头使用类U-Net的上采样结构,可有效地融合低层细节信息,从而提高对小物体的检测性能。然而,CenterNet的检测头并未针对移动端进行优化,因此需要对其进行ShuffleNet 化改造。首先,将检测头的所有普通3×3卷积替换为5×5的depth-wise卷积。其次,参照ShuffleNet通道压缩的技巧,将CenterNet中多层特征的残差融合改造为通道压缩的连接融合。通过大感受野和轻检测头,优化后的模型具有优异的性能。
2.3 多任务损失参考CenterNet的多任务损失,并进行了相应的改进,使之适用于人脸检测和对齐任务。保留相关的中心点损失,目标(目标只有人脸一个类别)大小是损失和目标中心偏置损失,增加5个面部标志点损失。总损失函数为
$L = {L_{{k}}} + {\lambda _{{\rm{off}}}}{L_{{\rm{off}}}} + {\lambda _{{\rm{box}}}}{L_{{\rm{box}}}} + {\lambda _{{\rm{lm}}}}{L_{{\rm{lm}}}}{\text{}}$ | (5) |
式中:Lk为人脸中心点损失;Loff为中心点偏置损失,皆与CenterNet保持一致;Lbox为人脸框大小损失,与CenterNet的Lsize略有不同,是学习人脸框大小的一种变换,具体公式表示为
${L_{{\rm{box}}}} = \frac{1}{N}\sum\limits_{k = 1}^N {\left| {{{\hat B}_{{{pk}}}} - {B_{{k}}}} \right|}{\text{}} $ | (6) |
令G=(x(k) 1, y(k) 1, x(k) 2, y(k) 2)为人脸目标k真实边界框,面部中心点p=((x(k) 2+ x(k) 1)/2,(y(k) 2+ y(k) 1)/2),边框宽w=(x(k) 2−x(k) 1),高h=(y(k) 2−y(k) 1),对所有人脸使用单个尺寸预测
Llm
${L_{{\rm{lm}}}} = \frac{1}{N}\sum\limits_{k = 1}^N {\left| {{{\hat l}_{{{pk}}}} - l} \right|} {\text{}}$ | (7) |
令lm=(x(k),y(k))为人脸目标k面部标志点,l=((lmx−px)/w,(lmy−py)/h),
实验中设置λoff=1、λbox=0.1和λlm =0.1,使用单个网络来预测关键点
使用公开数据集WIDER FACE[15]的训练子集来训练模型,WIDER FACE数据集由32 203张图像和393 703个面部边界框组成,在比例、姿势、表情、遮挡和照明方面具有高度的可变性。通过从61个场景类别中随机采样,将WIDER FACE数据集分为训练(40%)、验证(10%)和测试(50%)子集,验证集和测试集又分为3个难度等级,分别是简单(easy)、中等(medium)和困难(hard)。RetinaFace引入了5个级别的面部图像质量,并注释了训练和验证子集中面部上的5个标志点(即眼中心,鼻尖和嘴角)。
3.2 数据扩充为了提高模型的泛化能力和鲁棒性,使用原始图像的随机翻转、随机缩放、色彩抖动和随机剪裁正方形补丁来增强数据。把输入分辨率重新修订为800×800,以生成更大的训练脸。
3.3 训练参数实验环境为python3.6,深度学习框架为pytorch1.1,GPU为NVIDIA GTX1080T@11GB,RAM为32 GB,使用Adam optimiser优化训练网络。批量大小(batch-size)为8,学习速率(learning rate)为5×10−4,持续140个epochs,学习速率分别在90和120个时期下降了10倍,总训练时常为38 h。并随机初始化网络参数。
3.4 运行效率由于RetinaFace 模型太大,无法在单个CPU平台上运行,因此本文仅以CPU上的VGA分辨率图像来评估Faceboxes[16],MTCNN[17],CasCNN[18]和本文方法的速度效率。选择经典的评估基准FDDB来评估算法性能,AP表示平均精度值。如表1所示,本文的方法可以在CPU上以27 f/s的速度运行,并且具有最高的精度。
到目前为止,WIDER FACE是人脸检测应用最广泛的基准。所有比较的方法都在训练集上进行训练。为了在WIDER FACE上进行测试,遵循官方提供的标准做法,并采用了翻转以及多尺度策略。使用0.4的IOU阈值对预测的面部边框的集合应用边框投票。在表2列出有关验证和测试集的3个难度等级的结果。本方法具有相当高的平均精度(AP,average precision),在验证集达到94.1%(Easy)、92.3%(Medium)和88.4%(Hard)。可见本文提出的方法在精度和速度上都取得了优异的成绩。
图 4是在WIDER FACE的验证集上画出的准确率—召回率(PR)曲线图,其中准确率(precession,P)的计算方法为P=TP/(TP+FP),召回率(recall,R)的计算方法为R=TP/(TP+FN)。在hard子集下的PR曲线中,提出的检测模型效果远远好于其他算法。说明本文的方法在低分辨率小人脸检测上具有很大的优势。图5是对比了MTCNN、Faceboxes和本文的方法的检测示例,图中人脸较为密集且人脸小,还存在严重遮挡的情况,本文方法的检测效果明显优于其他算法。
Download:
|
|
本文基于目标检测算法CenterNet,通过替换骨干网络,并修改损失函数,提出了一种能实时运行在移动设备或者边缘检测设备上的人脸检测算法,做到了检测精度和速度的平衡,可以同时预测人脸框和5个面部标志点。引入无锚检测思想,把人脸检测和对齐问题转换为关键点估计问题,直接预测人脸中心点、大小和5个界标,没有NMS后处理,克服了基于锚方法需要预先设计锚框的缺点。在具有挑战性的人脸检测基准中,此方法具有优异的性能。
Download:
|
|
[1] | DENG Jiankang, GUO Jia, ZHOU Yuxiang, et al. Retinaface: single-stage dense face localisation in the wild[EB/OL]. (2019-05-02)[2020-05-16]. https://arxiv.org/abs/1905.00641. (0) |
[2] | REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA, 2016: 779-788. (0) |
[3] | REDMON J, FARHADI A. YOLO9000: better, faster, stronger[C]//Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI, USA, 2017: 6517-6525. (0) |
[4] | REDMON J, FARHADI A. YOLOv3: an incremental improvement[EB/OL]. (2018-04-08)[2020-05-19]. https://arxiv.org/abs/1804.02767. (0) |
[5] | LIU Wei, ANGUELOV D, ERHAN D, et al. SSD: single shot MultiBox detector[EB/OL]. [2019-11-02]. https://arxiv.org/abs/1512.02325. (0) |
[6] | LIN T Y, GOYAL P, GIRSHICK R, et al. Focal loss for dense object detection[J]. IEEE transactions on pattern analysis and machine intelligence, 2020, 42(2): 318-327. DOI:10.1109/TPAMI.2018.2858826 (0) |
[7] | GIRSHICK R. Fast R-CNN[C]//Proceedings of 2015 IEEE International Conference on Computer Vision. Santiago, Chile, 2015: 1440-1448. (0) |
[8] | REN Shaoqing, HE Kaiming, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE transactions on pattern analysis and machine intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 (0) |
[9] | TIAN Zhi, SHEN Chunhua, CHEN Hao, et al. FCOS: fully convolutional one-stage object detection[C]//Proceedings of 2019 IEEE/CVF International Conference on Computer Vision. Seoul, Korea (South), 2019: 9626-9635. (0) |
[10] | LAW H, DENG Jia. CornerNet: detecting objects as paired keypoints[J]. International journal of computer vision, 2020, 128(3): 642-656. DOI:10.1007/s11263-019-01204-1 (0) |
[11] | ZHOU Xingyi, WANG Dequan, KRÄHENBUHL P. Objects as points[J]. arXiv: 1904.07850, 2019. (0) |
[12] | MA Ningning, ZHANG Xiangyu, ZHENG Haitao, et al. ShuffleNet V2: practical guidelines for efficient CNN architecture design[C]//Proceedings of the 15th European Conference on Computer Vision. Munich, Germany, 2018: 122-138. (0) |
[13] | 李启运, 纪庆革, 洪赛丁. FastFace: 实时鲁棒的人脸检测算法[J]. 中国图象图形学报, 2019, 24(10): 1761-1771. DOI:10.11834/jig.180662 (0) |
[14] | 伍凯, 朱恒亮, 郝阳阳, 等. 级联回归的多姿态人脸配准[J]. 中国图象图形学报, 2017, 22(2): 257-264. (0) |
[15] | YANG Shuo, LUO Ping, LOY C C, et al. WIDER FACE: a face detection benchmark[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA, 2016: 5525-5533. (0) |
[16] | ZHANG Shifeng, ZHU Xiangyu, LEI Zhen, et al. FaceBoxes: a CPU real-time face detector with high accuracy[C]//Proceedings of 2017 IEEE International Joint Conference on Biometrics. Denver, CO, USA, 2017. (0) |
[17] | ZHANG Kaipeng, ZHANG Zhanpeng, LI Zhifeng, et al. Joint face detection and alignment using multitask cascaded convolutional networks[J]. IEEE signal processing letters, 2016, 23(10): 1499-1503. DOI:10.1109/LSP.2016.2603342 (0) |
[18] | LI Haoxiang, LIN Zhe, SHEN Xiaohui, et al. A convolutional neural network cascade for face detection[C]//Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA, USA, 2015. (0) |