摘要
虽然在不受控制的人脸检测方面已经取得了巨大的进步,但是在wilder上准确有效的人脸定位仍然是一个公开的挑战。本文提出了一种鲁棒的single stage人脸检测器RetinaFace,它利用联合的额外监督和自监督多任务学习的优点,对不同尺度的人脸进行像素级定位。具体来说,我们在以下五个方面做出了贡献:(1)我们在WILDER FACE数据集中手工标注了5个人脸Landmark,并在这个额外的监督信号的帮助下,观察到在hard face检测的显著改善。(2)进一步添加自监督网格解码器(mesh decoder)分支,与已有的监督分支并行预测像素级的3D形状人脸信息。(3)在WILDER FACE hard测试集上,RetinaFace的平均精度(AP)比最先进的平均精度(AP)高出1.1%(达到AP = 91.4%)。(4)在IJB-C测试集上,RetinaFace使现有方法(ArcFace)能够改进人脸验证结果(FAR=1e-6, TAR=89.59%)。(5)采用轻量级backbone网络,RetinaFace可以在单个CPU核上实时运行vga分辨率图像。
1,引言
人脸自动定位是人脸图像分析的前提步骤,在人脸属性(如表情[64]、年龄[38])、人脸识别[45、31、55、11]等应用中都是必不可少的。人脸定位的狭义定义可以参考传统的人脸检测[53,62],其目的是在没有任何尺度和位置先验的情况下估计人脸边界框。然而,本文提出的人脸定位的广义定义包括人脸检测[39]、人脸对齐[13]、像素化人脸解析[48]和三维密集对应回归[2,12]。这种密集的人脸定位为所有不同的尺度提供了精确的人脸位置信息。
受通用目标检测方法的启发[16、43、30、41、42、28、29],融合了深度学习的最新进展,人脸检测最近取得了显著进展[23、36、68、8、49]。与一般的目标检测不同,人脸检测具有较小的比率变化(从1:1到1:1.5),但更大的尺度变化(从几个像素到数千像素)。目前最先进的方法[36,68,49]集中于单阶段[30,29]设计,该设计密集采样人脸在特征金字塔[28]上的位置和尺度,与两阶段方法相比,表现出良好的性能和更快的速度[43,63,8]。在此基础上,我们改进了单阶段人脸检测框架,并利用强监督和自监督信号的多任务损失,提出了一种最先进的密集人脸定位方法。我们的想法如图1所示。
人脸检测训练过程通常同时包含分类和box回归损失[16]。Chen等人[6](即MTCNN网络)在观察到对齐后的人脸形状为人脸分类提供了更好的特征的基础上,提出了将人脸检测和对齐结合在联合级联框架中。受[6]的启发,MTCNN[66]和STN[5]同时检测人脸和五个人脸Landmark。由于训练数据的限制,JDA[6]、MTCNN[66]和STN[5]还没有验证微小的人脸检测是否可以从额外的五个人脸Landmark的监督中获益。我们在本文中所要回答的问题之一是,能否利用由5个人脸Landmark构成的额外监控信号,在WIDER FACE的hard测试集[60]上推进目前最好的性能(90.3%[67])。
在Mask R-CNN[20]中,通过添加一个用于预测目标Mask的分支,与现有的用于边界框识别和回归的分支并行,显著提高了检测性能。这证实了密集的像素级注释也有助于改进检测。遗憾的是,对于WIDER FACE具有挑战性,无法进行密集的人脸注释(以更多的Landmark或语义段的形式)。由于有监督的信号不易获得,问题是我们能否应用无监督的方法进一步提高人脸检测。
在FAN[56]中,提出了一种anchor-level注意图(attention map)来改进遮挡人脸检测。然而,所提出的注意图相当粗糙,不包含语义信息。近年来,自监督三维形态模型[14,51,52,70]在wilder实现了很有前景的三维人脸建模。特别是Mesh解码器[70]利用节点形状和纹理上的图形卷积[10,40]实现了超实时速度。However, 应用mesh 解码器到单级探测器的主要挑战 [70]是: (1) 相机参数难以准去地估计 , 和 (2) 联合潜在形状和纹理表示是从单个特征向量(特征金字塔上的1*1 Conv)而不是RoI池化的特征预测,这表示特征转换的风险。本文采与现有监督分支并行的用网格解码器[70(mesh decoder)]通过自监督学习预测像素级的三维人脸形状。
综上所述,我们的主要贡献如下:
1,在单阶段设计的基础上,提出了一种新的基于像素级的人脸定位方法RetinaFace,该方法采用多任务学习策略,同时预测人脸评分、人脸框、五个Landmark以及每个人脸像素的三维位置和对应关系。
2,在WILDER FACE hard子集上,RetinaFace的性能比目前最先进的两阶段法(ISRN[67])的AP高出1.1% (AP等于91.4%)。
3,在IJB-C数据集上,RetinaFace有助于提高ArcFace的[11]验证精度(FAR=1e-6时TAR等于89:59%)。这表明更好的人脸定位可以显著提高人脸识别。
4,通过使用轻量级backbone网络,RetinaFace可以实时运行
5,已经发布了额外的注释和代码,以方便将来的研究
2,相关工作
图像金字塔 vs .特征金字塔:滑动窗口范例,其中分类器应用于密集的图像网格,可以追溯到过去的几十年。Viola-Jones[53]的里程碑式工作探索了级联链,实时有效地从图像金字塔中剔除假人脸区域,使得这种尺度不变的人脸检测框架被广泛采用[66,5]。尽管图像金字塔上的滑动窗口是主要的检测范式[19,32],随着特征金字塔[28]的出现,多尺度特征图上的滑动anchor[43][68,49]迅速主导了人脸检测。
两阶段vs .单阶段:目前的人脸检测方法继承了一般目标检测方法的一些成果,可分为两类:两阶段方法(如Faster R-CNN[43,63, 72])和单阶段方法(如SSD[30,68]和RetinaNet[29,49])。两阶段方法采用了一种具有高定位精度的“proposal与细化”机制。相比之下,单阶段方法密集采样人脸位置和尺度,导致训练过程中positive和negative样本极不平衡。为了解决这种不平衡,广泛采用了采样[47]和重加权[29]方法。与两阶段方法相比,单阶段方法效率更高,召回率更高,但存在假阳性率更高和定位准确性降低的风险。
上下文建模:利用特征金字塔上的上下文模块,增强模型捕捉微小人脸[23]、SSH[36]和PyramidBox[49]的上下文推理能力,扩大欧几里德网格的感受野。为了提高CNNs的非刚性变换建模能力,可变形卷积网络(deformable convolution network, DCN)[9,74]采用了一种新的可变形层对几何变换进行建模。WILDER FACE 2018[33冠军方案]表明,为了提高人脸检测的性能,刚性(expansion)和非刚性(deformation)上下文建模是互补和正交的。
多任务学习:联合人脸检测与对齐被广泛应用[6,66,5],对齐后的人脸形状为人脸分类提供了更好的特征。在Mask R-CNN[20]中,通过添加一个并行分支来预测目标Mask,显著提高了检测性能。Densepose[1]采用Mask-RCNN的结构,在每个选定区域内获得密集的part标签和坐标。然而,[20,1]中的dense回归分支是通过监督学习训练的。此外,dense分支是一个小的FCN应用于每个RoI预测像素到像素的密集映射。
3,RetinaFace
3.1 对于任何训练anchor i ,我们减少以下多项任务的损失:
(1)人脸分类损失, 其中
是 anchor i 为人脸的预测概率 , 对于positive anchor
是1,对于negative anchor为0。分类损失
是二类 softmax 损失。(2) 人脸 box回归损失为
, 其中
和
分别表示与正 anchor 相关的预测框和 ground truth 框的坐标。我们按照[16]对box回归目标(即中心位置、宽度和高度)进行标准化,并使用
。其中 R是[16]中定义的鲁棒损失函数 (smooth-L1)。(3)人脸 Landmark 回归损失
, 其中
并且
。表示与正anchor相关的五个预测的人脸Landmark和ground truth。与box中心回归相似,五个人脸Landmark回归也采用了基于anchor中心的目标归一化。(4) Dense 回归损失
(参考 Eq. 3 ). 损失平衡参数参数
设置 为 0.25 , 0.1 和 0.01 , 这 意味着我们从监督信号中增加更好的盒子和Landmark定位的重要性。
3.2,Dense 回归分支
Mesh 解码器:我们直接使用[70,40]中的Mesh解码器(mesh convolution and mesh up-sampling) ,这是一种基于快速局部谱滤波[10]的图卷积方法。为了实现进一步的加速,我们还使用了类似于[70]中方法的联合形状和纹理解码器,而不是只解码形状的[40]。
下面我们将简要解释图卷积的概念,并概述为什么它们可以用于快速解码。如图3(a)所示,二维卷积运算是欧几里德网格感受野内的“核加权邻域加和”。同样,图卷积也采用了图3(b)所示的相同概念。然而,邻域距离是通过计算连接两个顶点的最小边数来计算的。我们遵循[70]来定义一个着色的脸部网格(mesh), 其中
是一组包含联合形状和纹理信息的人脸顶点集合,
是一个稀疏邻接矩阵,它编码了顶点之间的连接状态。图拉普拉斯行列式定义为
,其中
是一个 对角 矩阵
。
图3。(a)二维卷积是欧氏网格感受野内核加权邻域和。每个 卷积 层 有参数.(b)图卷积也采用核加权邻域和的形式,但邻域距离是通过计算连接两个顶点的最小边数来计算的。每个卷积 层 有
参数 和 切比雪夫系数
在秩 为K时 截断。
遵循[10, 70 ], 图卷积的kernel 可以表示为以 K 为截断的递归Chebyshev多项式
其中, 是一个切比雪夫系数向量,
是在缩放的拉普拉斯
中评估 k 阶的切比雪夫多项式。定义
,循环计算
。其中
,
。整个滤波操作非常有效,包括 K 个稀疏矩阵-向量乘法和一个密集矩阵-向量乘法
可微的渲染器:在预测了形状和纹理参数 后,我们利用高效可微三维网格渲染器[14]将彩色网格
投影到二维图像平面上,相机参数
(即相机位置、相机姿态和焦距)和照明参数
(即点光源的位置、颜色值及环境光的颜色)。
Dense回归损失:一旦我们得到渲染的2D人脸 ;,我们使用以下函数比较渲染后的人脸与原始2D人脸的像素差异:
其中 W和H分别表示anchor crop I*i,j的宽度和高度。
图1所示。提出的单阶段像素级人脸定位方法,在现有的box分类和回归分支的基础上,采用了额外监督和自监督的多任务学习。每个正anchor输出(1)一个人脸评分,(2)一个人脸框,(3)五个人脸Landmarks,(4)投影在图像平面上的密集三维人脸顶点。
图2。单阶段密集人脸定位方法的概述。RetinaFace是基于具有独立上下文模块的特征金字塔设计的。根据上下文模块,我们计算每个anchor的多任务损失。
4,实验
4.1 数据集
WIDER FACE数据集[60]包括32203幅图像和393703个人脸边界框,在尺度、姿态、表情、遮挡和光照方面具有高度可变性。通过随机抽取61个场景类别,将WIDER FACE数据集分为训练(40%)、验证(10%)和测试(50%)子集。基于EdgeBox的检出率[76],通过逐步合并硬样本来定义三个难度等级(Easy、Medium和Hard)。
额外的标注:见图4和表1,我们定义五个级别的脸图像质量(根据在人脸上有多难注释Landmark)并在WIDER FACE的训练和验证子集上注释五个人脸Landmark(即眼中心,鼻子和嘴角)。我们总共在训练集上标注了84.6k个人脸,在验证集上标注了18.5k个人脸。
图4。我们在可以从WIDER FACE训练和验证集进行注释(我们称它们为“可注释的”)的人脸上添加额外的5个人脸Landmark注释。
表1。五级人脸图像质量。在无可争辩的类别中,人们可以在不费力的情况下找到Landmark。在可注释的类别中,查找大致位置需要一些努力。
4.2 实现细节
特征金字塔:RetinaFace采用从P2到P6的特征金字塔levels,其中P2到P5通过使用自顶向下和横向连接计算相应的ResNet残差阶段(C2到C5)的输出,如[28,29]。P6是在C5处通过一个3x3卷积 stride=2 计算得到到。C1-C5是在ImageNet-11k数据集上预先训练好的ResNet-152[21]分类网络,P6是用“Xavier”方法[17]随机初始化的。
上下文模块:受 SSH [36] 和 PyramidBox [49]启发, 我们 还 在五个特征金字塔levles上应用 独立 的 上下文 模块来提高 感受野并增加网络背景建模能力。教训 冠军 WIDER Face Challenge 2018 [33], 我们 也 替换 所有 3 卷积 layerswithin 外侧 连接 和 上下文 模块 变形 卷积 网络 (DCN) [9, 74 ], 进一步 加强 非 刚性 的 上下文 建模 capacity.从WIDER Face Challenge 2018 [33]的冠军中汲取教训,我们还通过可变形卷积网络(DCN)[9,74]替换横向连接和上下文模块中的所有3x3卷积层,这进一步加强了非刚性的上下文建模能力。
损失头:对于负acnhors,只应用分类损失。对于正anchors,计算了多任务损失。我们使用 一 个跨越不同特征图,
的共享损失头 (1x1 conv);对于网格解码器(mesh decoder),我们采用了预训练模型[70],这是一个很小的计算开销,允许有效的推理。
Anchor 设置:如表2所示,我们在特性金字塔levels(从P2到P6)上使用特定于尺度的anchor,类似[56]。在这里,P2被设计成通过平铺小anchor来捕捉微小的人脸,这样做的代价是花费更多的计算时间和更多的误报风险。我们将scale step设置为,aspect ratio设置为1:1。输入 图像 大小 为 640*640 , anchors可以 覆盖 从16x16 到 406x406的特征金字塔levels。总共有102300个anchors,其中75%来自P2。
表2。特征金字塔的细节,RetinaNet中的步幅大小,ancho配置r。输入图像为 640*640 ,共有102300 个anchors, 75%的anchors平铺在P2上。
在训练过程中,当IoU大于0.5时,anchors匹配到ground-truth box,当IoU小于0.3时匹配到background。不匹配的锚在训练中被忽略。由于大多数anchor(> 99%)在匹配步骤后为负,我们采用标准OHEM[47,68]来缓解正、负训练样本之间的显著不平衡。更具体地说,我们根据损失值对负锚进行排序,并选择损失最大的anchors,这样负样本和正样本之间的比例至少为3:1。
数据增强:由于WIDER FACE训练集中大约 有 20% 的小人脸 , 我们 遵循 [68, 49 ) 并从 原始 图像随机crop方形patches并调整 这些 patches到 640*640 产生 更 大 的 训练人脸。更具体地说,在原始图像的短边[0.3,1]之间随机裁剪正方形patches。对于crop边界上的人脸,如果面盒的中心在crop patches内,则保持面boxes的重叠部分。除了随机裁剪,我们还通过0.5概率的随机水平翻转和光度颜色蒸馏来增加训练数据[68]。
训练细节:我们使用 SGD 优化 器 (momentum为0.9, 权重衰减为0.0005, batch size为8*4 )训练 RetinaFace 。采用 四 个 NVIDIA Tesla P40 (24GB) GPUs.学习速率从10-3,在5个epoch后上升到10-2,然后在第55和第68个epochs时除以10。训练过程在第80个epochs结束。
测试细节:对于WIDER FACE的测试,我们遵循[36,68]的标准做法,采用flip以及多尺度(图像的短边在[500, 800, 1100, 1400, 1700])策略。使用IoU阈值为0.4,将Box voting[15]应用于预测的人脸boxes的并集。