原论文:《J. Deng, J Guo, Y Zhou, et al. RetinaFace: Single-stage Dense Face Localisation in the Wild[J]. arXiv:1905.00641v2》
最后面有参考代码的 Github 链接

论文的两个特点

  1. 引入了人脸关键点信息;
  2. 引入了人脸的三维信息。

骨干网络:ResNet-152

1. 结构图如下:

人脸检测模型RetinaFace论文学习笔记

  • 它使用了骨干网络中残差阶段 C2C_2C3C_3C4C_4 以及 C5C_5 的特征图;
  • C5C_5 后使用步长为 2 的 3×33\times3 卷积构建了 C6C_6在训练时,这个卷积层用 Xavier 方法进行随机初始化
  • C2C_2C3C_3C4C_4 以及 C5C_5 的特征图构建 特征金字塔 (Feature Pyramid)中的各层 P2P_2P3P_3P4P_4 以及 P5P_5
  • C6C_6 作为 P6P_6
  • P2P_2P3P_3P4P_4P5P_5 以及 P6P_6 上分别使用 上下文模块 (Context Module);
  • 每个上下文模块后面均跟一个多任务模块及相应的损失函数。

这里的 上下文模块 就是 SSH 模型中的检测器模块,或者 PyramidBox 模型中的 CPM 模块
上下文模块 中所有 3×33\times3 卷积层替换为 可形变卷积网络(Deformable Convolution)

2. Anchor 的设置

Anchor 的宽高比为 1,特征金字塔中每层 Anchor 的尺寸与步长如下表所示。Anchor 一共 102300 个,其中有 75% 在 P2P_2 上。

特征金字塔 步长 Anchor尺寸
P2(160×160×256)P_2(160\times160\times256) 4 16、20.16、25.40
P3(80×80×256)P_3(80\times80\times256) 8 32、40.32、50.80
P4(40×40×256)P_4(40\times40\times256) 16 64、80.63、101.59
P5(20×20×256)P_5(20\times20\times256) 32 128、161.26、203.19
P6(10×10×256)P_6(10\times10\times256) 64 256、322.54、406.37
  • IoU>0.5IoU>0.5 时,将 anchor 匹配到 Ground-Truth 上;
  • IoU<0.3IoU<0.3 时,将 anchor 匹配到 Background 上;
  • 使用分类的值对负样本 anchor 进行排序,仅使用第一个;
  • 使用 OHEM 缓解正负样本的不平衡;
  • 最终正负 anchor 样本比为 1:31:3

3. 损失函数

人脸检测模型RetinaFace论文学习笔记
对训练的第 ii 个 anchor,待最小化的损失函数为:
L=Lcls(pi,pi)+λ1piLbox(ti,ti)+λ2piLpts(li,li)+λ3Lpixel\begin{aligned}\\ L&=L_{cls}(p_i,p_i^*)+\lambda_1 p_i^*L_{box}(t_i,t_i^*)\\ &+\lambda_2 p_i^*L_{pts}(l_i,l_i^*)+\lambda_3 L_{pixel}\\ \end{aligned}
其中,

  • λ1=0.25\lambda_1=0.25λ2=0.1\lambda_2=0.1λ3=0.01\lambda_3=0.01
  • pip_i^* 是 anchor 的正负标记,1 为正样本,0 为负样本;
  • pip_i 是 anchor 作为人脸的概率;
  • LclsL_{cls} 是人脸的二分类 softmax 损失函数
  • ti={tx,ty,tw,th}it_i^*=\{t_x^*,t_y^*,t_w^*,t_h^*\}_i 是与正样本 anchor 相关的 Ground-Truth 位置坐标;
  • ti={tx,ty,tw,th}it_i=\{t_x,t_y,t_w,t_h\}_i 是模型预测的人脸框位置坐标;
  • LboxL_{box} 是人脸框回归的 Smooth L1Smooth\ L_1 损失函数
  • li={lx1,ly1,...,lx5,ly5}il_i^*=\{l_{x_1}^*,l_{y_1}^*,...,l_{x_5}^*,l_{y_5}^*\}_i 是与正样本 anchor 相关的五个人脸关键点坐标;
  • li={lx1,ly1,...,lx5,ly5}il_i=\{l_{x_1},l_{y_1},...,l_{x_5},l_{y_5}\}_i 是模型预测的五个人脸关键点坐标;
  • LptsL_{pts} 是人脸关键点回归的损失函数
  • LpixelL_{pixel} 是稠密回归损失函数(Dense Regression Loss),用于控制模型对人脸 3 维信息的利用
    Lpixel=1WHiWjHR(DPST,Pcam,Pill)i,jIi,j1L_{pixel}=\frac{1}{W*H}\sum_{i}^{W}\sum_{j}^{H}||\mathcal{R}(\mathcal{D}_{P_{ST}},P_{cam},P_{ill})_{i,j}-I_{i,j}^*||_1

其中,

  1. WWHH 分别是 Anchor Crop Ii,jI_{i,j}^* 的宽与高;
  2. Pcam={xc,yc,zc,xc,yc,zc,fc}P_{cam}=\{x_c,y_c,z_c,x_c',y_c',z_c',f_c\} 是三维的摄像头参数,这里面的内容分别代表 摄像头位置 {xc,yc,zc}\{x_c,y_c,z_c\}、姿态 {xc,yc,zc}\{x_c',y_c',z_c'\}、焦距 fcf_c
  3. Pill={xl,yl,zl,rl,gl,bl,ra,ga,ba}P_{ill}=\{x_l,y_l,z_l,r_l,g_l,b_l,r_a,g_a,b_a\} 是三维的照明参数,这里面的内容分别代表 点光源位置 {xl,yl,zl}\{x_l,y_l,z_l\}、点光源色值 {rl,gl,bl}\{r_l,g_l,b_l\}、侧光色值 {ra,ga,ba}\{r_a,g_a,b_a\}
  4. PSTR128P_{ST}\in \mathcal{R}^{128} 是根据图片预测的人脸形状与纹理参数;
  5. DPST\mathcal{D}_{P_{ST}} 是着色的网状结构(Coloured-Mesh),它是由网状结构解码器(Mesh Decoder)对 PSTP_{ST} 解码得到的;
  6. R(DPST,Pcam,Pill)\mathcal{R}(\mathcal{D}_{P_{ST}},P_{cam},P_{ill})可微渲染器,负责将含有三维信息的 {DPST,Pcam,Pill}\{\mathcal{D}_{P_{ST}},P_{cam},P_{ill}\} 映射为一个二维的图片。
  7. 论文里使用的 Mesh Decoder 是在论文《Dense 3d
    face decoding over 2500fps: Joint texture and shape convolutional mesh decoders
    》中预训练得到的。

4、训练

使用带有冲量(momentatum) 0.9 与权重衰减(weight decay) 0.0005 的随机梯度下降法。


参考材料

相关文章:

  • 2021-06-16
  • 2021-04-26
  • 2021-09-28
  • 2021-06-23
  • 2021-06-02
  • 2021-11-22
  • 2021-10-05
  • 2021-06-28
猜你喜欢
  • 2021-10-19
  • 2022-01-09
  • 2021-07-12
  • 2021-07-07
  • 2021-04-16
  • 2021-04-15
  • 2021-09-28
相关资源
相似解决方案