Fast R-CNN文章翻译笔记

原文地址:https: //github.com/rbgirshick/fast-rcnn

摘要:本文提出了一种基于快速区域的卷积网络(Fast R-CNN)目标检测方法。快速R-CNN建立在之前的工作基础上,利用深度卷积网络有效地分类目标提案。与之前的工作相比,Fast R-CNN采用了几个创新来提高训练和测试速度,同时也提高了检测精度。Fast R-CNN训练非常深的vgg16网络比R-CNN快9倍,测试时快213倍,并且在PASCAL VOC 2012上取得了更高的mAP。与SPPnet相比,Fast R-CNN训练VGG16的速度快3倍,测试速度快10倍,更准确。Fast R-CNN是用Python和c++实现的(使用Caffe),在开源MIT许可下可以在https: //github.com/rbgirshick/fast-rcnn获得。

1. 介绍

近年来,深度卷积神经网络[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]上以66%的mAP(相对于R-CNN的62%)获得最高精度。

1.1R-CNN和SPPnet

基于区域卷积网络(RCNN)[9]方法利用深度卷积网络对目标进行分类,获得了良好的目标检测精度。然而,R-CNN有明显的缺点:

1. 培训是一个多阶段的流水线。R-CNN首先使用日志丢失对对象提案进行微调。然后,将支持向量机与ConvNet特征匹配。这些支持向量机作为目标检测器,取代了通过微调学习的softmax分类器。在第三个训练阶段,学习边界盒回归变量。

2. 训练的空间和时间都很昂贵。对于支持向量机和边界盒回归器训练,从每张图像的每个目标提案中提取特征并写入磁盘。对于非常深的网络,如VGG16,对于VOC07训练集的5k图像,这个过程需要2.5 gpu -天。这些功能需要几百gb的存储空间。

3.对象检测速度慢。在测试时,从每个测试图像中的每个对象提案中提取特征。使用VGG16检测需要47s /图像(在GPU上)。

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

SPPnet也有明显的缺点。像R-CNN一样,训练是一个多阶段的管道,包括提取特征、用日志损耗对网络进行微调、训练支持向量机,最后拟合边界盒回归器。特性也被写入磁盘。但与R-CNN不同的是,[11]中提出的微调算法不能更新在空间金字塔池之前的卷积层。意料之中的是,这种限制(固定的卷积层)限制了非常深的网络的准确性。

1.2贡献

我们提出了一种新的训练算法,解决了R-CNN和SPPnet的缺点,同时提高了它们的速度和准确性。我们称这种方法为Fast R-CNN,因为它训练和测试相对较快。快速RCNN方法有以下几个优点:1。检测质量(mAP)高于R-CNN, SPPnet 2。训练是单阶段的,使用多任务损失3。训练可以更新所有网络层4。Fast R-CNN是用Python和c++ (Caffe[13])编写的,在开源MIT许可下可在https://github.com/rbgirshick/ Fast -rcnn获得。

2. 快速的R-CNN架构和训练 

图1给出了Fast R-CNN的架构。一个快速的R-CNN网络将整个图像和一组对象建议作为输入。该网络首先对整个图像进行若干卷积(conv)和最大池化层处理,生成一个conv特征图。然后,针对每个目标提议,一个感兴趣区域池化层从特征图中提取一个固定长度的特征向量。每个特征向量送入一个序列的完全连接(fc)层,最后分支成两个兄弟输出层:一个生产softmax概率估计/ K对象类+全方位“背景”类和另一个层,输出四个实值编号为K的每个对象类。每4个值的集合对K个类中的一个进行了精细化的边界框位置编码。 

 

图1所示。快R-CNN架构。将输入图像和多个感兴趣区域(RoIs)输入到一个全卷积网络中。每个RoI集合成一个固定大小的特征映射,然后通过全连接层(FCs)映射到特征向量。该网络对每个RoI有两个输出向量:softmax概率和每个类别边界盒回归偏移量。该体系结构接受了端到端训练,但会丢失多任务。 

 2.1RoI池化层

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]网络进行实验,每个网络有5个最大池化层和5到13个conv层(参见4.1节了解网络细节)。当一个预先训练的网络初始化一个Fast R-CNN网络时,它要经历三个变换。

首先,最后一个最大池化层被一个RoI池化层取代,该层通过设置H和W与网络的第一个完全连接层兼容(例如,VGG16的H = W = 7)来配置。

第二,网络的最后一个完全连接层和softmax(经过1000路ImageNet分类训练)被前面描述的两个兄弟层(K + 1类别和特定类别的边界盒回归器上的一个完全连接层和softmax)取代。

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

2.3微调检测

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

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

我们提出了一种在训练过程中利用特征共享的更有效的训练方法。在快速RCNN训练中,对随机梯度下降(stochastic gradient descent, SGD)小批量进行分层采样,首先对N张图像采样,然后对每张图像采样R/N个roi。关键的是,同一个图像的roi在向前和向后的传递中共享计算和内存。使N小,减少了小批量计算。例如,当使用N = 2和R = 128时,我们提出的训练方案比从128幅不同的图像中采样一个RoI(即R- cnn和SPPnet策略)大约快64倍。

这种策略的一个问题是,它可能会导致训练收敛缓慢,因为来自同一幅图像的roi是相关的。这个问题似乎不是一个实际问题,我们在N = 2和R = 128的情况下使用比R- cnn更少的SGD迭代获得了良好的结果。

除了分层抽样,Fast R-CNN使用了一个精简的训练过程,其中一个微调阶段联合优化了softmax分类器和边界盒回归器,而不是在三个单独的阶段训练softmax分类器、支持向量机和回归器[9,11]。该过程的组成部分(损失、小批采样策略、通过RoI池化层的反向传播,以及SGD超参数)如下所述。

多任务的损失。一个Fast R-CNN网络有两个同胞输出层。第一个输出离散概率分布(每RoI), p = (p0,…K + 1个类别。通常,p是由一个全连接层的K+1输出的softmax计算的。第二个兄弟层输出限定框回归补偿,tk = ? tk x, y tk, tk w, tk h ?,为每个K对象类,被K。我们使用参数化在[9]tkgiven tkspecifies尺度不变的翻译和日志空间高度/宽度变化相对于一个对象的建议。

每个训练RoI被标注为一个ground-truth class u和一个ground-truth bounded -box regression target v.我们在每个标注的RoI上使用一个多任务损失L来联合训练分类和bounds -box回归:

 第二个损失Lloc是在u,v =(vx; vy; vw; vh)和预测元组tu =(tux; tuy; tuw; tuh)的真正边界框回归目标的元组 ,再次分类为类u。 Iverson括号指示函数[u≥1]当u≥1的时候为值1,否则为0。按照惯例,catch-all背景类标记为u = 0。对于背景RoI,没有ground truth边界框的概念,因此Lloc被忽略。对于边界框回归,我们使用损失

公式中的是一个稳健的l1损失,比R-CNN和SPPnet中使用的L2loss对异常值不那么敏感。当回归目标是无界时,使用L2loss进行训练可能需要仔细调整学习速率,以防止梯度爆炸。式3消除了这种敏感性。

Eq. 1中的超参数λ控制两个任务损失之间的平衡。在均值为零和单位方差为零的情况下,对ground-truth回归目标进行了归一化处理。所有实验使用λ = 1。

我们注意到[6]使用一个相关损失来训练一个类不可知的对象提议网络。与我们的方法不同,[6]提倡分离本地化和分类的双网络系统。OverFeat[19]、R-CNN[9]和SPPnet[11]也训练分类器和边界盒定位器,但是这些方法使用的是分段训练,我们证明这对于Fast R-CNN(第5.1节)不是最优的。

 Mini-batch抽样。在微调过程中,每一个SGD小批处理都是由N = 2张图像组成的,这些图像都是均匀随机选择的(这是常见的做法,我们实际上迭代了数据集的排列)。我们使用R = 128的小批,从每张图像中采样64个roi。就像在[9]中一样,我们从对象提案中获得25%的roi,这些对象提案的交集大于联合(IoU),并且groundtruth的边界框至少为0.5。这些roi包括用前景对象类标记的示例,即u≥1。剩余的roi从对象提议中采样,这些提议在间隔[0.1,0.5),紧随[11],具有最大的ground truth IoU。这些是背景例子,标记为u = 0。0.1这一较低的阈值似乎是对难示例挖掘[8]的启发。在训练过程中,图像以0.5的概率水平翻转。不使用其他数据增强。

通过RoI池化层进行反向传播。反向传播通过RoI池化层传递衍生品。为了清晰起见,我们假设每个小批处理(N = 1)只有一个图像,尽管扩展到N > 1很简单,因为前向传递独立处理所有图像。

设xi∈R为投资回报率池化层的第i个激活输入,yrj为投资回报率池化层的第j个输出。RoI池化层计算yrj= xi∗(r,j),其中i∗(r,j) = argmaxi0∈r (r,j)xi0。R(R, j)是输出单元yrjmax所覆盖的子窗口中输入的索引集。一个ximay被分配给几个不同的输出yrj。

RoI池化层的反向函数通过argmax开关计算损失函数对每个输入变量xi的偏导数:

 换言之,对于每个小批RoI r和每个池化输出单元yrj,如果i是yrjby max池化选择的argmax,则累积的偏导数是∂L/∂yrj。在反向传播中,部分导数∂L/∂yrj已经通过RoI池化层上的层的反向函数计算出来。

SGD hyper-parameters。用于softmax分类和边界盒回归的全连接层分别从零均值高斯分布初始化,标准差分别为0.01和0.001。偏见被初始化为0。所有的层使用每层学习率1的权重和2的偏差和全局学习率0.001。在VOC07或VOC12训练中,我们运行SGD进行30k小批量迭代,然后将学习率降至0.0001,再进行10k迭代训练。当我们在更大的数据集上训练时,我们运行SGD进行更多的迭代,如后面所述。动量为0.9,参数衰减为0.0005(关于权值和偏差)。

2.4 尺度不变性

我们探索了两种实现尺度不变目标检测的方法:(1)通过“蛮力”学习和(2)使用图像金字塔。这些策略遵循[11]中的两种方法。在蛮力方法中,在训练和测试过程中,每幅图像都按照预先定义的像素大小进行处理。网络必须直接从训练数据中学习尺度不变的目标检测。

相比之下,多尺度方法通过图像金字塔为网络提供近似的尺度不变性。在测试时,使用图像金字塔来近似地对每个对象提案进行比例归一化。在多尺度训练中,每次对图像进行采样时,我们都按照[11]随机抽取一个金字塔尺度作为数据增强的一种形式。由于GPU内存的限制,我们只对较小的网络进行多尺度训练实验。

3.快R-CNN检测

一旦对Fast R-CNN网络进行了微调,检测就相当于向前运行一次(假设对象提案是预先计算好的)。该网络将一个图像(或一个图像金字塔,编码为图像列表)和一个R对象建议列表作为输入,以进行评分。在测试时间,R通常在2000左右,尽管我们将考虑它更大的情况(≈45k)。当使用图像金字塔时,每个RoI被分配到比例,这样比例的RoI在区域[11]中最接近2242个像素。

对于每一个测试RoI r,前向传递输出一个类后验概率分布p和一组相对于r的预测边界盒偏移量(K类中的每一个都得到自己的精炼边界盒预测)。我们使用估计概率Pr(class = k | r)∆= pk为每个对象类k分配一个检测置信r。然后,我们使用算法和r - cnn[9]设置对每个类独立执行非最大抑制。

3.1 截断SVD以更快地检测

对于全图像分类,计算全连通层的时间比计算conv层的时间要短。相反,在检测过程中,需要处理的节点数较多,且前向传递时间的近一半用于计算全连通层(如图2所示)。大的全连通层可以通过截断奇异值分解(SVD)进行压缩来加速[5,23]。

在这种方法中,采用奇异值分解法,将u × v权矩阵W参数化的一层近似分解为

在这种分解,你是一个U×t矩阵组成第t左奇异向量W,Σtis包含前t t×t对角矩阵奇异值的W和V V×t矩阵组成第t right-singular向量W .截断奇异值分解降低了参数计数从紫外线到t (U + V),如果t远小于min(u, v),则可以显著。为了压缩网络,将W对应的单一全连接层替换为两个全连接层,它们之间没有非线性。这些层中的第一层使用权重矩阵ΣtVT(并且没有偏见),第二层使用U(与W相关的原始偏见)。当roi的数量很大时,这种简单的压缩方法可以提供良好的加速。

4. 主要结果

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

1.VOC07, 2010,和2012

2.最新地图相比于R-CNN, SPPnet

3.快速训练和测试。微调conv层在VGG16改进mAP

4.1实验装置

我们的实验使用了三种可在线使用的预先训练的ImageNet模型。第一个是来自R-CNN[9]的CaffeNet(本质上是alexnet[14])。以CaffeNet为模型S,表示“小”。第二个网络是来自[3]的VGG CNN M 1024,它与S有相同的深度,但更宽。我们称这种网络模型为M,即“媒介”。最后的网络是来自[20]的非常深的VGG16模型。由于该模型是最大的,我们称其为模型l。在本节中,所有实验都采用单尺度训练和测试(s = 600;详见5.2节)。

4.2VOC 2010和2012的结果

这些数据集,我们比较快R-CNN (FRCN,简称)与顶部的方法comp4(外部数据)跟踪从公众排行榜(表2,表3).3For新加坡国立大学NIN c2000和BabyLearning方法,没有相关的出版物在这个时候,我们找不到确切的信息事先架构使用;它们是网络中的网络设计[17]的变体。所有其他方法都是从同一个预先训练的VGG16网络初始化的。

Fast R-CNN在VOC12上获得了最高的结果,mAP为65.7%(额外数据为68.4%)。它也比其他方法快两个数量级,这些方法都是基于“慢”的R-CNN管道。SegDeepM[25]的mAP比Fast R-CNN高(67.2% vs 66.1%)。SegDeepM采用VOC12 trainval +分段注释进行训练;它的目的是提高R-CNN的准确性,通过使用一个马尔可夫随机场推理从O2P[1]语义分割方法的R-CNN检测和分割。Fast R-CNN可以替换成SegDeepM代替R-CNN,这可能会得到更好的结果。当使用放大的07++12训练集(见表2标题)时,Fast R-CNN的mAP增加到68.8%,超过了SegDeepM。

4.3VOC 2007条结果

在VOC07中,我们比较了Fast R-CNN、R-CNN和SPPnet。所有的方法都从同样的预先训练过的VGG16网络出发,并使用边界盒回归。VGG16 SPPnet结果由[11]的作者计算。SPPnet在训练和测试过程中使用了五个量表。Fast R-CNN相对于SPPnet的改进说明,即使Fast R-CNN使用单尺度训练和测试,微调conv层提供了一个巨大的改进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在VOC07上的训练时间(小时)、测试率(每幅图像的秒数)和mAP。对于VGG16, Fast R-CNN处理图像的速度比没有截断SVD的R-CNN快146×,使用它的速度快213×。训练时间减少9倍,从84小时减少到9.5小时与SPPnet相比,Fast RCNN训练VGG16的速度快了2.7倍(9.5小时vs. 25.5小时),在不截断SVD的情况下测试速度快了7倍,或者快了10倍。Fast R-CNN还消除了几百g的磁盘存储空间,因为它没有缓存功能。

截断奇异值分解。截断SVD可以减少30%以上的检测时间,而mAP只会有很小的(0.3个百分点)下降,并且无需在模型压缩后执行额外的微调。图2说明了如何在VGG16的fc6层中使用25088×4096矩阵的前1024个奇异值和4096×4096 fc7层的前256个奇异值在mAP中减少运行时的损失。如果在压缩后再次进行微调,进一步的加速是可能的。

4.5需要对哪些层进行微调?

对于SPPnet论文[11]中考虑的深度较低的网络,只对完全连接的层进行微调就足以获得良好的精度。我们假设这个结果不适用于非常深的网络。为了验证微调conv层对VGG16的重要性,我们使用Fast R-CNN进行微调,但冻结了13个conv层,以便只有完全连接的层进行学习。这种消融模拟了单尺度的SPPnet训练,并将mAP从66.9%降低到61.4%(表5)。该实验验证了我们的假设:通过theri池化层进行训练对于非常深的网是重要的。

这是否意味着所有的conv层都应该进行微调?简而言之,没有。在较小的网络(S和M)中,我们发现conv1是通用的和任务无关的(众所周知的事实[14])。是否允许conv1学习对mAP没有任何意义。对于VGG16,我们发现只需要更新conv3 1及以上的层(13个conv层中的9个)。这个观察结果很实用:(1)与从conv3 1学习相比,从conv2 1学习的时间要慢1.3×(12.5小时vs. 9.5小时);(2)从conv1 1更新超过GPU内存。从conv2学习时,mAP的差异仅为+0.3分(表5,最后一列)。本文所有的Fast R-CNN结果使用VGG16微调层conv3 1及以上;所有的实验模型S和M微调层conv2和向上。

 5. 设计评价

我们进行了实验来了解Fast RCNN与R-CNN和SPPnet相比如何,并评估设计决策。根据最佳实践,我们在PASCAL VOC07数据集上执行了这些实验。

5.1. 多任务训练有帮助吗?

多任务训练很方便,因为它避免了管理连续训练任务的管道。但它也有改善结果的潜力,因为任务通过共享表示(卷积神经网络)[2]相互影响。多任务训练提高Fast R-CNN的目标检测精度吗?

为了测试这个问题,我们训练基线网络,只使用分类损失,Lcls,在Eq. 1这些基线被打印在表6中每组的第一列中,用于模型S、M和L。请注意,这些模型没有边界框回归器。接下来(每组第二列),我们使用多任务损失训练过的网络(Eq. 1, λ = 1),但是我们在测试时禁用了边界框回归。这隔离了网络的分类准确性,并允许与基线网络进行全面的比较。

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

最后,我们选取基线模型(只训练了分类损失),对边界盒回归层进行绑定,在保持所有其他网络参数不变的情况下,使用llocl进行训练。每组的第三列显示了这一阶段训练方案的结果:mAP比第一列有所改善,但阶段训练不如多任务训练(每组第四列)。 

5.2。尺度不变性:是蛮力还是手腕?

我们比较了两种实现尺度不变目标检测的策略:蛮力学习(单尺度)和图像金字塔(多尺度)。在这两种情况下,我们将图像的比例s定义为其最短边的长度。

所有单尺度实验使用s = 600像素;对于某些图像,S可能小于600,因为我们将图像的最长边设置为1000像素,并保持图像的高宽比。选择这些值是为了在微调期间VGG16适合GPU内存。较小的模型没有内存限制,可以受益于更大的价值;然而,优化每个模型并不是我们的主要关注点。我们注意到PASCAL图像平均为384 × 473像素,因此单尺度设置通常会将图像的采样率提高1.6倍。因此,RoI池化层的平均有效步幅≈10像素。

在多尺度设置中,我们使用[11](s∈{480,576,688,864,1200})中规定的相同的五个尺度,以便于与SPPnet进行比较。然而,我们将最长边限制在2000像素,以避免超过GPU内存。表7显示了模型S和模型M使用一种或五种量表进行训练和测试时的情况。也许[11]中最令人惊讶的结果是,单尺度检测的性能几乎和多尺度检测一样好。坚定了他们的结果:深度卷积神经网络擅长直接学习尺度不变性。在VGG16(模型L)的情况下,我们只能通过实现细节使用单一的尺度。Y et它达到了66.9%的mAP,这略高于R-CNN[10]报告的66.0%,即使R-CNN使用“无限”的尺度在这个意义上,每个提案都扭曲到一个规范的大小。由于单尺度处理提供了速度和精度之间的最佳权衡,特别是对于非常深的模型,这个子部分之外的所有实验都使用s = 600像素的单尺度训练和测试。

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

当提供更多的训练数据时,一个好的目标检测器应该得到改进。Zhu et al.[24]发现DPM [8] mAP仅在几百到几千个训练例子之后就饱和了。在这里,我们使用VOC12 trainval集合来扩充VOC07 trainval集合,大致将图像数量增加三倍至16.5k,以评估Fast R-CNN。扩大训练集将VOC07测试上的mAP从66.9%提高到70.0%(表1)。在这个数据集上训练时,我们使用60k小批迭代,而不是40k。

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

 5.4。支持向量机优于softmax?

快速R-CNN使用在微调过程中学习的softmax分类器,而不是像在R-CNN和SPPnet中所做的那样,在事后训练1 -vs-rest线性支持向量机。为了理解这一选择的影响,我们在Fast R-CNN中使用硬负挖掘实现了事后支持向量机训练。我们使用与R-CNN相同的训练算法和超参数。

5.5。提议越多就越好吗?

有(广义上)两种类型的对象检测器:那些使用对象提议的稀疏集(例如,选择性搜索[21])和那些使用密集集(例如,DPM[8])。分类稀疏建议是一种级联[22],建议机制首先拒绝大量候选建议,留给分类器一个小集合进行评估。当应用于DPM检测[21]时,该级联提高了检测精度。我们发现证据表明,建议分类器级联也提高了Fast R-CNN的准确性。使用选择性搜索的质量模式,我们每幅图像从1k扫描到10k提案,每次重新训练和测试模型m。如果提案只是纯粹的计算作用,增加每幅图像的提案数量不应该损害mAP.

我们发现,随着提案数量的增加,mAP先是上升,然后略有下降(图3,蓝实线)。这个实验表明,用更多的建议淹没深度分类器是没有帮助的,甚至有轻微的伤害,准确性。

如果没有实际进行实验,这个结果是很难预测的。衡量对象提案质量的最先进的方法是平均召回率[12]。当每张图像使用固定数量的提案时,对于使用R-CNN的几种提案方法,AR与mAP的相关性很好。图3显示AR(实红线)与mAP没有很好的相关性,因为每张图像的提案数量是不同的。使用AR时必须小心;更高的AR由于更多的提议并不意味着mAP将增加。幸运的是,model M的培训和测试只花了不到2.5小时。因此,快速的R-CNN能够有效地、直接地评估对象提议mAP,这比代理度量更可取。我们还研究了Fast R-CNN在使用密集生成的盒子(超过规模、位置和宽高比)时的速度,大约为45k个盒子/图像。这个密集集合足够丰富,当每个选择性搜索框被最接近的(在IoU中)密集框替换时,mAP只下降1个点(为57.7%,图3,蓝色三角形)。密集搜索框的统计数据不同于选择性搜索框的统计数据。从2k个选择性搜索框开始,我们在添加1000 ×{2,4,6,8,10,32,45}密集框的随机样本时测试mAP。在每次实验中,我们对模型m进行再训练和再测试。当添加这些密集框时,mAP的下降比添加更多选择性搜索框时更强烈,最终达到53.0%。我们也只使用密集的盒子(45k /图像)训练和测试Fast R-CNN。该设置产生52.9%的地图(蓝钻石)。最后,我们验证了是否需要采用硬负挖掘的支持向量机来应对密集盒分布。支持向量机的表现更糟:49.3%(蓝色圆圈)。

5.6。我们将Fast R-CNN (with VGG16)应用于MS COCO数据集[18],建立初步基线。我们在80k图像训练集上进行240k迭代,并使用评估服务器在“test-dev”集上进行评估。PASCAL-style mAP为35.9%;与coco类似的新AP均值也高于欠条门槛,为19.7%。

6. 本文提出了Fast R-CNN,对R-CNN和SPPnet进行了干净快速的更新。除了报告最先进的检测结果,我们提出了详细的实验,我们希望提供新的见解。特别值得注意的是,稀疏目标的建议似乎提高了检测器的质量。这个问题在过去太昂贵(在时间上)而无法探究,但在Fast R-CNN中变得实用。当然,可能存在一些未被发现的技术,可以让密集的盒子执行得和稀疏的提议一样好。这些方法如果得到发展,可能有助于进一步加快目标检测。

以上均为机器翻译结果,仅供自己学习使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值