Fast R-CNN

Ross Girshick Microsoft Research


摘要

        本文提出了一种基于快速区域的卷积网络方法(Fast R-CNN)用于物体检测。 Fast R-CNN建立在以前的工作基础上,使用深度卷积网络有效地对对象提议进行分类。 与之前的工作相比,Fast R-CNN采用了多种创新技术来提高训练和测试速度,同时提高了检测精度。 快速R-CNN训练深度的VGG16网络比R-CNN快9倍,在测试时间快213倍,并在PASCAL VOC 2012上实现更高的mAP。与SPPnet相比,Fast R-CNN训练VGG16 3倍速更快 ,测试速度快10倍,并且更准确。 快速R-CNN在Python和C ++中实现(使用Caffe),可通过https://github.com/rbgirshick/fast-rcnn的开源MIT许可证获得。

1.简介

        最近,深度ConvNets [14,16]显着改善了图像分类[14]和物体检测[9,19]的准确性。与图像分类相比,对象检测是一项更具挑战性的任务,需要更复杂的方法来解决。由于这种复杂性,当前的方法(例如,[9,11,19,25])在多级管道中训练模型,这些模型是缓慢且不优雅的。

        复杂性的产生是因为检测需要物体的精确定位,从而产生两个主要挑战。首先,必须处理许多候选对象位置(通常称为“提议”)。其次,这些候选人只提供粗略的本地化,必须对其进行细化以实现精确定位。解决这些问题往往会影响速度,准确性或简单性。

        在本文中,我们简化了最先进的基于ConvNet的物体探测器的训练过程[9,11]。我们提出了一个单阶段训练算法,该算法共同学习对对象提议进行分类并改进其空间位置。

        由此产生的方法可以训练一个非常深的检测网络(VGG16 [20])比R-CNN [9]快9倍,比SPPnet [11]快3倍。在运行时,检测网络以0.3s处理图像(不包括对象建议时间)

        同时实现PASCAL VOC 2012 [7]的最高精度,mAP为66%(R-CNN为62%)

1.1  R-CNN和SPPnet

        基于区域的卷积网络方法(R-CNN)[9]通过使用深度ConvNet对对象提议进行分类,实现了出色的对象检测精度。 然而,R-CNN有明显的缺点:

        1.训练是一个多阶段的管道。 R-CNN首先使用对数丢失对对象提议进行ConvNet微调。 然后,它适应SVM到ConvNet特征。 这些SVM充当对象检测器,取代了通过微调学习的softmax分类器。 在第三个训练阶段,学习边界框回归量。

        2.训练在空间和时间上都很昂贵。 对于SVM和边界框回归训练,从每个图像中的每个对象提议中提取特征并将其写入磁盘。 对于深度网络,例如VGG16,这个过程需要2.5个GPU天才能获得VOC07 trainval set的5k图像。 这些功能需要数百GB的存储空间。

        3.物体检测很慢。 在测试时,从每个测试图像中的每个对象提议中提取特征。 使用VGG16进行检测需要47秒/图像(在GPU上)。

        R-CNN很慢,因为它为每个对象提议执行ConvNet前向传递,而不共享计算。 空间金字塔汇集网络(SPPnets)[11]被提议通过共享计算来加速R-CNN。 SPPnet方法计算整个输入图像的卷积特征映射,然后使用从共享特征映射中提取的特征向量对每个对象提议进行分类。 通过将提议内的特征地图的部分最大化为固定大小的输出(例如,6×6)来提取特征以用于提议。 汇总多个输出大小,然后在空间金字塔池中连接[15]。 SPPnet在测试时将R-CNN加速10到100倍。 由于更快的特征提取,训练时间也减少了3倍。

        SPPnet也有明显的缺点。 与R-CNN一样,训练是一个多阶段管道,涉及提取特征,微调网络损失,训练SVM,最后拟合边界框回归量。 特征也写入磁盘。 但与R-CNN不同,[11]中提出的微调算法无法更新空间金字塔汇集之前的卷积层。 不出所料,这种限制(固定卷积层)限制了深度网络的准确性。

1.2  改进

        我们提出了一种新的训练算法,可以修复R-CNN和SPPnet的缺点,同时提高它们的速度和准确性。 我们称这种方法为快速R-CNN,因为它训练和测试相对较快。 快速R-CNN方法有几个优点:

        1.比R-CNN,SPPnet更高的检测质量(mAP)

        2.训练是单阶段的,使用多任务损失

        3.训练可以更新所有网络层

        4.特征缓存不需要磁盘存储

        快速R-CNN是用Python和C ++编写的(Caffe [13]),可以在开源MIT Li-cense下获得,网址是https://github.com/rbgirshick/fast-rcnn。

2.Fast R-CNN架构和训练

        图1说明了Fast R-CNN架构。 Fast R-CNN网络将整个图像和一组对象提议作为输入。 网络首先使用几个卷积(conv)和最大池化层处理整个图像,以产生转换特征图。 然后,对于每个对象提议,感兴趣区域(RoI)池化层从特征图中提取固定长度的特征向量。 每个特征向量被馈送到一系列完全连接的(fc)层,最终分支成两个兄弟输出层:一个产生在K个对象类上的softmax概率估计加上一个全能的“背景”类和另一个输出的层 每个K对象类的四个实数值。 每组4个值对K类之一的精细边界框位置进行编码。

图1.Fast R-CNN架构。 输入图像和多个感兴趣区域(RoI)被输入到完全卷积网络中。 每个RoI汇集到固定大小的特征映射中,然后通过完全连接的层(FC)映射到特征向量。 网络每个RoI有两个输出向量:softmax概率和每类边界框回归偏移。 该架构采用端到端的多任务丢失进行训练。

2.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 / H×w / W的子窗口的H×W网格,然后将每个子窗口中的值最大汇集到相应的输出网格单元中来工作。 池化独立应用于每个要素图通道,如标准最大池化所示。 RoI层只是SPPnets [11]中使用的空间金字塔池层的特例,其中只有一个金字塔层。 我们使用[11]中给出的池化子窗口计算。

2.2  从预先训练的网络初始化

        我们试验了三个经过预先训练的ImageNet [4]网络,每个网络有五个最大池化层和五到十三个卷积层(有关网络细节,请参见第4.1节)。 当预训练的网络初始化Fast R-CNN网络时,它经历三次转换。首先,最后的最大池化层由RoI池化层替换,该池化层通过将H和W设置为与网络的第一完全连接层(例如,H = W = 7forVGG16)兼容来配置。

        其次,网络的最后一个全连接层和soft-max(经过1000路ImageNet分类培训)被前面描述的两个兄弟层替换(完全连接层和softmax,超过K + 1类别和类别) - 特定的边界框回归量)。

        第三,修改网络以获取两个数据输入:图像列表和那些图像中的RoI列表。

2.3  检测微调

        使用反向传播训练所有网络权重是Fast R-CNN的重要功能。首先,让我们阐明为什么SPPnet无法更新空间金字塔池池下的权重。

        根本原因是当每个训练样本(即RoI)来自不同的图像时,通过SPP层的反向传播非常低效,这正是R-CNN和SPPnet网络的训练方式。效率低下源于这样一个事实,即每个RoI可能具有非常大的感受野,通常跨越整个输入图像。由于前向传播必须处理整个感受野,因此训练输入很大(通常是整个图像)。

        我们提出了一种更有效的训练方法,利用训练期间的特征共享。在Fast R-CNN训练中,随机梯度下降(SGD)小批量分层采样,首先采样N个图像,然后从每个图像中采样R / N RoI。重要的是,来自相同图像的RoI在前向和后向传递中共享计算和存储器。使N小减少小批量计算。例如,当使用N = 2且R = 128时,所提出的训练方案比从128个不同图像采样一个RoI(即,R-CNN和SPPnet策略)快大约64倍。

        对此策略的一个担忧是它可能导致慢速训练收敛,因为来自同一图像的RoI是相关的。这个问题似乎不是一个实际问题,我们使用比R-CNN更少的SGD迭代,使用N = 2和R = 128获得了良好的结果。

        除了分层采样,Fast R-CNN使用简化的训练过程和一个微调阶段,共同优化softmax分类器和边界框缓解器,而不是在三个单独的阶段训练softmax分类器,SVM和回归器[9,11]。该程序的组成部分(损失,小批量采样策略,通过RoI汇集层的反向传播和SGD超参数)如下所述。

多任务损失。Fast R-CNN网络具有两个同级输出层。 第一个输出在个类别上的离散概率分布(每个RoI),。 通常,通过全连接层的个输出上的Softmax来计算。第二个输出层输出检测框回归偏移,,对于由k索引的K个类别中的每一个。 我们使用3中给出的的参数化,其中指定相对于候选框的尺度不变转换和对数空间高度/宽度移位。        每个训练RoI都标有真实分类类u和真实边界框回归目标v。我们在每个标记的RoI上使用多任务损失L来联合训练分类和边界框回归:

其中Lcls(p,u)= - log pu是真实类u的对数损失。

        第二个任务损失Lloc是针对类u,v =(vx,vy,vw,vh)的真实边界框回归目标的元组定义的,并且预测的元组tu =(tux,tuy,tuw,tuh) ,再次对u分类。 当u≥1时,艾弗森支架指示器函数[u≥1]评估为1,否则为0。 按照惯例,背景类被标记为u = 0.对于背景RoI,没有前景概念的边界框,因此Lloc被忽略。 对于边界框回归,我们使用其中的损失是一种强大的L1损失,对R-CNN和SPPnet中使用的L2损耗的异常值不太敏感。 当回归目标无限制时,L2损失训练可能需要仔细调整学习速率以防止爆炸梯度。式3消除了这种敏感性。


        等式中的超参数λ1控制两个任务损失之间的平衡。 我们将前景回归目标vi标准化为零均值和单位方差。 所有实验都使用λ= 1。

        我们注意到[6]使用相关的损失来训练一个与类无关的对象提议网络。 与我们的方法不同,[6]提倡双网络系统,将本地化和分类分开。 OverFeat [19],R-CNN [9]和SPPnet [11]也训练分类器和边界框定位器,但是这些方法使用阶段式训练,我们表明它对于快速R-CNN来说是次优的(第5.1节)。

小批量采样。在微调期间,每个SGD的小批量由个图像构成,均匀地随机选择(如通常的做法,我们实际上迭代数据集的排列)。 我们使用大小为的小批量,从每个图像采样64个RoI。 如在3中,我们从候选框中获取25%的RoI,这些候选框与检测框真值的IoU至少为0.5。 这些RoI只包括用前景对象类标记的样本,即。 剩余的RoI从候选框中采样,该候选框与检测框真值的最大IoU在区间上5。 这些是背景样本,并用标记。0.1的阈值下限似乎充当难负样本重训练的启发式算法11。 在训练期间,图像以概率0.5水平翻转。不使用其他数据增强。

通过RoI池化层的反向传播。反向传播通过RoI池化层。为了清楚起见,我们假设每个小批量()只有一个图像,扩展到是显而易见的,因为前向传播独立地处理所有图像。

        令xi∈R为进入RoI池层的第i个激活输入,并让yrj为第r个RoI的层的第j个输出。 RoI池化层计算yrj = xi *(r,j),其中i *(r,j)=argmaxi'∈R(r,j)xi'。 R(r,j)是指数输出单元yrj max汇总的子窗口中的输入集。 单个xi可以分配给几个不同的输出yrj。

        RoI池化层反向传播函数通过遵循argmax switches来计算关于每个输入变量的损失函数的偏导数:换句话说,对于每个小批量RoI 和对于每个池化输出单元,如果是通过最大池化选择的argmax,则将这个偏导数积累下来。在反向传播中,偏导数已经由RoI池化层顶部的层的反向传播函数计算。


SGD超参数。用于Softmax分类和检测框回归的全连接层的权重分别使用具有方差0.01和0.001的零均值高斯分布初始化。偏置初始化为0。所有层的权重学习率为1倍的全局学习率,偏置为2倍的全局学习率,全局学习率为0.001。 当对VOC07或VOC12 trainval训练时,我们运行SGD进行30k次小批量迭代,然后将学习率降低到0.0001,再训练10k次迭代。当我们训练更大的数据集,我们运行SGD更多的迭代,如下文所述。 使用0.9的动量和0.0005的参数衰减(权重和偏置)。

2.4 尺度不变性

        我们探索两种实现尺度不变对象检测的方法:(1)通过“brute force”学习和(2)通过使用图像金字塔。 这些策略遵循5中的两种方法。 在“brute force”方法中,在训练和测试期间以预定义的像素大小处理每个图像。网络必须直接从训练数据学习尺度不变性目标检测。

        相反,多尺度方法通过图像金字塔向网络提供近似尺度不变性。 在测试时,图像金字塔用于大致缩放-规范化每个候选框。 在多尺度训练期间,我们在每次图像采样时随机采样金字塔尺度,遵循5,作为数据增强的形式。由于GPU内存限制,我们只对较小的网络进行多尺度训练。

3 Fast R-CNN检测

        一旦Fast R-CNN网络被微调完毕,检测相当于运行前向传播(假设候选框是预先计算的)。网络将图像(或图像金字塔,编码为图像列表)和待计算概率的个候选框的列表作为输入。在测试的时候,通常在2000左右,虽然我们将考虑将它变大(约45k)的情况。当使用图像金字塔时,每个RoI被缩放,使其最接近5中的个像素。

        对于每个测试的RoI ,正向传播输出类别后验概率分布和相对于的预测的检测框框偏移集合(个类别中的每一个获得其自己的精细检测框预测)。我们使用估计的概率为每个对象类别分配的检测置信度。然后,我们使用R-CNN算法的设置和对每个类别独立执行非最大抑制3。

3.1 使用截断的SVD来进行更快的检测

        对于整体图像分类,与卷积层相比,计算全连接层花费的时间较小。相反,为了检测,要处理的RoI的数量很大,并且接近一半的正向传递时间用于计算全连接层(参见图2)。大的全连接层容易通过用截短的SVD压缩来加速12 13。

        在这种技术中,层的权重矩阵通过SVD被近似分解为:在这种分解中,是一个的矩阵,包括的前个左奇异向量,是对角矩阵,其包含的前个奇异值,并且是矩阵,包括的前个右奇异向量。截断SVD将参数计数从减少到个,如果远小于,则SVD可能是重要的。 为了压缩网络,对应于的单个全连接层由两个全连接层替代,在它们之间没有非线性。这些层中的第一层使用权重矩阵(没有偏置),并且第二层使用(其中原始偏差与相关联)。当RoI的数量大时,这种简单的压缩方法给出良好的加速。

4 主要结果

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

1. VOC07,2010和2012的最高的mAP。

2. 相比R-CNN,SPPnet,快速训练和测试。

3. 在VGG16中微调卷积层改善了mAP。

4.1.实验配置

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

4.2 VOC 2010和2012数据集结果

        如上表(表2,表3)所示,在这些数据集上,我们比较Fast R-CNN(简称FRCN)和公共排行榜中comp4(外部数据)上的主流方法(http://host.robots.ox.ac.uk:8080/leaderboard ,访问时间是2015.4.18)。对于NUS_NIN_c2000和BabyLearning方法,目前没有其架构的确切信息,它们是Network-in-Network的变体16。所有其他方法从相同的预训练VGG16网络初始化。

        Fast R-CNN在VOC12上获得最高结果,mAP为65.7%(加上额外数据为68.4%)。它也比其他方法快两个数量级,这些方法都基于比较“慢”的R-CNN网络。在VOC10上,SegDeepM 6获得了比Fast R-CNN更高的mAP(67.2%对比66.1%)。SegDeepM使用VOC12 trainval训练集训练并添加了分割的标注,它被设计为通过使用马尔可夫随机场推理R-CNN检测和来自17的语义分割方法的分割来提高R-CNN精度。Fast R-CNN可以替换SegDeepM中使用的R-CNN,这可以导致更好的结果。当使用放大的07++12训练集(见表2标题)时,Fast R-CNN的mAP增加到68.8%,超过SegDeepM。

4.3 VOC 2007数据集上的结果

        在VOC07数据集上,我们比较Fast R-CNN与R-CNN和SPPnet的mAP。 所有方法从相同的预训练VGG16网络开始,并使用边界框回归。 VGG16 SPPnet结果由5的作者提供。SPPnet在训练和测试期间使用五个尺度。Fast R-CNN对SPPnet的改进说明,即使Fast R-CNN使用单个尺度训练和测试,卷积层微调在mAP中提供了大的改进(从63.1%到66.9%)。R-CNN的mAP为66.0%。 作为次要点,SPPnet在PASCAL中没有使用被标记为“困难”的样本进行训练。 除去这些样本,Fast R-CNN 的mAP为68.1%。 所有其他实验都使用被标记为“困难”的样本。

4.4 训练和测试时间


表4. Fast RCNN,R-CNN和SPPnet中相同模型之间的运行时间比较。Fast R-CNN使用单尺度模式。SPPnet使用5中指定的五个尺度,由5的作者提供在Nvidia K40 GPU上的测量时间。

        快速的训练和测试是我们的第二个主要成果。表4比较了Fast RCNN,R-CNN和SPPnet之间的训练时间(小时),测试速率(每秒图像数)和VOC07上的mAP。对于VGG16,没有截断SVD的Fast R-CNN处理图像比R-CNN快146倍,有截断SVD的R-CNN快213倍。训练时间减少9倍,从84小时减少到9.5小时。与SPPnet相比,没有截断SVD的Fast RCNN训练VGG16网络比SPPnet快2.7倍(9.5小时对25.5小时),测试时间快7倍,有截断SVD的Fast RCNN比的SPPnet快10倍。 Fast R-CNN还不需要数百GB的磁盘存储,因为它不缓存特征。

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

图2. 截断SVD之前和之后VGG16的时间分布。在SVD之前,完全连接的层fc6和fc7需要45%的时间。

        图2示出了如何使用来自VGG16的fc6层中的矩阵的顶部1024个奇异值和来自fc7层的矩阵的顶部256个奇异值减少运行时间,而在mAP中几乎没有损失。如果在压缩之后再次微调,则可以在mAP中具有更小的下降的情况下进一步加速。

4.5 微调哪些层?

        对于在SPPnet论文5中考虑的不太深的网络,仅微调全连接层似乎足以获得良好的精度。我们假设这个结果不适用于非常深的网络。为了验证微调卷积层对于VGG16的重要性,我们使用Fast R-CNN微调,但冻结十三个卷积层,以便只有全连接层学习。这种消融模拟单尺度SPPnet训练,将mAP从66.9%降低到61.4%(表5)。这个实验验证了我们的假设:通过RoI池化层的训练对于非常深的网是重要的。     

表5. 限制哪些层对VGG16进行微调产生的影响。微调fc6模拟单尺度SPPnet训练算法5。 SPPnet L是使用五个尺度,以显著(7倍)的速度成本获得的结果。

        这是否意味着所有卷积层应该微调?没有。在较小的网络(S和M)中,我们发现conv1(第一个卷积层)是通用的和任务独立的(一个众所周知的事实1)。允许conv1学习或不学习,对mAP没有很有意义的影响。对于VGG16,我们发现只需要更新conv3_1及以上(13个卷积层中的9个)的层。这种观察是实用的:(1)从conv2_1更新使训练变慢1.3倍(12.5小时对比9.5小时)和(2)从conv1_1更新GPU内存不够用。当从conv2_1学习时mAP仅为增加0.3个点(表5,最后一列)。 所有Fast R-CNN在本文中结果都使用VGG16微调层conv3_1及以上的层,所有实验用模型S和M微调层conv2及以上的层。

5 设计评估

        我们通过实验来了解Fast RCNN与R-CNN和SPPnet的比较,以及评估设计决策。按照最佳实践,我们在PASCAL VOC07数据集上进行了这些实验。

5.1 多任务训练有用吗?

        多任务训练是方便的,因为它避免管理顺序训练任务的流水线。但它也有可能改善结果,因为任务通过共享的表示(ConvNet)18相互影响。多任务训练能提高Fast R-CNN中的目标检测精度吗?

        为了测试这个问题,我们训练仅使用公式中的分类损失(即设置)的基准网络。这些基线是表6中每组的第一列。请注意,这些模型没有检测框回归。接下来(每组的第二列),是我们采用多任务损失(公式,)训练的网络,但是我们在测试时禁用检测框回归。这隔离了网络的分类准确性,并允许与基准网络的apple to apple的比较。

        在所有三个网络中,我们观察到多任务训练相对于单独的分类训练提高了纯分类精度。改进范围从+0.8到+1.1 个mAP点,显示了多任务学习的一致的积极效果。        

        最后,我们采用基线模型(仅使用分类损失进行训练),加上检测回归层,并使用训练它们,同时保持所有其他网络参数冻结。每组中的第三列显示了这种逐级训练方案的结果:mAP相对于第一列改进,但逐级训练表现不如多任务训练(每组第四列)。    


表6. 多任务训练(每组第四列)改进了分段训练(每组第三列)的mAP。

5.2 尺度不变性:暴力或精细?

        我们比较两个策略实现尺度不变物体检测:暴力学习(单尺度)和图像金字塔(多尺度)。在任一情况下,我们将图像的尺度定义为其最短边的长度。

        所有单尺度实验使用像素,对于一些图像,可以小于600,因为我们保持横纵比缩放图像,并限制其最长边为1000像素。选择这些值使得VGG16在微调期间不至于GPU内存不足。较小的模型占用显存更少,所以可受益于较大的值。然而,每个模型的优化不是我们的主要的关注点。我们注意到PASCAL图像是384×473像素的,因此单尺度设置通常以1.6倍的倍数上采样图像。因此,RoI池化层的平均有效步进为约10像素。

        在多尺度设置中,我们使用5中指定的相同的五个尺度()以方便与SPPnet进行比较。但是,我们以2000像素为上限,以避免GPU内存不足。

        表7显示了当使用一个或五个尺度进行训练和测试时的模型S和M的结果。也许在5中最令人惊讶的结果是单尺度检测几乎与多尺度检测一样好。我们的研究结果能证明他们的结果:深度卷积网络擅长直接学习尺度不变性。多尺度方法消耗大量的计算时间仅带来了很小的mAP增加(表7)。在VGG16(模型L)的情况下,我们受限于实施细节仅能使用单个尺度。然而,它得到了66.9%的mAP,略高于R-CNN的66.0%19,尽管R-CNN在每个候选区域被缩放为规范大小,在意义上使用了“无限”尺度。

        由于单尺度处理提供速度和精度之间的最佳折衷,特别是对于非常深的模型,本小节以外的所有实验使用单尺度训练和测试,像素。

表7. 多尺度与单尺度。SPPnet ZF(类似于模型S)的结果来自5。 具有单尺度的较大网络提供最佳的速度/精度平衡。(L在我们的实现中不能使用多尺度,因为GPU内存限制。)

5.3 我们需要更多训练数据吗?

        当提供更多的训练数据时,好的目标检测器应该会得到改善。 Zhu等人20发现DPM11mAP在只有几百到千个训练样本的时候就饱和了。在这里我们增加VOC07 trainval训练集与VOC12 trainval训练集,大约增加到三倍的图像,数量达到16.5k,以评估Fast R-CNN。扩大训练集提高了VOC07测试的mAP,从66.9%到70.0%(表1)。 当对这个数据集进行训练时,我们使用60k次小批量迭代而不是40k。

表1. VOC 2007测试检测平均精度(%)。 所有方法都使用VGG16。 训练集:07:VOC07 trainval,07 \diff:07没有“困难”的样本,07 + 12:07和VOC12训练的联合。 SPPnet结果由5的作者提供。

        我们对VOC10和2012进行类似的实验,我们用VOC07 trainval,test和VOC12 trainval构造了21.5k图像的数据集。当训练这个数据集时,我们使用100k次SGD迭代和每40k次迭代(而不是每30k次)降低学习率10倍。对于VOC10和2012,mAP分别从66.1%提高到68.8%和从65.7%提高到68.4%。

5.4 SVM分类是否优于Softmax?

        Fast R-CNN在微调期间使用softmax分类器学习,而不是如在R-CNN和SPPnet中训练线性SVM。为了理解这种选择的影响,我们在Fast R-CNN中实施了具有难负采样重训练的SVM训练。我们使用与R-CNN中相同的训练算法和超参数。    

表8. 用Softmax的Fast R-CNN对比用SVM的Fast RCNN(VOC07 mAP)。

        对于所有三个网络,Softmax略优于SVM,mAP分别提高了0.1和0.8个点。这种效应很小,但是它表明与先前的多级训练方法相比,“一次性”微调是足够的。我们注意到,Softmax,不像SVM那样,在分类RoI时引入类之间的竞争。

5.5 更多的候选区域更好吗?

        存在(广义地)两种类型的目标检测器:使用候选区域的稀疏集合(例如,选择性搜索21)和使用密集集合(例如DPM11)。分类稀疏提议是级联的一种类型22,其中提议机制首先拒绝大量候选者,让分类器来评估留下的小集合。当应用于DPM检测时,该级联提高了检测精度21。我们发现提案分类器级联也提高了Fast R-CNN的精度。

        使用选择性搜索的质量模式,我们扫描每个图像1k到10k个候选框,每次重新训练和重新测试模型M.如果候选框纯粹扮演计算的角色,增加每个图像的候选框数量不应该损害mAP。

图3. 各种候选区域方案的VOC07测试mAP和AR。

        我们发现mAP上升,然后随着候选区域计数增加而略微下降(图3,实线蓝线)。这个实验表明,用更多的候选区域没有帮助,甚至稍微有点伤害准确性。

        如果不实际运行实验,这个结果很难预测。用于测量候选区域质量的最先进的技术是平均召回率(AR)23。当对每个图像使用固定数量的候选区域时,AR与使用R-CNN的几种候选区域方法良好地相关。图3示出了AR(实线红线)与mAP不相关,因为每个图像的候选区域数量是变化的。AR必须小心使用,由于更多的候选区域更高的AR并不意味着mAP会增加。幸运的是,使用模型M的训练和测试需要不到2.5小时。因此,Fast R-CNN能够高效地,直接地评估目标候选区域mAP,这优于代理度量。

        我们还调查Fast R-CNN当使用密集生成框(在缩放,位置和宽高比上),大约45k个框/图像。这个密集集足够丰富,当每个选择性搜索框被其最近(IoU)密集框替换时,mAP只降低1个点(到57.7%,图3,蓝色三角形)。

        密集框的统计数据与选择性搜索框的统计数据不同。从2k个选择性搜索框开始,我们在添加的随机样本密集框时测试mAP。对于每个实验,我们重新训练和重新测试模型M。当添加这些密集框时,mAP比添加更多选择性搜索框时下降得更强,最终达到53.0%。

        我们还训练和测试Fast R-CNN只使用密集框(45k/图像)。此设置的mAP为52.9%(蓝色菱形)。最后,我们检查是否需要使用难样本重训练的SVM来处理密集框分布。 SVM做得更糟:49.3%(蓝色圆圈)。

5.6 MS COCO初步结果

        我们将fast R-CNN(使用VGG16)应用于MS COCO数据集24,以建立初步基线。我们对80k图像训练集进行了240k次迭代训练,并使用评估服务器对“test-dev”集进行评估。 PASCAL标准下的mAP为35.9%;。新的COCO标准下的AP(也平均)为19.7%。

6 结论

        本文提出Fast R-CNN,一个对R-CNN和SPPnet干净,快速的更新。 除了报告目前的检测结果之外,我们还提供了详细的实验,希望提供新的见解。 特别值得注意的是,稀疏目标候选区域似乎提高了检测器的质量。 过去探索这个问题过于昂贵(在时间上),但Fast R-CNN使其变得可能。当然,可能存在允许密集盒执行以及稀疏候选框的尚未发现的技术。这样的方法如果被开发,可以帮助进一步加速目标检测。

你可能感兴趣的:(Fast R-CNN)