Faster R-CNN简介及其发展

一、简介

  1. 发展的过程大体可以概括为R-CNN——Fast R-CNN——Faster  R-CNN——Mask R-CNN,都是将神经网络应用于目标检测的典型代表,首先是R-CNN将CNN应用于目标检测中取得了较大的成效,后面几个网络都是在前面的基础上进行了改进,在速度和准确率方面都有了很大的提升。
  2. 个人的见解就是所有的改进的原则都是尽可能将任务都交给神经网络来完成,这样的话不仅在检测速度上会有很大的提升,而且由于神经网络处理数据的能力也比其他方法优秀很多,准确率上也会有提升。

二、参考文献

  1. CVPR2014: Rich feature hierarchies for accurate object detection and semantic segmentation论文下载: http://export.arxiv.org/pdf/1311.2524参考博客: https://blog.csdn.net/liumingpei/article/details/80386685
  2. 2015 ICCV:Fast R-CNN
    论文:https://arxiv.org/abs/1504.08083
    博客:https://blog.csdn.net/CSDNbaiduyun/article/details/81239454
  3. 2015 NIPS:Faster R-CNN--Towards Real-Time Object Detection with Region Proposal Networks
    论文:http://arxiv.org/abs/1506.01497v3
    博客:https://blog.csdn.net/u011718701/article/details/53758927

三、R-CNN

四步:

1、提取region proposals。论文采用的是SS(选择性搜索方法),提取的的proposals数目为2000个。

2、将2000个proposals变形为227*227大小输入AlexNet中得到4096维的特征,形成一个2000*4096维特征矩阵。

3、将提取的特征输入SVM(二分类)进行分类,假设有20类物体,则得到2000*20的得分矩阵,其中行表示2000个候选框,列表示20类目标,值为得分。

4、对每一列进行非极大值抑制(NMS),最终得到的proposals就是最后得到该类别的目标候选框,即从2000个中选择得分高的且不重叠的proposal,最后再进行边界回归优化检测框。

四、Fast R-CNN

1、采取SS方法提取2000个region proposals,然后将整张图片输入网络得到一个特征图(conv feature map)

2、将2000个region proposal从原图映射到特征图上,映射方法是按比例映射,再利用ROI Pooling得到2000个相同大小的feature map(对应于2000个region proposals在conv feature map上的映射)

3、将最终得到的feature map输入到两个全连接层提取特征向量,再分别用于分类和边界回归。

改进:

1、引入特征图,大大简化了对region proposals提取特征的运算

2、引入roi pooling,较之前的直接变形更完整地保留了原图的信息

3、除了region proposals提取,其它步骤都实现了end-to-end的联合训练

五、Faster R-CNN

1、将proposals的提取整合到了网络中,即引入了RPN网络,其它的和Fast R-CNN基本一致。

RPN网络:

1、RPN网络的作用就是将region proposals的提取整合到了网络中,而且RPN网络和Fast R-CNN网络共用了卷积网络,几乎没有增加计算量。

2、RPN提取候选框的方法是对conv feature map上的每个点为中心取9种不同比例大小的anchors,再按照比例映射到原图中即为提取的region proposals。具体的实现方法如上图,先用一个256维的3*3卷积核以步长为1进行特征提取,这样就可以得到一个256*1的特征向量,将这个256长度的特征向量分别输入两个全连接层,其中一个输出长度为2*9=18表示9个anchors是物体和不是物体的概率(不太懂为什么两个概率都要预测),另一个输出长度为4*9=36表示每个proposals的四个坐标。

3、在得到了概率和bbox的坐标之后映射到原图中得到region proposals,再进行一次NMS得到最终输入Fast R-CNN网络的proposals。

六、一些解释

1、为何要在softmax前后都接一个reshape layer?

其实只是为了便于softmax分类,至于具体原因这就要从caffe的实现形式说起了。在caffe基本数据结构blob中以如下形式保存数据:blob=[batch_size, channel,height,width] 对应至上面的保存bg/fg anchors的矩阵,其在caffe blob中的存储形式为[1, 2x9, H, W]。 而在softmax分类时需要进行fg/bg二分类,所以reshape layer会将其变为[1, 2, 9xH, W]大小, 即单独“腾空”出来一个维度以便softmax分类,之后再reshape回复原状。贴一段caffe softmax_loss_layer.cpp的reshape函数的解释,非常精辟: "Number of labels must match number of predictions; " "e.g., if softmax axis == 1 and prediction shape is (N, C, H, W), " "label count (number of labels) must be N*H*W, " "with integer values in {0, 1, ..., C-1}."; 综上所述,RPN网络中利用anchors和softmax初步提取出foreground anchors作为候选区域。

2、 NMS算法

其实特别简单,就是从一堆proposals中先选出一个得分最高的proposal,然后计算剩余的proposals与这个得分最高proposal的IOU,高于一定的阈值的就直接舍去,这样就剩下了与被选中的proposal重叠区域不多的proposals,再重复这个操作就行。

3、ROI pooling与RoIAlign Pooling

roi pooling:每次都向下取整,然后采用max pooling

roialign pooling:不进行取整操作,保留浮点数,最后进行对每个小区域进行采样操作(一般为2*2效果最好),采样点的值由双线性差值计算得到,最后再进行max pooling操作。对小目标的检测效果影响较大。

原文地址:https://www.cnblogs.com/bupt213/p/10846910.html

时间: 2024-10-31 23:16:09

Faster R-CNN简介及其发展的相关文章

R语言简介,环境配置与简易使用

R语言简介,环境配置与简易使用 首先,R是一种语言,同时也是一个开发环境. R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. 使用R,首先需要安装环境,http://cran.r-project.org有各个版本的安装包. 如图,是windows下64位的安装包: 安装完成后,打开界面 简易使用–命令行 R是一种区分大小写的解释型语言.在命令提示符(>)后,每次输入并执行一条命令 ,或者一次性执行写在脚本中文

总结近期CNN模型的发展(一)---- ResNet [1, 2] Wide ResNet [3] ResNeXt [4] DenseNet [5] DPNet [9] NASNet [10] SENet [11] Capsules [12]

总结近期CNN模型的发展(一) from:https://zhuanlan.zhihu.com/p/30746099 余俊 计算机视觉及深度学习 1.前言 好久没有更新专栏了,最近因为项目的原因接触到了PyTorch,感觉打开了深度学习新世界的大门.闲暇之余就用PyTorch训练了最近在图像分类上state-of-the-art的CNN模型,正好在文章中总结如下: ResNet [1, 2] Wide ResNet [3] ResNeXt [4] DenseNet [5] DPNet [9] N

MySQL的简介及发展历

MySQL的简介MySQL 是一个关系型数据库t管理系统,由瑞典MySQL AB公司开发 MySQL是一种开放源代码的关系型数据库管理系统,因为是开放源代码的,在下载后可以根据自己的需要进行修改. 由于体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本需选择了MySQL作为网站数据库. 最开始由SUN公司收购,后面被甲骨文Oracle公司收购 SQL ,NoSQL(Not Only SQL),NewSQL(SQL+NoSQL) 目前全世界市场有比例最高

R.net简介(原创翻译)

当你看到这篇文章的时候,你应该亲我一下.因为它花费了我一个可以泡妞的下午来翻译.R.net地址:http://rdotnet.codeplex.com/ R.NET R.NET使.NET框架在同一进程与R统计语言进行互操作. R.NET需要.NET Framework 4.并且在本地有R环境中安装的本地DLL. R.NET适用于Windows,Linux和MacOS.您可以选择适合您的特殊语言来使用R.的统计和编程. 现在:你应该前往并且上手R.NET的文档了. 最新新闻 在RCLR,2014年

OCR技术的简介及发展

一.OCR技术的发展历程  自20世纪60年代初期出现第一代OCR产品开始,经过30多年的不断发展改进,包括手写体的各种OCR技术的研究取得了令人瞩目的成果,人们对OCR产品的功能要求也从原来的单纯注重识别率,发展到对整个OCR系统的识别速度.用户界面的友好性.操作的简便性.产品的稳定性.适应性.可靠性和易升级性.售前售后服务质量等各方面提出更高的要求. IBM公司最早开发了OCR产品,1965年在纽约世界博览会上展出了IBM公司的OCR产品--IBMl287.当时的这款产品只能识别印刷体的数字

R语言简介

概况: R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支.可以认为R是S语言的一种实现.而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索.统计分析和作图的解释型语言.作为一种统计分析软件,是集统计分析与图形显示于一体的.它可以运行于UNIX,Windows和Macintosh的操作系统上. 特点: R是自由软件.可编程的语言.所有R的函数和数据集是保存在程序包里面的.R是免费的(R is free) 图标: "R i386 3.2.5"为R语言的本体,有他就

Tensorflow的CNN教程解析

之前的博客我们已经对RNN模型有了个粗略的了解.作为一个时序性模型,RNN的强大不需要我在这里重复了.今天,让我们来看看除了RNN外另一个特殊的,同时也是广为人知的强大的神经网络模型,即CNN模型.今天的讨论主要是基于Tensorflow的CIFAR10教程,不过作为对比,我们也会对Tensorflow的MINST教程作解析以及对比.很快大家就会发现,逻辑上考虑,其实内容都是大同小异的.由于所对应的目标不一样,在数据处理方面可能存在着些许差异,这里我们以CIFAR10的为基准,有兴趣的朋友欢迎去

R语言数据挖掘实战系列(2)

二.R语言简介 R语言是一种为统计计算和图形显示而设计的语言环境,具有免费.多平台支持,同时可以从各种类型的数据源中导入数据,具有较高的开放性以及高水准的制图功能.R是一个体系庞大的应用软件,主要包括核心的R标准包和各专业领域的其他包.R在数据分析.数据挖掘领域具有特别优势. R安装 R可在其主页(https://www.r-project.org/)上获得,根据所选择的平台进行下载安装.安装完成之后启动R.为了方便使用R,可使用免费的图形界面编辑器RStudio,可从https://www.r

R 语言的优劣势是什么?

R 语言的优劣势是什么? 2015-05-27 程序员 大数据小分析 R,不仅仅是一种语言 本文原载于<程序员>杂志2010年第8期,因篇幅所限,有所删减,这里刊登的是全文. 工欲善其事,必先利其器,作为一个战斗在IT界第一线的工程师,C/C++.java.perl.python.ruby.php.javascript.erlang等等等等,你手中总有一把使用自如的刀,帮助你披荆斩棘. 应用场景决定知识的储备与工具的选择,反过来,无论你选择了什么样的工具,你一定会努力地把它改造成符合自己应用场