【论文翻译】目标检测Fast R-CNN论文翻译

Fast R-CNN

摘要

本文提出了一种快速的,基于区域的卷积网络方法(Fast R-CNN)用于目标检测.Fast R-CNN建立在前人的工作上使用深层卷积网络。来有效分类候选目标。相比于之前的工作,Fast R-CNN应用了几个创新点来提高了训练与测试速度,也增加了检测准确度。Fast R-CNN在非常深的VGG16网络上比R-CNN快9倍,在测试阶段快213倍,并且在Pascal2012数据集上达到以更高的mAP。相比于SPPnet,Fast R-CNN训练VGG16快3倍,测试快10倍。并且是更加精确的。Fast R-CNN能在Python和C++(使用Caffe)上被实施,在以下开源MIT许可证:https://github.com/rbgirshick/fast-rcnn.


1.介绍

近年来,深层卷积网络已经明显提高了图像分类与目标检测的准确度。相比于图像分类,目标检测是一个更具挑战性的任务,且要求更加复杂的方法去解决。由于这个复杂性,目前主流的采用多级流水线的训练模型是慢而且粗糙的。复杂性的产生是因为检测要求准确的目标定位,这就产生了两个主要难点:首先众多的候选目标定位(通常称为proposal)必须被处理;第二,这些候选提供的仅仅是粗略的定位,必须被精细化以提供精准的定位。这些问题的解决方法通常会影响到速度,准确率和简单性。
在本文中我们简化了目前最高水平的基于卷积网络的目标检测器。我们提出了一个单阶段的训练方法,联合候选目标分类就能精确他们的空间定位。
用这个所得到的方法,能训练一个非常深的检测网络(VGG16比R-CNN快9倍,SPPnet快3倍,在运行时间,检测网络处理图片在0.3秒内(不包括候选目标生成时间),在PascalVOC2012上能达到最高准确率,mAP为66%,R-CNN为62%)
1.1 R-CNN与SPPnet
基于区域的卷积网络方法(R-CNN)通过应用深层卷积网络分类候选目标,实现了在目标检测上一个极佳的准确率。但是R-CNN也还存在着一下缺点:
1.训练过程是多级的流水线。R-CNN首先在目标候选上,通过log损失,微调了一个卷积网络。然后他将卷积网络特征送入SVM。这些SVM作为目标检测的器,取代了从微调中学到的soft分类器。在第三个阶段学习边界框回归。
2.训练花费的时间与空间代价太高:对于SVM和边界框回归的训练,特征从每张图片中的候选目标区域中提取,然后写入磁盘中。对于非常深的网络,比如VGG16这个过程采取2.5个GPU日,用于处理5千张图片(来自VOC2007的训练验证集)这些特征要求上百G的存储。
3.目标检测很慢:在测试时间,特征被从每张测试图片的候选区域中被提取,用VGG16检测将花费47S一张图片(运行在GPU)上
R-CNN是慢的因为他对于每一个候选区域都进行一个卷积网络的前向传播,没有共享计算过程。空间金字塔池化网络(SPPnet)就是通过共享计算过程来加速R-CNN的。SPP方法为整个输入图片计算卷积特征图,然后使用从共享的特征向量图中提取的特征向量来分类每一个候选区域。通过最大池化将候选框内的特征图转化为固定大小的输出(例如,6X6)来提取针对候选框的特征。多维的输出尺寸被池化然后串联称为空间金字塔池。SPPnet比R-CNN在测试时间上快了10到100倍。训练时间减少了3倍,因为这个着更快的候选特征提取。
SPPnet也有值得注意的缺点,像R-CNN,训练是多级流水线的方式,涉及到特征提取,用log损失微调网络,训练SVMs,最终进行边界框回归。特征也被写入到了磁盘中。但是,不同于R-CNN,【11】中提到的微调算法不能更新在空间金字塔池之前的卷积层,毫不奇怪的是这个限制条件(固定的网络层数)限制了非常深的网络的准确率。
1.2贡献
我们提出一个新的训练方法弥补了R-CNN和SPPnet的不足,而且也提高了他们的速度与准确率。我们把这中方法称为Fast R-CNN因为它相对而言在训练与测试上更快。Fast R-CNN的方法有一下几个优点:
1.比R-CNN和SPPnet更高的检测质量(mAP)
2.是一个多任务损失的单阶段训练
3.训练能更新所有的网络层
4.不要求磁盘空间缓存特征
Fast R-CNN是又Python跟C++编写的,能在开源的MIT许可证中找到:https://github.com/rbgirshick/fast-rcnn


2.Fast R-CNN的架构与训练

Fig.1说明了Fast R-CNN的架构。Fast R-CNN的网络把一整张图片和一组候选区域作为输入。这个网络首先用几个卷积和最大池化处理整个图片,产生一个卷积特征图。然后从特征图中,对每一个候选目标用一个感兴趣区域(RoI)池化层提取固定尺寸的特征向量。每一个特征向量送入到一系列的全连接层中,最终分为两个同级的输出层:一个产生soft-max的可能性估计,用于判断属于K个类和一个其他的背景类;另一个输出层为K个类别中的每一个类输出4个实值。每组的4个值的编码表示K类中的一类的边界框位置的细定。
2.1RoI池化层
RoI池化层使用最大池化来将任何有效RoI的特征转换为一个固定空间范围HK的小特征图。这里的H与W是层的超参数,独立于任何特殊的RoI。在本文中,一个RoI,是卷积特征图上的一个矩形框。每一个RoI是由一个四个参数的元组定义,指定了其左上角(r,c),还有高和宽(h,w)。
RoI最大池化工作通过划分h
w的RoI窗口为HW个网格子窗口,每一个尺寸大约为h/Hw/W,然后最大池化每一个每一个子窗口的到相应的输出网格。跟标准最大池化一样,池化被独立的应用到每一个特征图通道。RoI层仅仅是SPPnet中使用的空间金字塔层的特殊情况,在SPP中只有一个金字塔层。我们使用子窗口池化的计算在【11】中被给出。
Fig.1 Fast R-CNN框架,一个输入图片和多维感兴趣区域(RoI)倍输入到一个完全的卷积网络,每一个RoI倍池化为固定尺寸的特征图,然后用全连接层映射为一个特征向量。这个网络对于每一个RoI由两个输出特征向量:softmax可能性,以及每一个边界框的回归偏移。这个框架的训练是多任务损失的端到端训练。
2.2从预训练网络开始初始化
我们使用三个用ImageNet预训练的网络实验,每一个由五个最大池化,分布于5到13个卷积层中。(详细见4.1节)。当一个预训练网络初始化了Fast R-CNN后,它经历了三个转变。
首先,最后的最大池化层被RoI池化层取代,他已经配置好了,设定好了H和W能兼容第一个全连接层(比如H=W=7,适应于VGG)
第二,这个网络最后的全连接层和softmax(被训练用于1000类的ImageNet分类)被前面藐视的两个sibling层(同级层)取代(全连接层和K+1类的softmax,和特使类的边界框回归)
第三,网络修改了两个输入数据:图片的列表和这些图片的RoI列表。
2.3检测的微调
用BP训练所有网络的权重是Fast R-CNN的重要能力,首先,我们要说明为什么SPPnet不能更新空间金字塔池化层下的权重。
根本的原因是,当训练样本(RoI)来自于不同的图片时,通过SPP层的BP效率是非常低下的,这正是R-CNN与SPPnet的的训练方法。效率低下的原因源于每一个RoI有一个非常大的可接受领域,经常跨越了整个输入图片,因为前向传播必须通过整个可接受领域,所以训练输入是巨大的(经常是整张图片)。
我们利用训练时的特征共享提出了一个更加有效的训练方法。在Fast R-CNN训练中,随机梯度下降(SGD)的小批量样本时分层采样的。首先抽样N张图片,然后从每张图片中抽样R/N个RoI。关键的是来自于相同图片的RoI在前向与反向传播中共享计算与内存。减小N,就减小了小批量的计算。例如我们让N=2,R=128,采用刚提出的方案能粗略比从128张不同的图片上抽样(也就是R-CNN与SPPnet的方案)快上64倍。
这个策略涉及到的一点是他有可能导致收敛速度的变慢,因为来自于同一张图片的RoI之间是相互关联的。这个问题在实际的情况下没有出现,我们在N=2,R=128的参数下使用更少的SGD迭代就得到了比R-CNN更好的结果。
除了分层抽样意外,Fast R-CNN还使用了更加精细化的训练过程,在微调阶段联合了优化后的softmax分类器与边界框回归,而不是训练softmax分类器,SVMs和回归在三个独立的阶段。这个程序的组成部分(损失值,小批量样本采样策略,通过RoI池化的层的BP,SGD超参数)在下面进行说明。
多维任务损失(Multi-task loss)
Fast R-CNN有两个同级的输出层,第一个输出是离散的可能性分布(每一个RoI),p=(p0,……pk),包含K+1个类别。通常的p是通过有K+1个输出的全连接的softmax层计算。第二个同级层的输出是边界框回归的修正。tk=(tx,ty,tw,th) 对于由k索引的K个类别中的每一个, 我们使用[9]中给出的tk的参数化,其中tk指定相对于候选框的尺度不变转换和对数空间高度/宽度移位。
每一个RoI都使用真实类u和真实边界框回归目标v标记。我们使用多任务损失L在每个标记的RoI上,联合训练分类与边界框回归。
L(p; u; tu; v) = Lcls(p; u) + _[u _ 1]Lloc(tu; v);
在这里Lcls(p; u) = —logpu,是真实类u的log损失,第二个任务损失Lloc被定义为在检测框回归目标真值元组u,v=(vx,vy,vw,vh)和预测元组tu=(tux,tuy,tuw,tuh)上的损失。Iverson括号指示函数[u≥1]当u≥1的时候为值1,否则为0。按照惯例,背景类标记为u=0,对于背景RoI而言,没有真实边界框的概念,因此Lloc是被忽略的。对于边界框逻辑回归,我们使用loss:Lloc(tu,v)=∑i∈{x,y,w,h} smoothL1(tui−vi)
其中
是鲁棒的L1损失,相比于比在R-CNN和SPPnet中使用的L2损失对异常值更不敏感。当回归目标是无穷的时候,训练L2损失要求更加小心的微调学习率,防止梯度爆炸。公式(3)消除了这种灵敏性。公式(1)中的超参数lambda,控制了两个损失之间的平衡。我们正规化所有的真实边界框回归目标vi,使其具有零值与单位方差,所有的经验表明lambda=1
我们注意到【6】使用了相关损失来训练一个类不可知的的候选目标网络。不同于我们的方法,双网络系统的倡导者分割了定位与分类。OverFeat,R-CNN和SPPnet也训练了分类和边界框定位。然而,这些方法使用的是阶段性训练,对于Fast R-CNN来说不是最好的。
小批量采样:在微调阶段,每个SGD小批量是由N=2张图片,随机平均选取(通常实际中,我们迭代置换数据库)。我们使用小批量的尺寸R=128,从每张图片上采样64个RoI。就像在【9】中一样,我们选取了候选目标中25%的ROI(与真实边界框的交叉IOU至少是50%)。这些RoI包括前景目标类的样例标签(即u>=1)。剩余的RoI从候选框中采样,该候选框与检测框真值的最大IoU在区间[0.1,0.5)之间。有背景案例的标签用w=0标记。最低的阈值0.1出现在启发式的难样本挖掘中。在训练中图片以0.5的概率水平翻转,不使用其他的数据增强。
通过RoI池化层的BP:通过RoI池化层的反向传播,为了清楚可见,我们假定,每个小批量只有一张图片(N=1),尽管扩展到N>1是很简单的,因为前向传播对待所有图片都是独立的。
让xi称为第i个激活输入到RoI池化层,让yrj成为r层RoI的输出。RoI池化层计算yrj=xi∗(r,j),其中i∗(r,j)=argmaxi′∈R(r,j)xi。R(r,j)是输出单元yrj最大池化子窗口的的索引集合。单个xi可以被分配给几个不同的输出yrj。
RoI池化层反向传播函数通过遵循argmax switches(链式求导)来计算关于每个输入变量xixi的损失函数的偏导数。
总而言之,对于每一个小批量RoI r,和每一个池化输出单元yrj,偏导数∂L/∂yrj是累加的(如果i是argmax通过最大池化为rj选择的的话)。在BP中偏导数∂L/∂yrj总是被顶部的RoI池化层的反向传播函数计算。
SGD超参数:全连接层使用的softmax分类和边界框回归是初始化为了有零值的高斯分布,标准差分贝为0.01和0.001.。偏差被初始化为0.所有层的使用的每层学习率为一倍的权重,2倍的偏置,全局学习率为0.001。当训练VOC2007或者VOC2012的训练验证集时,我们运行了3万轮小批量迭代,然后将学习率降低到0.0001,再训练另外1万轮迭代。当我们训练更大的数据集时,我们运行SGD更多次迭代,之后会描述。使用0.9的动量,0.0005的参数衰减(在权重与偏置中)。
2.4尺度不变性
我们探究了两种方式实现目标检测的尺度不变性,1)通过brute force(暴力)学习,2)使用图像金字塔。这些策略服从【11】中的两种方法。在蛮力法中每张图片在训练与测试中都被预先定义的像素尺寸处理。网络必须从训练数据中直接学习到尺度不变的的目标检测。
多尺度方法,相反的,通过图像金字塔给网络提供了一个大概的尺度不变。在测试时间,图像金字塔被用来估计每个候选目标的大致的尺度规范化(缩放)。在多尺度训练期间,我们随机采样一个金字塔尺寸,每一次采样一张图片,服从【11】,作为数据增强的形式。由于GPU内存的限制,我们只在小的网络上实验了多尺度训练。


3.Fast R-CNN 检测

一旦Fast R-CNN网络被微调,检测则相当于运行一个前向传播(假设候选目标被提前计算),网络将图像(或图像金字塔,编码为图像列表)和待计算概率的R个候选框的列表作为输入。在测试时间,R通常时大约2000,尽管我们也会考虑他很大的情况(比如45K)。当使用图像金字塔时,每一个RoI时会被分配像素使其最接近【11】中的224平方像素。
对于每一个RoI 的r,前向传播输出一个类的后验可能性分布P与和一组边界框偏移量相关r的预测(每一个K类都得到属于他的精确的边界框预测)。我们为每一类K使用估计可能性P赋予一个置信度。我们然后用R-CNN算法设置非极大值抑制施用与独立的为每一类。
3.1为更快的检测的阶段SVD
对于整张图片的分类,花费在全连接层的计算相比于卷积层而言是少的。但是与之相反,对于检测大量的RoI而言,这个过程是巨大的而且几乎花费了一半的时间在全连接层的计算上(见fig.2)。大量的全连接层是容易通过将其用阶段的SVD压缩来加速的。
这个技术中,层的u×v权重矩阵W通过SVD被近似分解为:W≈UΣtVT。在这个因式分解中,U是一个u×t的矩阵,包括W的前t个左奇异向量,Σt是t×t对角矩阵,其包含W的前t个奇异值,并且V是v×t矩阵,包括W的前t个右奇异向量。截断SVD将参数数量从uv减少到了t(u+v),如果t是远小于min(u+v)的话,这就是重要的。为了压缩网络,对应于W的单个全连接层由两个全连接层替代,在它们之间没有非线性。这些层的第一层使用了权重矩阵ΣtVT,第二层使用了U(有最初的偏置与W相关联)。这种简单的压缩方法在RoI是巨大的时候能有很好的加速效果。


4.主要的结果

这篇论文贡献了三个主要的结果。‘
1.在VOC2007,2010,2012上的最佳结果。
2.相比于R-CNN,SPPnet更快的训练于测试。
3.微调VGG的卷积层来提高mAP。
4.1实验建立
我们的实验使用三个网上可用的ImageNet预训练模型。第一个是CaffeNet(本质上是AlexNet)来源于R-CNN。我们选择这个CaffeNet作为模型s,即为small。第二个网络是VGG_CNN_M_1024来源于【3】,跟S有相同的深度,但是更广泛。我们把这个模型称为M,即为medium。最后的网络是非常深的VGG16模型,来源于【20】.因为这个模型是非常大的,我们将其称为模型L(large)。在这一节,所有的实验都是用的是单一尺度的训练和测试(s=600;详细见5.2节)
4.2VOC2010和VOC2012的结果
在这些数据集上我们对比了Fsat R-CNN和其他来源于公共排行榜(表2,表3)的在comp4的顶尖方法。对于NUS_NIN_c2000跟BabyLearning方法,在这个时间没有相应的出版物,所以我们不能找到他们使用的卷积网络结构的准确信息。他们是网络中的网络设计的变体,所有的方法都是用相同的的预训练VGG16网络初始化。
Fast R-CNN实现了在VOC2012上的最好结果,达到了mAP65.7%(用额外的数据68.4%)。它也比其他方法快两个量级,这些方法都是基于R-CNN的慢的流水线方法。在VOC2010上SegDeepM在mAP上比Fast R-CNN更高(67.2% vs 66.1%)。SegDeepM是在VOC2012的训练验证集上训练的,加上了分割注释。它是被设计通过使用马尔可夫随机领域来推理R-CNN检测和O2P语义分割方法分割来提高R-CNN的的精确度。Fast R-CNN能交换到SegDeepM中来取代R-CNN,可能会得到更好的结果。当使用扩大的07++12训练集后(见表二的说明文字),Fast R-CNN的mAP增加到了68.8%,超越了SegDeepM。
4.3VOC 2007结果
在VOC07上,我们比较了Fast R-CNN于R-CNN和SPPnet。所有的方法都是用相同的VGG16网络进行预训练,并且使用边界框回归。VGG16SPPnet的结果是被作者在【11】中计算了的。SPPnet在训练与测试中使用五个尺度,Fast R-CNN对SPPnet的提高体现在,即使Fast R-CNN使用了单尺度的训练和测试,但是对卷积层的微调提供了在mAP上的巨大提升(从63.1%到66.9%)。R-CNN实现了mAP66.0%。作为一个次要的点,SPPnet没有使用在Pascal中被标记为“困难”的样本进行训练。移除这些样本,Fast R-CNN的mAP为68.1%。所有的别的实验都使用了“困难”样本。
4.4训练和测试时间
实际的训练与测试时间是我们的第二主要结果。表4中对比了在Fast R-CNN,R-CNN,和SPPnet,的训练时间(小时),测试率(秒/张图片),和在Pascal2007上的mAP结果。对于VGG16,没有压缩SVD时Fast R-CNN处理图片比R-CNN快146倍,SVD后快213倍。训练时间减少9倍,从84小时到9.5小时。对比SPPnet,Fast R-CNN训练VGG快2.7倍,没有SVD快7倍,有快10倍。Fast R-CNN也消除了数百G的磁盘存储,因为它不需要缓存特征。
截断SVD:阶段SVD能减少检测时间,减少30%指挥降低很小的(0.3个百分点)mAP,而且不需要额外的微调压缩后的模型。Fig.2展示了怎么使用VGG16的fc6层中的250884096矩阵的前1024个奇异值和fc7层的40964096矩阵的前256个奇异值来减少训练时间,只降低一点mAP。如果再一次微调压缩后的模型的话,能用更小的降低换来更快的加速。
Fig.2VGG16使用SVD前后时间对比,在使用SVD之前全连接层fc6和fc7花费45%的时间。
4.5那些层被微调
对于那些在SPPnet论文中考虑的不太深的网络,只微调全连接层似乎就足够得到好的准确率。我们假定这个结果不足以支撑非常深的网络。为了验证微调对于VGG16卷积层的重要性,我们使用Fast R-CNN来微调,但是冻结13个卷积层,只让全连接层来学习。这个消融模仿了单尺度的SPPnet,mAP从66.9%减少到了61.4%(表5).这个实验验证了我们的假想,通过RoI的池化层的训练对于深层网络是重要的。
Table5
这意味着所有的卷积层都应该被微调吗。简单而言,并不是。在小规模网络中S和M,我们发现卷积conv1是通用的,任务是独立的(众所周知的事实【14】).允许conv1学习或不对于mAP没有太大影响。对于VGG16,我们发现它仅仅需要更新conv3_1以及以上的(9-13层卷积)。这个发现是很实际的:1)从conv2_1更新对比从conv3_1更新减慢了1.3倍(12.5vs9.5小时);2)从conv1_1更新GPU内存不够。表现在mAP上的差异是当从conv2_1开始更新仅仅增加了0.3个百分点(表5,最后一列)。本文中所有的Fast R-CNN的结果,使用VGG16的都是微调conv3_1及以上的卷积层;所有的实验使用模型S或者M的都微调的conv2及以上的。


5.设计评估

我们进行实验来理解Fast R-CNN与 R-CNN和SPPnet的比较,也评估这些设计决策。根据最佳实践,我们在PascalVOC2007数据集上进行了这些实验。
5.1多任务的训练有帮助吗?
多任务训练是方便的,因为它避免了管理流水线式的顺序训练任务。但是他也潜在的提高了结果,因为任务之间通过共享代表(ConvNet)相互影响。多维任务训练提高了Fast R-CNN的检测精确度吗?
为了测试这个问题,我们训练只使用分类损失(公式1中的Lcls)训练一个基本网络(是的lambda=0)这些基本网络被复制到表6每组的第一列的模型S,M,L。要注意的是这些模型并没有边界框回归。接下来,第二列,我们采用用多任务损失(公式1,lambda=1)的网络,但是我们在测试阶段禁用边界框回归,这就隔离出了网络的分类准确率,允许跟基本网络进行一一对应的比较。
通过对所有三类网络的观察我们发现多任务训练,相对于单独的分类训练,提高了单纯的分类准确度。提高的范围从0.8到1.1个mAP点,展示了多任务学习一致的积极效果。
最后,我们用基线模型(只用分类损失训练),加上边界框回归层,然后用Lloc训练他们,保持别的参数不变。每一组的第三列展示了这种阶段式(逐级)的训练方案:mAP比第一列有提高,但是逐级训练还是不如多任务训练(第四列)。
5.2尺度不变:蛮力还是精细?
我们对比了两种实现目标检测尺度不变的方法:蛮力学习法(单尺度)和图像金字塔(多尺度)。在任意一种情况中我们都把s定义为长度最短的边。
所有的单尺度实验都使用s=600像素;对于有些图片来说S可能会小于600,因为我们限制了最长的边在1000像素以内,而且维持缩放比。这些值被挑选出来以便于能让VGG在微调时适应GPU内存。更小的模型没有内存限制,因此可以从更大的s值中收益;然而,为每个模型优化s并不是我们的主要任务。我们注意到Pascal图像平均时384*473个像素,因此单尺度设置通常以1.6倍上采样。因此RoI池化层的平均有效步长为10像素。
在多维尺度设置中,我们使用在【11】中明确规定的5个相同的尺度。(s= 480,576,688,864,1200)来对比SPPnet。但是我们限制了最长边在2000像素以内,避免超过。
表7展示了模型S和M分别用1个或5个尺度训练和测试。可能【11】中最让人惊奇的结果是,单尺度检测的性能几乎更多尺度检测一样好。我们的发现确认了他们的结果:深层卷积网络擅长直接学习尺度不变性。多尺度方法花费了大量的计算时间但是只提供了很小的mAP增长。在VGG16(模型L)情况下,我们受限于详细实施,只能使用单尺度。它已经达到了mAP66.9%,稍微比R-CNN的66.9%高一点,尽管R-CNN使用的是无限维尺寸(每一个候选区域扭曲为规范大小)。因为单尺度处理提供了一个在速度与精度之间的最好折衷,特别是对于那些非常深的网络而言。因此本节意外的所有的实验都使用的是单尺度训练和测试,其中s=600像素。
5.3 我们需要更多的训练数据吗?
当被提供更多的训练数据时,一个好的目标检测器,应该要被改善。Zhu等人发现DPM的mAP在只有几百到一千个数据的时候就已经饱和了。在这里我们增强了VOC07和2012的数据集,大约是三倍,图像达到了16.5K张,用于评估Fast R-CNN。增加数据集是的VOC07的mAP从66.9%增加到了70.0%(表1).当训练这个数据集时,我们用6万次小批量迭代取代了4万次。
我们在VOC2010与2012上进行了相似的实验,我们联合VOC2007的训练验证集,测试集和VOC2012的训练验证集构建了一个21.5k的图像。当训练这个数据集时,我们使用了100K轮SGD迭代,并且每40K轮迭代降低为0.1倍学习率。对于VOC2010和2012mAP的提高分别从66.1%到68.8%,以及65.7%到68.4%
5.4 SVMs优于softmax吗
Fast R-CNN在微调时期使用sotfmax分类取代了R-CNN和SPPnet使用的一对多的线性SVM分类器。为了理解这种选择的影响,我们在Fast R-CNN的难样本挖掘中采用了因果SVM训练。我们使用与R-CNN相同的训练算法和超参数。
表8展示了softmax在三种网络中略微优于SVM,提高了0.1到0.8个mAP。这种提升很小,但是它表明了一次性微调,是足够媲美之前的多阶段训练方法的。我们注意到softmax,不想一对多的SVMs,在计算RoI得分的时候引入了类之间的竞争。
5.5更多的候选总是更好的吗
基本上由两种目标检测:使用稀疏的候选目标集合(比如selective search),和使用稠密的候选目标集合(DPM)。分类稀疏候选是一种级联方式,候选机制首先拒绝大量候选样本,留下分类器对小样本进行评估。当应用到DPM检测中时,这种级联提高了检测准确度。我们找到证据证明候选分类器级联也能提高Fast R-CNN的准确率。
使用selective search的质量模型,我们扫描每张图片1k到10k个候选区域,每次重新训练和测试模型M。如果候选只纯粹扮演一个计算角色,增加每张图片的候选应该不会损害mAP。
Fig.3
我们发现随着候选数量的增加,mAP先上升后下降。这个实验表明用更多的候选区域覆盖深层分类器没有帮助,甚至可能会略微损害准确度。
没有实际的运行这个实验这个结果是很难预测的。目前最好的测量目标检测质量的是AR(平均召回率)。当每张图片使用固定数量的候选时,AR能很好的与R-CNN使用的几种候选方法的mAP相互联系,。Fig.3表明了当每张图片的候选区域变化时,AR不能与mAP很好的关联。AR必须被使用在这种情况下;由于更多的候选使得AR的提升并不一定意味着mAP的提升,幸运的时模型M的训练和测试都少于2.5个小时。Fast 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。此设置产生的mAP为52.9%(蓝色菱形),最终我们检查是否需要用难负样本挖掘的SVM来处理密集框分布,SVM得到了更差的结果:49.3%。
5.6MS COCO的初步结果
我们将Fast R-CNN(使用VGG的)应用到了MS COCO数据集上,建立了一个初步的基准线。我们训练了80K张图片训练了240K轮迭代,然后再评估服务器上评估了测试偏差设置。Pascal式的mAP是35.9%,新的COCO式AP,(平均跨越IoU门槛)是19.7%

6.结论

这篇论文提出了Fast R-CNN,相比于R-CNN,SPPnet,一个干净的快速的更新。除了报道的目前技术水平的检测结果外,我们也提供了详细的实现希望能提供新的启发。需要注意的是,稀疏目标候选似乎提高了检测质量。这个问题在过去想要证明太花费(时间),但是跟R-CNN在一起是很使用的。当然也可能存在还没发现的技术能让密集边框能表现得跟稀疏候选一样好,这样得方法如果被发现,可能能进一步加快目标检测。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值