【MTCNN】- 论文笔记
【MTCNN】- 原理
人脸识别系统
人脸检测
人脸对齐(Face Alignment)
需要检测人脸中的关键点(Landmark)
1.MTCNN
可以做到实时的检测
将原始图像缩放到不同尺度,形成图像金字塔
1.P-Net
P-Net 输入(12,12,3)
判断这个输入的图像中是否有人脸,并且给出人脸框关键点的位置
输出3部分组成
face classification
——输出向量的形状为1x1x2,也就是两个值,分别为该图像是人脸的概率,以及该图像不是人脸的概率。这两个值加起来严格等于1。之所以使用两个值来表示,是为了方便定义交叉损失bounding box regression
——给出框的位置,一般称之为框回归。P-Net输入的12x12的图像块可能并不是完美的人脸框的位置,如有的时候人脸并不正好为方形,有的时候12x12的图像块可能偏左或偏右,因此需要输出当前框位置相对于完美的人脸框位置的偏移。这个偏移由四个变量组成。一般地, 对于圄=图像中的框,可以用四个数来表示它的位置:框左上角的横坐标、框左上角的纵坐标、框的宽度、框的高度。因此,框回归输出的值是: 框左上角的横坐标的相对偏移、框左上角的纵坐标的相对偏移、框的宽度的误差、框的高度的误差。输出向量的形状就是图中的1x1x4。Facial lanmark localization
——5 个关键点分别为:左眼的位置、右眼的位置、鼻子的位置、左嘴角的位置、右嘴角的位置。每个关键点又需要横坐标和纵坐标两维来表示,因此输出一共是10维(即1x1x10)
2.R-Net
R-Net输入(24,24,3)
也就是说,R-Net 判断 24×24×3的图像中是否有人脸,以及预测关键点的位置。R-Net的输出和
P-Net 完全一样,同样由人脸判别、框回归、关键点位置预测三部分组成在实际应用中,对每个P-Net输出可能为人脸的区域都缩放到24x24的大小,再输入到R-Net中,进行进一步判定,R-Net消除了P-Net中很多误判的情况
3.O-Net
进一步把所得到的区域缩放成48×48的大小,输入到最后的
0-Net
中,0-Ne
t的结构同样与P-Net
类似,不同点在于它的输入是48×48×3的图像,网络的通道数和层数也更多了
4.网络说明
P-Net
、R-Net
,O-Net
,网络输入的图片越来越大,卷积层的通道数越来越多,内部的层数也越来越多,P-Net
运行速度最快,O-Net
运行很慢
之所以要使用三个网络,是因为如果一开始直接对图中的每个区域使用
O-Net
,速度会很慢,实践上P-Net
先做一遍过滤将过滤后的结果再交给R-Net进行过滤,最后将过滤后的结果交给效果最好但速度较慢的O-Net进行判别。这样在每一步都提前减少了需要判别的数量,有效降低了处理时间。MTCNN的损失定义和训练过程
- 人脸判别部分,直接使用交叉熵
- 针对框回归和关键点判定,直接使用L2损失
- 最后这三部分损失各自乘以自身权重再加起来
在训练
P-Net
和R-Net
时,更关心框位置的准确性,而较少关注关键点判定的损失
2.论文笔记
I. I NTRODUCTION
本文的主要贡献
- 提出了一种新的人脸检测与对齐级联CNNs框架
- 提出了一种有效的在线难样本挖掘
- 性能提高
【2】C-Training
利用三项任务来训练CNN detectors
- face/non-face classification
- boundig box regression
- facial landmark localization
【1】face/non-face classification
:学习目标被制定为二分类问题,对每个样本,我们使用交叉熵损失
网络输出
真实标签
【2】Bounding box regression
:学习目标被限制为回归问题
网络输出
the nearest ground truth
【3】Facial landmark localization
:回归任务
【4】有5个面部标志(左眼,右眼,鼻子,左嘴角,右嘴角)
N
—训练样本— 任务重要性
P-Net
和R-Net
中使用
O-Net
中使用样本类型指示器
【5】Online Hard sample mining
与原始分类器训练后进行传统难样本挖掘不同,我们在面部/非面部分类任务中进行
online hard sample mining
- 在每个mini-batch,我们将来自所有样本的前向传播中计算的损失进行排序,并选择其中前70%作为难样本。 然后我们只计算后向传播中这些难样本的梯度。 这意味着我们忽略了在训练期间不太有助于加强探测器的简单样本
参考
下一篇: 男士风度