MTCNN——基于级联模型的人脸关键点检测网络

目录

1 致谢

2 前言

3 MTCNN——基于级联模型的人脸关键点检测网络

3.1 P-Net

3.1.1 训练数据是12x12,那么检测时也是要把所有的图像都放缩到12x12吗?

3.1.2 图像金字塔的建立


1 致谢

感谢网友任尔hz的帮助,

原文链接如下:

https://blog.csdn.net/qq_36782182/article/details/83624357

2 前言

今天在学习MTCNN,这个网络是张老师在人脸识别于检测课程上跟我讲的,但是我感觉讲的还是不是很清楚,还需要继续学习一下~

论文地址:

https://ieeexplore.ieee.org/document/7553523

3 MTCNN——基于级联模型的人脸关键点检测网络

MTCNN从整体结构上来看是一种级联模型,其组件网络P-Net、R-Net和O-Net在网络结构上其实是十分类似的,

其级联的特点表现在:对于P-Net、R-Net和O-Net这三个网络来说,当前网络的输入都是下一个网络的输入;

输入图像:

输入图像的尺寸可以是任意的,(这个我自己测试了的);

输出数据:

人脸的限位框以及关键点信息。

3.1 P-Net

P-Net是MTCNN中的第一个CNN网络,其构成如图所示:

输入:

训练数据——12x12的图像

推理数据——图像金字塔中的每个图像(已经向张老师确认过了)

输入:类别向量、限位框回归向量和脸部关键点的位置向量。

3.1.1 训练数据的生成

这里我们直接引用论文中的原话:

可以看到P-Net的数据是直接从 WIDER FACE数据集中截取出来的,(我感觉这里还有改进的空间) 

3.1.1 训练数据是12x12,那么检测时也是要把所有的图像都放缩到12x12吗?

看到训练的输入数据是12x12的时候,我有点奇怪,输入的图像是固定的尺寸12x12,难道是所有的图像都要缩放到12x12吗?

为了解决这个问题,我们先要去回顾以下检测的流程,

检测的流程其实是一个迭代的流程,MTCNN在P-Net阶段,会首先建立一个图像金字塔,

然后把图像金字塔中的每一层图像(也就是不同尺度的图像),分别送入P-Net中用来产生P-RP(也就是P-Net产生的第一阶段检测出的人脸区域,我们用P-RP即P-Net-Region-Proposal来代表这部分生成的数据);

但是这里输入为12x12的问题还没有解决,其实这里P-Net的含义是,我们将P-Net训练为一个对12x12图像十分敏感的网络,它能准确的提取12x12图像的特征,从整体上看,他似乎就是一个感受野为12x12的模板函数,只是在这里,我们用了一个CNN网络来拟合这个12x12的模板函数,并用他来为我们提取测试图像上12x12区域的“人脸模板特征”;

由于全卷积网络的特点,这样,我们就会对大中小各尺度图像中所有的12x12区域提取P-RP的特征数据,注意这里不仅仅是特征,因为这里的特征数据实际上包含了三个部分的数据:人脸分类信息,限位框信息和人脸关键点信息。

3.1.2 图像金字塔的建立

这里我们参见了Orso在文章《拒绝调包!且看MTCNN人脸检测推断过程详解!》中的表述:

minsize是指你认为图片中需要识别的人脸的最小尺寸(单位:px)。factor是指每次对边缩放的倍数。

我们已经知道,第一阶段会多次缩放原图得到图片金字塔,目的是为了让缩放后图片中的人脸与P-NET训练时候的图片尺度(12px * 12px)接近。怎么实现呢?先把原图等比缩放`12/minsize`,再按缩放因子`factor`(例如0.5)用上一次的缩放结果不断缩放,直至最短边小于或等于12。根据上述算法,minsize越大,生成的“金字塔”层数越少,resize和pnet的计算量越小。

所以我们可以知道,建立图像金字塔的过程就是从原图开始,以缩放因子factor为比例,不断进行resize,直至当前层的图像的最短边最短边小于或等于12。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值