RCNN系列


参考论文解析:
参考论文解析1
论文翻译(部分)

RCNN

1)候选区域选择

用的方法是Selective Search (ss),查看现有的小区域,合并两个最有可能的区域,重复此步骤,直到图像合并为一个区域,最后输出候选区域。

2)CNN特征提取

在特征提取之后,特征映射被卷积和汇集以获得输出。

3)分类与边界回归

一个是对前一步的输出向量进行分类(分类器需要根据特征进行训练),在分类器的选择中有支持向量机SVM,Softmax等等;
第二种是通过边界回归框回归(缩写为bbox)获得精确的区域信息,边界回归有bbox回归,多任务损失函数边框回归等 。

Fast RCNN

RCNN算法与图像内的大量候选帧重叠,导致提取特征操作中的大量冗余。 而Fast RCNN则很好的解决了这一问题。

1)候选区域选择

与RCNN一样

2)CNN特征提取

与RCNN一样

3)分类与边界回归

在第二步进行的卷积操作过后可以得到feature map,根据之前RoI框选择出对应的区域(既可以理解为将feature map映射回原图像), 在最后一次卷积之前,使用 RoI池层来统一相同的比例。
在RCNN中,在进行卷积操作之前一般都是先将图片分割与形变到固定尺寸,这也正是RCNN的劣势之处。不得不说,这对检测来说是十分不应该出现的,这会让图像产生形变,或者图像变得过小,使一些特征产生了损失,继而对之后的特征选择产生巨大影响。Fast RCNN与RCNN不同。其不同之处如下:Fast RCNN在数据的输入上并不对其有什么限制,而实现这一没有限制的关键所在正是ROI Pooling层。该层的作用是可以在任何大小的特征映射上为每个输入ROI区域提取固定的维度特征表示,然后确保每个区域的后续分类可以正常执行。
在这里插入图片描述
ROI是指的在SS完成后得到的“候选框”在特征图上的映射;

在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到ROIs特征图:在Fast RCNN中,它位于RoI Pooling之前,在Faster RCNN中,它是与RPN共享那个特征图,通常我们常常称之为“share_conv”;
RoI Pooling层将每个候选区域分为m * n个块。 针对每个块执行最大池操作,使得特征映射上不同大小的候选区域被变换为均匀大小的特征向量。 然后送入下一层。 举例来说,某个 ROI区域坐标为( x1, y1, x2, y2), 那么输入尺寸大小为( y2− y1)∗( x2− x1); 如果合并输出的大小为池高乘池宽,即pooledheight∗pooledwidth,则每个网格的大小都是为
在这里插入图片描述
在这里插入图片描述
虽然ROI Pooling可以看做是针对ROI区域的特征图像的池化操作,但有个问题。那就是因为不是固定大小的输入,会导致每次池化网格的大小都必须手动计算。这也将是在以后会得到改进的地方之一 。
因此先用Selective Search等proposal提取算法得到了候选框坐标, 然后输入到卷积神经网络中。其目的是预测每个候选框中包含的对象。但是在以上步骤中神经网络只是起到了在ROI区域的分类作用,并没有起到对整个图片进行分类。
Fast RCNN与RCNN不同。其不同之处如下:Fast RCNN在数据的输入上并不对其有什么限制,而实现这一没有限制的关键所在正是ROI Pooling层。该层的作用是可以在任何大小的特征映射上为每个输入ROI区域提取固定的维度特征表示,然后确保每个区域的后续分类可以正常执行。经过Fast RCNN的作者的努力,回归层完成了,起作用为输出为4K维数组t,表示属于 K- class时应该进行全景变换的参数,该参数进行了优化,针对每个ROI区域坐标的便宜都需要进行优化。tk=(tkx,tky,tkw,tkh),0≤k≤K是多类检测的类别序号。假设对于类别k∗,地面真值ground truth坐标在图中被标注:
t
=(tx*,ty*,tw*,th*) 真实的坐标值

t=(tx,ty,tw,th) 预测的坐标值

损失函数
在这里插入图片描述
在这里插入图片描述
函数是(-1,1)之间的二次函数,其他区域是线性函数。此处的回归操作与RCNN中的回归操作相同。但是有一点,其仅针对特定候选框(即Ground Truth的IoU大于特定阈值)。
纵使Fast RCNN与RCNN相比提升了不少,但是Fast RCNN仍旧有许多不足之处:因为Fast RCNN使用的是selective search选择性搜索,这一过程十分耗费时间,其进行候选区域提取所花费的时间约为2~3秒,而提取特征分类仅需要0.32秒[19],这会造成无法满足实时应用需求,而且因为使用selective search来预先提取候选区域,Fast RCNN并没有实现真正意义上的端到端训练模式,因此在众人的努力下,Faster RCNN应运而生。

自己的一些胡言论语:

	Fast R-CNN网络主要是想改进R-CNN网络和SPPnet的缺点。实际上,认真观察会发现,关于ROIs池化的提出,无非就是将R-CNN增加了一个池化层,并且改进了后面的网络(输出一个特征向量,然后分别进行分类和回归)。关于ROIs池化的提出,我觉得就是将SPPnet中的一个池化层换了个名字而已。其他的工作就是:之前R-CNN的分类器是SVM,然后通过实验发现了Softmax更好。还有等等。
	我觉得这篇文章写的贼有逻辑性(大写的佩服),首先讲了R-CNN、SPPnet网络的缺点,然后对部分的不足提出了一个新的方案(其实大部分思路也是来源于这两个网络,可以说成是拼凑+改进)。接着,对提出来的网络中的每个模块进行了理论剖析。在最后的实验部分,出来对给出的不同数据集进行了分析。贼有意思的是,采取了提问的方式对于很多细节进行了对比实验的分析,我甚至觉得这部分比对于提出网络的分析精彩的多,真的建议去读原文。

Faster RCNN

以下内容来自《阿里云天池大赛赛题解析——深度学习篇》P214-218.如有侵权,联系必删除。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值