CNN系列笔记(五)——Faster RCNN

Faster R-CNN是基于Region Proposal的深度学习目标检测算法,由R-CNN和Fast R-CNN发展而来。该算法通过区域生成网络(RPN)几乎实时地生成候选区域,与Fast R-CNN共享特征提取网络,极大地提高了目标检测的速度和精度。RPN通过卷积层预测候选框和其是否包含目标的概率,RoI Pooling层则将不同大小的候选区域转换为固定大小的特征,以便后续分类和框回归。Faster R-CNN的关键在于RPN的设计和训练,以及与Fast R-CNN的端到端训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      本文是继RCNN[1],fast RCNN[2]之后,目标检测界的领军人物Ross Girshick团队在2015年的又一力作。简单网络目标检测速度达到17fps,在PASCAL VOC上准确率为59.9%;复杂网络达到5fps,准确率78.8%。作者在github上给出了基于matlabpython的源码。

一、基于Region Proposal(候选区域)的深度学习目标检测算法

1.1 Region Proposal(候选区域)

      就是预先找出图中目标可能出现的位置,通过利用图像中的纹理、边缘、颜色等信息,保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率(IoU,Intersection-over-Union)。
      Region Proposal方法比传统的滑动窗口方法获取的质量要更高。比较常用的Region Proposal方有:SelectiveSearch(SS,选择性搜索)、Edge Boxes(EB)。

1.2 基于Region Proposal目标检测算法的步骤如下:

                   

1.3 常见的CNN模型介绍

    https://blog.youkuaiyun.com/qq_17448289/article/details/52850223

1.4 边框回归(Bouding Box Regression)

    是对RegionProposal进行纠正的线性回归算法,目的是为了让Region Proposal提取到的窗口与目标窗口(Ground Truth)更加吻合。

二、R-CNN、Fast R-CNN、Faster R-CNN三者关系

   

 

使用方法

缺点

改进

R-CNN

(Region-based Convolutional

Neural Networks)

1、SS提取RP;

2、CNN提取特征;

3、SVM分类;

4、BB回归。

1、 训练步骤繁琐(微调网络+训练SVM+训练bbox);

2、 训练、测试均速度慢 ;

3、 训练占空间

1、 从DPM HSC的34.3%直接提升到了66%(mAP);

2、 引入RP+CNN

Fast R-CNN

(Fast Region-based Convolutional

Neural Networks)

1、SS提取RP;

2、CNN提取特征;

3、softmax分类;

4、多任务损失函数边框回归。

1、 依旧用SS提取RP(耗时2-3s,特征提取耗时0.32s);

2、 无法满足实时应用,没有真正实现端到端训练测试;

3、 利用了GPU,但是区域建议方法是在CPU上实现的。

1、 由66.9%提升到70%;

2、 每张图像耗时约为3s。

Faster R-CNN

(Fast Region-based Convolutional

Neural Networks)

1、RPN提取RP;

2、CNN提取特征;

3、softmax分类;

4、多任务损失函数边框回归。

1、 还是无法达到实时检测目标;

2、 获取region proposal,再对每个proposal分类计算量还是比较大。

1、 提高了检测精度和速度;

2、  真正实现端到端的目标检测框架;

3、  生成建议框仅需约10ms。

Fast R-CNN框架与R-CNN有两处不同:

  • ① 最后一个卷积层后加了一个ROI pooling layer;
  • ② 损失函数使用了multi-task loss(多任务损失)函数,将边框回归直接加到CNN网络中训练。分类Fast R-CNN直接用softmax替代R-CNN用的SVM进行分类。

注:Fast R-CNN和Faster R-CNN是端到端(end-to-end)的;R-CNN不是端到端的。

三、Faster R-CNN目标检测

3.1 Faster R-CNN的思想

       faster RCNN可以简单地看做“候选区域生成网络+fast RCNN“的系统,用区域生成网络代替fast RCNN中的Selective Search方法。本篇论文着重解决了这个系统中的三个问题:

  • 1. 如何设计区域生成网络(RPN)
  • 2. 如何训练区域生成网络
  • 3. 如何让区域生成网络和fast RCNN网络共享特征提取网络

在整个faster RCNN算法中,有三种尺度。
原图尺度:原始输入的大小。不受任何限制,不影响性能。
归一化尺度:输入特征提取网络的大小,在测试时设置,源码中opts.test_scale=600。anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。
网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224。

3.2 Faster R-CNN框架介绍

Faster-R-CNN算法由两大模块组成:

  • 1.PRN候选框提取模块;
  • 2.Fast R-CNN检测模块。

其中,RPN是全卷积神经网络,用于提取候选框Fast R-CNN基于RPN提取的proposal检测并识别proposal中的目标

                  

                                                                      图1 Faster R-CNN基本结构(来自原文)

依作者看来,如图1,Faster RCNN其实可以分为4个主要内容:

  1. Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
  2. Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals。
  3. Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
  4. Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。

所以本文以上述4个内容作为切入点介绍Faster R-CNN网络。
      图2展示了python版本中的VGG16模型中的faster_rcnn_test.pt的网络结构,可以清晰的看到该网络对于一副任意大小PxQ的图像,首先缩放至固定大小MxN,然后将MxN图像送入网络;而Conv layers中包含了13个conv层+13个relu层+4个pooling层;RPN网络首先经过3x3卷积,再分别生成foreground anchors与bounding box regression偏移量,然后计算出proposals;而Ro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值