[MTCNN]2.级联卷积神经网络理解vlog2

MTCNN 级联卷积神经网络的理解Vlog2

一、论文复现-样本生成

  1. 网上对于MTCNN样本的选择,用的比较多的是Celeba和wider face,在看过两个数据集的标签后,果断偷懒选择Celeba数据集(因为标签文件比较简单,同时数据集中都是单个人脸的图片,对于数据的制作比较方便,但是Celeba数据集是存在着一些问题的,博主下面开始介绍)。
  2. 观察样本-秀儿Celeba:celeba数据集标签框是偏大的,在标注的时候,可能有点手抖,或者是故意增加训练的难度(这些都不是问题,在制作样本数据的时候可以使用一些技术或者其他的手段,或者自己标注来解决这些问题)
  3. 样本分析:1)样本数量:celeba样本数量20w,基础样本多,生成的样本更具多样性,泛华性能更强。2)样本质量:数据是否包含噪声,坐标不是很正确,人脸关键点比较准确。
  4. 考虑生成样本比例:1)每张人脸制作成3张正样本、3张部分样本、9张 负样本。2)保持正样本:部分样本:负样本=3:3:9。3)为什么要负样本比较多,因为主要是利用正样本和部分样本进行人脸的回归,训练中负样本数量很少,因此需要增加负样本使得模型对人脸和非人脸更好的区分。4)负样本比较多,是为了让网络更好的学习负样本,如果比较少,会出现网络误检率很高,知道什么是人脸,但是不知道什么不是人脸
  5. 置信度阈值处理:使用IOU的值,最为置信度来区分正样本、部分样本和负样本

iou>0.65为正样本
0.4 iou<0.3为负样本
0.3

  1. MTCNN中使用了一个与之前归一化方法不同的方式:引入偏移量。
    o f f s e t x = x l a b e l − x n e w w n e w offset_x = \frac{x_{label}-x_{new}}{w_{new}} offsetx=wnewxlabelxnew

offset_x:x的偏移量
x_label:左上角x的原始标签
x_new:偏移之后的左上角的坐标
w_new:偏移后的框的宽
【注意】这里使用了多个偏移框对一个框进行回归,一个框有多个样本的偏移量

二、论文复现-偏移量思考

  1. 模型学到的是什么?

1)网络学到的是偏移量,一个人脸有多组偏移量
2)用正样本和部分样本回归偏移量,网络学到的是偏移框,学多个偏移框,利用多个偏移框去回归真实框,保证不会因为某一两个偏移框学不好
3)这也是因为为什么MTCNN的召回率很高,一个目标框是由多个偏移框进行回归的,有多重保险
【注意】:模型真正学到的是不是矩形框,而是左上角和右下角的点,“是这两个点与周围的信息”;同理MTCNN是学习两个点的偏移量周围的信息

  1. 偏移框图解
    [MTCNN]2.级联卷积神经网络理解vlog2_第1张图片
    [MTCNN]2.级联卷积神经网络理解vlog2_第2张图片

三、论文复现-模型设计

[MTCNN]2.级联卷积神经网络理解vlog2_第3张图片
12x12:
1)使用了3x3,步长为2的重叠池化,使得池化更加严重
2)P-Net为全卷积结构,相当于利用组合卷积对图片进行卷积,
3)P-Net实际上是利用一个12x12的卷积核,步长为2的卷积对图像进行卷
4)只有一个2倍下采样
24x24:
1)网络比上一层网络加深,变为5层
2)后面使用全连接,进行信息融合
3)全连接相对于多个通道的卷积,全连接的计算量先对较少
4)两个2倍下采样
5)使用一个2x2的卷积核,让特征图变为奇数的3x3,有中心点,一个锚点
48x48:
1)O-Net有6层网络,最终和R-Net一样得到3x3的特征图,这样有利于
2)三个2倍下采样
3)使用了一个2x2的卷积,让特征图变成奇数

你可能感兴趣的:(MTCNN)