object_detection API论文Speed/accuracy trade-offs for...的详细中文翻译

最近又反复读了几篇物体检测方面的论文,算作对即将“裸考”的CET-6的补偿。。。
好多内容其实没必要强行翻译,这篇译文只做增强理解用,最最准确的请参看原文:https://arxiv.org/abs/1611.10012
注:
1).为了使译文读起来更“流畅”和“正确”:我去掉了部分引用;文章中出现的论文名、人名以及一些术语没有翻译。
2).其实从3.1节开始才是咱们关心的内容

【】中的内容是我添加的注释

摘要

本文的目标是:作为选择一个detection architecture的指南,为给定的应用和平台实现速度、memory和精度之间的平衡。为此,我们研究了各种用速度来换memory和准确率的modern convolutional物体检测系统。近年来已经提出了许多成功的系统,但是由于不同的特征提取器(例如,VGG,残差网络)、不同的图像分辨率以及不同的硬件和软件平台,我们难以把它们拿来一一比较。我们提出了FASTER R-CNN ,R-FCN 和SSD 系统的统一实现,我们将其称为“META架构”,并且,对于每一个架构,我们都追踪由于使用可选的特征提取器以及其他像图像尺寸这样的critical 参数带来的速度和精确度(之间的变化)【注:简单说就是对各个指标进行了监控】。On one extreme end of this spectrum where speed and memory are critical【这个extreme end of不太好搞啊】,我们呈现了一个实时的,可以部署在移动设备上的检测器。在精确度更重要的一面,我们呈现了一个在COCO检测任务上表现为业界最顶尖性能的检测器。

1.简介

近年来,由于使用卷积神经网络(CNNs),物体检测方面取得了很多进展。基于这些网络的现代物体检测器,如FASTER R-CNN [31],R-FCN [6],Multibox [40],SSD [26]和YOLO [29],现在已经足够好了,(以至于可以)部署在消费者产品中(例如,Google照片,Pinterest视觉搜索),有些(检测器的检测结果)已经显示足够快,可以在移动设备上运行。

然而,业务人员很难确定哪种架构对于它们的应用来说是最合适的。(接下来一小段就不翻译了,没什么意思。)

不幸的是,只有一小部分论文(如RFCN [6],SSD [26] YOLO [29])详细地讨论了运行时间。此外,这些论文通常只说明他们实现了一定的帧速率,但是并没有给出效率和精度之间的权衡Trade-Off,这取决于许多其他因素,例如使用哪个特征提取器,输入图像大小,等等。

在本文中,我们以一种详尽且公平的方式探索现代检测系统的效率和精确度之间的权衡。虽然(业界)已经对图像分类进行了(一定的)研究(例如,[3]),但是检测模型往往要复杂得多,我们主要研究singlemodel/single-pass 检测器,也就是说我们的模型不使用【文章后文也提到了这个】合成、multi-crop【可理解为多处裁剪】方法或其他例如水平翻转等等的“技巧”,换句话说,我们只通过一个网络传递一个单一的图像,为了简单起见(因为这个技术的用户更重要),我们只关注测试耗时长短,而不关注这些模型训时间的长短。

尽管比较每个最近提出的检测系统是不切实际的,但幸运的是,许多现有的领先的技术方法已经汇聚在一个共同的方法论上(至少在高级别是这样的),这使得我们能够用统一的方式执行、和比较大量的(物体)检测系统,特别是我们已经实现了它
在高层由一个单一的卷积网络组成的FASTER R-CNN,R-FCN和SSD meta-architectures,用mixed regression和目标分类进行训练,并使用滑动窗口预测。总而言之,我们的主要贡献如下:
1.略(没用)
2.我们使用TensorFlow灵活的、统一的实现了三种元架构(FASTER R-CNN,R-FCN和SSD),我们使用它进行广泛的实验,追踪不同检测系统、不同的体系结构、提取器、图像分辨率等的准确度和速度之间的权衡曲线【就是说准确度的提升或下降与速度之间的关系】。
3.我们的研究结果表明,与SSD和RFCN相比,对FASTER R-CNN使用更少的proposals,可以显着提高速度而不会有大的精度损失。我们发现,相较于Faster R-CNN 和R-FCN,SDDs对特征提取器(提取的)质量更不敏感(就是说SDDs更不容易受到特征的质量的影响)。我们在精度与速度的相关曲线【突然发觉翻译为“相关”要更好一点,不就是在一张图里绘制了两条线然后权衡出更好的吗】上找出最佳点,只有在牺牲速度的情况下才能提高精度(在这里介绍的一系列的检测器中)。
4.我们所报告的一些meta-architectures和特征提取器组合在文献中从未出现过。我们讨论了我们如何使用这些新颖的组合来训练2016年COCO物体检测竞赛的获奖作品【这里指那些架构】。

2.Meta-architectures

近年来,神经网络已成为高质量的物体检测的主要手段。在本节中,我们将查探这些文献的一些亮点。 Girshick等人的R-CNN论文[11]是卷积网络检测的第一个现代化身。受到近期在图像分类方面取得成功的启发[20],R-CNN采用直接的方法——cropping externally computed box proposals out of an input image,并在这些裁剪出来的成果(crops)【理解为区域感觉好一些】上运行神经网络分类器。这种方法的代价可能会很高,但是许多裁剪出来的区域又是必要的,导致重复计算裁剪出来的区域【注:很明显,因为这些区域会有重叠】。 Fast R-CNN [10]通过将整个图像一次通过特征提取器【注:在所选的神经网络的某个feature map提取特征】从中间层裁剪,从而减轻了这个问题,使裁剪出来的区域共担特征提取的计算负载。

而R-CNN和Fast R-CNN都依靠外部生成proposal,最近的研究表明,使用神经网络也可以生成box proposal[41,40,8,31]。In these works,it is typical to have a “anchors”在图像上的不同空间位置、不同尺度和长宽比,有时称为“priors”或“default boxs”)。然后对模型进行训练,对每个anchor进行两方面预测:(1)对每个anchor做类别预测;(2)a continuous prediction of an offset by which the anchor needs to be shifted to fit the groundtruth bounding box.(大致是说bbox,连续预测这个anchor,并移动它使得它与真实的box越来越近)

我们现在描述的是遵循这种anchors方法的论文,然后最小化综合分类和回归损失。对于每个锚点(之后的anchor翻译为锚点)a,我们首先找到最匹配的groundtruth框b(如果存在的话)。如果可以找到 这样的匹配,我们称之为“positive anchor”,并将其分配给【后面这一小段还是看原文吧】:(1).一个类标签:ya∈{1… K};(2)一个与锚点a相对应的b框的编码向量【FASTER RCNN论文中提到,reg层有4k个输出编码】a vector encoding of box b with respect to anchor a (called the box encoding φ(ba; a)).如果无法匹配,我们称之为“负锚”,我们将类标签设置为ya = 0。对于锚a,我们预测框编码为f loc(I; a,θ)并且相应的类为fcls(I; a ,θ),其中I是那张图像,θ是模型参数,a的损失计算为基于位置的损失和分类损失的加权和:
L(a, I; θ) = α · 1[a is positive] · loc(φ(ba; a) − floc(I; a, θ)) + β ·cls(ya, fcls(I; a, θ)), (1)
——其中α,β是衡量定位和分类损失的权重。为了训练模型,等式1在锚点上被平均并且相对于参数θ被最小化。

锚点的选择对精度和计算都有比较大的影响。在(第一个)Multibox论文[8]中,这些锚点(作者称之为“先验盒子”)是通过对数据集中的groundtruth框进行聚类而生成的。在最近的作品中,则通过在图像上定期以不同比例和长宽比平铺一组盒子来生成锚点。具有规则的网格的锚点的优点在于:可以在图像上使用共享参数(即,卷积网络)写为tiled predictors来对这些方框进行预测,这使人想起传统的滑动窗口方法,例如 [44]。第一批采用这种新方法的论文有FASTER R-CNN 论文和(第二个)Multibox论文(称这些tiled anchors为““convolutional priors”)。

2.1. Meta-architectures

在我们的论文中,我们主要关注以下最近的三个(meta)architectures:SSD(Single Shot Multibox Detector ),FASTER R-CNN 和R-FCN(Region-based Full Convolutional Networks )。虽然这些论文最初是由特定的特征提取器(例如VGG,Resnet等)提供的,但我们现在回顾这三种方法,将元架构的选择从特征提取器中分离出来【意思是这篇文章中不再非得将VGG或者Rsnet这些网络与SSD、FASTER R-CNN、R-FCN固定搭配起来,换句话说,这里进行了更多的搭配】,从概念上说,任何特征提取器都可以用于SSD ,FASTER R-CNN或R-FCN。

2.1.1 Single Shot Detector (SSD).

(其实就是对SSD的一段简述,了解SSD的话可以略过)
虽然SSD论文是最近才发表的,但我们使用术语SSD来广泛地指代那些不需要第二阶段的per-proposal分类操作而使用单个前馈卷积网络来直接预测类别和锚点偏移的系统(图1中的a)。根据这个定义,SSD体系结构已经在[26]之前很久就被探索了。的Multibox和Faster R-CNN中的RON都使用这种方法来预测与类别不相关的box proposals。[33,29,30,9]使用类似SSD的架构来预测最终的(K个标签中的一个)类别标签。 Poirson等人将这个想法扩展到预测boxs,classes和pose。

表1:使用第二节中描述的元架构中的一个卷积检测模型。Boxes are encoded with respect to a matching anchor a via a function φ (等式 1),其中[x 0,y 0,x 1,y 1]是一个box的最小坐标和最大坐标,xc,yc是它的中心坐标,w,h是它的宽度和高度。在某些情况下,也可以使用wa,ha,匹配锚点的宽度和高度。注意:
1).我们包含[26]中早期的arXiv版本(就是说包含了一个论文前后不同的版本),它的配置与ECCV 2016发布的版本不同;
2).[29]使用了一个受GoogLeNet [39]启发的快速特征提取器,这是我们没有比较的;
3).如果YOLO的中心位于锚点(我们称之为BoxCenter)内,YOLO会将一个groundtruth box匹配到一个锚点。

            图1:本文中比较的几个架构

2.1.2 Faster R-CNN.
(同理,对Faster R-CNN的一段简述,了解Faster R-CNN可以略过)
在FASTER R-CNN的设置中,有两个阶段都会去检测(图1b)。第一阶段,被称为RPN,图像由特征提取器(比如VGG-16)处理,并且选定某些中间层(比如“conv5”)的特征用于预测类别不相关的box proposals【仅仅使用网络的一部分】。第一阶段采用公式1的形式来计算损失函数——使用平铺在空间中的不同长宽比的锚点网格来计算。在第二阶段中,一些(通常为300)box proposals,这些box proposals都是从同一个feature map中裁剪(crop)出来的特征,这些特征在之后会被fed到剩下的特征提取器【注:上段内容比较长,建议读下原文,感觉自己还是理解对了的】,随后将其馈送到特征提取器的其余部分( 比如“fc6”followed by“fc7”)【为什么fc6 followed fc7,原文说反了吗?】,以便对每个proposal的类和类专有的box(class-specific box)做精细的预测。
第二阶段分类器的损失函数也采用等式1的形式,使用由RPN产生的proposals作为锚。值得注意的是,不会直接从图像裁剪出proposals,也不通过特征提取器重新裁剪出proposals,(因为)这将是重复的计算。但是有一部分计算必须每个区域运行一次,因此运行时间取决于RPN产出的regions数量。
Faster R-CNN在2015年出来后产生了特别大的影响。并导致了一些后续工作[2,35,34,46,13,5,19,45,24,47](包括SSD和R-FCN)。值得注意的是,截至2016年11月,COCO目标检测服务器提交的报告中有一半以某种方式基于FASTER R-CNN系统。
2.2. R-FCN
(同理,是对R-FCN的一段简述)
虽然FASTER R-CNN比Fast R-CNN快一个数量级,但是特定region组件必须在每个图像应用【注:可理解为“计算”】几百次这一事实导致Dai等人[6]提出了R-CNN方法,可以理解为FASTER R-FCN((Region-based Fully Convolutional Networks——基于区域的全卷积网络),proposals不会直接在预测出的region proposal的layer中裁剪出来,而是从the last layer of features prior to prediction裁剪出(图1c)。这种将裁剪放在到最后一层的方法最大限度地减少了每个区域的计算量,而这个区域计算又是必要的。Dai等人认为对象检测任务需要本地化表示,以遵守translation variance,因此提出了一种位置敏感的裁剪机制,用来代替[10,31]中使用的更标准的ROI池操作和[5]中的可区出裁剪区域的机制。他们表示R-FCN模型(使用Resnet 101)在更快的运行时间内可以达到与FASTER R-CNN相当的精度。最近,R-FCN模型也被用来在最近的TAFCN模型[22]中进行实例分割,从而赢得了2016年COCO实例分割的挑战。
3.Experimental setup
近年来,像Imagenet [32]和COCO [25]等标准数据集的引入使得检测方法在准确性方面可以更简单的进行比较。然而,就速度和记忆而言,各种方法还是难以比较的。之前的作品依赖于不同的深度学习框架(例如DistBelief [7],Caffe [18],Torch [4])和不同的硬件。一些论文对准确性进行了优化;还有一些则优化了速度。最后,在有的情况下,使用稍微有些不同的训练集(例如,COCO训练集与组合训练+验证集)来报告指标。
为了更好地进行apples-to-apples【注:这是个常见的俗语,指对两个东西的各个方面作一一对应的比较】的比较,我们在Tensorflow [1]中创建了一个检测平台,并在此平台上为SSD,R-CNN和R-FCN元架构重新创建了训练管道(training pipelines)【使用Object_detection进行训练时,需要定义pipiline.config文件】。拥有一个统一的框架使我们能够轻松地交换【注:就是说换各种各样的搭配】特征提取器、体系结构、损失函数,并使它在Tensorflow中可以方便地移植到不同的平台上进行部署。接下来我们讨论在我们的平台上配置模,丢失函数和输入的方法 - 可以用来交换速度和准确性的旋钮。
3.1 架构配置
3.1.1特征提取器。
在所有的元结构中,我们首先在输入图像中使用convolutional特征提取器【注:理解为卷积核就行】来取得高级特征。特征提取器的选择是至关重要的,因为layers的类型和参数数量直接影响检测器的记忆能力、速度和性能。在本文中,我们选择了六个有代表性的特征提取器进行比较,除了MobileNet [14]【注:这个是Google用于移动端的网络】之外,所有的都有Tensorflow的开源实现,(这些开源实现)对计算机视觉社区具有相当大的影响。
详细地说,我们使用了以下六个特征提取器。我们使用VGG-16 [37]和Resnet-101 [13],者两者都在ILSVRC和COCO 2015(分类,检测和分割)等竞赛上获得过好成绩。我们还使用了在ILSVRC 2014的分类和检测挑战上表现得最好的Inception v2 [16],它的升级版Inception v3也很厉害。这两个Inception网络都采用了“Inception units”【注:这里说的是Inception网络中的Inception model,它是一个network in network in network的结构。这也是Inception过人之处】,这样就可以在不增加计算负担的情况下增加网络的深度和宽度。最近,Szegedy等人[38]提出了Inception Resnet(v2),它将residual connections带来的的优化效益和Inception units的计算效率相结合。最后,我们将比较新的MobileNet网络[14],该网络已经被证明在Imagenet上达到了VGG-16级的精度,而且只有VGG-16三十分之一的计算成本和模型大小。 MobileNet专为在各种移动视觉应用中进行高效推理而设计。它的building blocks是在深度上可分的卷积:将一个标准卷积分解为depthwise卷积和1×1的卷积,有效地降低了计算成本和参数的数量。
对于每个特征提取器,为了在元架构中使用它们。。。【注:这一段也没有什么有用信息,就不强行翻译了】。
Liu等人[26]表明,在SSD设置中,在多个尺度上使用多个特征映射进行位置和confidence预测对于获得良好的性能至关重要。对于VGG特征提取器,他们使用conv4_3,fc7(转换为卷积层)以及一系列添加的层。在我们的实验中,我们采用他们的方法,总是选择最上面卷积出来的feature map和较低的层中的高分辨率的feature map,然后添加一系列分辨率衰减2倍的卷积层,这些增加的卷积层会用于预测。然而与[26]不同的是,我们在所有附加层中使用批量标准化。
为了便于比较,在表1中列出了以前的工作中使用的特征提取器。在这项工作中,我们评估元架构和特征提取器的所有组合,其中大部分(组合)是新颖的。值得注意的是,Inception网络从来没有用于FASTER R-CNN框架,直到最近还没有开源[36]【注:现在已经开源了(2017/11/8)】。 Inception Resnet(v2)和MobileNet至今尚未出现在检测文献中【github上也已经有了,只是作者们写这篇文章时没有开源】。
3.1.2proposal的数量。
对于FASTER R-CNN和R-FCN,我们也可以在测试时选择发送给分类器的proposal的数量。通常情况下,这两个数都设置为300,降低计算量的一个简单方法是发送较少的boxes,这样可以会降低召回的风险。在我们的实验中,我们将这个proposal的数量控制在在10到300之间来探索trade-off【注:指探索速度与准确度等之间的变化】。

3.1.3 Resnet和Inception Resnet的输出步长设置。
我们对Resnet-101的实现是在原始的实现上稍微了些修改,输出步长由32改为了将会更有效的16;如在[6]中那样,我们通过将conv5_1层的步长由修改为1来实现这一点(通过在之后的层中使用atrous卷积来补偿这里缩小的步长)。对于FASTER R-CNN和R-FCN,除了16的默认步长之外,我们还在步长修改为1的conv4_1块中尝试了使用步长为8的Resnet-101(这个尝试代价更高)。同样,我们也试验了Inception Resnet网络的16步长和8步长版本。我们发现使用步长为8而不是16可以将mAP提高5%,但运行时间增加了63%。
3.2 损失函数配置
除了选择特征提取器之外,在可能影响训练稳定性和最终性能的损失函数(等式1)的配置方面有多种选择。这里我们描述我们在实验中所选择的,表1再次对比了其他作品中设置的损失函数。
3.2.1匹配
确定每个锚点的类别和回归目标需要将anchor匹配到groundtruth实例。常见的方法包括贪婪的二分配匹配(比如,基于Jaccard overlap)或不需要双方的配合的多对一的匹配策略,但是如果锚与groundtruth之间的Jaccard重叠太低,则匹配被忽略。我们将这些策略分别称为Bipartite或Argmax。在我们的实验中,我们使用Argmax策略进行匹配,采用的每个元架构的原始论文中建议的阈值。匹配后,通常有一个抽样程序,旨在使正锚和负锚的数量达到一定的预想比例。在我们的实验中,我们也将这些比率设置为每个元结构的相应论文推荐的比例。
3.2.2 Box encoding
为了编码一个匹配其锚点的groundtruth框,我们使用框编码函数φ(ba; a)= [10·xc wa,10·yc ha,5·log w,5·log h] (也使用[11,10,31,26])。注意,在这之前的所有工作中,通常也使用乘数10和5,即使没有明确提到。
3.2.3 Location loss(&loc)
在[10,31,26]之后,我们在所有实验中使用L1 平滑(或Huber [15])损失函数。
3.3输入大小配置。
在FASTER R-CNN和R-FCN中,模型训练前,图像会被为缩放边长较短的边的像素值【注:比如说400*500的原图,缩为400*400】;而在SSD中,图像总是被调整到固定的形状M×M. 我们探索评估每个图像缩小后的模型,以用准确度换速度。 特别的,我们已经训练了每个模型的高分辨率和低分辨率版本。在“高分辨率”设置中,我们设置M = 600,在“低分辨率”设置中,我们设置M = 300.在这两种情况下,这意味着SSD方法平均处理的像素数少于FASTER R -CNN或R-FCN模型。其他变量都保持不变。
3.4 训练和调整超参数
我们在分布式集群上使用异步梯度更新来对所有模型进行端到端地联合训练[7]。对于FASTER RCNN和R-FCN,我们使用带有动量的【注:简单理解就是惯性】SGD,batch sizes为1(因为这些模型使用不同的图像大小进行训练);对于SSD,我们使用RMSProp [43],batch sizes为32(在少数例外的,由于记忆原因的情况下,我们减少了batch sizes大小)。最后我们手动调整每个特征提取器的学习速率。对于与文献([31,6,13,26])相匹配的模型的配置,我们已经达到或超过了报告的mAP结果^2.(2:对于使用VGG的SSD,我们已经达到了论文的ECCV版本中报告的数字,但最新的ArXiv版本使用数据增强方案获得了更高的mAP,这是我们尚未实验的。)
注意,对于FASTER R-CNN和R-FCN,这种端到端方法与通常使用的4阶段的训练程序略有不同。此外,我们使用Tensorflow里的“裁剪和调整大小”操作来替代[31,6]中使用的ROI池化层和位置敏感ROI池化层,Tensorflow里的“裁剪和调整大小”操作使用双线性插值(biliner interpolation)【注:关于双线性插值的维基百科https://en.wikipedia.org/wiki/Bilinear_interpolation】将图像的一部分重新采样到固定大小的网格上。这与[5]中的微cropping机制、[12]中的注意模型以及[17]中的空间变换网络类似。然而,我们禁止相对于bounding box的坐标的反向传播,因为我们发现这在训练期间是不稳定的。
我们的网络在COCO数据集上进行训练,使用所有的训练图像以及测试图像的一个子集,使用8000个样本进行测试^3(3:我们注意到,这个数据集是相似的,但相似度略小于已经在几篇论文,例如[2,26]中使用的trainval35k。)。最后,在测试时,我们通过无最大抑制来进行检测的后期处理,无最大抑制使用0.6的IOU阈值并将所有的方块剪切到图像窗口。为了评估我们的最终检测结果,我们使用官方的COCO API [23],除了其他指标外,这个API在IOU为[0.5:0.05:0.95]范围内的均值上检测mAP值。
3.5 基准测试程序
为了测试我们的模型,我们使用了一台32GB RAM的机器,Intel Xeon E5-1650 v2处理器和一块Nvidia GeForce GTX Titan X GPU卡。计时为GPU上处理一个batch sizes所用的时间。用于计时的图像的大小被调整了,使得最小尺寸至少为k,然后被剪裁到k * K ,其中k是300或者600,根据模型而定。我们(用了)超过500个图像来做平均判断(We average the timings over 500 images)。
我们在我们的计时中包括后期处理(其包括非最大抑制,目前只在CPU上运行)。后期处理在最快的模型(大约40毫秒)中可能占据运行时间的大部分,目前我们的最大帧速率为每秒25帧。除此之外,这意味着虽然我们的计时结果可以相互比较,但它们可能与文献中其他报告的速度无法直接比较。其他潜在的差异包括硬件,软件驱动程序,框架(在我们的例子中为Tensorflow)和batch size(例如Liu等[26]使用8个batch sizes的报告时间)。最后,我们使用tfprof [27]来衡量模型在推理过程中的总得分。这提供了对于记忆量度的一个更独立的平台。我们测量的记忆值【可理解为准确度】为测试三个图像的平均值。

3.6 模型细节

表2:我们使用的6个特征提取器的属性(值)。 Top-1的精度是在ImageNet数据集上的分类精度
表2总结了我们使用的特征提取器。所有模型都是在ImageNet-CLS上预训练的。我们详细介绍了如何使用下面的这些特征提取器来训练目标检测器。
3.6.1 FASTER R-CNN
我们(是)紧紧按照FASTER RCNN [31]的原始实现【来进行试验的】,但是使用Tensorflow的“裁剪和调整大小”操作来替代标准ROI池化层。除VGG外,所有特征提取器都在卷积层后batch归一化。我们将batch归一化参数冻结为在ImageNet预训练期间估计的参数。我们训练速度FASTER RCN时,采用异步SGD,动量为0.9【对SGD的优化,可以解决SGD更新不稳定的问题:http://blog.csdn.net/luo123n/article/details/48239963】。初始学习率取决于我们使用的特征提取器,具体见这段文字段末。在900K次迭代之后,我们将学习率降低了10倍,在1.2M次迭代之后又降低了10倍。使用9个GPU进行分布式训练。每个GPU每次迭代只取一张图片; RPN训练的minibatch大小为256,而在对box分类器的训练中,minibatch大小为64。
• VGG [37]:我们从步长为16的“conv5”图层中提取特征。类似于[5],我们裁剪并调整feature maps的大小为14x14,然后经过maxpool变为7x7。初始学习率是5e-4。
• Resnet 101 [13]:我们从“conv4”这个版块的最后一层提取特征。当以恶意模式操作时,步长大小是8,否则为16。feature maps被裁剪和调整到14x14,然后经过maxpooled变为7x7。初始化学习速率是3e-4.
• Inception V2 [16]:我们从步长为16的“Mixed_4e”图层中提取特征。feature maps被裁剪和调整为14x14,初始化学习速率是2e-4.
• Inception V3 [42]:我们从步长为16的“Mixed_4e”图层中提取特征。feature maps被裁剪和调整为14x14,初始学习速率是3e-4.
•Inception Resnet [38]:我们从“Mixed_6a”图层中提取特征,包括其相关的残留层。在恶意模式下操作时,步长为8,否则为16。feature maps被裁剪和调整为14x14,初始学习率是1e-3。
• MobileNet [14]:我们从步长为16的“Conv2d 11”图层中提取特征。feature maps被裁剪和调整到14x14。初始学习率是3e-3。
3.6.2 R-FCN
我们(是)紧紧按照R-FCN [6]来进行试验的,但是使用Tensorflow的“裁剪和调整大小”操作替代用ROI池化来从位置敏感score map中裁剪区域。所有特征提取器在卷积层之后使用batch归一化。我们将batch归一化参数冻结为在ImageNet预训练期间估计的参数。我们用动量为09的异步SGD训练R-FCN。使用9个GPU进行分布式训练。每个GPU每次迭代只取一张图片; RPN训练的minibatch大小为256,而在对box分类器的训练中,minibatch大小为64。 截至本次提交时,我们没有R-FCN在VGG或Inception V3特征提取器下的结果。
• Resnet 101 [13]:我们从“block3”图层中提取特征。当以恶意模式操作时,步长大小是8,否则是16。位置敏感得分地图被裁剪为7x7的空间bins,并且重新调整尺寸为21x21。我们使用在线硬示例挖掘来对128个小号样本进行采样,以训练box分类器。初始学习率是3e-4。 100万步后减10倍,120万步之后再减10倍。

// TODO

【因暂时研究FASTER RCNN,故跳过原文第七页对R-FCN和SSD的相关分析。接下来是原文第八页】

4.1 分析
4.1.1 准确度VS时间
图2:准确度与时间的关系,不同形状的标记表示不同元架构,不同颜色表示不同的特征提取器。由于输入尺寸,步长等的变化,每个(元架构,特征提取器)对可以对应于该图上的多个点。

图2是。。。。。。【注:同上】。每个图像的运行时间范围为几十毫秒到1秒。一般来说,我们观察到R-FCN和SSD模型平均速度更快,而FASTER R-CNN模型更慢但更准确,每个图像至少需要100 ms。但是,正如我们下面所讨论的,如果我们限制region proposed的数量,FASTER R-CNN模型可以一样快。我们还覆盖了一个虚构的“最优性边界”,代表了在这个探测器系列中只有在牺牲速度的情况下才能达到更好的精度的点。在下面,我们重点介绍最优化边界的一些关键点,作为最好的探测器,并分别讨论各种模型配置选项的影响。
4.1.2最优边界上的关键点
(最快的:SSD with/MobileNet):在这个最优化边缘【注:也就是图2中的虚线】的最快端【注:变化速率最快的阶段】,我们看到具有Inception v2和Mobilenet特征提取器的SSD模型是最快的模型中最精确的【注:看图2,在刚开始时,也就是图二的最左侧,时间耗费最少时,SSD w/MobileNet是精确度最高的】。注意,如果我们忽略后期处理花费的(时间),Mobilenet大概是Inception v2的两倍,而准确性只是稍差一点点【宣传自己的产品,可以理解】。 ((Sweet Spot:R-FCN W / Resnet或FASTER R-CNN W / Resnet,只有50个proposals):R-FCN模型使用残差网络特征提取器所占据的最优边界中间有一个“elbow”,看起来在我们的模型配置中达到速度和准确性之间的最佳平衡。正如我们在下面讨论的,如果我们将proposal的数量限制为50,FASTER R-CNN和Resnet模型可以达到相似的速度。(最准确的说:步骤8中的FASTER R-CNN w/Inception)【这是他们的发现之一,他们发觉使用50的proposal和300的proposal差别并不大】:最后,密集输出的更快的FASTER R-CNN结合输出密集的Inception Resnet网络的模型达到了最高的精度【mAP大概是36】,据我们所知,它是目前业界最先进的单一模型。然而这个模型很慢,需要近一秒的处理时间。这5个模型的整体mAP数字如表3所示。
4.1.3特征提取器的影响
直观地说,分类性能更好的话,在COCO数据集上检测的性能也应该更好。为了验证这一点,我们调查了不同模型的整体mAP和用于初始化每个模型的预训练特征提取器获得的Top-1 Imagenet分类精度之间的关系。图3表明分类和检测性能之间确实存在整体相关性。然而,这种相关性似乎只对FASTER R-CNN和R-FCN有意义,而SSD的性能似乎不太依赖于其特征提取器的分类准确性。

4.1.4物体大小的影响

图4显示了在不同大小的物体上,不同模型的性能。意料之中,所有方法在大对象上都做得更好。我们也看到,尽管SSD模型在小物体上的表现通常很差,但它们在较大的物体上具有与FASTER RCNN和R-FCN的竞争力。
4.1.5图像大小的影响
其他作者已经观察到,输入图像的分辨率会显着影响检测精度。根据我们的实验,我们观察到,在两个维度上将分辨率降低为原来的一半都会降低准确度(平均降低15.88%),但也将推测时间相对的平均减少了27.4%。
造成这种影响的一个原因是高分辨率输入使得模型可以找到小物体。
图5比较了大型物体和小型物体上的检测器的性能,证实高分辨率模型可以显着提高小物体的mAP值(在很多情况下为2倍),同时大型物体的mAP结果略好。我们也看到,在小型物体上的强大性能意味着在我们的模型检测大型物体的性能更好(但反过来不对,因为SSD模型在大型物体上表现良好但在小物体上变现不好)。
4.1.6 proposal数量的影响
对于FASTER R-CNN和R-FCN,我们可以调整RPN计算的proposal的数量。这两篇论文的作者使用了300 个框,但是,我们的实验表明,这个数字可以显着减少,而不会降低mAP(太多)。在一些“盒分类器”是Faster R-CNN的一部分的特征提取器中,300个框的计算是昂贵的,这可以显着的计算节省量。图6a为不同特征提取器的高分辨率输入显示了FASTER RCNN模型的这种权衡曲线。我们看到,具有300个proposal的Inception Resnet,mAP为35.4;但是当只有10个proposal时,它仍然具有惊人的高精度(29%的mAP)。最好的地方可能是50个proposal,我们能够获得使用300个proposal的96%的准确度,同时将运行时间减少了3倍。对于Inception Resnet,计算节省得最为明显,我们看到类似的折中适用于所有特征提取器。图6(b)显示了对R-FCN做类似改变的结果。
4.1.7 FLOPs分析
图7绘出了每个模型组合的GPU时间【毫秒,图像分辨率为300。可看出无论采用哪种卷积网络,都是SSD最快FASTER RCNN最慢】。但是,这是非常依赖于平台的。计算FLOPs【即“每秒浮点运算次数”,“每秒峰值速度”】(乘加)给了我们一个独立于平台的计算方法,由于诸如缓存、I / O、硬件优化等一系列问题,计算可能会也可能不会【我去。。。】与实际运行时间成线性关系,图8a和图8b 为分别在GPU和CPU上绘制的FLOP计数与观察到的wallclock时间。有趣的是,我们在GPU图(图8a)中观察到,每个模型具有不同的触发器与观察到的运行时间的平均比率(以毫秒为单位)。对于更密集的模块(例如Resnet 101),FLOP / GPU时间通常大于1,这可能是由于高速缓存的效率。对于Inception和Mobilenet模型,这个比率通常小于1–我们猜测这可能是因为分解减少了FLOP,但是在内存I / O中增加了更多的开销,或者当前的GPU指令(cuDNN)对于密集卷积更加优化。
4.1.8内存分析
对于内存基准测试,我们测量总使用量而不是高峰使用量。图10a,10b是针对GPU和CPU wallclock时间的内存使用情况进行绘制的。总的来说,我们观察到更大和更强大的特征提取器需要更多的内存。图9更详细地绘制了一些相同的信息,通过元架构和特征提取器选择进行深入研究。与速度一样,Mobilenet又是最cheap的,几乎所有的设置都需要不到1Gb(总计)的内存。

4.1.9良好的本地化,0.75的IOU意味着在所有的IOU thresholds良好的本地化
While slicing the data by object size leads to interesting insights,但通过IOU阈值对数据进行slicing并不能提供太多附加信息。图11显示了mAP @ .5和mAP @ .75的性能几乎与mAP @ [5:.95]完全线性相关。因此,在较高IOU阈值下性能较差的检测器总是在较低的IOU阈值下也表现不佳。这也就是说,我们还观察到,mAP @ .75与mAP @ [.5:.95](R2> .99)的关系稍微更紧密一些,所以如果我们要在单个IOU阈值处用mAP代替标准的COCO度量, 我们更愿意选择IOU 的值为 0.75。

4.2。 COCO上最先进的检测(系统)
最后,我们简要介绍一下如何整合我们的一些模型,以实现2016年COCO目标检测挑战上的最佳表现。我们的模型在COCO测试集上达到了41.3%的mAP @ [5,.95],并且是基于Resnet和Inception Resnet特征提取器的五个FASTER R-CNN模型的集合。这比MSRA以前的最好结果(37.1%mAP @ [.5,.95])要好,它使用了三个Resnet-101模型的集合[13]。表4总结了我们模型的表现,并突出显示了我们的模型如何在所有COCO度量指标的最佳技术上实现一些改进。最值得注意的是,与之前的最佳结果相比,我们的模型在小对象recall方面有近60%的提高。尽管这些结合最佳数字的这个集合可以被看作速度/精度折衷曲线上的一个极端点(每个图像需要约50个端到端的网络评估),但是我们选择单独提出这个模型是因为它与我们在本文其余部分重点讨论的“单一模型”结果没有可比性。为了构建我们的集合,我们从FASTER R-CNN模型中选择了五个模型。每个模型基于Resnet和Inception Resnet特征提取器,具有不同的输出步长,使用损失函数的变化再训练,以及训练数据的随机排序。。。。。。请注意,我们不使用文献中有时使用的多尺度训练,水平翻转,框精化,方框投票(box refinement, box voting)或全局上下文。表6比较了单个模型的表现与两种方式相结合的模型的表现,并且表明(1)encouraging for diversity did help against a hand
selected ensemble,以及(2)集合和多样性在单个模型上有近7个改进点。

4.3. Example detections
5.结论

我们已经对影响现代物体探测器的速度和准确度的一些主要方面进行了实验性比较。我们希望这将有助于从业人员在现实世界中部署物体检测时选择合适的方法。我们还提出了一些新的技术来提高速度,而不需要牺牲很多的准确度,比如比一般使用FASTER R-CNN时使用更少的proposal。

致谢

参考

你可能感兴趣的:(Deep/Machine,Learning,译文)