论文地址: https://kpzhang93.github.io/MTCNN_face_detection_alignment/paper/spl.pdf
github地址: https://github.com/kpzhang93/MTCNN_face_detection_alignment
一、背景介绍
- 人脸检测和特征点标定广泛用于人脸识别和表情分析等应用
- 人脸检测和特征点标点存在挑战
- 人脸遮挡
- 光照
- 等等
- Mtcnn是级联网络结构,可以实现人脸检测和5个特征点的标定,由三个深度卷积网络构成(P、R、O),是一个轻量级网络,可以实现实时人脸检测和标定。
二、网络结构介绍
- 级联网络工作流程
- 数据预处理: 图像金字塔resize产生多个尺寸的图片。
- 首先通过一个比较简单的卷积神经网络P产生多个脸部的预选框。
- 其次通过一个比较复杂的卷积神经网络R优化P产生的人脸框,去除大部分非人脸区域的框。
- 最后通过有个最强壮的网络优化R输出的人脸框和输出五个特征点的位置。
训练阶段
P-Net
- 数据层大小为:num 3 12 12
- 3个卷积核为 3 3的CNN层
- 最后输出1个future维度为1
1
32。
- 1 1 2: 表示这个预测框的区域是人脸和非人脸的概率值
- 1 1 4: 表示这个回归的值
- 1
1
10:表示脸部五个特征点的位置
R-Net
- 数据层大小为:num 24 24 3
- 2个卷积核为3
3的CNN + 1个卷积核为2
2的CNN。
- O-Net
- 数据层大小为:num 3 48 48
- 3个卷积核为3
3的CNN + 2个卷积核为2
2的CNN + 1个全连接层。
- Loss层
- 三个网络的classification的loss计算公式:
: ground truth 的label
: 预测是人脸概率。 - box的loss计算公式:
:网络输出的回归坐标
:ground truth的坐标位置
- facial landmark localization的loss:
- facial landmark localization的loss:
- 总目标loss,由于是多任务训练,比如背景取样自计算landmark loss,其他两个loss就可以置为0。如下面公式
N代表训练样本数量 -
代表对应任务的重要性
P-Net:
R-Net:
O-Net: - 代表样本类型
- 三个网络的classification的loss计算公式:
- Online Hard sample mining ,边训练边选择出hard sample,只有hard samples才进反向传播,其他样本不进行反向传播。具体做法:对每个小批量里所有样本计算loss,对loss进行降序,前70%samples 做为hard samples进行反向传播。
训练数据预处理
- 数据类型有下面四种,通过从WIDER FACE数据集随机crop生成 Negtives、Positives、Part faces,从CelebA 获得landmark数据。
数据类型 | Negatives | Positives | Part faces | Landmark faces |
---|---|---|---|---|
条件 | IoU<0.3 | IoU>0.65 | 0.4<=Iou<=0.65 | 5个特征点位置 |
用途 | 用于人脸分类任务 | 用于人脸分类任务 | 回归任务 | landmark任务 |
P-Net
通过从WIDER FACE数据集随机crop生成 Negtives、Positives、Part faces。从CelebA 获得landmark数据。
R-Net
通过P-Net从WIDER FACE检测人脸生成 Negtives、Positives、Part faces。从CelebA 获得landmark数据。
O-Net
通过O-Net、P-Net从WIDER FACE检测人脸生成 Negtives、Positives、Part faces。从CelebA 获得landmark数据。
三、实验结果
the effectiveness of online hard sample mining
本文章通过训练两个O-Net,两个网络的学习速率固定且一样,一个是有进行hard sample处理,一个是没处理。对比两个网络loss曲线, 可以看出hard samples的loss效果比较好。
The effectiveness of joint detection and alignment
本文章实验结论:O-Net加入人脸特征点标定任务,有利于人脸的检测和对齐。如下图,JA,代表加入人脸特征点标定任务,效果做好,No JA in BBR表示没有在回归任务上加入人脸标定任务,No JA表示全部都没加入人脸特征点标定任务。
运行时间分析
2.60GHz CPU:16fp
Nvidia Titan Black(GPU): 99fp运行demo人脸检测和对齐效果图