前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Faster RCNN的神器是什么?

Faster RCNN的神器是什么?

作者头像
智能算法
发布2020-06-09 15:21:39
8660
发布2020-06-09 15:21:39
举报
文章被收录于专栏:智能算法智能算法

前几期我们一起学习了,R-CNN, SPP-Net, Fast RCNN等网络,链接如下: 目标检测算法Fast RCNN详解 目标检测算法SPP-Net详解 目标检测算法R-CNN详解

由于每期都是逐步改进,重复的不在赘述,所以建议先阅读前面的,这期我们继续改进,学习一下Faster RCNN都做了哪些改进?

我们知道Fast RCNN的主要贡献是将分类和回归整合到了网络中,虽然速度提升了不少,但是还是存在一个很大的问题,就是SS算法选择候选框,因为这个算法很难在GPU上运行,所以Faster RCNN就将选择候选框的方法也集成到了网络中。从R-CNN, Fast RCNNFaster RCNN,从框架上都做了哪些改变呢?如下表:

从上表中,可以看到在R-CNN时候三大步骤是独立的,候选框选择是SS算法,特征提取是深度网络,而分类和回归是单独的机器学习算法;Fast RCNN将分类回归也整合到了网络中;而今天要学的Faster RCNNSS算法选择候选,替换成了RPN(Region Proposal Network)深度网络。接下来我们先一起看一下Faster RCNN的整体框架。

1. Faster RCNN整体框架

我们先看看Faster RCNN的大致流程,主要流程跟前面的Fast RCNN都差不多,唯一不一样的就是候选框的选取,在Fast RCNN的时候是用SS算法进行选取,而在Faster RCNN这里用了RPN网络,如下图:

步骤如下:

  1. 将原始输入图像输入到卷积网络进行特征提取,得到特征图。
  2. 对获取到的特征图进行利用RPN网络进行提取候选框。
  3. 利用特征映射的方法将候选框的位置映射到特征图相应位置,并提取特征。
  4. 将提取的特征经过ROI Pooling层来固定特征数量。
  5. 将经过ROI Pooling的的特征输入到共享全连接层。
  6. 最后将共享全连接层的输出分别经过各自的全连接层利用softmax进行分类以及进行边框回 归。

核心改进在于利用的RPN网络代替SS算法提取了候选框。其他地方跟之前的Fast RCNN大致相同。接下来,我们一起重点看一下RPN网络长什么样子?

2. RPN网络详解

通过上面的学习,我们知道Faster RCNN的重要改进在于RPN层,我们来一起看一下这个RPN层是怎么实现网络提取的,如下图:

  1. 首先,我们经过卷积网络得到特征图之后,假设特征图的尺寸为W*H*D,先将特征图经过一个3*3*256的卷积层,将特征图的深度固定为256
  2. 接下来对W*H*256的特征图的每个像素都生成Kanchor boxes,映射到输入图像上,可以直接理解为,基于特征图生成了W*H*K个候选框。 稍后会一起看下如何生成候选框。
  3. 然后,利用特征图上的每个像素的256个特征,对该像素产生到原图上的候选框进行分类和回归。
  4. 我们通过前面学的FCN知道全连接层就相当于是1x1的卷积操作。 所以这里就直接用1x1的卷积层来直接对该像素产生的候选框进行分类,由于是提取候选框,所以该分类仅分两类: 目标和背景,每个候选框有两个得分,故而得到的分类结果就是一个W*H*2K的分类得分图。
  5. 同样,边框回归也利用1x1的卷积层代替全连接层,对映射到原图上的候选框进行回归,每个回归结果由向量[x,y,w,h]组成,所以得到的回归图的尺寸为W*H*4K.

对于上面第二步说的特征图上的每个像素都产生Kanchor boxes,如下图:

假如K=9的话,特征图上的一个像素产生的Kanchor boxes对应到原图上就是上图的9个候选框。分三组比例尺寸(1:1,1:2,2:1),三组size(128,256,512),共9个候选框,这样总共产生W*H*K个候选框。

RPN网络的大致流程理解了,那么具体该怎么训练网络呢?

RPN网络训练

我们以具体尺寸为例,来看下这个网络该怎么训练,假如我们最后一层卷积层提取到的特征图尺寸为40*60*256,如下图:

  1. 最后一个卷积层输出的特征图再进行一次3*3的卷积操作得到新的特征图;
  2. 新特征图的平面上共有40x60=2400个点,每个点都可以对应到原始图片上得到9anchor,所以移动可以得到40x60x9大约20000个候选区域。
  3. 计算所有候选区域是否为目标的得分。
  4. 把所有超出图片的候选区域都限制在图片区域内,给置信度得分排序,选出得分最大的前12000个候选区域。
  5. 在选出的候选区域里面,候选区域之间往往会有大量的重叠,这里基于上一步的得分,采取非极大值抑制(NMS)。 NMS之后再选出score得分最大的前2000个,接着对这2000个候选区域进行标定,比如候选与某个标定区域的IoU大于0.7的记为正样本,如果与任意一个标定框的IoU都小于0.3,那么该候选区域记为负样本,其余的不作为样本训练。
  6. 在训练RPN层分类回归任务时,随机抽取256个区域来训练,正负样本比例为1:1,如果正样本数量小于128,则用负样本填充。
  7. 在训练整个Faster RCNN的分类回归任务的时候,随机抽取64个与真实类别标注框IoU大于等于0.5的区域作为前景,256-64IoU大于0.1且小于0.5的区域作为背景来训练具体类别。

到这里,我们基本上介绍完了Faster RCNN的框架以及RPN网络的流程。但是明白了原理不代表知道具体怎么训练,下期我们深入一步,去学下这个网络的损失函数该怎么构建。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Faster RCNN整体框架
  • 2. RPN网络详解
    • RPN网络训练
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档