Faster R-CNN论文笔记

论文地址:https://arxiv.org/abs/1506.01497
前言: Fast R-CNN在目标检测效果上已经达到state of the art,并且在去掉region proposal的过程后,检测网络能够达到实时的效果,但是由于采用selective search方法太过于耗时,导致region proposal成为了性能上的瓶颈,因此这篇文章相较于Fast R-CNN主要做的工作在于设计出一个region proposal 网络结构生成候选框,通过与检测网络共享卷积层的方式极大的降低了region proposal这一过程的耗时。

论文的主要贡献:

  1. 抛弃滑窗和selective search的方法提出region proposal network
  2. 采用卷积层共享的方法极大的降低了region proposal 的耗时

网络结构

Faster R-CNN网络结构图
模型主要由特征提取卷积网络、RPN网络、ROIpooling、全连接网络组成,下面将对每一部分做出具体介绍

1. 图像输出

网络支持任意大小图像输入,然后resize到固定大小MXN,之所以这样主要是为了在训练时方便批次处理

2.特征提取卷积网络

以VGG16为例(当然也支持其它网络模型),特征提取网络部分由13个conv层+13个relu层+4个pooling层构成,其中所有conv层的kenel_size=3,pad=1,stride=1,因此,通过卷积层的输入和输出特征大小一致,所有的pooling层的kenel_size=2,pad=0,stride=2,因此通过pooling层后输出特征层大小为输入特征层的1/2,这样经过特征提取卷积网络后,MXN的输入图像输出为 M 16 \frac{M}{16} 16MX N 16 \frac{N}{16} 16N的特征图大小

3.RPN Networks

3.1 网络结构如下图所示
在这里插入图片描述
经过特征提取卷积网络得到的特征图(vgg16网络输出特征图深度为256)输入到RPN网络中,先进行3x3的卷积处理,然后分成两个分支分类别进行1x1卷积,一个分支用于softmax分类(在RPN中为两类,即目标与非目标),一个分支用于anchor回归
关于anchor的概念实质为人为设定一系列的矩形检测框,在经过前面的卷积网络得到特征图后,在特征图的每一个像素点上人为设定一系列大小和比例的矩形检测框,如下图右侧所示,论文中在每一个像素点上设定三个尺度矩形框标准,然后每一个尺度按照长宽比为1:1, 1:2,2:1生成三个矩形框,因此每一个像素点设定9个矩形框,称之为anchor,映射回原图就是在图上设定了上千个检测框,基本覆盖了所有可能存在的目标。在生成k(k=9)个anchor后便执行分类和回归两个任务,分类的目的是为了确定这些框中是否包含目标,回归则是对包含目标的anchor坐标进行修正,使得框的位置更加精确。

解释一下2k和4k,在分类时,由于采用的是softmax激活函数作为输出预测,而对于每一个anchor都存在包含目标和不含目标两种情况,包含目标为正例,不含目标为负例,k个anchor因此有2k个预测值。同理在对anchor进行回归训练时,每一个anchor包含(x, y, w, h)四种偏移量,因此有4k个输出值。
在训练rpn网络时,由于anchor太多,因此在训练时只会在符合要求的anchor中随机选取128个正例anchor和128个负例anchor参与训练,这里的符合要求的anchor需要注意一下,anchor与GT(包含目标真实框)间IoU>0.7,认为是该anchor是positive,anchor与GT间IoU<0.7,认为是该anchor是negative,至于anchor与GT间IOU在0.3到0.7之间的不参与训练。在anchor回归训练时也只在包含目标的anchor上进行。

3.2 Proposal Layer
上述RPN网络两部分结构得到每个anchor的positive 和negative的概率,以及对应的框坐标的回归参数,此部分则是综合这些信息给出最符合条件的anchor,具体做法如下:
1. 生成anchor,根据得到的回归参数做修正
2. 根据positive的得分进行排序,取出前topN的anchor
3. 对anchor边界进行限制,不超出原图像的大小(映射回原图即MXN大小)
4. 对尺寸较小的anchor进行剔除
5. 对剩余的positive anchor进行NMS
此部分得到的anchor是相较与MXN的原图而言的,严格意义上的检测到此结束,后面的网络部分则是对这部分生成的anchor做多分类(即识别)以及检测框的进一步调整

4. ROI Pooling

经过RPN网络得到的anchor的大小不一,ROI Pooling的作用就是是的这些大小不一的特征框固定到相同的尺寸,论文中经过ROI Pooing处理后的anchor均固定到7x7的size
具体实现是对这些尺寸不同的anchor划分为7x7的网格,对每一个网各做maxpooling操作,这样就能保证任意尺寸的特征图都固定到7x7的大小,这样就能保证图像中所有的anchor在后续的卷积运算中共享卷积层

5. full connect

在这里插入图片描述
对所有的proposal anchor进行分类,同时做bbox regression获取更高精度的回归框

6. RPN训练及ROI筛选过程

  1. Anchor生成,特征图上的每一个点设置9个anchor(三个尺度,每个尺度按照三个比例生成)
  2. 根据设定的anchor与GT的IOU对anchor划分正负样本,IOU>0.7为正样本,IOU<0.3为负样本
  3. 对正负样本的anchor按照1:1比例进行选取,各128个共256个anchor参与PRN网络分类回归训练
  4. 根据训练的PRN网络,对所有的anchor进行预测,得到类别分数及修正后的坐标,也就是得到区域提议框(region proposal)
  5. 对所有的region proposal进行过滤,剔除过小的框,修正超出图像边界的框,然后进行NMS,保留大约2000个(训练)/300个(测试),进行ROI pooling
  6. 基于5得到的ROI feature,按照正负样本比1:3选取128个样本框参与后面第二阶段的fast rcnn训练,选取原则是计算ROI与gt的IOU,大于0.5为正样本,小于0.5为负样本,且正样本限制在32个,负样本限制在96个

参考:
7. https://zhuanlan.zhihu.com/p/31426458
8. https://zhuanlan.zhihu.com/p/32404424
9. https://jishuin.proginn.com/p/763bfbd3be9a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值