0.论文摘要和作者信息
摘要
提出了一种基于区域的快速卷积网络(Fast R-CNN)目标检测方法。Fast R-CNN建立在以前的工作基础上,使用深度卷积网络有效地对目标候选框进行分类。与以前的工作相比,Fast R-CNN采用了几项创新来提高训练和测试速度,同时也提高了检测准确性。Fast R-CNN训练非常深的VGG16网络的速度比R-CNN快9倍,在测试时快213倍,并在PASCAL VOC 2012上实现了更高的映射。与SPPnet相比,Fast R-CNN训练VGG16的速度快3倍,测试速度快10倍,并且更准确。
作者信息
Ross Girshick
Microsoft Research
1.研究背景
最近,深度卷积神经网络[14,16]显著提高了图像分类[14]和目标检测[9,19]的准确性。与图像分类相比,目标检测是一项更具挑战性的任务,需要更复杂的方法来解决。由于这种复杂性,当前的方法(例如[9, 11, 19, 25])在多级管道中训练模型,这是缓慢且不优雅的。复杂性的出现是因为检测需要物体的精确定位,这带来了两个主要挑战。首先,必须处理大量候选对象位置(通常称为“候选框”)。第二,这些候选框仅提供粗略的定位,必须对其进行细化以实现精确的定位。这些问题的解决方案通常会损害速度、准确性或简单性。
在本文中,我们简化了最先进的基于卷积神经网络的对象检测器的训练过程[9,11]。我们提出了一种单阶段训练算法,该算法联合学习对候选框进行分类并精细化它们的空间位置。所得方法可以训练非常深的检测网络(VGG16[20]),比R-CNN[9]快9倍,比SPPnet[11]快3倍。在运行时,检测网络在0.3 s内处理图像(不包括目标候选框时间),在PASCAL VOC 2012[7]上实现最高准确度,mAP为66%(R-CNN为62%)
1.1 R-CNN和 SPPnet
基于区域的卷积网络方法(RCNN)[9]通过使用深度卷积神经网络对候选框进行分类,实现了出色的目标检测精度。然而,R-CNN有明显的缺点:
1.训练是一个多阶段的过程。R-CNN首先使用对数损失对候选框进行微调。然后,将支持向量机与卷积神经网络特征相匹配。这些支持向量机充当对象检测器,取代通过微调学习的softmax分类器。在第三训练阶段,学习边界框回归量。
2.训练在空间和时间上都很昂贵。对于SVM和边界框回归器训练,从每个图像中的每个候选框提取特征并写入磁盘。对于非常深的网络,如VGG16,对于VOC07 trainval集的5k图像,该过程需要2.5 GPU天。这些功能需要数百千兆字节的存储空间。
3.目标检测速度慢。在测试时,从每个测试图像中的每个候选框中提取特征。使用VGG16进行检测需要47秒/图像(在GPU上)。
R-CNN很慢,因为它为每个候选框执行卷积神经网络前向传递,而不共享计算。空间金字塔池网络(SPPnets)[11]被提出来通过共享计算来加速R-CNN。SPPnet方法为整个输入图像计算卷积特征图,然后使用从共享特征图中提取的特征向量对每个候选框进行分类。通过将建议内的特征图部分最大池化为固定大小的输出(例如,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.比R-CNN、SPPnet 更高的检测质量(mAP)。
2.训练是单阶段的,使用多任务损失
3.训练可以更新所有网络层
4.功能缓存不需要磁盘存储
2. Fast R-CNN的架构与训练
图1示出了Fast R-CNN架构。Fast R-CNN网络将整个图像和一组候选框作为输入。该网络首先用几个卷积(conv)和最大池化层处理整个图像,以产生卷积特征图。然后,对于每个候选框,感兴趣区域(RoI)池化层从特征图中提取固定长度的特征向量。每个特征向量被馈送到一系列全连接(fc)的层中,这些层最终分支成两个兄弟输出层:一个在K个对象类加上一个包罗万象的“背景”类上产生softmax概率估计,另一个层为K个对象类中的每一个输出四个实值。每组4个值对K个类中的一个的细化边界框位置进行编码。
图一。Fast R-CNN架构。输入图像和多个感兴趣区域(ROI)被输入到完全卷积网络中。每个RoI被汇集到一个固定大小的特征图中,然后通过全连接层(FCs)映射到一个特征向量。该网络每个RoI有两个输出向量:softmax概率和每类边界框回归偏移。该体系结构是端到端训练的,具有多任务损失。
2.1 RoI pooling layer
RoI池化层使用最大池化将任何有效感兴趣区域内的特征转换为具有H × W(例如,7 × 7)的固定空间范围的小特征图,其中H和W是独立于任何特定RoI的层超参数。在本文中,RoI是卷积特征图的矩形窗口。每个RoI由一个四元组 ( r , c , h , w ) (r, c, h, w) (r,c,h,w)定义,该四元组指定其左上角 ( r , c ) (r, c) (r,c)及其高度和宽度 ( h , w ) (h, w) (h,w)。
RoI最大池化的工作原理是将 h × w h × w h×w RoI窗口划分为大小大致为 h / H × w / W h/H × w/W h/H×w/W的子窗口的 H × W H × W H×W网格,然后将每个子窗口中的值最大池化到相应的输出网格单元中。与标准最大池化一样,池化独立应用于每个特征图通道。RoI层只是SPPnets[11]中使用的空间金字塔池化层的特例,其中只有一个金字塔层。我们使用[11]中给出的池化窗口计算。
2.2 从预先训练的网络初始化
我们用三个预先训练好的ImageNet[4]网络进行实验,每个网络都有五个最大池化层和五到十三个卷积层(网络详情见第4.1节)。当一个预先训练好的网络初始化一个Fast R-CNN网络时,它会经历三次变换。首先,最后一个最大池化层被RoI池化层替换,RoI池化层通过设置H和W来配置为与网络的第一个全连接层兼容(例如,对于VGG16,H=W=7)。第二,网络的最后一个全连接层和softmax(为1000路ImageNet分类训练)被替换为前面描述的两个兄弟层(K+1个类别上的全连接层和softmax以及特定于类别的边界框回归量)。第三,网络被修改为接受两个数据输入:图像列表和这些图像中的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大约快64倍(即,R-CNN和SPPnet策略)。对这种策略的一个担心是,它可能导致缓慢的训练收敛,因为来自同一图像的ROI是相关的。这种担心似乎不是一个实际问题,我们在N=2和R=128时使用比R-CNN更少的SGD迭代获得了良好的结果。
除了分层采样之外,Fast R-CNN还使用了一个简化的训练过程,该过程具有一个微调阶段,可以联合优化softmax分类器和边界框回归器,而不是在三个独立的阶段训练softmax分类器、支持向量机和回归器[9,11]。该过程的组成部分(损失、小批量采样策略、通过RoI池化层的反向传播和SGD超参数)描述如下。
2.3.1 多任务损失
Fast R-CNN网络有两个兄弟输出层。第一个输出离散概率分布(每个RoI), p = ( p 0 , . . . , p K ) p = (p_0, . . . , p_K ) p=(p0,...,pK),超过K+1个类别。通常,p由全连接层的K+1输出上的softmax计算。第二同级层为K个对象类中的每一个输出边界框回归偏移量 t k = ( t x k , t y k , t w k , t h k ) t^k = (t_x^k, t_y^k, t^k_w, t^k_h ) tk=(txk,tyk,twk,thk),由K索引。我们使用[9]中给出的tk的参数化,其中 t k t^k tk指定相对于候选框的尺度不变平移和对数空间高度/宽度偏移。每个训练RoI都标有地面真实类别u和地面真实边界框回归目标v。我们在每个标记的RoI上使用多任务损失L来联合训练分类和边界框回归:
其中 L c l s ( p , u ) = − l o g p u L_{cls}(p, u) = − logp_u Lcls(p,u)=−logpu是真实类别u的对数损失。
第二个任务损失, L l o c L_{loc} Lloc,是在u类的真实边界框回归目标元组上定义的, v = ( v x , v y , v w , v h ) v = (v_x, v_y, v_w, v_h) v=(vx,vy,vw,vh),以及预测元组 t u = ( t x u , t y u , t w u , t h u ) t^u = (t_x^u, t_y^u, t^u_w, t^u_h ) tu=(txu,tyu,twu,thu),也是在u类上定义的。艾弗森括号指示函数[u ≥ 1]在u≥1时计算为1,否则计算为0。按照惯例,包罗万象的背景类被标记为u=0。对于背景ROI,没有地面实况边界框的概念,因此 L l o c L_{loc} Lloc被忽略。对于边界框回归,我们使用损失
其中
是一种稳健的L1损失,比R-CNN和SPPnet中使用的L2损失对异常值不太敏感。当回归目标无界时,具有L2损失的训练可能需要仔细调整学习速率,以防止梯度爆炸。等式3消除了这种敏感性。
方程1中的超参数λ。控制两个任务损失之间的平衡。我们将地面真实回归目标 v i v_i vi归一化为具有零均值和单位方差。所有实验都使用λ=1。我们注意到[6]使用相关损失来训练分类不可知的对象提议网络。与我们的方法不同,[6]提倡分离本地化和分类的双网络系统。OverFeat[19]、R-CNN[9]和SPPnet[11]也训练分类器和边界框定位器,但是这些方法使用分阶段训练,我们表明这对于Fast R-CNN是次优的(第5.1节)。
2.3.2 小批量采样
在微调期间,每个SGD小批量由随机均匀选择的N=2幅图像构建(作为通常的做法,我们实际上迭代数据集的排列)。我们使用大小为R=128的小批量,从每张图像中采样64个ROI。如[9]中所示,我们从具有与至少0.5的真实边界框重叠的并交(IoU)的候选框中提取25%的ROI。这些ROI包括用前景对象类(即u≥1)标记的示例。剩余的ROI是从在[11]之后的区间 [ 0.1 , 0.5 ) [0.1, 0.5 ) [0.1,0.5)内具有最大IoU和真实的候选框中采样的。这些是背景示例,用u=0标记。较低的阈值0.1似乎是hard example mining的启发式方法[8]。在训练过程中,图像以0.5的概率水平翻转。不使用其他数据扩充。
2.3.3 通过RoI池化层的反向传播
反向传播通过RoI池化层求梯度。为了清楚起见,我们假设每个小批量处理(N=1)只有一个图像,尽管扩展到N>1是简单的,因为向前传递独立地处理所有图像。设 x i ∈ R x_i ∈ R xi∈R是RoI池化层的第i个激活输入,设 y r j y_{rj} yrj是该层来自第R个RoI的第j个输出。RoI池化层计算 y r j = x i ∗ ( r , j ) y_{rj} = x_{i∗(r,j)} yrj=xi∗(r,j),其中 i ∗ ( r , j ) = a r g m a x i ′ ∈ R ( r , j ) x i ′ i∗(r, j) = argmax_{i′∈R(r,j) x_i′} i∗(r,j)=argmaxi′∈R(r,j)xi′。 R ( r , j ) R(r, j) R(r,j)是输出单元 y r j y_{rj} yrj 最大池化的子窗口中的一组输入索引。单个xi可以被分配给几个不同的输出 y r j y_{rj} yrj。RoI池化层的反向函数通过遵循argmax开关来计算损失函数相对于每个输入变量xi的偏导数:
换句话说,对于每个小批量RoI r和每个汇集输出单位 y r j y_{rj} yrj,如果i是最大池化为 y r j y_{rj} yrj选择的argmax,则偏导数 ∂ L / ∂ y r j ∂L/∂y_{rj} ∂L/∂yrj被累积。在反向传播中,偏导数 ∂ L / ∂ y r j ∂L/∂y_{rj} ∂L/∂yrj已经由RoI池化层之上的层的反向函数计算。
2.3.4 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)通过“暴力”学习和(2)通过使用图像金字塔。这些策略遵循[11]中的两种方法。在暴力方法中,在训练和测试期间,每个图像都以预定义的像素大小进行处理。网络必须直接从训练数据中学习尺度不变的目标检测。相比之下,多尺度方法通过图像金字塔为网络提供近似的尺度不变性。在测试时,图像金字塔用于对每个对象方案进行近似比例归一化。在多尺度训练期间,按照[11],我们在每次采样图像时随机采样金字塔尺度,作为数据扩充的一种形式。由于GPU内存限制,我们仅针对较小的网络进行多尺度训练实验。
3.Fast RCNN检测
一旦Fast R-CNN网络被微调,检测就相当于运行前向传递(假设候选框是预先计算的)。该网络将图像(或图像金字塔,编码为图像列表)和R候选框列表作为输入进行评分。在测试时,R通常在2000左右,尽管我们会考虑它更大的情况(≈45k)。当使用图像金字塔时,每个RoI被分配到比例,使得缩放的RoI在区域[11]中最接近 22 4 2 224^2 2242像素。对于每个测试RoI r,前向传递输出类别后验概率分布p和一组相对于r的预测边界框偏移(K个类别中的每一个都获得其自己的精确边界框预测)。我们使用估计的概率 P r ( c l a s s = k ∣ r ) ∆ = p k Pr(class = k | r) ∆ = p_k Pr(class=k∣r)∆=pk为每个对象类别k的r分配检测置信度。然后,我们使用R-CNN[9]中的算法和设置对每个类独立执行非最大抑制。
3.1 用于快速检测的截断奇异值分解
对于整个图像分类,与conv层相比,计算全连接层所花费的时间很小。相反,对于检测,要处理的ROI的数量很大,并且将近一半的前向传递时间花费在计算全连接的层上(参见图2)。通过用截断的SVD压缩大型全连接层,可以很容易地加速它们[5,23]。在该技术中,由u × v权重矩阵W参数化的层被近似分解为
使用奇异值分解。在这个因式分解中,U是包含W的前t个左奇异向量的U × t矩阵, Σ t Σ_t Σt是包含W的前t个奇异值的t × t对角矩阵,V是包含W的前t个右奇异向量的 v × t v × t v×t矩阵。截断SVD将参数计数从uv减少到t(u+v),如果t远小于min(u,v),这可能是显著的。为了压缩网络,对应于W的单个全连接层被两个全连接层代替,它们之间没有非线性。这些层中的第一层使用权重矩阵 Σ t V T Σ_tV^T ΣtVT(并且没有偏差),第二层使用U(具有与W相关联的原始偏差)。当感兴趣区域数量较大时,这种简单的压缩方法具有很好的加速性能。
4.主要结论
三个主要结果支持了本文的贡献:
1.VOC07、2010和2012上的最先进mAP。
2.与R-CNN、SPPnet 相比,快速训练和测试。
3.在VGG16中微调conv层改进了mAP
4.1 实验设置
我们的实验使用了三个在线预训练的ImageNet模型。第一个是R-CNN[9]的CaffeNet(本质上是AlexNet[14])。我们可以选择这个S型的CaffeNet,代表“小”。第二个网络是来自[3]的VGG CNN M 1024,它的深度与S相同,但更宽。我们称这个网络模型为M,代表“中间”。最后一个网络是来自[20]的非常深的VGG16模型。由于这个模型是最大的,我们称之为模型L。在本节中,所有实验都使用单尺度训练和测试(s=600详见第5.2节)。
4.2 VOC 2010 and 2012结果
在这些数据集上,我们将Fast R-CNN(简称FRCN)与公共排行榜上comp4(外部数据)轨道上的顶级方法进行了比较(表2、表3)。对于NUS NIN c2000和BabyLearning方法,目前没有相关出版物,我们也无法找到所用ConvNet架构的确切信息;它们是网络中网络设计的变体[17]。所有其他方法都是从同一个预训练的VGG16网络初始化的。Fast R-CNN在VOC12上以65.7%的mAP(额外数据为68.4%)获得最高结果。它也比其他方法快两个数量级,这些方法都是基于“慢”的R-CNN流水线。在VOC10上,SegDeepM[25]实现了比Fast R-CNN更高的mAP(67.2%对66.1%)。SegDeepM在VOC12 trainval加分段注释上进行训练;它旨在通过使用马尔可夫随机场对来自O2P[1]语义分割方法的R-CNN检测和分割进行推理来提高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进行了比较。所有方法都从相同的预训练VGG16网络开始,并使用边界框回归。VGG16 SPPnet结果由[11]的作者计算。SPPnet在训练和测试中使用五种量表。Fast R-CNN相对于SPPnet的改进表明,即使Fast R-CNN使用单尺度训练和测试,微调conv层也提供了mAP的较大改进(从63.1%到66.9%)。R-CNN实现了66.0%的mAP。作为一个小问题,SPPnet是在没有PASCAL中标记为“困难”的示例的情况下训练的。删除这些例子将Fast R-CNN映射提高到68.1%。所有其他实验都使用“困难”的例子。
4.4 训练与测试时间
快速的训练和测试时间是我们的第二个主要结果。表4比较了Fast RCNN、R-CNN和SPPnet在VOC07上的训练时间(小时)、测试速率(每幅图像秒数)和mAP。对于VGG16,Fast RCNN处理图像的速度比没有截断SVD的R-CNN快146倍,使用截断SVD的R-CNN快213倍。训练时间减少9倍,从84小时减少到9.5小时。与SPPnet相比,Fast RCNN训练VGG16的速度快了2.7倍(9.5小时对25.5小时),在没有截断SVD的情况下测试速度快了7倍,在有截断SVD的情况下测试速度快了10倍。Fast RCNN还消除了
数百千兆字节的磁盘存储,因为它不缓存功能。
截断SVD可以将检测时间减少30%以上,mAP仅下降很小(0.3个百分点),并且在模型压缩后不需要执行额外的微调。图2示出了在VGG16的fc6层中使用来自25088 × 4096矩阵的前1024个奇异值和来自4096 × 4096 fc7层的前256个奇异值如何在mAP中损失很小的情况下减少运行时间。如果在压缩后再次微调,mAP下降更小的情况下,进一步加速是可能的。
图二。截断SVD前后VGG16的定时。在奇异值分解之前,完全连接的层fc6和fc7占用45%的时间。
4.5 哪一层进行微调
对于SPPnet论文[11]中考虑的深度较小的网络,仅微调完全连接的层似乎就足以获得良好的精度。我们假设这个结果不适用于非常深的网络。为了验证微调conv层对VGG16的重要性,我们使用Fast R-CNN进行微调,但冻结十三个conv层,以便只有全连接层学习。这种消融模拟单尺度SPPnet训练,并将mAP从66.9%降至61.4%(表5)。这个实验验证了我们的假设:通过RoI池化层的训练对于非常深的网络是重要的。
这是否意味着所有的conv层都应该微调?简而言之,没有。在较小的网络(S和M)中,我们发现conv1是通用的和任务独立的(众所周知的事实[14])。允许conv1学习,或者不允许,对mAP没有有意义的影响。对于VGG16,我们发现只需要更新conv3_1及以上的层(13个conv层中的9个)。这个观察是实用的:(1)与从conv3_1学习相比,从conv2_1更新使训练慢1.3 ×(12.5对9.5小时);以及(2)从conv1_1更新会使GPU内存溢出。从conv2_1向上学习时,mAP的差异仅为+0.3分(表5,最后一列)。本文中使用VGG16微调层conv3_1及以上的所有Fast R-CNN结果;模型S和M微调层的所有实验conv2及以上。
5.模型评估
我们进行了实验,以了解RCNN与R-CNN和SPPnet相比有多快,并评估设计决策。遵循最佳实践,我们在PASCAL VOC07数据集上进行了这些实验。
5.1 多任务训练有帮助吗
多任务训练很方便,因为它避免了管理顺序训练任务的管道。但它也有可能改善结果,因为任务通过共享表示(ConvNet)相互影响[2]。多任务训练能提高Fast R-CNN中的目标检测精度吗?为了测试这个问题,我们训练仅使用等式1中分类损失 L c l s L_{cls} Lcls的基线网络。(即,设置λ=0)。这些基线打印在表6中每组的第一列中的模型S、M和L。请注意,这些模型没有边界框回归量。接下来(每组第二列),我们采用多任务损失训练的网络(等式1,λ=1),但我们在测试时禁用边界框回归。这隔离了网络的分类准确性,并允许与基线网络进行比较。
在所有三个网络中,我们观察到,相对于单独的分类训练,多任务训练提高了纯分类的准确性。改善范围从+0.8到+1.1mAP,显示了多任务学习的一致积极效果。最后,我们采用基线模型(仅用分类损失训练),添加边界框回归层,并用 L l o c L_{loc} Lloc训练它们,同时保持所有其他网络参数冻结。每组的第三列显示了这种分阶段训练方案的结果:mAP比第一列有所改善,但分阶段训练的表现不如多任务训练(每组第四列)。
5.2 尺度不变性:暴力还是策略?
我们比较了实现尺度不变目标检测的两种策略:强力学习(单尺度)和图像金字塔(多尺度)。在这两种情况下,我们将图像的比例s定义为其最短边的长度。所有单尺度实验使用s=600像素;对于某些图像,s可能小于600,因为我们将最长的图像边限制在1000像素,并保持图像的纵横比。选择这些值是为了让VGG16在微调期间适合GPU内存。较小的模型不受内存限制,可以受益于较大的s值;然而,为每个模型优化s并不是我们主要关心的问题。我们注意到PASCAL图像平均为384 × 473像素,因此单比例设置通常将图像上采样1.6倍。因此,RoI池化层的平均有效步幅约为10像素。
在多尺度设置中,我们使用[11](s∈{480,576,688,864,1200})中指定的相同的五个尺度,以便于与SPPnet进行比较。然而,我们将最长的边限制在2000像素,以避免超过GPU内存。表7显示了用一个或五个量表训练和测试的模型S和M。也许[11]中最令人惊讶的结果是单尺度检测的性能几乎和多尺度检测一样好。我们的发现与证实了他们的结果:深度ConvNets擅长直接学习尺度不变性。多尺度方法仅提供了mAP的少量增加,但计算时间代价很大(表7)。在VGG16(型号L)的情况下,我们仅限于使用单一规模的实施细节。然而,它实现了66.9%的mAP,略高于R-CNN报道的66.0%[10],即使R-CNN使用“无限”比例,即每个建议都被扭曲到一个规范大小。由于单尺度处理提供了速度和准确性之间的最佳折衷,特别是对于非常深的模型,因此本小节之外的所有实验都使用s=600像素的单尺度训练和测试。
5.3 我们需要更多训练数据吗
当提供更多的训练数据时,一个好的对象检测器应该会改进。朱等[24]发现DPM[8]映射仅在几百到几千个训练示例后就饱和了。在这里,我们用VOC12 trainval集扩充VOC07 trainval集,大约将图像数量增加两倍,达到16.5 K,以评估Fast R-CNN。扩大训练集将VOC07测试的mAP从66.9%提高到70.0%(表1)。在这个数据集上训练时,我们使用60k小批量迭代,而不是40k。我们对VOC10和2012进行了类似的实验,为此我们从VOC07 trainval、test和VOC12 trainval的联合中构建了21.5 K图像的数据集。在这个数据集上训练时,我们使用100k SGD迭代,每40k迭代将学习率降低0.1 ×(而不是每30k)。对于VOC10和2012,mAP分别从66.1%提高到68.8%和从65.7%提高到68.4%。
5.4 支持向量机优于softmax吗
Fast R-CNN使用在微调期间学习的softmax分类器代替训练one-vs-rest线性支持向量机,如R-CNN和SPPnet所做的那样。为了理解这一选择的影响,我们在Fast R-CNN中实施了带有硬负挖掘的SVM训练。我们使用与R-CNN相同的训练算法和超参数。
表8显示,在所有三个网络中,softmax略微优于SVM,高出+0.1到+0.8个mAP。这种影响很小,但它表明,与以前的多阶段训练方法相比,“一次性”微调就足够了。我们注意到,与one-vs-rest支持向量机不同,softmax在获得RoI时引入了类之间的竞争。
5.5 更多的候选框就更好吗
(大致)有两种类型的对象检测器:使用稀疏候选框集的对象检测器(例如,选择性搜索[21])和使用密集对象集的对象检测器(例如,DPM[8])。对稀疏提议进行分类是一种级联[22],其中提议机制首先拒绝大量候选,留给分类器一个小集合来评估。当应用于DPM检测时,这种级联提高了检测精度[21]。我们发现有证据表明,建议的分类器级联也提高了Fast R-CNN的准确性。使用选择性搜索的质量模式,我们在每次重新训练和重新测试模型M时,从每个图像的1k到10k建议扫描。如果建议服务于纯粹的计算角色,增加每个图像的建议数量应该不会损害mAP。
我们发现,随着候选框数量的增加,mAP上升,然后略有下降(图3,蓝色实线)。这个实验表明,用更多的候选框淹没深度分类器对准确性没有帮助,甚至有轻微的伤害。
图三。各种方案的VOC07测试图和AR。
如果不实际进行实验,很难预测这个结果。衡量对象提案质量的最新技术是平均召回率(AR)[12]。当每个图像使用固定数量的建议时,对于使用R-CNN的几种建议方法,AR与mAP有很好的相关性。图3示出AR(红色实线)与mAP没有很好地相关,因为每个图像的建议的数量是变化的。AR一定要小心使用;更多提案导致的更高AR并不意味着mAP会增加。幸运的是,使用model M进行培训和测试不到2.5小时。因此,Fast R-CNN能够高效、直接地评估候选框图,这比代理度量更可取。我们还研究了当使用密集生成的框(超过比例、位置和纵横比)时的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%的mAP(蓝色菱形)。最后,我们检查是否需要具有硬负挖掘的支持向量机来处理密集盒分布。支持向量机做得更差:49.3%(蓝圈)。
6.实验&实验结果
本文提出了Fast R-CNN,这是对R-CNN和SPPnet的一个干净而快速的更新。除了报告最先进的检测结果,我们还展示了详细的实验,希望能提供新的见解。特别值得注意的是,稀疏候选框似乎提高了探测器的质量。这个问题在过去太昂贵了(在时间上),无法探究,但随着Fast R-CNN的出现,这个问题变得切实可行。当然,可能存在尚未发现的技术,允许密集的候选框和稀疏的候选框一样好地执行。这种方法,如果开发出来,可能有助于进一步加速物体检测。