RetinaFace 阅读笔记
RetinaFace: Single-stage Dense Face Localisation in the Wild(CVPR 2020)
- 之前看了一篇ASFD,也取得了SOTA,但是没有开源;因此目前最强开源人脸检测算法就是RetinaFace。(不知道MogFace算不算更强的)
- 后续的人脸检测可能就从RetinaFace上面魔改了
摘要
- 主要贡献总结为以下5点:
- 在 WIDER FACE 数据集上手动标注额外5个面部标志
- 添加一个自监督网格解码器分支,用于与现在的监督分支并行预测像素级3D形状人脸信息
- 在 WIDER FACE hard测试集上,RetinaFace 比最先进的平均精度 (AP) 高出 1.1%(实现 AP 等于 91.4%)
- 在IJB-C测试集上,RetinaFace使最先进的方法(ArcFace)提高了人脸检测的结果(TAR=89.59%,FAR=1e-6)
- 通过采用轻量级骨干网络,RetinaFace可以在单个CPU核心上实时运行VGA分辨率的图像
动机
- 改进了单阶段人脸检测框架,并通过利用强监督和自监督信号的multi-task loss,提出了一种最先进的密集人脸定位方法
解决方案
Multi-task Loss(多任务损失)
- 对于每一个训练样本 anchor
i
i
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 L = L_{cls}(p_i,p_i^*)+\lambda_1p_i^*L_{box}(t_i,t_i^*)+\lambda_2p_i^*L_{pts}(l_i,l_i^*)+\lambda_3p_i^*L_{pixel} L=Lcls(pi,pi∗)+λ1pi∗Lbox(ti,ti∗)+λ2pi∗Lpts(li,li∗)+λ3pi∗Lpixel
损失平衡参数 λ 1 − λ 3 λ_1-λ_3 λ1−λ3 设置为 0.25、0.1 和 0.01,这意味着我们增加了监督信号中 较好的box和landmark 的重要性- 面部分类损失 L c l s ( p i , p i ∗ ) L_{cls}(p_i,p^∗_i) Lcls(pi,pi∗)。其中 p i p_i pi 为anchor i i i 是人脸的预测概率, p i ∗ p^∗_i pi∗ 对于正 anchor 是1,对于负 anchor 是0。分类损失 L c l s L_{cls} Lcls是二元类(人脸/非人脸)的softmax损失
- 人脸bbox回归损失 L b o x ( t i , t i ∗ ) L_{box}(t_i,t^∗_i ) Lbox(ti,ti∗)。其中 t i = t x , t y , t w , t h i t_i = {t_x,t_y,t_w,t_h}_i ti=tx,ty,tw,thi 和 t i ∗ = t x ∗ , t y ∗ , t w ∗ , t h ∗ i t^∗_i = {t^∗_x,t^∗_y,t^∗_w,t^∗_h}_i ti∗=tx∗,ty∗,tw∗,th∗i 代表预测的bbox坐标和与正样本相关的gt bbox
- 面部landmark回归损失 L p t s ( l i , l i ∗ ) L_{pts}(l_i,l^∗_i ) Lpts(li,li∗)。其中 l i = { l x 1 , l y 1 , . . . , l x 5 , l y 5 } i l_i = \{l_{x1},l_{y1},...,l_{x5},l_{y5}\}_i li={lx1,ly1,...,lx5,ly5}i 和 l i ∗ = { l x 1 ∗ , l y 1 ∗ , . . . , l x 5 ∗ , l y 5 ∗ } i l^∗_i = \{l^∗_{x1},l^∗_{y1},...,l^∗_{ x5},l^∗_{y5}\}_i li∗={lx1∗,ly1∗,...,lx5∗,ly5∗}i 表示预测的五个面部landmarks和与gt bbox的5个landmarks。与bbox回归类似,五人脸landmarks回归也采用了基于anchor中心的目标归一化
- 密集回归损失 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 L_{pixel}=\frac{1}{W*H}\sum^W_i\sum^H_j\parallel\mathcal{R}(\mathcal{D}_{P_{st}},P_{cam},P_{ill})_{i,j}-I^*_{i,j}\parallel_1 Lpixel=W∗H1∑iW∑jH∥R(DPst,Pcam,Pill)i,j−Ii,j∗∥1,其中 W , H W,H W,H表示anchor crop I i , j ∗ I_{i,j}^* Ii,j∗的宽和高
Dense Regression Branch(密集回归分支)
Mesh Decoder(网格解码器)
- 我们定义彩色面网格 G = ( V , E ) \mathcal{G} = (\mathcal V,\mathcal E) G=(V,E),其中 V ∈ R n × 6 \mathcal V\in\mathbb R^{n×6} V∈Rn×6是包含脸部形状和纹理等信息的顶点集, E ∈ { 0 , 1 } n × n \mathcal E\in\{0,1\}^{n×n} E∈{0,1}n×n是一个稀疏的邻接矩阵,用来编码顶点之间的连接关系。图拉普拉斯定义为 L = D − E ∈ R n × n L=D-\mathcal E∈R^{n×n} L=D−E∈Rn×n,其中 D ∈ R n × n D∈\mathbb R^{n×n} D∈Rn×n是一个对角矩阵, D i i = ∑ j E i j D_{ii}=∑_j \mathcal E_{ij} Dii=∑jEij
- 核为
g
θ
g_θ
gθ 的图卷积可以被表述为一个
K
K
K 阶截断的递归切比雪夫多项式
y = g θ ( L ) x = ∑ k = 0 K − 1 θ k T k ( L ˜ ) x y=g_\theta(L)x=\sum_{k=0}^{K-1}\theta_kT_k(\~L)x y=gθ(L)x=k=0∑K−1θkTk(L˜)x其中 θ ∈ R K \theta\in \mathbb R^K θ∈RK 是切比雪夫系数的向量, T k ( L ˜ ) ∈ R n × n T_k(\~L)\in\mathbb R^{n×n} Tk(L˜)∈Rn×n 是在标度拉普拉斯算子 L ˜ \~L L˜ 处评估的 k k k 阶切比雪夫多项式。表示 x k = T k ( L ˜ ) x ∈ R n x_k = T_k (\~L)x ∈Rn xk=Tk(L˜)x∈Rn,我们可以循环计算 x ˉ k = 2 L ˜ x ˉ k − 1 − x ˉ k − 2 \bar x_k = 2 \~L\bar x_{k−1}− \bar x_{k−2} xˉk=2L˜xˉk−1−xˉk−2,其中 x ˉ 0 = x \bar x_0 = x xˉ0=x 和 x ˉ 1 = L ˜ x \bar x_1 = \~Lx xˉ1=L˜x。整个滤波操作非常有效,包括 K K K 次稀疏矩阵向量乘法和一次密集矩阵向量乘法 y = g θ ( L ) x = [ x ˉ 0 , . . . , x ˉ K − 1 ] θ y = g_θ(L)x = [\bar x_0,..., \bar x_{K−1}]θ y=gθ(L)x=[xˉ0,...,xˉK−1]θ
Differentiable Renderer(可微分渲染器)
- 在预测形状和纹理参数 P S T ∈ R 128 P_{ST} ∈ \mathbb R^{128} PST∈R128 之后,使用可微分 3D 网格渲染器将彩色网格 D P S T D_{P_{ST}} DPST 投影到具有camera参数 P c a m = [ x c , y c , z c , x c ′ , y c ′ , z c ′ , f c ] P_{cam} = [x_c,y_c,z_c,x'_c,y'_c,z'_c,f_c] Pcam=[xc,yc,zc,xc′,yc′,zc′,fc]的 2D 图像平面(即相机位置、相机姿态和焦距)和照明参数 P i l l = [ x l , y l , z l , r l , g l , b l , r a , g a , b a ] P_{ill} = [x_l,y_l,z_l,r_l,g_l,b_l,r_a,g_a,b_a] Pill=[xl,yl,zl,rl,gl,bl,ra,ga,ba](即位置点光源的颜色值和环境照明的颜色)
Dense Regression Loss(密集回归损失)
- 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 L_{pixel}=\frac{1}{W*H}\sum^W_i\sum^H_j\parallel\mathcal{R}(\mathcal{D}_{P_{st}},P_{cam},P_{ill})_{i,j}-I^*_{i,j}\parallel_1 Lpixel=W∗H1∑iW∑jH∥R(DPst,Pcam,Pill)i,j−Ii,j∗∥1,其中 W , H W,H W,H表示anchor crop I i , j ∗ I_{i,j}^* Ii,j∗的宽和高
数据集额外标注
网络结构、实验结果
- Anchor设置:在从
P
2
−
P
6
P_2-P_6
P2−P6 的特征金字塔上使用特定尺度的anchor。输入图像大小为 640×640,anchors 可以覆盖特征金字塔级别上从 16×16 到 406×406 的尺度。总共有 102300 个anchor,其中 75% 的 anchor 来自
P
2
P_2
P2
- 消融实验:其中DCN表示可变形卷积
- 人脸box准确率:
- 面部5个landmark的准确率:NME表示normalised mean errors,CED表示 cumulative error distributio
- 面部 稠密landmark 的准确率:
- 面部识别准确率:
- 推理效率: