«上一篇
文章快速检索     高级检索
下一篇»
  应用科技  2021, Vol. 48 Issue (3): 21-26  DOI: 10.11991/yykj.202011018
0

引用本文  

段燕飞, 刘胤田, 王瑞祥, 等. 非约束环境下的实时人脸检测方法[J]. 应用科技, 2021, 48(3): 21-26. DOI: 10.11991/yykj.202011018.
DUAN Yanfei, LIU Yintian, WANG Ruixiang, et al. Real-time face detection method in an unconstrained environment[J]. Applied Science and Technology, 2021, 48(3): 21-26. DOI: 10.11991/yykj.202011018.

基金项目

国家自然科学基金项目(61203172);四川省科技计划项目(20ZDYF0008)

通信作者

刘胤田,E-mail:liuyintian@cuit.edu.cn

作者简介

段燕飞,男,硕士研究生;
刘胤田,男,教授

文章历史

收稿日期:2020-11-24
非约束环境下的实时人脸检测方法
段燕飞, 刘胤田, 王瑞祥, 咬登国, 张航    
成都信息工程大学 软件工程学院,四川 成都 610225
摘要:在不受限制的场景下,人脸检测大多部署在移动端或者边缘设备上,这些设备计算能力低且内存较小。使用无锚检测思想,基于CenterNet无锚检测器,提出以人脸为点的检测方法。不需要人工预先设置锚框,也不需要使用非极大值抑制来后处理,模型变得简单且高效。模型的骨干网络使用改进的ShuffleNetV2,轻量级网络保证了模型参数少,性能高效,可以部署在边缘设备或者移动设备上。使用人脸检测数据集WIDERFACE来训练网络模型,这个是数据集包含了多种环境下的不同尺度大小的人脸,适用于非约束环境下人脸检测。此方法在FDDB上实现了超高精度(平均精度值(AP)为97.6%),实现了速度和精度的平衡。
关键词人脸检测    无锚检测器    实时检测    神经网络    轻量级网络    非约束环境    关键点检测    多任务    
Real-time face detection method in an unconstrained environment
DUAN Yanfei, LIU Yintian, WANG Ruixiang, YAO Dengguo, ZHANG Hang    
College of Software Engineering, Chengdu University of Information Technology, Chengdu 610225, China
Abstract: In unrestricted scenarios, face detection is mostly deployed on mobile terminals or edge devices, which have low computing power and small memory. A face point detection method is proposed, using the idea of anchorless detection and based on CenterNet anchorless detector. The model is simple and high-efficiency without manual presetting of anchor frames or post-processing with non-maximum suppression. The backbone network of the model uses the improved Shufflenetv2. The lightweight network ensures that the model has few parameters, high performance, and can be deployed on edge devices or mobile devices. Face detection data set WIDERFACE is used to train our network model. This data set contains faces of different scales and sizes in a variety of environments, which is suitable for face detection in an unconstrained environment. The method achieves high precision (average precision value (AP): 97.6%) on FDDB, and achieves the balance between speed and precision.
Keywords: face detection    anchor-free detector    real-time detection    neural network    lightweight network    unconstrained environment    key point detection    multitasking    

近年来卷积神经网络(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:
图 1 提取关键点特征

多任务总损失函数为

$ {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}_{\mathrm{d}\mathrm{e}\mathrm{c}} $ 为总损失; $ {\lambda }_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $ 为目标大小损失的权重; $ {\lambda }_{\mathrm{o}\mathrm{f}\mathrm{f}} $ 为局部偏移损失的权重; $ {L}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $ 为目标大小损失; $ {L}_{\mathrm{o}\mathrm{f}\mathrm{f}} $ 为局部偏移损失;Lk为中心点预测损失,类型是Focal Loss交叉熵损失函数,把目标中心点当成关键点来回归,具体表示为

${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,令IRW×H×3为输入图像,其宽为W,高为H $\hat Y \in {\left[ {0,1} \right]^{\left( {W / R} \right) \times \left( {H/R} \right) \times 3}}$ 是生成的目标关键点热力图;R是缩放比例,取4; ${\hat Y_{xyc}} = 1$ 为检测到的关键点, ${\hat Y_{xyc}} = 0$ 表示背景;对于真实(Ground Truth,GT)的关键点C,其位置为PR2,计算得到低分辨率(经过下采样)上对应的关键点 $\tilde P = \left\lfloor {P/R} \right\rfloor $ ,再将 GT关键点通过高斯核 ${Y_{xyc}} = $ $ {\rm{exp}}(({(x - {\tilde P_x})^2} + {(y - {\tilde P_y})^2}))/2o'^{2}_p)$ 分散到热力图Y∈[0, 1](W/R)×(H/R)×3上,其中o'p是目 $\hat Y$ 标尺度自适应的标准方差。

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)

式中: $\hat O$ R(W/R)×(H/R)×2对每个中心点预测的局部偏移;P/R是实际中心点经过下采样得到的浮点数坐标,只在关键点位置做监督操作。

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) 2x(k) 1,y(k) 2y(k) 1),是根据目标k经过下采样后的边界框(x(k) 1, y(k) 1, x(k) 2, y(k) 2)提前计算出来的目标宽高值; $\hat S$ R(W/R)×(H/R)×2是预测的宽高值。

2 实现人脸检测

为了把CenterNet用于人脸检测,让模型能够部署在移动设备或者边缘设备上,要求算法模型能实现精度和速度上的平衡[13]。本文在CenterNet算法上进行了改进,修改其损失函数,增加5个面部标志点损失,以检测5个面部标志点,实现人脸检测和人脸对齐[14]。把重型主干网络resenet18替换为ShuffleNetV2,ShuffleNetV2是轻量级网络,对计算力低且存储空间小的设备更友好。最后是对ShuffleNetV2进行改进,增大感受野,提升模型性能。图2是本文模型的整体结构。

Download:
图 2 模型整体结构
2.1 特征提取网络

本文采用ShuffleNetV2作为构建特征金字塔的主干网络,提取特征。由于CenterNet是采用热力图来进行回归,模型的感受野显得非常重要,而ShuffleNetV2相对于resenet18,模型更小,深度变浅,但是感受野也变小。为了使模型具有更好的性能,则需要增大感受野,把所有的3×3的深度卷积(depth-wise)卷积改为5×5的depth-wise 卷积,这样就能获得2倍的感受野,只增加了极少的计算量,如图3所示)。

Download:
图 3 不同卷积核大小的计算量
2.2 改进检测头

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) 2x(k) 1),高h=(y(k) 2y(k) 1),对所有人脸使用单个尺寸预测 $\hat B$ R(W/R)×(H/R)×2Bk=(log(w/R),log(h/R)),在每个中心点使用L1损失。

Llm是增加的面部标志点损失,与边框(Box)回归不同,5个面部标志的回归采用基于中心位置的目标归一化方法

${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=((lmxpx)/w,(lmypy)/h), $\hat I$ R(W/R)×(H/R)×10,在每个中心点使用L1损失。

实验中设置λoff=1、λbox=0.1和λlm =0.1,使用单个网络来预测关键点 $\hat Y$ 、偏移量 $\hat O$ 、大小 $\hat B$ 和标志点 $\hat I$ ,网络预测每个位置总共有15个输出,所有输出共享一个通用的全卷积骨干网络。

3 实验分析 3.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的速度运行,并且具有最高的精度。

表 1 CPU上的运行效率
3.5 在基准上评估

到目前为止,WIDER FACE是人脸检测应用最广泛的基准。所有比较的方法都在训练集上进行训练。为了在WIDER FACE上进行测试,遵循官方提供的标准做法,并采用了翻转以及多尺度策略。使用0.4的IOU阈值对预测的面部边框的集合应用边框投票。在表2列出有关验证和测试集的3个难度等级的结果。本方法具有相当高的平均精度(AP,average precision),在验证集达到94.1%(Easy)、92.3%(Medium)和88.4%(Hard)。可见本文提出的方法在精度和速度上都取得了优异的成绩。

表 2 WIDER FACE验证集上的AP

图 4是在WIDER FACE的验证集上画出的准确率—召回率(PR)曲线图,其中准确率(precession,P)的计算方法为P=TP/(TP+FP),召回率(recall,R)的计算方法为R=TP/(TP+FN)。在hard子集下的PR曲线中,提出的检测模型效果远远好于其他算法。说明本文的方法在低分辨率小人脸检测上具有很大的优势。图5是对比了MTCNN、Faceboxes和本文的方法的检测示例,图中人脸较为密集且人脸小,还存在严重遮挡的情况,本文方法的检测效果明显优于其他算法。

Download:
图 4 在WIDER FACE验证集上的PR曲线
4 结束语

本文基于目标检测算法CenterNet,通过替换骨干网络,并修改损失函数,提出了一种能实时运行在移动设备或者边缘检测设备上的人脸检测算法,做到了检测精度和速度的平衡,可以同时预测人脸框和5个面部标志点。引入无锚检测思想,把人脸检测和对齐问题转换为关键点估计问题,直接预测人脸中心点、大小和5个界标,没有NMS后处理,克服了基于锚方法需要预先设计锚框的缺点。在具有挑战性的人脸检测基准中,此方法具有优异的性能。

Download:
图 5 算法检测对比示例
参考文献
[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)