论文: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]迅速主导了人脸检测
RetinaFace
解释:
(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
其中:
(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 的宽度和高度。
实践
附加说明。 如图表所示。 我们定义了人脸图像质量的五个层次(根据如何定义很难在面部注释地标)和注释五个面部地标(即。 眼睛中心,鼻尖和嘴角)的脸,可以注释从WIDER FACE训练和验证子集。 总共,我们在训练集上注释了84.6k faces,在验证集上注释了18.5k faces。
Implementation details
上下文模块。 受SSH[36]和金字塔框[49]的启发,我们还在五个特征金字塔级别上应用独立的上下文模块来增加接收场,增强刚性上下文建模能力。 借鉴WIDER Face Challenge2018[33]的冠军,我们还用变形卷积网络(DCN)[9,74]代替横向连接和上下文模块中的所有3×3个卷积层,进一步加强了非刚性上下文建模能力
数据增强。 由于在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。
消融研究
- 我们评估了几种不同设置在 WIDER FACE验证集上的性能,并重点研究了AP和mAP在困难子集上的观测。
- 通过应用最先进技术的实践(即FPN,上下文模块和变形卷积),我们建立了一个强基线(91.286%),比ISRN[67](90.9%)略好。
- 添加五点回归的分支显著改善了Hard子集上的脸盒AP(0.408%)和mAP(0.775%),这表明地标定位对于提高人脸检测的准确性至关重要
- 相比之下,添加密集回归分支可以在简单子集和中子集上增加人脸盒AP,但在困难子集上略有恶化,表明在具有挑战性的情况下密度回归的困难。
- 然而,五点回归的分支+密集回归分支最好