原论文:《J. Deng, J Guo, Y Zhou, et al. RetinaFace: Single-stage Dense Face Localisation in the Wild[J]. arXiv:1905.00641v2》
最后面有参考代码的 Github 链接
论文的两个特点:
- 引入了人脸关键点信息;
- 引入了人脸的三维信息。
骨干网络:ResNet-152
1. 结构图如下:

- 它使用了骨干网络中残差阶段 C2、 C3、C4 以及 C5 的特征图;
- 在 C5 后使用步长为 2 的 3×3 卷积构建了 C6。在训练时,这个卷积层用 Xavier 方法进行随机初始化;
- 由 C2、 C3、C4 以及 C5 的特征图构建 特征金字塔 (Feature Pyramid)中的各层 P2、 P3、P4 以及 P5;
- 将 C6 作为 P6;
- 在 P2、 P3、P4、P5 以及 P6 上分别使用 上下文模块 (Context Module);
- 每个上下文模块后面均跟一个多任务模块及相应的损失函数。
这里的 上下文模块 就是 SSH 模型中的检测器模块,或者 PyramidBox 模型中的 CPM 模块。
上下文模块 中所有 3×3 卷积层替换为 可形变卷积网络(Deformable Convolution)
2. Anchor 的设置
Anchor 的宽高比为 1,特征金字塔中每层 Anchor 的尺寸与步长如下表所示。Anchor 一共 102300 个,其中有 75% 在 P2 上。
| 特征金字塔 |
步长 |
Anchor尺寸 |
| P2(160×160×256) |
4 |
16、20.16、25.40 |
| P3(80×80×256) |
8 |
32、40.32、50.80 |
| P4(40×40×256) |
16 |
64、80.63、101.59 |
| P5(20×20×256) |
32 |
128、161.26、203.19 |
| P6(10×10×256) |
64 |
256、322.54、406.37 |
- 当 IoU>0.5 时,将 anchor 匹配到 Ground-Truth 上;
- 当 IoU<0.3 时,将 anchor 匹配到 Background 上;
- 使用分类的值对负样本 anchor 进行排序,仅使用第一个;
- 使用 OHEM 缓解正负样本的不平衡;
- 最终正负 anchor 样本比为 1:3。
3. 损失函数

对训练的第 i 个 anchor,待最小化的损失函数为:
L=Lcls(pi,pi∗)+λ1pi∗Lbox(ti,ti∗)+λ2pi∗Lpts(li,li∗)+λ3Lpixel
其中,
-
λ1=0.25,λ2=0.1,λ3=0.01;
-
pi∗ 是 anchor 的正负标记,1 为正样本,0 为负样本;
-
pi 是 anchor 作为人脸的概率;
-
Lcls 是人脸的二分类 softmax 损失函数;
-
ti∗={tx∗,ty∗,tw∗,th∗}i 是与正样本 anchor 相关的 Ground-Truth 位置坐标;
-
ti={tx,ty,tw,th}i 是模型预测的人脸框位置坐标;
-
Lbox 是人脸框回归的 Smooth L1 损失函数;
-
li∗={lx1∗,ly1∗,...,lx5∗,ly5∗}i 是与正样本 anchor 相关的五个人脸关键点坐标;
-
li={lx1,ly1,...,lx5,ly5}i 是模型预测的五个人脸关键点坐标;
-
Lpts 是人脸关键点回归的损失函数;
-
Lpixel 是稠密回归损失函数(Dense Regression Loss),用于控制模型对人脸 3 维信息的利用:
Lpixel=W∗H1i∑Wj∑H∣∣R(DPST,Pcam,Pill)i,j−Ii,j∗∣∣1
其中,
-
W 与 H 分别是 Anchor Crop Ii,j∗ 的宽与高;
-
Pcam={xc,yc,zc,xc′,yc′,zc′,fc} 是三维的摄像头参数,这里面的内容分别代表 摄像头位置 {xc,yc,zc}、姿态 {xc′,yc′,zc′}、焦距 fc;
-
Pill={xl,yl,zl,rl,gl,bl,ra,ga,ba} 是三维的照明参数,这里面的内容分别代表 点光源位置 {xl,yl,zl}、点光源色值 {rl,gl,bl}、侧光色值 {ra,ga,ba};
-
PST∈R128 是根据图片预测的人脸形状与纹理参数;
-
DPST 是着色的网状结构(Coloured-Mesh),它是由网状结构解码器(Mesh Decoder)对 PST 解码得到的;
-
R(DPST,Pcam,Pill) 是 可微渲染器,负责将含有三维信息的 {DPST,Pcam,Pill} 映射为一个二维的图片。
- 论文里使用的 Mesh Decoder 是在论文《Dense 3d
face decoding over 2500fps: Joint texture and shape convolutional mesh decoders》中预训练得到的。
4、训练
使用带有冲量(momentatum) 0.9 与权重衰减(weight decay) 0.0005 的随机梯度下降法。
参考材料