RetinaFace论文阅读

RetinaFace: Single-stage Dense Face Localisation in the Wild

paper: https://arxiv.org/pdf/1905.00641.pdf
github: https://github.com/deepinsight/insightface/tree/master/RetinaFace


Abstract

尽管在不受控制的人脸检测方面取得了巨大进步,但野外准确有效的面部定位仍然是一个开放的挑战。本文提出了一种强大的single-stage人脸检测器,名为RetinaFace,它利用联合监督和自监督的多任务学习,在各种人脸尺度上进行像素方面的定位。具体来说,我们在以下五个方面做出贡献:(1)我们在WIDER FACE数据集上手动注释五个面部标志,并在这个额外监督信号的帮助下观察hard face detection的显着改进。 (2)我们进一步添加自监督网格解码器分支,用于与现有监督分支并行地预测像素方式的3D形状面部信息。(3)在WIDER FACE测试集上,RetinaFace的性能优于现有技术平均精度(AP)1.1%(达到AP等于91.4%)。(4)在IJB-C测试集上,RetinaFace使最先进的方法(ArcFace)能够改善他们在面部验证中的结果(对于FAR = 1e-6,TAR = 89.59%)。 (5)通过采用轻量级骨干网络,RetinaFace可以在单个CPU核心上实时运行,以获得VGA分辨率的图像。额外的注释和代码已在以下网址提供 https://github.com/deepinsight/insightface/tree/master/RetinaFace

1. Introduction

自动面部定位是许多应用的面部图像分析的先决步骤,例如面部属性(例如表情[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]专注于single-stage[30,29]设计,它密集地对特征金字塔上的面部位置和尺度进行采样[28],并且与two-stage的方法[43,43,8]相比,展示了有前景的性能。遵循这条路线,我们改进了single-stage人脸检测框架,并通过利用来自强监督和自监督信号的多任务损失提出了最先进的密集人脸定位方法。我们的想法在图1中举例说明。

RetinaFace论文阅读_第1张图片
图1.所提出的single-stage像素人脸定位方法采用与现有box分类和回归分支并行的额外监督和自我监督的多任务学习。每个positive anchor输出(1)面部分数(2)面部框(3)五个面部标志 以及(4)投影在图像平面上的密集3D面部顶点。

通常,面部检测训练过程包含分类和box回归损失[16]。陈等人[6]提出在基于对齐面部形状提供更好的面部分类特征的观察的联合级联框架中结合面部检测和对准。受[6]的启发,MTCNN [66]和STN [5]同时检测到面部和五个面部标志。由于训练数据的限制,JDA [6],MTCNN [66]和STN [5]尚未证实微小的人脸检测能否受益于五个面部标志的额外监督。我们在本文中要回答的一个问题是,我们是否可以通过使用由五个facial landmarks构建的额外监督信号,在WIDER FACE测试集[60]上推进当前最佳性能(90.3%[67]) 。

在Mask R-CNN [20]中,通过添加用于预测与现有分支并行的对象掩模的分支来进行边界框识别和回归,从而显着提高了检测性能。这证实了密集的逐像素注释也有利于改善检测。不幸的是,对于WIDER FACE的挑战性面孔,不可能进行密集的面部注释(以更多地标或语义片段的形式)。由于无法轻易获得监督信号,因此问题在于我们是否可以采用无监督方法来进一步改善人脸检测。

在FAN [56]中,提出了一种anchor-level attention map来改善被遮挡的面部检测。然而,所提出的注意力图非常粗糙,并且不包含语义信息。最近,自监督的3D可变形模型[14,15,52,70]已经在野外实现了有前景的3D面部建模。特别是,网格解码器[70]通过利用关节形状和纹理的图形卷积[10,40]来实现超实时速度。然而,将网格解码器[70]应用于单级探测器的主要挑战是:(1)摄像机参数难以准确估计;(2)联合潜在形状和纹理表示是从单个特征向量预测的( 1x1 Conv on feature pyramid)而不是RoI池特征,表示特征转换的风险。在本文中,我们通过自监督学习使用网格解码器[70]分支来预测与现有监督分支并行的像素三维面部形状。

总而言之,我们的主要贡献是:

  • 基于single-stage设计,我们提出了一种名为RetinaFace的新型像素面部定位方法,该方法采用多任务学习策略同时预测面部评分,面部框,五个面部标志,以及每个面部的3D位置和面部像素对应关系。
  • 在WIDER FACE子集上,RetinaFace优于AP最先进的two-stage方法(ISRN [67])1.1%(AP等于91.4%)。
  • 在IJB-C数据集上,RetinaFace有助于提高ArcFace的[11]验证准确度(当FAR = 1e-6时,TAR等于89.59%)。这表明更好的面部定位可以显着改善面部识别。
  • 通过采用轻量级骨干网络,RetinaFace可以在单个CPU内核上实时运行,以获得VGA分辨率的图像。
  • 已发布额外注释和代码以方便将来的研究。

2. Related Work

RetinaFace论文阅读_第2张图片
图2.所提出的单阶段密集面定位方法的概述。 RetinaFace是基于具有独立上下文模块的特征金字塔设计的。在上下文模块之后,我们计算每个锚的多任务损失。

图像金字塔vs.特征金字塔:滑动窗口范例,其中分类器应用于密集图像网格,可以追溯到过去几十年。 Viola-Jones [53]的里程碑式工作探索了级联链,以实时效率从图像金字塔中拒绝假面部区域,从而导致这种尺度不变的面部检测框架的广泛采用[66,5]。即使图像金字塔上的滑动窗口是领先的检测范式[19,32],随着特征金字塔[28]的出现,滑动anchor[43]在多尺度特征图[68,49]上迅速占据面部检测主导地位。

Two-stage v.s. single-stage:目前的人脸检测方法继承了一般物体检测方法的一些成果,可以分为两类:两阶段方法(例如更快的R-CNN [43,43,72])和单阶段方法(例如SSD [30,68]和RetinaNet [29,49])。两阶段方法采用具有高定位精度的“提议和改进”机制。相比之下,单阶段方法对面部位置和尺度进行了密集采样,这导致训练期间极为不平衡的positive and negative样本。为了解决这种不平衡问题,广泛采用了抽样[47]和重新加权[29]方法。与两阶段方法相比,单阶段方法更有效并且具有更高的召回率,但存在获得更高的false positive rate并且损害定位准确性的风险。

上下文建模:为了增强模型的上下文推理能力以捕获tiny faces[23],SSH [36]和PyramidBox [49]在特征金字塔上应用上下文模块来扩大欧几里德网格的感受野。为了增强CNN的非刚性变换建模能力,可变形卷积网络(DCN)[9,74]采用了一种新颖的可变形层来模拟几何变换。WIDER Face Challenge 2018 [33]的冠军解决方案表明,刚性(扩展)和非刚性(变形)上下文建模是互补和正交的,以改善人脸检测的性能。

多任务学习:联合面部检测和对齐被广泛使用[6,66,5],因为对齐的面部形状为面部分类提供了更好的功能。在Mask R-CNN [20]中,通过添加用于预测与现有分支并行的对象掩模的分支,显着提高了检测性能。 Densepose [1]采用Mask-RCNN的架构来获得每个选定区域内的密集部分标签和坐标。尽管如此,[20,1]中的密集回归分支是通过监督学习进行训练的。此外,密集分支是应用于每个RoI的小FCN,以预测像素到像素的密集映射。

3. RetinaFace

3.1. Multi-task Loss

对于任何训练anchor i,我们最小化以下多任务损失:
L = L c l s ( p i , p i ∗ ) + λ 1 p i ∗ L b o x ( t i , t i ∗ ) + λ 2 p i ∗ L p t s ( l i , l i ∗ ) + λ 3 p i ∗ L p i x e l ( 1 ) \begin{aligned} L &=L_{c l s}\left(p_{i}, p_{i}^{*}\right)+\lambda_{1} p_{i}^{*} L_{b o x}\left(t_{i}, t_{i}^{*}\right) \\ &+\lambda_{2} p_{i}^{*} L_{p t s}\left(l_{i}, l_{i}^{*}\right)+\lambda_{3} p_{i}^{*} L_{p i x e l} \end{aligned}(1) L=Lcls(pi,pi)+λ1piLbox(ti,ti)+λ2piLpts(li,li)+λ3piLpixel1

3.2. Dense Regression Branch

网格解码器。我们直接采用[70,40]的网格解码器(网格卷积和网格上采样),这是一种基于快速局部光谱滤波的图卷积方法[10]。为了实现进一步的加速,我们也使用类似于[70]中的方法的联合形状和纹理解码器,与仅解码形状的[40]相反。

下面我们将简要解释graph convolutions的概念,并概述它们可用于快速解码的原因。如图3(a)所示,2D卷积运算是欧几里德网格感受野内的“核加权邻域和”。类似地,图形卷积也采用与图3(b)所示相同的概念。但是,通过计算连接两个顶点的最小边数,在图上计算邻居距离。我们按照[70]来定义彩色面网格 G = ( V , E ) \mathcal{G}=(\mathcal{V}, \mathcal{E}) G=(V,E)。其中 V ∈ R n × 6 \mathcal{V} \in \mathbb{R}^{n \times 6} VRn×6是一组包含连接形状和纹理信息的面部顶点, E ∈ { 0 , 1 } n × n \mathcal{E} \in\{0,1\}^{n \times n} E{0,1}n×n是一个稀疏的邻接矩阵,用于编码顶点之间的连接状态。拉普拉斯图被定义为 L = D − E ∈ R n × n L=D-\mathcal{E} \in \mathbb{R}^{n \times n} L=DERn×n,其中 D ∈ R n × n D \in \mathbb{R}^{n \times n} DRn×n是一个对角矩阵并且 D i i = ∑ j E i j D_{i i}=\sum_{j} \mathcal{E}_{i j} Dii=jEij。在[10,40,70]之后,图形与内核卷积 g θ g_{\theta} gθ可以表示为在K阶截断的递归Chebyshev多项式,
y = g θ ( L ) x = ∑ k = 0 K − 1 θ k T k ( L ~ ) x ( 2 ) y=g_{\theta}(L) x=\sum_{k=0}^{K-1} \theta_{k} T_{k}(\tilde{L}) x(2) y=gθ(L)x=k=0K1θkTk(L~)x2
其中 θ ∈ R K \theta \in \mathbb{R}^{K} θRK是切比雪夫系数的向量, T k ( L ~ ) ∈ R n × n T_{k}(\tilde{L}) \in \mathbb{R}^{n \times n} Tk(L~)Rn×n是在缩放的拉普拉斯算子L上评估的阶数k的切比雪夫多项式。表示 T k ( L ~ ) x ∈ R n T_{k}(\tilde{L}) x \in \mathbb{R}^{n} Tk(L~)xRn我们可以反复计算 x ‾ k = 2 L ~ x ‾ k − 1 − x ‾ k − 2 \overline{x}_{k}=2 \tilde{L} \overline{x}_{k-1}-\overline{x}_{k-2} xk=2L~xk1xk2 x ‾ 0 = x \overline{x}_{0}=x x0=x and x ‾ 1 = L ~ x \overline{x}_{1}=\tilde{L} x x1=L~x时。整个滤波操作非常有效,包括K稀疏矩阵 - 向量乘法和一个密集矩阵 - 向量乘法 y = g θ ( L ) x = [ x ‾ 0 , … , x ‾ K − 1 ] θ y=g_{\theta}(L) x=\left[\overline{x}_{0}, \ldots, \overline{x}_{K-1}\right] \theta y=gθ(L)x=[x0,,xK1]θ

不同的渲染器。在我们预测了形状和纹理参数之后 P S T ∈ R 128 P_{S T} \in \mathbb{R}^{128} PSTR128,我们采用高效的可微分3D网格渲染器[14]将colouredmesh D P S T \mathcal{D}_{P_{S T}} DPST投影到具有相机参数的2D图像平面上 P c a m = [ x c , y c , z c , x c ′ , y c ′ , z c ′ , f c ] P_{c a m}=\left[x_{c}, y_{c}, z_{c}, x_{c}^{\prime}, y_{c}^{\prime}, z_{c}^{\prime}, f_{c}\right] Pcam=[xc,yc,zc,xc,yc,zc,fc](即相机位置,相机姿势和焦距)和照明参数 P i l l = [ x l , y l , z l , r l , g l , b l , r a , g a , b a ] P_{i l l}=\left[x_{l}, y_{l}, z_{l}, r_{l}, g_{l}, b_{l}, r_{a}, g_{a}, b_{a}\right] Pill=[xl,yl,zl,rl,gl,bl,ra,ga,ba](即点光源的位置,颜色值和环境照明的颜色)。

密集回归损失。一旦我们得到渲染的2D人脸 R ( D P S T , P c a m , P i l l ) \mathcal{R}\left(\mathcal{D}_{P_{S T}}, P_{c a m}, P_{i l l}\right) R(DPST,Pcam,Pill),我们使用以下函数比较渲染和原始2D面的像素差异:
L p i x e l = 1 W ∗ H ∑ i W ∑ j H ∥ R ( D P S T , P c a m , P i l l ) i , j − I i , j ∗ ∥ 1 ( 3 ) L_{p i x e l}=\frac{1}{W * H} \sum_{i}^{W} \sum_{j}^{H}\left\|\mathcal{R}\left(\mathcal{D}_{P_{S T}}, P_{c a m}, P_{i l l}\right)_{i, j}-I_{i, j}^{*}\right\|_{1}(3) Lpixel=WH1iWjHR(DPST,Pcam,Pill)i,jIi,j13
其中 W W W and H H H分别是anchor crop I i , j ∗ I_{i, j}^{*} Ii,j的宽度和高度。

RetinaFace论文阅读_第3张图片
图3.(a)2D卷积是欧几里德网格感知野内的核加权邻域和。每个卷积层都有K_H * K_W * C_in * C_out个参数。(b)图卷积也采用内核加权邻域和的形式,但是通过计算连接两个顶点的边缘的最小数,在图上计算邻近距离。每个卷积层都有K*C_in*C_out 个输出参数

你可能感兴趣的:(【paper阅读】)