论文:RetinaFace: Single-stage Dense Face Localisation in the Wild
代码:https://github.com/deepinsight/insightface/tree/master/RetinaFace.
概要:
虽然在人脸检测方面已经取得了巨大的进展,但在非实验室环境的精确和高效的人脸定位仍然是一个开放的挑战。 本文提出了一种鲁棒的单级人脸检测器,名为RetinaFace,它利用extra-supervised 和 self-supervised多任务学习的优点,在不同尺度的人脸上执行像素级人脸定位。
具体来说,我们在以下五个方面做出了贡献:
(1)我们在WIDERFACE数据集上手动注释了五个面部关键点,并在这个额外的监督信号的帮助下观察到在困难脸检测方面的显著改进。
(2)我们增加了一个self-supervised mesh decoder 分支,用于与现有监督分支并行预测像素方向的3D形状人脸信息。
(3)在WIDER FACE困难测试集上,Retina Face的性能优于好的平均精度(AP)提高1.1%,也就是91.4%。
(4)在IJB-C测试集上,Retina Face提高了Arc Face在人脸验证中的准确率 当FAR=1e-6时 TAR=89.59%
(5)通过使用轻量级骨干网络,视网膜人脸可以在单个CPU核心上实时运行VGA分辨率图像(640*480)
介绍:
与之前的人脸检测不同的是,本文人脸检测包含多个目标:
- 人脸评分
- 人脸框
- 五个人脸关键点
- 投影在图像平面上的密集三维人脸顶点
如图:
通过五点检测这个额外的信息,也提高了检测的准确率
Related Work
图像金字塔。 特征金字塔:滑动窗口,其中,分类器被应用于一个密集的图像网格,可以追溯到过去几十年。Viola-Jones的里程碑工作[53]探索级联链,从具有实时效率的图像金字塔中拒绝假人脸区域,从而导致这种 scale-invariant 人脸检测框架[66,5]的广泛采
用。尽管图像金字塔上的滑动窗口是主要的检测范式[19,32],但随着特征金字塔[28]的出现,multi-scale feature maps [68,49]上的 sliding-anchor [43]迅速主导了人脸检测
Multi-task Learning:关节人脸检测和对齐被广泛应用[6,66,5]因为对齐的人脸形状为人脸分类提供了更好的特征。 在Mask-RCNN[20]中,通过添加一个分支来预测与现有分支并行的对象掩码,显着地提高了检测性能。 通过监督学习训练[20,1]的密集回归分支。 此外,密集分支是一个小的FCN应用于每个RoI,以预测像素到像素的密集映射。
RetinaFace
Multi-task Loss
解释:
(1)人脸分类损失 ,其中pi是anchor i作为人脸的预测概率,的1是正anchor ,0负anchor 。 分类损失L是二进制类(face/not face)的Softmax损失
(2)Face box 回归损失,其中ti={tx,ty,tw,th}i和ti∗={tx∗,t,y,t,w,th∗} i表示与正anchor 相关的预测box和ground-truth box 的坐标。 我们遵循[16]使方框回归目标(即。 中心位置、宽度和高度),并使用L=R(ti-ti∗),其中R是[16]中定义的鲁棒损失函数(smooth-L1)
(3)Facial landmark 回归损失,其中li={lx1,ly1,...,lx5,ly5}i和li∗={l∗x1,l,y1,...,l,x5,l,y5}i表示与正 anchor 相关的五个Facial landmark 和 ground-truth 。 与box 中心回归相似,五个面部地标回归也采用基于anchor 中心的目标normalisation。
(4)密集回归损失Lpixel (参见方程。 3)。 损失平衡参数λ1-λ3设置为0.25,0.1和0.01,这意味着我们从监督信号中增加了更好的 box 和 landmark locations 的意义。
Dense Regression Branch
Mesh Decoder:我们直接从[70,40]中使用mesh decoder(网格卷积和网格上采样),这是一种基于快速定位光谱过滤[10]的图形卷积方法。 为了实现进一步的加速,我们还使用了类似于[70]中的方法的关节形状和纹理解码器,与只解码形状的[40]相反。 下面我们将简要解释图卷积的概念,并概述为什么它们可以用于快速解码。 如图所示其中:
(a)二维卷积 Kernel_H × Kernel_W × Channel_in × Channel_out
(b)图卷积 K ×Channel_in × Channel_out 何为图卷积
其中:
- 其中θ是Chebyshev系数的向量
- 缩放的Laplacian:
- 是在上计算的k阶Chebyshev多项式。
- 表示,我们可以递归地计算,,。
- 整个滤波操作非常有效,包括K稀疏矩阵向量乘法和一个密集矩阵向量乘法。
可区分的渲染器。 在预测形状和纹理参数之后,我们使用一个有效的可微三维网格渲染器[14]将彩色网格投影到具有摄像机参数Pcam=[xc,yc,zc,x0c,y0c,z0c,fc]的二维图像平面上(即。 摄像机位置、摄像机姿态和焦距)和照明参数Pill=[XL,YL,ZL,RL,gl,bl,ra,ga,ba](即。 点光源的位置、颜色值和环境照明的颜色)。
密集的回归损失。 一旦我们得到渲染的二维人脸R(DPST,Pcam,Pill),我们使用以下函数比较渲染的像素和原始二维人脸的像素差异:
其中:W和H分别是anchor crop 的宽度和高度。
实践
Dataset: WIDER FACE 数据集[60]由32203幅图像和393703个人脸包围盒组成,在尺度、姿态、表达、遮挡和光照方面具有高度的变异性。 通过从61个场景类别中随机抽样,将WIDER FACE数据集分为训练(40%)、验证(10%)和测试(50%)子集。 根据EdgeBox[76]的检测率,有三个层次的难度(简单、中等、困难)是通过增量地结合困难样本来定义的。附加说明。 如图表所示。 我们定义了人脸图像质量的五个层次(根据如何定义很难在面部注释地标)和注释五个面部地标(即。 眼睛中心,鼻尖和嘴角)的脸,可以注释从WIDER FACE训练和验证子集。 总共,我们在训练集上注释了84.6k faces,在验证集上注释了18.5k faces。
Implementation details
特色金字塔: RetinaFace 采用从P2到P6的特征金字塔级别,其中P2到P5是根据相应的ResNet剩余阶段(C2到C5)的输出计算的,使用自顶向下和横向连接,如[28,29]所示。 通过C5上的步长=2的3×3卷积计算P6。 在Image Net-11k数据集上,C1到C5是一个预先训练的ResNet-152[21]分类网络,而P6是用“Xavier”方法[17]随机初始化的。上下文模块。 受SSH[36]和金字塔框[49]的启发,我们还在五个特征金字塔级别上应用独立的上下文模块来增加接收场,增强刚性上下文建模能力。 借鉴WIDER Face Challenge2018[33]的冠军,我们还用变形卷积网络(DCN)[9,74]代替横向连接和上下文模块中的所有3×3个卷积层,进一步加强了非刚性上下文建模能力
loss head。 对于负 anchors,只应用分类损失。 对于正 anchors,计算了所提出的多任务损失。 我们在不同的特征映射Hn×Wn×256,n∈{2,...,6}中使用共享损失头(1×1conv}。 对于网格解码器,我们应用预先训练的模型[70],这是一个小的计算开销,允许有效的推理。 anchors设置。 如表所示。 我们在特征金字塔级别上使用特定于尺度的 anchors,从P2到P6,就像[56]一样。 在这里,P2被设计成通过平铺小 anchors来捕捉微小的面孔,代价是更多的计算时间和更多假阳性的风险 。我们设定了比例2**1/3,高宽比为1:1。 在640×640的输入图像大小下, anchors可以覆盖特征金字塔级别上从16×16到406×406的尺度。 总共有102300个 anchors,其中75%的锚来自P2。 在训练过程中,当IoU大于0.5时, anchors 匹配到ground-truth box,当IoU小于0.3时匹配到背景。 在训练过程中,不匹配的 anchors被忽略。 由于大多数 anchors(>99%)在匹配步骤后为负值,我们采用标准的OHEM[47,68]来缓解正、负训练实例之间的显著不平衡。 更具体地说,我们根据损失值对负 anchors进行排序,并选择最上面的 anchors,使负样本和正样本之间的比率至少为3:1。
数据增强。 由于在WIDER FACE训练集中有大约20%的小脸,我们遵循[68,49]和随机裁剪方形补丁从原始图像,并调整这些补丁到640×640,以产生更大的训练面。 更具体地说,正方形补丁是从原始图像中裁剪的,随机大小介于原始图像的短边[0.3,1]之间。 对于crop 边界上的面孔,如果它的中心在crop 斑块内,我们保持脸盒的重叠部分。 除了随机crop 外,我们还通过随机水平翻转来增强训练数据,其概率为0.5,和照片测量颜色失真[68]。 。
训练细节。 我们使用SGD优化器(动量为0.9,重量衰减为0.0005,批次大小为8×4)在四个NVIDIA特斯拉P40(24GB)GPU上训练视网膜面部。 学习率从10**-3开始,在5个epochs之后上升到10**-2,然后在55和68个epochs除以10。 训练过程终止于80个epochs
测试细节。 对于WIDER FACE 的测试,我们遵循[36,68]的标准实践,采用翻转以及多尺度(图像在[500,800,1100,1400,1700]的短边)策略。 盒子投票[15]应用于预测的面盒的联合集,使用IoU阈值为0.4。
消融研究
除了平均精度的标准评估度量(AP)当 IoU=0.5在简单、中、困难子集,我们还利用开发服务器(困难验证子集)the WIDER FaceChallenge 2018 [ 33],采用更严格的评估度量的平均AP(MAP) IoU=0.5:0.05:0.95,奖励更准确的人脸探测器。 如表所示。- 我们评估了几种不同设置在 WIDER FACE验证集上的性能,并重点研究了AP和mAP在困难子集上的观测。
- 通过应用最先进技术的实践(即FPN,上下文模块和变形卷积),我们建立了一个强基线(91.286%),比ISRN[67](90.9%)略好。
- 添加五点回归的分支显著改善了Hard子集上的脸盒AP(0.408%)和mAP(0.775%),这表明地标定位对于提高人脸检测的准确性至关重要
- 相比之下,添加密集回归分支可以在简单子集和中子集上增加人脸盒AP,但在困难子集上略有恶化,表明在具有挑战性的情况下密度回归的困难。
- 然而,五点回归的分支+密集回归分支最好