论文阅读六:MTCNN人脸检测器的理解

   MTCNN是目前应用十分广泛的基于级联的特定目标检测器,好多公司的人脸检测算法都是基于此,之前接触过该检测器,这次想再理解下其原理,学习下其思想,主要是想将PNet 、RNet 、ONet的思想应用到其他小的任务上。

PNet

PNet网络结构如下:
在这里插入图片描述
PNet的训练过程如下:
   在训练数据目标框周围采样正样本框IOU>0.65,采样的正样本框的原始大小是在该目标框的大小附近,采样负样本框IOU<0.3,同时 0.4 < IOU < 0.65的样本为中间样本。所有采集的样本都resize到12x12,送入到网络中。PNet是全连接网络,因此12x12最终得到的分类分支为: 2x1x1 (c,w,h) 和box回归分支的大小为:4x1x1(c,w,h)。
   cls分类分支的loss使用交叉熵损失,负样本标签为0,正样本标签为1。
   box回归分支的loss使用MSE损失,该分支学习到的是目标框相对于正样本的偏移量,(x1, y1)、(x2, y2)是原图中目标中的左上角和右下角,(nx1,ny1)、(nx2,ny2)是原图中正样本框的左上角和右下角,size 是正样本框的大小。
offset_x1 = (x1 - nx1) / float(size)
offset_y1 = (y1 - ny1) / float(size)
offset_x2 = (x2 - nx2) / float(size)
offset_y2 = (y2 - ny2) / float(size)
PNet的使用过程如下:
   使用时, 输入图片的按照金字塔的方式对原始图片进行缩放,然后送入到PNet网络,由于PNet是全连接网络,图片输入大小不受限制,因此分类分支得到 2xmxn的特征图,回归分支得到的是4xmxn的特征图,特征图上的 ( x , y ) (x,y) (x,y)需要影射到输入图片上 ( x ∗ , y ∗ ) (x^*, y^*) (x,y),映射关系如下: x ∗ = x ∗ s t r i d e x^* = x * stride x=xstride y ∗ = y ∗ s t r i d e y^* = y * stride y=ystride w ∗ = 12 w^* = 12 w=12 h ∗ = 12 h^* = 12 h=12

PNet的作用:
   PNet在训练的过程中,可以当成是一个小型的特征提取器,class的分类很好理解,就是位置的回归,这里我理解了好久,因为one-stage检测器(例如ssd 、yolo)学习的都是基于anchor的偏移量,这里我一直没有看到anchor的概念,所以重新去理解如何采样正样本,采样的时候,发现正样本的偏移量是目标框的位置相对于正样本的,并且进行了归一化。
   使用的时候,PNet相当于一个固定大小(12x12)的滑动窗,然后对每次滑动的位置进行分类和回归,判断有没有目标。
   观测PNnet的网络结构可以发现,只有三层卷积,一个池化,并且提取的特征长度是32 ,这是个浅小的网络,主要作用提取可能包含人脸的目标块,是个粗检测过程。

RNet 与 ONet

RNet网络结构如下:
在这里插入图片描述
ONet网络结构如下:
在这里插入图片描述
RNet或ONet训练过程如下:
   训练使用 的正样本框和负 样本框的方法一致,唯一不同的是,RNet需要将采样的样本框resize到(24,24),而ONet需要将采样的样本框resize到(48,48)。将 采样的到(24,24)样本框扔到RNet进行分类判断和回归预测,同样将(48,48)送入到ONet进行训练。
RNet,ONet的使用过程如下:
   PNet得到了很多可能包含人脸的目标框,然后将这些目标框仍到RNet坐二次判断和位置的修正,最后将RNet修正过的目标框仍到ONet做最后的修正,ONet 的输入的最终结果才是我们想要的结果。
RNet,ONet的作用:
1、网络深度 PNet(3个卷积1个池化) < RNet(3个卷积2个池化) < ONet (3个卷积3个池化)
2、网络提出的特征长度:PNet(32) < RNet(128) < ONet (256)
3、PNet是全连接网络,网络输入大小不受限制,RNet和ONet 不是,其网络输入必须是(24,24)和(48,48)
4、PNet 是滑动窗的作用,将图片中可能包含人脸的区域crop出来,然后又RNet 和 ONet对每个crop出来的位置框做位置修正。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值