Fast R-CNN训练非常深的VGG16网络比R-CNN快9倍,测试时间快213倍,并在PASCAL VOC2012上得到更高的平均精度mAP。与SPPnet相比,fast R-CNN训练VGG16网络比他快3倍,测试速度快10倍,并且更准确。
由于检测比分类更复杂,所以也需要更复杂的方法,当前的检测方法采用多级流水线(候选区域的生成和检测是分开成两个模块的)的方式来训练模型,既慢且精度不高。本文提出一个单阶段训练算法-----将学习候选框分类和他们的空间位置的微调联合起来。
rcnn的缺点是:1、训练过程是一个多级流水线,2、练在时间和空间上是的开销很大,3、目标检测速度很慢。
fast-rcnn的优点:
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呢?
ROI是Region 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标记。
所有实验都使用单尺度训练和测试(s=600)
截断SVD。截断的SVD可以将检测时间减少30%以上,同时在mAP中只有很小(0.3个百分点)的下降,并且无需在模型压缩后执行额外的微调。从下可以看出,使用截断SVD可以缩短fc6和fc7的时间。
对于不太深的网络,仅微调全连接层似乎足以获得良好的精度。但是对于比较深的网络,需要从某一层卷积层开始微调。
在本文中,VGG16微调conv3_1及以上的层,模型S和M则微调conv2及以上的层。
多任务训练(同时训练分类器和边界框回归其)是方便的,因为它避免管理顺序训练任务的流水线。但它也有可能改善结果,因为任务通过共享的表示(ConvNet)18相互影响。即使只对于分类而言,多任务训练相对于单独的分类训练提高了纯分类精度。
在多尺度设置中,我们使用5中指定的相同的五个尺度(s∈{480,576,688,864,1200})以方便与SPPnet进行比较。单尺度检测几乎与多尺度检测一样好。我们的研究结果能证明他们的结果:深度卷积网络擅长直接学习尺度不变性。多尺度方法消耗大量的计算时间仅带来了很小的mAP增加。
单尺度处理提供速度和精度之间的最佳折衷,所以本文大部分实验使用单尺度。
Fast R-CNN在微调期间使用softmax分类器学习,而不是如在R-CNN和SPPnet中训练线性SVM。为了对比,这里也实现了用SVM进行训练的模型,结果显示,softmax的结果稍微好点,mAP提高了零点几个百分点。
用更多的候选区域没有帮助,甚至稍微有点伤害准确性。用于衡量候选区域质量的最先进的技术是平均召回率(AR)
./experiments/scripts/faster_rcnn_end2end.sh 0 ZF pascal_voc端到端训练