• 文章目录

    • Fast R-CNN
      • 1. SPPnets
      • 2. ROI池化层
        • 2.1 介绍
        • 2.2 ROI池化层原理
      • 3. Fast R-CNN的原理

Fast R-CNN

论文摘要:This paper proposes a Fast Region-based Convolutional Network method (Fast R-CNN) for object detection. Fast R-CNN builds on previous work to efficiently classify object proposals using deep convolutional networks. Compared to previous work, Fast R-CNN employs several innovations to improve training and testing speed while also increasing detection accuracy. Fast R-CNN trains the very deep VGG16network 9× faster thanR-CNN, is 213× faster at test-time, and achieves a higher mAP on PASCAL VOC 2012. Compared to SPPnet, Fast R-CNN trains VGG16 3×faster, tests 10× faster, and is more accurate. Fast R-CNN is implemented in Python and C++ (using Caffe) and is available under the open-source MIT License at
https://github.com/rbgirshick/fast-rcnn.

The Fast R-CNN method has several advantages:

  1. Higher detection quality (mAP) than R-CNN, SPPnet
  2. Training is single-stage, using a multi-task loss
  3. Training can update all network layers
  4. No disk storage is required for feature caching

Fast R-CNN 主要是对R-CNN进行了一些方法上的改进。首先我们分析一下R-CNN慢的主要原因有哪些:

  1. 首先就是每个候选的区域都要用CNN提取特征,而事实上它们都是这张图片的一部分,很多计算都是重复的。
  2. 此外训练慢就在于有多个模型——卷积网络、SVM和Bouding box回归。

下面我们来看看Fast R-CNN是如何进行改进的,其中Fast R-CNN架构图如下所示:

它的输入是一张图片和一些候选区域,对于输入的图片,它会使用多层的卷积网络得到一些特征映射(Feature Map),然后对于每一个候选区域,一个RoI(Region of Interest)的pooling层会从这些特征映射中选取与之对应的区域,通过pooling得到固定大小的特征,再把这些特征输入全连接层。然后再从全连接层分出两个分支,一个用softmax进行分类,另一个分支直接输出4个数值,分别表示Bounding box的位置。

Fast R-CNN对于每个图片只用CNN提取一次特征,然后不同的候选区域会”共享“这个特征,只是使用RoI来选择空间位置上与之对应的部分,这样预测的时候速度会比R-CNN快很多。其次,Fast R-CNN完全抛弃了SVM和一个单独的Bouding box回归。而是使用统一的一个深度神经网络来同时输出分类和Bouding box的位置,因此是一个统一的训练过程,从而避免复杂的Pipeline和提高训练速度。

在正式介绍Fast R-CNN算法之前,我们有必要了解一下SPPnets(Spatial pyramid pooling networks) 和ROI池化层。

1. SPPnets

SSPnet were proposed to speed up R-CNN by sharing computation. The SPPnet method computes a convolutional feature map for the entire input image and then classifies each object proposal using a feature vector extracted from the shared feature map.

SPPnet accelerates R-CNN by 10 to 100× at test time. Training time is also reduced by 3× due to faster proposal feature extraction.

SPPNet的英文全称是Spatial Pyramid Pooling Convolutional Networks,即:“空间金字塔池化卷积网络。名字听起来是不是感觉挺复杂,挺高大上的。其实,SPPNet主要就是做了一件事情:

将CNN的输入从固定尺寸改进为任意尺寸。例如,在普通的CNN结构中,输入图像的尺寸往往是固定的(如224x224像素),输出可以看做是一个固定维数的向量。SIPPNet在普通的CNN结构中加入了ROI池化层(ROI Pooling ),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。ROI池化层一般跟在卷积层后面,它的输入是任意大小的卷积,输出是固定维数的向量。

2. ROI池化层

2.1 介绍

ROI池化层能够把任意大小的卷积特征转换成固定长度的向量,为了详细介绍ROI池化层,不妨我们就设卷积层输出的宽度为w,高度为h,通道为c。不管输入的图像尺寸是多少,卷积层的通道数都不会变,也就是说c是一个常数。而w、h会随着输入图像尺寸的变化而变化,可以看作是两个变量。以上图中的ROI池化层为例,它首先把卷积层划分为4x4的网格,每个网格的宽是w/4、高是h/4、通道数为c。当不能整除时,需要取整。接着,对每个网格中的每个通道,都取出其最大值,换句话说,就是对每个网格内的特征做最大值池化(Max Pooling )。这个4x4的网格最终就形成了16c维的特征。接着,再把网络划分成2x2的网格,用同样的方法提取特征,提取的特征的长度为4c。再把网络划分为1x1的网格,提取的特征的长度就是c,最后的1x1的划分实际是取出卷积中每个通道的最大值。最后,将得到的特征拼接起来,得到的特征是16c+4c+c = 21c维的特征。很显然,这个输出特征的长度与w, h两个值是无关的,因此ROI池化层可以把任意宽度、高度的卷积特征转换为固定长度的向量。

那么应该怎么把ROI池化层用到目标检测中来呢,其实,可以这样考虑该问题:网络的输入是一张图像,中间经过若干卷积形成了卷积特征,这个卷积特征实际上和原始图像在位置上是有一定对应关系的。原始图像的目标会使得卷积特征在同样位置产生激活。因此,原始图像中的候选框,实际上也可以对应到卷积特征中相同位置的框。由于候选框的大小千变万化,对应到卷积特征的区域形状也各有不同,但是不用担心利用ROI池化层可以把卷积特征中的不同形状的区域对应到同样长度的向量特征。综合上述步骤,就可以将原始图像中的不同长宽的区域都对应到一个固定长度的向量特征,这就完成了各个区域的特征提取工作。

而且我们知道,在R-CNN中,对于原始图像的各种候选区域框,必须把框中的图像缩放到统一大小,再对每一张缩放后的图片提取特征。使用ROI池化层后,就可以先对图像进行一遍卷积计算,得到整个图像的卷积特征;接着,对于原始图像中的各种候选框,只需要在卷积特征中找到对应的位置框,再使用ROI池化层对位置框中的卷积提取特征,就可以完成特征提取工作。

  • R-CNN和SPPNet的不同点在于,R-CNN要对每个区域计算卷积,而SPPNet只需要计算一次,因此SPPNet的效率比R-CNN高得多。
  • R-CNN和SPPNet的相同点在于,它们都遵循着提取候选框、提取特征、分类几个步骤。在提取特征后,它们都使用了SVM进行分类。

2.2 ROI池化层原理

如上所述,我们可以利用 ROI 池化将不同大小的 ROI 转换为固定大小。

为简洁起见,我们以8×8 特征图转换为预定义的 2×2 大小为例。

  • 下图左上角:特征图。
  • 右上角:将 ROI(蓝色区域)与特征图重叠。
  • 左下角:将 ROI 拆分为目标维度。例如,对于 2×2 目标,我们将 ROI 分割为 4 个大小相似或相等的部分。
  • 右下角:找到每个部分的最大值,得到变换后的特征图

输入特征图(左上),输出特征图(右下),ROI (右上,蓝色框)

按上述步骤,我们便可以得到一个 2×2 的特征图块,然后可以馈送至分类器和边界框回归器中。

3. Fast R-CNN的原理

在SPPNet中,实际上特征提取和区域分类两个步掇还是分离的。只是使用ROI池化层提取了每个区域的特征,在对这些区域分类时,还是使用传统的SVM作为分类器。Fast R-CNN相比SPPNet更进一步,不再使用SVM作为分类器,而是使用神经网络进行分类,这样就可以同时训练特征提取网络和分类网络,从而取得比SPPNet更高的准确度。

对于原始图片中的候选框区域,和SPPNet中的做法一样,都是将它映射到卷积特征的对应区域,然后使用ROI池化层对该区域提取特征。在这之后,SPPNet是使用SVM对特征进行分类,而Fast R-CNN则是直接使用全连接层。全连接层有两个输出,一个输出负责分类,另一个输出负责框回归。

先说分类,假设要在图像中检测K类物体,那么最终的输出应该是K+l个数,每个数都代表该区域为某个类别的概率。之所以是K+1个输出而不是K个输出,是因为还需要一类“背景类”,针对该区域无目标物体的情况。

Fast R-CNN与SPPNet最大的区别就在于,Fast R-CNN不再使用SVM进行分类,而是使用一个网络同时完成了提取特征、判断类别、框回归三项工作。

Fast R-CNN 的流程图:

Fast R-CNN 最重要的一点就是包含特征提取器、分类器和边界框回归器在内的整个网络能通过多任务损失函数进行端到端的训练,这种多任务损失即结合了分类损失和定位损失的方法,大大提升了模型准确度。

Fast R-CNN论文原理+目标检测笔记(二)相关推荐

  1. 深度学习论文阅读目标检测篇(二):Fast R-CNN《Fast R-CNN》

    深度学习论文阅读目标检测篇(二):Fast R-CNN<Fast R-CNN> Abstract 摘要 1. Introduction 引言 1.1 RCNN and SPPnet 1.2 ...

  2. 深度学习论文阅读目标检测篇(三):Faster R-CNN《 Towards Real-Time Object Detection with Region Proposal Networks》

    深度学习论文阅读目标检测篇(三):Faster R-CNN< Towards Real-Time Object Detection with Region Proposal Networks&g ...

  3. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

  4. 深度学习论文阅读目标检测篇(一):R-CNN《Rich feature hierarchies for accurate object detection and semantic...》

    深度学习论文阅读目标检测篇(一):R-CNN<Rich feature hierarchies for accurate object detection and semantic segmen ...

  5. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...

  6. 深度学习论文阅读目标检测篇(四)中文版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中文版:YOLOv1<YouOnlyLookOnce:Unified,Real-TimeObjectDetection> 摘要 1.引言 2. 统一的检测 ...

  7. 深度学习论文阅读目标检测篇(五)中文版:YOLOv2《 YOLO9000: Better, Faster, Stronger》

    深度学习论文阅读目标检测篇(五)中文版:YOLOv2< YOLO9000: Better, Faster, Stronger> 摘要 1.引言 2. 更好 3. 更快 4. 更强 5. 结 ...

  8. 深度学习论文阅读目标检测篇(五)中英对照版:YOLOv2《 YOLO9000: Better, Faster, Stronger》

    深度学习论文阅读目标检测篇(五)中文版:YOLOv2< YOLO9000: Better, Faster, Stronger> Abstract 摘要 1. Introduction 1. ...

  9. 深度学习论文阅读目标检测篇(六)中文版:YOLOv3《 An Incremental Improvement》

    深度学习论文阅读目标检测篇(六)中文版:YOLOv3< An Incremental Improvement> 摘要 1. 引言 2. 方案 2.1. 边界框预测 2.2. Class P ...

最新文章

  1. 分享15个堪称神器的资源网站,让你万事无忧!
  2. vue开发(1) 软件安装
  3. vue 创建项目的命令
  4. LiveVideoStack线上交流分享 ( 五 ) —— 在线教育音视频技术探索与应用
  5. oracle 数据库查询 COALESCE字符函数
  6. oracle 嵌套游标慢,oracle 嵌套游标以及java,oracle的时间处理
  7. python-数据容器-有序容器与无序容器
  8. POST 一张 图像的调试来认识 http post
  9. 授权其他数据库用户kill session
  10. 经典CNN之:VGGNet
  11. DSPF28335学习笔记之(1)CMD文件说明
  12. mysql drop语句怎么用_SQL DROP 语句
  13. 【题解】CF1418C Mortal Kombat Tower
  14. 从zookeeper官方文档系统学习zookeeper
  15. Kafka Consumer 消费逻辑
  16. 【瑞吉外卖】学习笔记-day1:项目介绍及后台初识
  17. 复旦计算机可以跨专业吗,I直达录取现场I2020,还能跨考计算机吗?
  18. Windows 2003环境下IIS下ASP+ACCESS的配置方法
  19. 服务器准系统diy,网易科技频道--DIY自己的低价“准系统”:之MICRO ATX主板篇
  20. CUDA指定GPU的使用方法

热门文章

  1. 集中式发电景气下滑分布式光伏迎新机遇
  2. python黑屏改成白底_详解Python给照片换底色(蓝底换红底)
  3. mysql8.0.20免安装初始化步骤记录
  4. 手机游戏运行时分析工具
  5. qt中bug总结:遇到C1071:在注释中遇到意外的文件结束
  6. 【基础知识】~ FIFO
  7. MATLAB多径衰落信道仿真程序,基于Matlab的移动通信中多径衰落信道的仿真
  8. 439计算机毕业设计
  9. 全球及中国用于癌症治疗的新型药物输送系统行业研究及十四五规划分析报告
  10. 来淄博旅游 结构体