fast rcnn论文结合代码

Fast R-CNN训练非常深的VGG16网络比R-CNN快9倍,测试时间快213倍,并在PASCAL VOC2012上得到更高的平均精度mAP。与SPPnet相比,fast R-CNN训练VGG16网络比他快3倍,测试速度快10倍,并且更准确。

由于检测比分类更复杂,所以也需要更复杂的方法,当前的检测方法采用多级流水线(候选区域的生成和检测是分开成两个模块的)的方式来训练模型,既慢且精度不高。本文提出一个单阶段训练算法-----将学习候选框分类和他们的空间位置的微调联合起来。

rcnn的缺点是:1、训练过程是一个多级流水线,2、练在时间和空间上是的开销很大,3、目标检测速度很慢。

fast-rcnn的优点:

  1. 比R-CNN和SPPnet具有更高的目标检测精度()。
  2. 训练是使用多任务损失的单阶段训练。(rcnn和spp的缺点)
  3. 训练可以更新所有网络层。(spp的缺点是不能更新pool5之前的层)
  4. 不需要磁盘来缓存特征。(rcnn和spp的缺点)
fast rcnn论文结合代码_第1张图片

fast rcnn论文结合代码_第2张图片

RoI池化层

roi池化是对roi的池化。

rois:在Fast RCNN中,指的是Selective Search的输出;在Faster RCNN中指的是RPN的输出,一堆矩形候选框框,形状为1x5x1x1(4个坐标+索引index),其中值得注意的是:坐标的参考系不是针对feature map这张图的,而是针对原图的(神经网络最开始的输入)

RoI池化层使用最大池化将任何有效的Roi内的特征转换成具有H×W(例如,7×7)的固定空间范围的小特征图,在本文中,RoI是卷积特征图中的一个矩形窗口(an RoI is arectangular window into a conv feature map )。 每个RoI由指定其左上角(r,c)及其高度和宽度(h,w)的四元组(r,c,h,w)定义 。

RoI最大池化通过将大小为h×w的RoI窗口分割成H×W个网格,子窗口大小约为h/H × w/W,然后对每个子窗口执行最大池化,并将输出合并到相应的输出网格单元中。

ROIs Pooling顾名思义,是Pooling层的一种,而且是针对RoIs的Pooling,他的特点是输入特征图尺寸不固定,但是输出特征图尺寸固定;

什么是ROI呢?
ROIRegion of Interest的简写,指的是在“特征图上的框”;
1)在Fast RCNN中, RoI是指Selective Search完成后得到的“候选框”在特征图上的映射,如下图所示;
2)在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到RoIs

从预训练网络初始化

首先,最后的最大池化层由RoI池层代替,其通过将H和W设置为与网络的第一完全连接层兼容来配置(例如,对于VGG16,H = W = 7)。

其次,网络的最后完全连接层和softmax(其被训练用于1000类ImageNet分类)被替换为前面描述的两个同级层(一个是k+1个类别的全连接层和softmax,另一个层是K + 1类别特定的边界回归)。

第三,网络被修改为采用两个数据输入:图像的列表和这些图像中的RoI的列表。

Fast R-CNN可以用反向传播训练并更新所有网络权重,而SPPnet无法更新低于空间金字塔池化层的权重。除了分层采样,Fast R-CNN使用了一个流线型(流水线?)的训练过程,在微调阶段共同优化Softmax分类器和检测框回归,而不是分别在三个独立的阶段训练softmax分类器,SVM和回归器

每个训练的RoI用真实的类u和真实的检测框回归v标记。

Fast R-CNN检测

网络将图像(或图像金字塔,编码为图像列表)和待计算概率的R个候选框的列表作为输入。在测试的时候,R通常在2000左右。

实验配置

所有实验都使用单尺度训练和测试(s=600)


截断SVD。截断的SVD可以将检测时间减少30%以上,同时在mAP中只有很小(0.3个百分点)的下降,并且无需在模型压缩后执行额外的微调。从下可以看出,使用截断SVD可以缩短fc6和fc7的时间。

fast rcnn论文结合代码_第3张图片

对于不太深的网络,仅微调全连接层似乎足以获得良好的精度。但是对于比较深的网络,需要从某一层卷积层开始微调。

在本文中,VGG16微调conv3_1及以上的层,模型S和M则微调conv2及以上的层。

多任务训练(同时训练分类器和边界框回归其)是方便的,因为它避免管理顺序训练任务的流水线。但它也有可能改善结果,因为任务通过共享的表示(ConvNet)18相互影响。即使只对于分类而言,多任务训练相对于单独的分类训练提高了纯分类精度。

在多尺度设置中,我们使用5中指定的相同的五个尺度(s∈{480,576,688,864,1200})以方便与SPPnet进行比较。单尺度检测几乎与多尺度检测一样好。我们的研究结果能证明他们的结果:深度卷积网络擅长直接学习尺度不变性。多尺度方法消耗大量的计算时间仅带来了很小的mAP增加。

单尺度处理提供速度和精度之间的最佳折衷,所以本文大部分实验使用单尺度。

我们需要更过训练数据吗

扩大训练集提高了VOC07测试的mAP,从66.9%到70.0%,

SVM分类是否优于Softmax

Fast R-CNN在微调期间使用softmax分类器学习,而不是如在R-CNN和SPPnet中训练线性SVM。为了对比,这里也实现了用SVM进行训练的模型,结果显示,softmax的结果稍微好点,mAP提高了零点几个百分点。

更多的候选区域更好吗?

用更多的候选区域没有帮助,甚至稍微有点伤害准确性。用于衡量候选区域质量的最先进的技术是平均召回率(AR)

./experiments/scripts/faster_rcnn_end2end.sh 0 ZF pascal_voc端到端训练













你可能感兴趣的:(fast rcnn论文结合代码)