RCNN,Fast RCNN,Faster RCNN的了解 实习第一课 3.20

two-stage算法
到了Fast R-CNN的时候,Feature extraction、location regressor、cls SVM都被整合到了一个network里面,可以实现这三个task一起train了。由于生成RP的task还需要另外train,故谓之曰“two-stage”
2-stage
one-stage算法
在YOLOv1中,“生成RP”(region proposal)这一任务被直接丢弃了。因此,整个算法只剩下了一个stage,故谓之曰“one-stage”:
1-stage

R-CNN
步骤:
1.将图片先处理:selective search提取1k~2k个候选区域,缩放为相同大小
2.送入CNN提取特征
3.送入SVM进行二分类(送入每一类的二分类器中进行分类判断)
4.使用回归器精细修正候选框位置
问题:
  1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;
  2)针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;
  3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。
  4)方法中的三个模型是分别训练的——CNN提取图像特征、分类器预测类别、回归模型tighten bounding box的边界,这也导致流程不易训练。

SPPNet——提升速度

(我理解的过程)
1.首先通过选择性搜索(selective search),对待检测的图片进行搜索出2000个候选窗口。这一步和R-CNN一样。
2.CNN输入整张图片
3.进行一次性特征提取,在conv5得到feature maps,然后在feature maps中找到各个候选框的区域(是抽取2000个中包含在feature maps中的那些?)(在原图上的候选框 通过stride映射得到)
4.对各个候选框采用金字塔空间池化,提取出固定长度的特征向量
5.SVM分类
6.Bounding Box(分界边框)回归独立训练
这篇blog很清楚:https://blog.csdn.net/dfsrewgf/article/details/52605192

特点:
1.空间金字塔池化(Spatial Pyramid Pooling )替换了全连接层之前的最后一个池化层。“可伸缩的池化层”,不管输入分辨率是多大,都可以划分成m*n个部分,适应不同分辨率的特征图。
2.只对原图提取一次特征:SPP的位置,放在所有的卷积层之后,有效解决了卷积层的重复计算问题(速度提高了24~102倍)
SPPNet
问题:
  (1)和RCNN一样,训练过程仍然是隔离的,提取候选框 | 计算CNN特征| SVM分类 | Bounding Box回归独立训练,大量的中间结果需要转存,无法整体训练参数;
  (2)SPP-Net在无法同时Tuning在SPP-Layer两边的卷积层和全连接层,很大程度上限制了深度CNN的效果;
  (3)在整个过程中,Proposal Region仍然很耗时。

Fast-R-CNN——在网络内进行分类和定位

我理解的过程:
1.首先通过选择性搜索(selective search),对待检测的图片进行搜索出2000个候选窗口。这一步和R-CNN一样。(在这里应该还是需要提取的吧?)
2.CNN输入整张图片
3.进行一次性特征提取,在conv5得到feature maps,然后在feature maps中找到各个候选框的区域(是抽取2000个中包含在feature maps中的那些?)
4.此处以下不同于SPPNet:使用了简化版的RoI池化层调整尺寸
5.多任务loss层,直接进行分类和定位

特点:
(1)共享卷积层:输入一张完整的图片,再把候选框(还是用selective search吗?)映射到conv5上,得到每个候选框的特征。(和SPPNet前3步一样吗,除了没有用金字塔池化之外,也要存储2k个feature map吧?)
提出简化版的ROI池化层(ROI池化层:Region of Interest 特征图的框,输入特征图尺寸不固定,但是输出特征图尺寸固定;)(注意,没用金字塔)。
Fast RCNN结构
2)多任务Loss层:把类别判断和位置精调统一用深度网络实现,不再需要额外存储用SVM、回归训练。
  在实现上是使用两个不同的全连接层,第一个全连接层(下图右上)有N+1个输出(N是类别总数,1是背景),表示各个类别的概率值;第二个全连接层(下图右下)有4N个输出,表示坐标回归值(tx,ty,tw,th),这个与R-CNN是一样的,每个类别都预测4个位置坐标值。Fast R-CNN采用了softmax分类器而不是SVM分类器(softmax性能好一些),定位误差采用smooth L1 而不是R-CNN中的L2。
fast-RCNN
损失函数
问题:
存在瓶颈:选择性搜索要找出所有的候选框,这个也非常耗时。

Faster-R-CNN——合并为一套网络,更高效的求出候选框

加入一个提取边缘的神经网络Region Proposal Network(RPN),替代原来费时的selective search。将候选框提取合并到深度网络中,使得检测速度大幅提高。

我理解的步骤:
1.CNN输入整张图片
2.进行一次性特征提取,在最后一个卷积层得到feature maps,然后在feature maps中找到各个候选框的区域(是抽取2000个中包含在feature maps中的那些?)
3.将feature maps输入到RPN网络中训练得到候选区域,提取候选框
4.使用了简化版的RoI池化层调整尺寸
5.多任务loss层,直接进行分类和定位

具体做法:将RPN放在最后一个卷积层的后面,RPN直接在feature map上训练得到候选区域。
• 在feature map上滑动窗口,每个滑动窗口位置生成9个候选窗口(不同尺度、不同宽高)
• 提取对应9个候选窗口(anchor)的特征,建一个神经网络用于物体分类+框位置的回归(类似FastRCNN)
• 滑动窗口的位置提供物体的大体位置信息,目标分类只需区分候选框内特征为前景或背景
• 框的回归提供了框更精确的位置faster-RCNN
Faster R-CNN模型采用一种4步迭代的训练策略:
(1)首先在ImageNet上预训练RPN,并在PASCAL VOC数据集上finetuning;
(2)使用训练的RPN产生的region proposals单独训练一个Fast R-CNN模型,这个模型也先在ImageNet上预训练;
(3)用Fast R-CNN的CNN模型部分(特征提取器)初始化RPN,然后对RPN中剩余层进行finetuning,此时Fast R-CNN与RPN的特征提取器是共享的;
(4)固定特征提取器,对Fast R-CNN剩余层进行finetuning。这样经过多次迭代,Fast R-CNN可以与RPN有机融合在一起,形成一个统一的网络。

一种网络,四个损失函数;
  • RPN calssification(anchor good.bad)
  • RPN regression(anchor->propoasal)
  • Fast R-CNN classification(over classes)
  • Fast R-CNN regression(proposal ->box)

最后总结一下各大算法的步骤:

RCNN
  1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)
  2. 每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取
  3. 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
  4. 对于属于某一特征的候选框,用回归器进一步调整其位置

Fast RCNN
  1. 在图像中确定约1000-2000个候选框 (使用选择性搜索)
  2. 对整张图片输进CNN,得到feature map
  3. 找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到RoI池化层调整尺寸
  4. 输入多任务loss层,直接进行分类和定位

Faster RCNN
  1. 对整张图片输进CNN,得到feature map
  2. feature map结果卷积特征输入到RPN,得到候选框的特征信息
  3. 输入到RoI池化层调节尺寸
  4. 多任务loss层,直接进行分类和定位

参考资料:
http://www.mamicode.com/info-detail-2305694.html
https://blog.csdn.net/JNingWei/article/details/80039079
https://blog.csdn.net/lanran2/article/details/60143861
https://cloud.tencent.com/developer/article/1347682
https://blog.csdn.net/qq_40239482/article/details/80306261

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值