Faster R CNN

Faster R CNN

3 FASTER R-CNN

我们的Faster R CNN 由两个模块组成,第一个模块是 proposes regions 的全卷积网络,第二个是使用 proposed regions 的 Faster R CNN 检测器。
在这里插入图片描述
在这里插入图片描述

3.1 Region Proposal Networks

RPN以一个图像作为输入,并输出一组矩形object proposal 每个提案都有 客观的score,我们用一个完全卷积的我网络对这个过程进行建模。由于我们的最终目标是与faster r cnn 目标检测网络共享计算,我们假设这两个网络共享一组公共的卷积层。

为了产生proposal region 我们在最后一个共享卷积层输出的卷积特征图上滑动了一个小网络。该小网络采用输入卷积特征的 nxn 空间窗口作为输入。每个滑动窗口映射到一个低维特征。这个特征被输入到两个完全连接的同级层:一个boxes回归层, 一个box分类层。本文使用n=3,输入图像上的有效感受野很大。由于迷你网络以滑动的方式工作,全连接层是在所有空间位置共享的。该体系结构自然由nxn卷积层和两个1x1卷积层(分别用于reg和cls)实现。

3.1.1 Anchors

在每个滑动窗口位置,我们同时预测多个region proposal,其中每个位置最大可能方案数为k,因此reg层有4k输出编码k个框的坐标,cls输出2k分数,估计每个proposal region的的对象概率和非对象概率。

anchor位于滑动窗口的中心,默认情况下,我们使用3个尺度和3个纵横比,一共9个anchor,对于W×H的feature map 来说,一共有WHk个anchor。

Translation-Invariant Anchors

我们的方法保证了平移不变性。我们的方法有(4 + 2)× 9 维卷积输出层,因此我们的proposal 层的参数很少。

Multi-Scale Anchors as Regression References

我们的anchor解决了多尺度的挑战。对于多尺度,第一种,图像/特征金字塔的方法非常费时,如DPM,第二种,在feature map上使用多尺度的滑动窗口,使用不同的filter尺寸来训练不同长径比的模型。基于anchor的方法,依赖单一尺度的图像和feature map,并且使用单一大小的filter。可以很好的解决多尺度和大小问题。

3.1.2 Loss Function

我们给两种anchors指定正标签(1)与ground truth的IoU最高的anchor(2)IoU大于0.7的anchor,一个单一的ground truth 可以为多个anchor指定正标签。利用这些定义,我们对图像的loss函数定义为:
在这里插入图片描述
其中,pi时anchor作为一个对象的预测概率,如果anchor is positive,即IoU满足以上两个条件之一,那么ground truth 的标签值pi为1。ti是表示预测bounding boxes的4个坐标的参数,ti是与positive anchor 相关联的ground truth的向量。分类损失是两个类上的log loss,我们使用
在这里插入图片描述
R是robust loss function(smooth L1)。前面乘了p*i表示回归loss只对positive anchors激活,否则为0。

对于bounding box regression,我们采用以下4个坐标的参数化:
在这里插入图片描述
其中带* *号的是用于groud truth的坐标,不带 *号的是是anchor和predicted boxes,然而,我们实现bounding box 的方法不同于以往RoI的方法。在我们的公式中,用于回归的feature在feature map 上有相同的空间大小(3x3)。
为了解释不同的尺寸,学习了k个bounding box regressors,每个regressor负责一个尺度和纵横比,他们互相不共享权值。

3.1.3 Training RPNs

每一个mini-batch都是由一张图像产生的,它包含很多positive的anchor和negative的anchor,可以对所有anchor的loss函数进行优化,但这将偏向负样本,因为它们的量远大于正样本,所以,我们在图像中随机抽样256个anchor,其中采样的正样本和负样本比例为1:1,如果正样本不足128,则用负样本填充。

3.2 Sharing Features for RPN and Fast R-CNN

4-Step Alternating Training.

我们采用了一种使用的四步训练算法,通过交替优化学习共享特征,第一步,我们训练RPN,使用ImageNet预训练。第二步, 我们使用RPN产生的proposal region,通过快速R-CNN来训练一个单独的检测器网络,该网络进行预训练,此时,这两个网络不共享卷积层。第三步,我们使用检测器网络来初始化RPN训练,但是我们fix共享卷积层,只对unique layer of RPN进行微调,此时,这两个网络共享卷积层。第四步,保持共享卷积层的固定,我们微调unique layers of fast R-CNN。

还有一个更为简单的方法,就是end-to-end的训练方法,将RPN和Fast R-CNN结合起来一起训练。

补充RoI pooling

ROI pooling具体操作如下:
(1)根据输入image,将ROI映射到feature map对应位置;
(2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
(3)对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。

参考:https://blog.csdn.net/AUTO1993/article/details/78514071

有一些实现细节,比如RPN网络得到的大约2万个anchor不是都直接给Fast-RCNN,因为有很多重叠的框。文章通过非极大值抑制的方法,设定IoU为0.7的阈值,即仅保留覆盖率不超过0.7的局部最大分数的box(粗筛)。最后留下大约2000个anchor,然后再取前N个box(比如300个)给Fast-RCNN。Fast-RCNN将输出300个判定类别及其box,对类别分数采用阈值为0.3的非极大值抑制(精筛),并仅取分数大于某个分数的目标结果(比如,只取分数60分以上的结果)

关于RPN:
https://blog.csdn.net/qq_36269513/article/details/80421990

关于nms:
https://www.cnblogs.com/makefile/p/nms.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值