Object Detection---Fast-RCNN (论文解读八)

Title:Fast-RCNN
Note data:2019/05/21
Abstract:作为计算机视觉三大问题之一,检测问题是相对较为复杂的任务。不仅需要知道是什么,还需要知道在哪里,分别是什么的问题,这正是我们目标检测需要做的东西。

Code:pytorch

R-CNN论文解读


目录

Fast-RCNN论文解读

1 Abstract

2 Introduction

3 Architecture

3.1 RoI池化层

3.2  Initializing from pre-trained networks

3.3 特征提取方式

3.4 Fine-tuning for detection

4 主要结果

5.参考文献


Fast-RCNN论文解读

1 Abstract

论文提出一种基于R-CNN的Object Detectino模型Fast-RCNN

网络结构:在R-CNN基础上进行了一些结构上改进

创新:

  • R-CNN中繁琐的特征提取操作被取代,只对整张图像全区域进行一次特征提取。
  • 用RoI pooling取代最后一层的max pooling层,同时引入候选框信息,提取相应候选框特征
  • Fast R-CNN 网络末尾采用并行的不同的全连接层,可同时输出分类结果和窗口回归结果,实现end-to-end的多任务训练(候选提取除外),也不需要额外的特征存储空间,R-CNN中这部分特征是供SVM和Bounding-box regression进行训练的
  • 采用SVD对Fast R-CNN网络末尾并行的全连接层进行分解,减少计算复杂度,加快检测速度

动机:使得目标检测训练速度,测试速度,准确率提升。

论文提出了一种新的目标检测网络(Fast R-CNN)。 Fast R-CNN建立在先前的工作基础上(R-CNN),以使用深度卷积网络有效地对目标进行检测。 与之前的工作相比,Fast R-CNN采用了多项创新来提高训练和测试速度,同时提高了检测精度。 Fast R-CNN训练非常深的VGG16网络比R-CNN快9倍,在测试时间快213倍,并在PASCAL VOC 2012上实现更高的mAP。与SPPnet相比,快速R-CNN训练VGG16快3倍,测试 10倍更快,更准确。


2 Introduction

R-CNN中因为使用selective search算法提取2k个候选区域,在将这些候选区域输入到CNN中去提取特征,因为候选框的大量重合带来了一些不必要的计算浪费;同时R-CNN不算一个端到端的训练网络,因为其需要在ILSVRC2012样本下有监督训练,利用提取到的特征进行SVM训练,在对Bounding-box回归器进行训练;R-CNN训练过程中需要占用大量的内存;需要对候选框进行形变操作在输入CNN中进行特征提取。以上这些问题促使了fast-RCNN的出现。

                           

 在本文中,我们简化了最先进的基于卷积网络的目标检测器的训练过程。我们提出一个单阶段训练算法,共同学习分类候选框和改进他们的空间位置。 
 所得到的方法用来训练非常深的检测网络(例如VGG16) 比R-CNN快9倍,比SPPnet快3倍。在运行时,检测网络在PASCAL VOC 2012数据集上实现最高准确度,其中mAP为66%(R-CNN为62%),每张图像处理时间为0.3秒,不包括候选框的生成。


3 Architecture

fast-RCNN针对R-CNN中的一些问题,另外从SPPNet中获得一些灵感。

SPP nets通过共享计算对R-CNN进行加速。首先计算一整张输入image的conv feature map,然后通过共享的feature map提取feature vector,并以此对proposal进行分类。 用max-pooling对feature map提取proposal的feature(一个固定大小的输出),多个输出对应多种尺寸,然后送入SPP net。缺点:

  •   训练也是多级的
  •  训练阶段,特征被写入磁盘,消耗空间
  • fine-tuning阶段,不能在SPP之前更新conv layer

针对这些缺点提出的的fast-RCNN有以下结构:

1.  输入:一张完整图像 一系列proposals(RoIs)

2.  通过若干个conv和max-pooling,生成一个固定大小的conv feature map

3.  每个feature map通过一个RoI pooling提取一个定长的feature vector

4.  每个feature vector输入到一系列fc layers,最后送入两个子输出层:一个用softmax进行概率估计,另一个为K classes输出四个数值(获得每类更加精确的bounding-box positions)

Fast R-CNN网络将整个图像和一组候选框作为输入。网络首先使用几个卷积层(conv)和最大池层来处理整个图像,以产生转换特征图。然后,对于每个候选框,感兴趣区域(RoI)池化层从特征图中提取固定长度的特征向量。每个特征向量被送到完全连接(fc)层的中,其最终分支成两个同级输出层 :对K个对象类产生softmax概率估计加上全部捕获的“背景”类的一层以及为K个对象类中的每一个类别输出四个实数值的另一层。每组4个值编码重新修正K个类中的一个的精确边界位置。

这里写图片描述 
图1.Fast R-CNN架构。输入图像和多个感兴趣区域(RoI projection)被输入到完全卷积网络中。每个RoI被合并到固定大小的特征图中,再通过RoI池化层再通过完全连接的层(FC)映射到特征向量。网络对于每个RoI具有两个输出向量:softmax概率和每类边界回归偏移。该架构是端到端训练的,带有多任务损失。

整体流程图如下所示:

  

  1. 任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;
  2. 在任意size图片上采用selective search算法提取约2k个候选框;
  3. 根据原图中候选框到特征图映射关系,在特征图中找到每个候选框对应的特征框【深度和特征图一致】,并在RoI池化层中将每个特征框池化到H×W【VGG-16网络是7×7】的size;
  4. 固定H×W【VGG-16网络是7×7】大小的特征框经过全连接层得到固定大小的特征向量;
  5. 第4步所得特征向量经由各自的全连接层【由SVD分解实现】,分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;
  6. 利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠候选框,最终得到每个类别中回归修正后的得分最高的窗口。

3.1 RoI池化层

 RoI池化层使用最大池化将任何有效的感兴趣区域内的特征转换成具有H × W(例如,7×7)的固定空间范围的小特征图,其中H和W是层超参数,独立于任何特定的RoI层。在本文中,RoI是一个矩形窗口,成为一个特征映射。 每个RoI由指定其左上角(r; c)及其高度和宽度(h; w)的四元组(r; c; h; w)定义。 
 RoI最大池化工作通过除以h × w RoI窗口变成H × W网格,子窗口大小约为h/H ×w/ W,然后将每个子窗口中的最大值合并到相应的输出网格单元中。池化操作独立应用于每个特征图通道,比如在标准最大池中。RoI层只是SPPnets 中使用的空间金字塔池层的特殊情况,其中只有一个金字塔层。 我们使用[11]中给出的池化子窗口计算方法。总之RoI池化层去掉了SPP的多尺度池化,直接用MxN的网格,将每个候选区域均匀分成M×N块,对每个块进行max pooling。从而将特征图上大小不一的候选区域转变为大小统一的特征向量,送入下一层。

3.2  Initializing from pre-trained networks

 我们实验了三个预训练的ImageNet网络,每个网络有五个最大池化层和五到十三个卷积层。当预训练网络初始化fast R-CNN网络时,其经历三个变换。 
1. 首先,最后的最大池化层由RoI池层代替,其通过将H和W设置为与网络的第一完全连接层兼容来配置(例如,对于VGG16,H = W = 7)。 
2. 其次,网络的最后完全连接层和softmax(其被训练用于1000类ImageNet分类)被替换为前面描述的两个同级层(完全连接的层和softmax在K + 1类别和类别特定的边界回归)。 
3. 网络被修改为采用两个数据输入:图像的列表和这些图像中的RoI的列表。

3.3 特征提取方式

Fast R-CNN在特征提取上可以说很大程度借鉴了SPPnet,首先将图片用选择搜索算法(selective search)得到2000个候选区域(region proposals)的坐标信息。另一方面,直接将图片归一化到CNN需要的格式,整张图片送入CNN(本文选择的网络是VGG),将第五层的普通池化层替换为RoI池化层,图片然后经过5层卷积操作后,得到一张特征图(feature maps),开始得到的坐标信息通过一定的映射关系转换为对应特征图的坐标,截取对应的候选区域,经过RoI层后提取到固定长度的特征向量,送入全连接层。

3.4 Fine-tuning for detection

为什么SPPnet不能更新权重?

    当训练样本来自不同image时,SPP layer的反向传播效率极低。(一个RoI可能有一个很大的receptive field,甚至对应整个image,而前向传播需要处理整个receptive field,因此训练阶段的输入极大)

Fast R-CNN训练采用SGD minibatches进行分层抽样:

    1.  抽取N幅图像

    2.  从每幅图像抽取R/N个RoIs(同一张图像的RoIs共享前向反向传播的计算和内存)

作者从对象建议框(object proposal)中选择25%的RoI,这些RoI与ground-truth bbox边界框至少有0.5的部分交叉重叠,也就是正样本,即 u >= 1。其余的RoI选那些IoU重叠区间在[0.1,0.5)的,作为负样本,即 u = 0,大约为75%。之所以选择负样本需要大于0.1的阈值是因为使用启发式的hard example mining(低于0.1的IoU作为难例挖掘的启发式)。在训练期间,图像有0.5的概率水平翻转。 

          类别                比例                                                 方式
          前景                25%                     与ground-truth bbox边界框重叠区间在[0.5,1] 
          背景                75%                    与ground-truth bbox边界框重叠区间在[0.1,0.5) 

实际操作显示,并不会因为RoIs来自同一幅图像而降低收敛速度

one fine-tuning stage:优化softmax分类器与bounding-box regressors同时进行

Fast R-CNN结构图示

   基本结构:

 1.  图像归一化为224×224送入网络

    2.  前五个阶段是基础的conv+relu+pooling形式

    3.  在第五阶段结尾,输入P个候选区域(图像序号×1+几何位置×4)

roi_pooling(forward) roi_pooling将每个候选区域均匀分成M×N块,然后对每块进行max pooling,将特征图上大小不一的候选区域转变为大小统一的数据送入下一层。

        

feature输入到两个并行的fc layers中(multi-task):

  • cls_score:输出K+1维数组,表示属于K类和背景的概率
  • bbox_prdict:输出4*K维数组,表示分别属于K类时,应该平移缩放的参数

 在R-CNN中的流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做bbox regression进行候选框的微调;Fast R-CNN则是将候选框目标分类与bbox regression并列放入全连接层,形成一个multi-task模型。

cls_ score层用于分类,输出K+1维数组p,表示属于K类和背景的概率。 bbox_predict层用于调整候选区域位置,输出4*K维数组t,表示分别属于K类时,应该平移缩放的参数。

4.结论

4 主要结果

三个主要结果支持本文的贡献: 

  1. VOC07,2010和2012年的最高的mAP; 
  2. 相比于R-CNN,SPPnet的 快速训练和测试。 
  3. 在VGG16中微调卷积层改善了mAP。 

我们的实验使用了三个经过预训练的ImageNet网络模型,这些模型可以在线获得(https://github.com/BVLC/caffe/wiki/Model-Zoo)。第一个是来自R-CNN3的CaffeNet(实质上是AlexNet)。 我们将这个CaffeNet称为模型S,即小模型。第二网络是来自14的VGG_CNN_M_1024,其具有与S相同的深度,但是更宽。 我们把这个网络模型称为M,即中等模型。最后一个网络是来自15的非常深的VGG16模型。由于这个模型是最大的,我们称之为L。在本节中,所有实验都使用单尺度训练和测试。

5.参考文献

[1] Fast R-CNN论文详解

[2] Fast R-CNN论文笔记

[3] Fast R-CNN论文详解(Fast R-CNN)

[4] Fast-RCNN 论文翻译和解读

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值