【MTCNN】- 论文笔记

【MTCNN】- 原理

人脸识别系统

  1. 人脸检测

  2. 人脸对齐(Face Alignment)

    需要检测人脸中的关键点(Landmark)
    

1.MTCNN

可以做到实时的检测

将原始图像缩放到不同尺度,形成图像金字塔

1.P-Net

在这里插入图片描述

P-Net 输入(12,12,3)

判断这个输入的图像中是否有人脸,并且给出人脸框关键点的位置

输出3部分组成

  1. face classification ——输出向量的形状为1x1x2,也就是两个值,分别为该图像是人脸的概率,以及该图像不是人脸的概率。这两个值加起来严格等于1。之所以使用两个值来表示,是为了方便定义交叉损失
  2. bounding box regression——给出框的位置,一般称之为框回归。P-Net输入的12x12的图像块可能并不是完美的人脸框的位置,如有的时候人脸并不正好为方形,有的时候12x12的图像块可能偏左或偏右,因此需要输出当前框位置相对于完美的人脸框位置的偏移。这个偏移由四个变量组成。一般地, 对于圄=图像中的框,可以用四个数来表示它的位置:框左上角的横坐标、框左上角的纵坐标、框的宽度、框的高度。因此,框回归输出的值是: 框左上角的横坐标的相对偏移、框左上角的纵坐标的相对偏移、框的宽度的误差、框的高度的误差。输出向量的形状就是图中的1x1x4。
  3. 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-Net的结构同样与P-Net类似,不同点在于它的输入是48×48×3的图像,网络的通道数和层数也更多了

4.网络说明

P-NetR-NetO-Net,网络输入的图片越来越大,卷积层的通道数越来越多,内部的层数也越来越多,P-Net运行速度最快,O-Net运行很慢

  • 之所以要使用三个网络,是因为如果一开始直接对图中的每个区域使用O-Net,速度会很慢,实践上P-Net先做一遍过滤将过滤后的结果再交给R-Net进行过滤,最后将过滤后的结果交给效果最好但速度较慢的O-Net进行判别。这样在每一步都提前减少了需要判别的数量,有效降低了处理时间。

  • MTCNN的损失定义和训练过程

    1. 人脸判别部分,直接使用交叉熵
    2. 针对框回归和关键点判定,直接使用L2损失
    3. 最后这三部分损失各自乘以自身权重再加起来

    在训练P-NetR-Net时,更关心框位置的准确性,而较少关注关键点判定的损失

2.论文笔记

I. I NTRODUCTION

本文的主要贡献

  1. 提出了一种新的人脸检测与对齐级联CNNs框架
  2. 提出了一种有效的在线难样本挖掘
  3. 性能提高

【2】C-Training

利用三项任务来训练CNN detectors

  1. face/non-face classification
  2. boundig box regression
  3. facial landmark localization

【1】face/non-face classification :学习目标被制定为二分类问题,对每个样本 x i x_i xi,我们使用交叉熵损失
L i d e t = − ( y i d e t log ⁡ ( p i ) + ( 1 − y i d e t ) ( 1 − log ⁡ ( p i ) ) ) L_{i}^{d e t}=-\left(y_{i}^{d e t} \log \left(p_{i}\right)+\left(1-y_{i}^{d e t}\right)\left(1-\log \left(p_{i}\right)\right)\right) Lidet=(yidetlog(pi)+(1yidet)(1log(pi)))

p i p_i pi网络输出

y i d e t y_i^{det} yidet真实标签

【2】Bounding box regression:学习目标被限制为回归问题
L i b o x = ∥ y ^ i b o x − y i b o x ∥ 2 2 L_{i}^{b o x}=\left\|\hat{y}_{i}^{b o x}-y_{i}^{b o x}\right\|_{2}^{2} Libox=y^iboxyibox22

y ^ i b o x \hat{y}_{i}^{b o x} y^ibox网络输出

y i b o x y_{i}^{b o x} yibox the nearest ground truth

【3】Facial landmark localization:回归任务
L i l a n d m a r k = ∥ y ^ i l a n d m a r k − y i l a n d m a r k ∥ 2 2 L_{i}^{l a n d m a r k}=\left\|\hat{y}_{i}^{l a n d m a r k}-y_{i}^{l a n d m a r k}\right\|_{2}^{2} Lilandmark=y^ilandmarkyilandmark22
【4】有5个面部标志(左眼,右眼,鼻子,左嘴角,右嘴角)
min ⁡ ∑ i = 1 N ∑ j ∈ { d e t , b o x , landmark } α j β i j L i j \min \sum_{i=1}^{N} \sum_{j \in\{d e t, b o x, \text {landmark}\}} \alpha_{j} \beta_{i}^{j} L_{i}^{j} mini=1Nj{det,box,landmark}αjβijLij

N—训练样本

a j a_j aj — 任务重要性

P-NetR-Net中使用 ( a d e l = 1 , a b o x = 0.5 , a l a n d m a r k = 0.5 ) (a_{del}=1,a_{box}=0.5,a_{landmark}=0.5) (adel=1,abox=0.5,alandmark=0.5)

O-Net中使用 ( a d e l = 1 , a b o x = 0.5 , a l a n d m a r k = 1 ) (a_{del}=1,a_{box}=0.5,a_{landmark}=1) (adel=1,abox=0.5,alandmark=1)

β i j ∈ { 0 , 1 } \beta_{i}^{j} \in\{0,1\} βij{0,1}样本类型指示器

【5】Online Hard sample mining

与原始分类器训练后进行传统难样本挖掘不同,我们在面部/非面部分类任务中进行online hard sample mining

  • 在每个mini-batch,我们将来自所有样本的前向传播中计算的损失进行排序,并选择其中前70%作为难样本。 然后我们只计算后向传播中这些难样本的梯度。 这意味着我们忽略了在训练期间不太有助于加强探测器的简单样本

参考

  1. 学习笔记:人脸检测和人脸识别
  2. MTCNN算法与代码理解—人脸检测和人脸对齐联合学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值