RCNN、Fast RCNN和Faster RCNN、RPN流程

参考:
Faster R-CNN详解
通俗易懂地了解faster RCNN(RPN区域建议网络)

RCNN流程

在这里插入图片描述

  1. 输入图像
  2. 利用selective search对图像生成1K~2K的候选区域(region proposal)

这个量比传统的算法要少得多。具体一点,选出region
proposal的方法是运行图像分割算法,对于分割算法跑出来的块,把它作为可能的region proposal输出

  1. 对每个候选区域,使用深度网络提取特征

将region proposal resize为统一大小,送进去掉了softmax的CNN,对每个候region proposal提取特征

4.将特征送入每一类的SVM 分类器,判断是否属于该类, 对区域进行分类

对从CNN output出来的特征向量送进每一类的SVM分类, 如果我有十个类别,那么每个region proposal要跑10个SVM,得到类别。这里为什么要用SVM而不是softmax,有一种说法是为了解决样本不均衡的问题,另外是早期神经网络还不如现在这样发达,当时SVM还是比较领先的分类器

  1. 修正

对CNN output的特征向量(这个特征向量和第4步中拿去喂给SVM的是一个向量)做回归(左上角右下角的四个坐标),修正region
proposal的位置。

Fast RCNN流程

Fast R-CNN算法是R-CNN算法的进一步衍生算法,它通过引入ROI pooling层,避免了R-CNN算法对同一区域多次提取特征的情况从而提高了算法的运行速度,总体流程上虽然仍然无法实现端到端的训练,但是也在R-CNN算法的基础上有了很大的改进。

图1:Fast R-CNN算法示意图

在这里插入图片描述
图2:ROI pooling示意图

  1. 输入图像
  2. 通过深度网络中的卷积层(VGG、Alexnet、Resnet等中的卷积层)对图像进行特征提取,得到图片的特征图;
  3. 通过选择性搜索算法得到图像的感兴趣区域(通常取2000个);
  4. 感兴趣区域池化(对得到的感兴趣区域进行ROI pooling

即通过坐标投影的方法,在特征图上得到输入图像中的感兴趣区域对应的特征区域,并对该区域进行最大值池化,这样就得到了感兴趣区域的特征,并且统一了特征大小,如图2所示;

  1. ROI pooling层的输出(及感兴趣区域对应的特征图最大值池化后的特征)作为每个感兴趣区域的特征向量
  2. 将感兴趣区域的特征向量与全连接层相连,并定义了多任务损失函数,分别与softmax分类器和boxbounding回归器相连,分别得到当前感兴趣区域的类别及坐标包围框
  3. 所有得到的包围框进行非极大值抑制(NMS),得到最终的检测结果。

Faster RCNN

Faster RCNN则抛弃了传统的滑动窗口和SS方法,直接使用RPN生成检测框,这也是Faster R-CNN的巨大优势,能极大提升检测框的生成速度。Faster RCNN将特征提取(feature extraction),proposal提取bounding box regressionclassification都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。对比Fast-RCNN, 其实最重要的一点就是使用RPN来代替原来使用分割算法生成候选框的方式,极大的提升了检测框生成速度。总地来说,Faster RCNN对Fast RCNN的改进点在于获得region proposals的速度要快很多。
在这里插入图片描述

左边的Bounding-box regression loss是推荐框(通过RPN推荐可能存在物体的框proposals)和真实框之间的loss;
上面的Bounding-box regression loss是预测框(已经预测有物体的框)和真实框之间的loss

具体图:
在这里插入图片描述

  1. 提取特征

输入固定大小的图片,进过卷积层提取特征图feature maps

  1. 生成region proposals

然后经过Region Proposal Networks(RPN)生成region proposals。该层通过softmax判断anchors属于foreground(前景)或者background(背景),再利用bounding box回归修正anchors获得精确的proposals(候选区域)。

  1. ROI Pooling (感兴趣区域池化)

该层的输入是feature maps和proposals,综合这些信息后提取proposal feature maps

  1. Classification

将Roi pooling生成的proposal feature maps分别传入softmax分类和bounding box regression获得检测物体类别和检测框最终的精确位置。

RPN

在这里插入图片描述
可以看到,feature map经过3×3卷积后,分成了两条线:

3x3卷积主要作用是语义转化,可以增加网络复杂程度,增加RPN的拟合能力;
1x1卷积用于通道转换,原则上可以转换成任意通道的特征图

第一条线:通过softmax分类anchors获得foreground(positive)和background(negative),其中检测目标是foreground。因为是2分类(有无物体两种分类),所以它的维度是2k score。

2个分数,因为RPN是提候选框,还不用判断类别,所以只要求区分是不是物体就行,那么就有两个分数,前景(物体)的分数,和背景的分数;

第二条线:计算对于anchors的bounding box regression偏移量,以获得精确的proposal。它的维度是4k coordinates(4个坐标)。

4个坐标是指针对原图坐标的偏移,首先一定要记住是原图;

而最后的Proposal层则负责综合positive anchors和对应bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。其实整个网络到了Proposal Layer这里,就完成了相当于目标定位的功能。

RCNN、Fast RCNN和Faster RCNN

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值