ResNet-Deep Residual Learning for Image Recognition

深度残差学习用于图像识别

   

摘要

更深的神经网络训练起来更困难。我们展示了一个残差学习框架来简化网络学习,这些网络比之前的要深。我们将这些层明确表述为相对于层输入的残差方程,而不是学习未引用的函数。我们证明这些残差网络更容易优化,并且可以从深度增加中提高精度。我们用一个深度未152层-VGG的8倍深度的残差网络在ImageNet数据集中进行了评估,但是这样的网络也是不够复杂的。这些残差网络的综合在ImageNet 测试集上测试错误率3.57%。这个结果赢得了ILSVRC2015分类任务的第一名。我们也用100和1000层的网络对CIFAR-10进行了分析。

对于很多视觉识别任务来说,网络的深度是提高性能的核心。只是因为我们极其深的网络,我们在COCO对象检测数据集上获得了一个相对28%的性能提高。深度残差网络是我们在ILSVRC和COCO2015竞赛提交作品的基础,我们在ImageNet检测任务,ImageNet定位任务,COCO检测任务,COCO分割任务中均获得了第一名。

1、引言

深度卷积神经网络对于图片分类产生了几个突破。深度网络在一个端到端的多层自然的集成了低级/中级/高级特征和分类器,levels可以倍堆叠网络的层数也就是深度丰富。最近41,44证据显示网络深度是至关重要的,并在ImageNet数据集竞赛领先的作品都是十分深的模型,深度从16【41】到30【16】.很多优秀的视觉识别任务也从很深的模型中获益。

受深度的驱动,一个问题产生了:学习更好的网络像堆叠更多层那样简单吗?这个问题一个明显的答案就是声名狼藉的梯度消失/爆炸问题,从一开始就对收敛有害。这个问题通过归一化的初始化和中间的归一化层极大程度上避免了,它使几十层的网络用反向传播随机梯度法开始收敛成为现实。

当更深的网络能够开始收敛,一个降级问题就被展示出来了:随着网络深度的增加,精度变得饱和(这可能并不吃惊)并且会迅速降低。不幸的是这样的降级问题不是过拟合造成的,对一个饱和的深度模型增加更多的层导致更高的训练错误,就像在【11,12】报道的那样,并且我们的实验也证明了。图一展示了一个典型的例子。

训练精度的退化指示并不是多有的系统优化起来都是很简单的。让我们考虑一个浅层的结构,他的深层结构就是在它上面增并且在上面不断的加层。在构建更深的模型的时候出现了一个问题:添加的层是相同的映射,其他层是从已经学习的浅层网络复制的。构建深层网络中存在这个问题就指示一个更深的网络应该产生比浅层网络不高的错误率。但是实验显示,我们目前拥有的方法不能发现比构建的解决方法更好或者相当的解决方法(不能再合理的时间这样做)。

在这个论文中,我们通过引进一个深度残差学习架构来解决退化问题。我们明确的令这些层满足残差映射,而不是希望每一些堆叠的层直接满足一个需要的潜在的映射。最终我们定义期望的潜在的映射是H(x),我们令堆叠的非线性层满足另一个映射F(x):=H(x)-x。初始的映射就被重新设计为F(x)+x。我们希望对于残差映射和原始的映射来讲,他更容易优化残差映射。极端的讲,如果一个相同的映射被优化,将残差设置未0比通过非线性层的堆叠产生的映射要容易。

方程F(x)+x可以通过有短路链接的反馈神经网络实现(图二)。短路链接是哪些跳过一个或者多个层的链接。在我们的情况中,短路链接简单的表现为相同的映射,他们的输出添加到堆叠层的输出。相同的短路链接增加了额外的参数和计算复杂性。完整的网络仍可以通过反向传播被端到端的SGD训练,并且可以很容易的用相同的库实施,不用修改解决方案。

我们再ImageNet中展示了综合的实验来显示降级问题和评估我们的方法。我们展现:1)我们极其深的残差网络容易优化,但是计数部分平面网络(也就是简单的堆叠网络)显示再深度增加的时候会有更高的训练错误;2)我们的深度残差网络可以容易的从增加深度中享用精度的提高,实质上产生的结果比之前的网络要好

相同的显现也再CIFAR-10数据集中出现了,它展现了优化问题,也体现了我们的方法不仅仅对某一特定的数据集有影响。我们再这些数据集上成功的训练了超过100层的网络,探索的模型超过了1000层。

再ImageNet分类数据集中,我们通过十分深的残差网络获得了杰出的成果。我们152层的残差网络是再ImageNet中提交的作品中最深的,但是任然比VGG网络的复杂性要低。我们综合模型再ImageNet测试集上有top5 3.57%,并再2015年的分类竞赛中取得了第一名。

这个极其深的表现形式再其他的是被任务中也有杰出的泛化性能,引导我们再ImageNet检测任务,定位任务,COO检测任务,分割任务中取得了第一名。这个充分的证明残差学习原则是普遍的,我们希望他能再视觉以及非视觉领域的问题中得以应用。

2、相关的工作

残差表示。再图像识别,VLAD是一个相对于字典的擦差向量编码的表示,Fisheri 向量可以变成VLDA的概率版本。他们都是图片识别和分类中有力度的浅层的表现形式。对于矢量量化,编码残差向量比编码原始向量更加有效。

再更低级的视觉和计算机图像中,对于解决偏微分方程(PDEs),多重网格法将系统重新定义为多个尺度的子问题,每一个子问题对于粗糙和精细分割的残差解决是合理的。对于多重栅格方法可用的方法是分层基础预处理,他依靠两个尺寸中残差网络的变量。他证明这些解决方案比标准的不知道残差属性的解决方案块很多。这些方法提示,一个好的再行成或者预处理可以简化优化。

短路链接。引导短路链接的实践和理论被学习了很长时间了。早期训练多层感知器的尝试是从网络输入到输出添加一个线行层。一些中间层直接和辅助分类器相连来处理梯度消失/爆炸。【38,39,31,47】论文提出了通过实施短路链接来处理中心层响应,梯度,传播错误。在【44】一个inception层由一个短路分支和几个更深的分支组成。

最近我们的工作,'道路网'【42,43】展示了有阈值函数的短路链接。这些阈值是数据依赖的并且有参数(可能是超参数),相对于无参数的相同的短路来说。当一个阈值短路关闭(接近0),在公路网上的层就是非残差函数。另外,我们的构成总是学习残差函数;我们相同的短路从不会关闭,随着额外的残差函数被学习所有的信息总是传递进行的。另外,道路网没有演示增加深度带来的精度提高。

3、深度残差学习

3.1残差学习

让我们将H(x)看作一个通过几个堆叠层的潜在映射(不必是完整的网络),x定义了这些网络第一个输入。如果一个假设多个非线性层可以渐近逼近复杂函数,那么它等价于假设它们可以渐近逼近残差函数。比如说H(x)-x(假定输入和输出是相同的维度)。我们明确零这些层渐进一个残差函数F(x):=H(x)-x,而不是期望堆叠层来渐进H(x)。原始的函数因此就变成了F(x)+x。尽管两种格式都能逐渐逼近期望的函数,但是学习的困难程度可能不同。

H(x)是一个期望的映射,直接学习H(x)太困难,我们可以选择先学习H(x)-x=F(x),这样就变得容易了。然后我们再将F(x)加上x就是我们希望的映射。

重构是通过受降级问题这个违反直觉的现象激发出来的(图一左部分)。就像我们在引言部分讨论的那样,如果添加的层可以通过相同的映射构建,一个更深模型的错误率应该比浅的模型的错误率不高。梯度降级问题表示用多个非线性层逼近相同的映射,这种解决方法可能很困难。在残差学习重公式中,如果恒等映射是最优的,求解者可以简单地将多个非线性层的权值趋近于零来逼近恒等映射。

在实际情况中,相同的映射被堆叠并不是最优的,但是我们对其重构能够帮助预防这个梯度降级的问题。如果一个最优的函数相对于0映射来说的话,更接近相同映射,这个解决方案更容易发现指向相同映射的扰动,而不是把这个函数当作新的来学习。我们通过实验展示学习后的残差函数通常有小的反应,表示相同映射提供了一个合理的预处理。

++++++++++++++

3.2短路产生的相同映射

我们每几个堆叠层就会应用残差学习。在图二中我们展示了一个构建的模块。最终,在这个论文中我们考虑一个构建模块的定义:

等式1中的短路链接既没有引进额外的参数也没有增加计算的复杂性。这个不仅在实践中而且在我们对比plain和残差网络中都是由吸引力的。我们公平的比较plain和残差网络,同时又相同的参数深度和宽度以及相同的计算代价(除了添加了微不足道的位运算)。

在等式1中,x和F的维度必须相等。如果不相等,我们可以对短路链接执行一个线行映射Ws来匹配维度。

权重不相等需要进行匹配

我们也可以在等式1中使用矩阵Ws的平方。但是我们将通过实验展示相同映射对于解决降级问题是充分的经济的。

残差函数的格式是多种多样的,在这个论文中是2或3层的网络。残差函数就是这几层网络。

3.3 网络结构

我们在不同的plain/残差网络上测试,并观察到相同的现象。为了给讨论能产生例子,我们为ImageNet提供了俩个模型。两个模型如下描述:

   

Plain 网络:我们的plain网络(图三中部)主要是受VGG网络(图三左部0的观点启发的。卷积层大部分由3*3的过滤器,并且遵循下两个简单的设计规则:1)相同的特征映射大小的尺寸,这层就有相同的过滤器。2)如果特征映射尺寸减半,过滤器的数量就增加来保证每层花费的时间。也就是说过滤器过滤的次数都是一样的。我们通过步长为2 的卷积层来直接的实现所见像素采样。网络结束的时候有一个全局平均池化层和一个1000个有softmax的全连接层。图三中部权重层的全部数量是34.

很值得注意的是我们的模型有更少的过滤器和比VGG更低的复杂性。我们24层网络有36亿浮点匀速(多为加法),仅仅是VGG-19的18%(196亿浮点数运算)

残差网络:在上面plain网络的基础上,我们嵌入了短路链接(图三右边),然后就将网络转换成了极其相似的残差版本。相同的短路(等式1)在输入和输出有同样的维度的时候,可以直接使用(图三中的实线短路)。如果维度有增加(图三中的虚线),我们考虑两个操作:(A)短路仍执行相同的映射,用额外的0来补充增加的维度。这个操作没有引进参数。B)用等式2进行短路映射来匹配相同的维度(通过卷积1*1).这两个操作,在短路遍历特征映射用两个尺寸,步长是2。

3.4 实施

我们对于ImageNet的实施遵循21,41中的实践。图片的短边来随机裁剪的resize成[256,480]来尺寸增强。一个224*224的crop随机从一个图片中或者他的水平镜像中采样,每个像素减去他的平均值。标准的颜色增强被使用。我们在每一个卷积层后激活层前使用了批量归一化BN,遵循[16]。我们像13那样初始化权重,并从scratch中训练所有的plain和残差网络。我们使用SGD用一个小批量是256.学习率初始设置为0.1,当误差不再降低的时候就除以10,这个模型迭代了60万次。我们使用一个权重衰减为0.0001和一个0.9的动量。我们没有使用dropout,遵循16中的实验。

在测试中,为了比较研究,我们将采用的是标准的10crop测试。对于最好的结果,我们采用全卷积格式就像【41,13】中那样,并且在多个scale中进行求平均得分。(图像将短边resize成{224,256,384,480,640})

4、实验

4.1ImageNet 分类

我们在ImageNet2012分类数据上评估了我们的模型,这个数据集包含1000个类别。这个模型在128万张图片中进行了训练,在5万张照片中进行了评估。我们在10万丈测试图片中获得了最终结果,我们进行了top1和top5的评估。

Plain 网络:我们首先评估了一个18层和34层的plain网络。34层的plain网络在图三的中部。18层的plain网络是一个相似的格式。详细结构在表1中有展示。

Table1.Architectures for ImageNet.Building blocks are shown in brackets(see also Fig.5),with the numbers of blocks stacked.Down-sampling is performed by

conv3_1,con4_1and conv5_1 with a stride of 2.

表二中的结果展示更深的34层plain网络有更高的验证误差。为了揭露这些原因,在图四左边我们在训练进程中比较了他们的训练/验证错误率。我们观察到降级问题了,34层的plain网络在整个训练进程中有更高的训练错误率,尽管18层平面解的空间是34层解的空间的子空间。

我们争辩优化的困难不项是梯度消失引起的。这些plain网络是用BN训练的,他确保前向传播信号有非零的变量。我们也查证反向传播梯度用BN来规范的。因此前向和后向的信号都不会消失。实际上,34层plain网络仍能获得相当不错的精度(表三),表示这个解在一定程度上其作用。我们推测deep plain网络可能需要指数上低收敛率,他影响训练误差的减少。这个最优化难题的原因将来会进行学习。

残差网络:下面我们评估18层和34层的残差网络。基本结构和上面的plain网络是一样的,除了每三个过滤器就添加一个短路链接。在第一个比较中(表二和图四的右边),我们对于所有的短路和0填充使用相同的映射来增加维度(方法A)。因此没有额外需要增加的参数。

从表2和图四中我们有三个主要的观察。

首先,这个解决方法是带着残差学习被保存的-34层的ResNet比18层的ResNet好(2.8%)。更重要的是,34层的ResNet展示相当低的训练误差并且在验证数据上泛化能力很好。这个就表明降级问题被很好的避免了,我们就可以获得从深度增加来提高的精度了。

第二,和plain相比34层的ResNet减少了top1的错误率(表二中显示3.5%),这个结论来自训练的成功减少(图四右和左)。这个比较验证了残差学习在其他的深度学习系统上的有效性。训练错误率降低。

最后,我们注意18层的plain/残差网络精度差不多(表二),但是18层的ResNet收敛更快(图四右和左)。当网络不是太深(这里是18层)的情况下,plain网络使用SGD仍然可以发现好的解。在这种情况下,ResNet通过在早期提供更快的收敛来简化优化。

统一性和映射捷径。我们已经展示免参数,统一性映射有助于训练。接下来我们研究映射结晶(等式2).在表3中,我们比较了三个操作:A)0填充短路用于增加维度,所有的短路是没有参数的(表2和图4的右边是一样的);B)映射短路用于增加维度,并且其他的短路是相同的;C)所有的短路都是映射

表3展示了三个操作是比plain好的。B比A稍微好一点。我们争论这个是因为在A中填充0中没有进行残差学习。C又比B好,我们认为这个是通过引进很多映射短路(30个)增加的额外参数。A/B/C之间的不同表示映射短路并不是解决降级问题的主要原因。因此我们在余下的论文中不使用方法C,来减少内存和负载性以及模型大小的减少。统一性短路对于不能加下面介绍的额瓶颈结构的复杂性是很重要的。

更深的瓶颈结构:接下来我们描述我们用于ImageNet更深的网络。因为我们关心训练时间是不是可以接受,我们修改了模块建筑为瓶颈设计。每一个残差函数F,我们使用三个层,而不是前面的两层(图5).这三层是1*1,3*3,和1*1卷积层,1*1层是用于减少然后增加维度,令3*3层一个右很小维度的输入和输出。图五展示了一个例子,每个设计都有相同的实践花费。

   

免参数的统一短路对于瓶颈结构是十分重要的。如果图5中统一短路被映射替换,我们可以展示时间花费和模型大小都会加倍,因为短路是连接到两个高纬度断的。因此对于瓶颈设计相同的短路导致更有效的模型。出入有相同的维度,这样短路计算起来还容易一些,所以说 是有效的。

50层ResNet:我们用3层的瓶颈层替换了2层的瓶颈层,就产生了一个50层的ResNet(表1).我们使用操作B来增加维度。这个模型右38亿个逻辑计算单元。

101层和152层ResNet:我们通过3层的模块构建了101层和152层的ResNet(表1).显著的,尽管深度增加了152层ResNet(113亿个浮点运算)仍然比VGG-16/19复杂性要低很多(15.3/19.6bilion)。

50/101/152层的ResNet精度比34层的高多了(表3和表4).我们没有观察到降级问题,因此可以享受增加深度来增加精度。深度的好处在所有评估指标上进行了评估。

   

和当前最好的方法比较。在表4中,我们和之前最好的单模型结果进行了比较。我们的34层ResNet的主线已经取得了很有竞争力的精度。我们152层ResNet的精度top5的验证精度4.49%。这是单模型中在前面所有模型中最好的了(表5).我们结合了6个不同深度的模型来组成一个综合(只有两个提交的152层的网络)。这个就导致在测试集上3.57%的top5的错误率(表5).这个条目获得了ILSVRC2015中第一名的位置。

4.2 CIFAR-10和分析

我们在CIFAR-10上面总结了很多研究,它包含5万训练图片和1万测试图片分为10类。我们在训练集上训练在测试集上验证。我们的目的是极其深的网络的表现,但是没有推动最好的结果,因此我们更倾向于使用简单的结构。

plain/残差结构遵从图三(中/右)的格式。网络输入是32*32的图片,每个像素减去平均值。第一层是一个3*3的卷积网络。然后我们在特征映射为{32,16,8}尺寸的特征映射上面使用一个带有3*3卷积的6n层堆叠,对于每个特征映射的大小是{32,16,8}的添加2n层。过滤器的数量是{16,32,64}.子采样是通过步长为2的卷积层来实现的。网络最后是一个全局平均池化层,一个10路的全连接层,和softmax层。这里总共右6n+2个堆叠的权重层。下面的表格总结了这个结构:

当使用短路链接,他们被连接到3*3层的层对中(总共3n个短路)。在这个数据集中所有情况下我们使用相同的短路(就是操作A)。因此我们的残差模型和plain相比有完全相同的深度宽度和参数的数量。

我们使用一个0.0001的权重衰减和动量为0.9.并且应用13和BN的权重初始化,但是没有使用dropout。这些模型是用小批量为128在两个GPU上面训练的。我们开始的学习率是0.1,在32K次迭代和48K次迭代的时候除以10,最终训练了64K次迭代,将训练分成45K/5K。我们采用24中最简单的数据增强来训练:4个像素填充到每一个变,一个32*32的crop从填充后的图像中随机采样或者进行镜像。对于测试,我们之评估一张原始的32*32的图片。

我们比较n={3,5,7,9},导致22,32,44和56层的网络。图六左展示了plain网络的表现。深度plain网络遭受增加深度,去增加训练误差。这个现象和ImageNet相似(图四左)和MNIST(42),表示这样的优化困难现象是一个固有现象。

图六中部展示了ResNet的表现。尽管和ImageNet情况相似(图四右边),我们的ResNet能够克服深度增加的时候优化难题和精度降级的现象。

我们探索了n=18,他导致了一个110层的ResNet。在这种情况下,我们发现初始学习率设置为0.1就太大了,不能进行收敛。因此我们使用0.01来启动训练,直到训练错误低于80%(400次迭代的),然后返回到0.1然后继续训练。后面的学习方法就是和之前描述的一样。这个额10层的而网络收敛很好(图6中间)。相比于其他的深度和厚度的网络,比如FitNet和Highway,他又更少的参数,至今他还是无人望其项背(6.43%表6)

层响应分析:图7展示了层响应标准的偏差(std)响应式每个3*3层的输出,在BN后面但是在归一化前面(ReLU/加法)。对于ResNet,这个分析暴露了残差函数的响应强度。图7展示了ResNet通常由比对应的plain结构网络由更小的响应强度。这些结果支持我们残差函数能够可能比非残差函数更接近0的动机。我们也注意到更深的ResNet由更小的响应的量级,通过对图7中ResNet-20,56,和110进行比较可以作为证据。当有更多的层的时候,ResNet一个独立的层趋向于更少的修改信号。

探索1000多层:我们探索了一个更加深的超过1000层的模型,我们设置n=200这个就产生了1202层的网络,就像上面那样训练的。我们的方法显示没有优化问题,这个10三次方级别的网络能够将训练误差小于0.1%(图六)。他的测试误差也是很好的(7。93%表六)

但是在这样进取性的模型中,这仍然有开放性问题。尽管都有相同的训练误差,但是测试结果比110层的网络还低。这个是因为过拟合。1202层的网络对于小数量的数据集来讲太大了。强大的规则化,比如说maxout或者dropout层就会应用来获得最好的结果。在这个论文中,我们没有使用maxout和dropout层指示简单的通过设计,在深度和宽度上提高正则化,而不是把注意力从优化困难上转移。但是结合强规则化可能会提高结果,这个是我们将来要做的事情。

4.3 PASCALMS COCO上对象检测

我们的方法在其他的识别任务中有很好的推广性能,表7和8展示了在PASCAL VOC2007和2012以及COCO对象检测的主要结构。我们应用faster R-CNN作为检测方法。这里我们感兴趣的是用ResNet-101替换VGG-16带来的改善。使用两种模型实施检测是相同的,因此改善只能归功于网络。最值得一提的是,我们在COCO数据集竞赛中获得了6.0%的的增加,那是28%的相对提高。这个提高指示归功于学习过的表现形式。

基于深度残差网络,我们在几个竞赛中取得了第一名。

附录

A、对象识别主线

在这个部分我们引进了我们的基于Faster R-CNN的主线。模型是通过ImageNet分类模型初始化的,然后再在检测数据上微调。我们在ILSVRC和COCO2015检测竞赛中实验了ResNet-50/101.

不像32中使用的VGG-16那样,我们的ResNet没有隐藏的全连接层。我们用'networks on Conv feature maps'这个思想解决这个问题。这图片上的步长不比16个像素大的层,我们使用这样的层来计算全图共享的卷积特征映(conv1,conv2_x,conv3_x,和conv4_x在ResNet-101中总共91个卷积层;表1).我们认为这些网络和VGG-16中13个卷积层是类似的,这样做的话,ResNet和VGG-16卷积映射有先沟通的步长(16个像素)。这些层被一个区域建议网络共享(RPN,产生了300个建议)和一个fast R-CNN检测网络。Roi池化层在conv5_1之前执行。在这个RoI-池化过的区域,所有的conv5_x的层以及更上层被应用于每一个区域,扮演着VGG-16全连接层的角色。最终的分类层被两个兄弟姊妹层替代(分类和区域回归)

对于BN层的使用,在预训练层后,我们在ImageNet训练集上对于每一个层计算BN策略(平均和方差)。然后BN层在对象检测的微调时候被修饰。如此这般,BN层变成了有常数偏置和缩放的线行激活曾。BN册率不会对着微调改变。我们在Faster R-CNN训练中修改BN主要是为了减少内存消耗。

PASCAL VOC

遵循【7,32】,对于PASCAL VOC2007测试数据集,我们使用5000个训练集在VOC2007中,在VOC2012中使用16000个训练图片。对于PACSCAL VOC 2012测试集,我们使用VOC2007中10000个训练和测试图片,VOC2012中16000个训练图片。训练FasterR-CNN的超参数和【32】相似。表7展示了结果。ResNet-101相较于VGG-16提高了3%的mAP。这个收获只是因为ResNet学到的特征。

MS COCO

MS COCO数据集包含80个对象类。我们评估PASCAL VOC和标准的COCO度量。我们使用训练集中80K张图片用于训练,验证集张40K张图片用于验证评估。我们对于COCO的检测系统和PASCAL VOC相似。我们用8GPUs来训练COCO模型,因此RPN步骤有一个8照片的小批量,一个GPU一个图片,FastR-CNN步骤有16个图片的小批量。RPN和Fast R-CNN都训练了240K次迭代(0.001的学习率)80K次迭代的学习率(0.0001).

表8展示了在MS COCO验证集上的结果。ResNet-101相比VGG-16有6%的mAP的增长,相对提高来讲是28%,只是因为特征被更好的网络学习到。值得一提的是,mAP的绝对增长(6%)是接近(6.9%)。这个就表示一个更深网路可以在识别和定位上都改善。

B、对象识别的改善

出于完整性,我们报道了我们在这些竞赛中的改进。这些改进是基于深度特征,因此应该可以从残差学习中收益。

MS COCO

格子细化。我们的格子细化遵循6中的定位迭代。在Faster-cNN中,最终的输出是一个回归框和建议框是不一样的。因此为了推理,我们从回归狂中提出了一个新的特征,并且获得了一个新的分类成绩和一个新的回归框。我们用原始的300个预测结合成300个新的预测。非最大化压缩(non-maximum suppression(NMS))应用到预测狂的集合单元,使用的IoU的阈值是0.3,后面是box投票机制。格子细化提高了mAP两个百分点。表九。

全局上下文。我们在Fast R-CNN步骤中结合了全局上下文。给定一个完整图片的卷积特征映射,我们通过全局空间金字塔池化提出了一个特征(一个单一的金字塔)。他可以用作RoI池化层,使用全部的图片的回归狂作为RoI。这个提出的特征是放到post-RoI层中来获得全局上下文的特征。这个全局特征和原始的每个区域的特征像满足的,跟随着兄弟姊妹的分类器和box回归层。这个新的结构是端到端训练的。全局上下文提高了mAP1个百分点。

多sacle测试。在上面,所有的结果是通过单一的sacle训练/测试的,就像32那样,图片短边是600像素。多scale训练/测试在12,7中已经发展成从特征金字塔中选择一个尺寸,在33中使用了maxout层。在我们当前的实施中,我们执行了多scale测试;因为时间原因我们值再Fast R-CNN中执行多scale测试(并没有在RPN中执行)。在以由训练模型的前提下,我们在图片金字塔中计算了卷积特征映射,图片的短边是∈{200,400,600,800,1000}

我们从金字塔中选择了两个scale遵循【33】.RoI池化层和后续的层在这两个scale的特征映射上执行的,就像【33】那样进行了融合。多scale测试提高了mAP两个百分点。(表9)

使用验证集:接下来我们使用80K+40K的训练集用于训练,20K的测试集用于验证。测试开发集没有公开可用的,结果由评估服务器报告。在这种设置下,结果是一个55.7%的mAP.5 34.9%的mAP@[.5,.95].这个是单模型的结果。

综合:在faster R-CNN种,系统被设计用于学习区域建议和对象分类,因此一个综合的系统可以用于每个任务。我们使用了一个综合来建议区域,建议的集合被每个区域分类器的综合产生。表9展示了我们基于3个网络综合的结果。在测试集上mAP是59.0%和37.4%。这个集过在COCO2015检测任务上面赢得了第一名。

PASCAL VOC

基于上面的模型,我们也参见了PASCAL VOC数据集。在COCO数据集上单一模型,我们微调后用到了PASCAL VOC数据集上面。盒子细化的改善和多scale测试被应用。这样做我们在PASCAL VOC2007上面获得了85.6%的mAP(表10)和83.3%在PASCAL VOC2012(表11).在PASCAL VOC2012上面比前面的冠军高10个百分点。

ImageNet 检测

ImageNet检测任务包含200个对象分类。精度是由[email protected]评估的。在ImageNet检测任务种我们的对象检测算法是和表9种MS COCO一样的。这个网络在1000类的ImageNEt分类集合上面进行了预训练,并在DET(imageNet Detection)上面进行了微调。我们遵循【8】将验证集分成两部分(val1,val2).我们使用DET训练模型和val1来微调检测模型。val2集合用于验证。我们没有使用额外的ILSVRC2015数据集。在测试集上,我们ResNet-101单一的模型有58.8%的mAP我们3模型的综合有62.1%的mAP(表12)。这个集过在ILSVEC2015的ImageNet检测任务种赢得了第一名,超过第二名8.5个百分点。

CImageNet定位

ImageNet localization(LOC)任务需要分类和定位对象。遵从【40,41】,我们假设图像级别的分类器首先英语预测图片的类别标记,分类算法只有在基于预测类的回归框上进行预测。我们用"per-class regression"(PCR)策略,对于每个类学到了一个回归框。我们用ImageNet分类来预训练网络。我们在提供的1000类别的ImageNet训练集上训练网络。

我们的定位算法是基于稍微修改后的RPN架构的。不像【32】那种策略不知,我们用于定位的RPN是在按照每个类的形式设计的。RPN结尾有两个1*1的姊妹卷积网络层来进行二进制分类(cls)和box回归(reg)。相对于【32】,cls和reg层都是一个per-class格式。cls层有1000输出,欸一个维度是一个二位的逻辑回归用于预测是还是不是这个对象类别;reg层有1000*4-d的输出包含1000个类别的回归框。就像32种,我们的边界回归框是参照每个位置的多个平移不变的"锚"框。

就像我们ImageNet分类训练(sec3.4),我们随机采样224*224crops用于数据增强。我们使用一个256个数的图像作为小批量来进行微调。为了避免负采样占据主导地位,8个锚随机采样每个图片,正采样和负采样的比例是1:1.为了测试,在图片全卷积层进行应用了网络。

表13比较了定位结果。遵循【41】,我们首先使用执行了'预言'测试作为分类预测。VGG论文中心crop的错误是33.1%(表13).在相同的设置下,我们的RPN方法使用ResNet101明显的将中心crop损失降低到13.3%。这个比较论证了我们架构的杰出性。用密度(全卷积层)和多scale测试,我们的ResNet101有11.7%的错误率。使用ResNet101用于预测类别top5的定位错误率是14.4%。(表四种4.6%的分类错误率)。

上面的结果只是基于Faster R-CNN种的建议网络(RPN)。我们可以使用Faster R-CNN的检测网络来提高结果。但是我们注意到在这个数据集上,一个图片通常含有一个主要的对象,建议区域之间互相高度覆盖,因此有很相似的RoI-pooled特征。作为一个结果,Fast R-CNN中心图片训练产生小变量的采样,对于堆积训练来说是不希望了有的。出于这个原因,我们当前的实验中我们使用了RoI中心的原始R-CNN来替换Fast R-CNN。

我们的R-CNN按照如下实施。我们将上面在训练图片上训练的每类RPN来为每个类别预测边界框。这些预测框扮演的角色是依靠类的建议。对于每个寻览图片,最高得分的200个建议就是采样来训练一个R-CNN分类器。这个图像区域是从一个建议种构建的,包装成224*224的像素,然后放进分类网络种就像在R-CNN种那样。这个网络的输出包含两个全连接的姊妹层cls和reg,也是per-class 格式的。这个R-CNN的网络在训练集上使用一个Roi中心格式的256图片的小批量进行微调。对于测试,RPN产生了一个最高的200个建议用于每个类的预测,R-CNN网络被用来更新这些建议的得分和边界框的位置。

这个方法减少了top5定位错误率到10.6%(表13).这个是我们单模型在验证集上的结果。使用一个综合的网络对于分类和定位,我们在测试集上获得的top5定位错误率是9.0%。这个数值比ILSVRC14中最好的集过还要好,(表14中)他们是64%减少了他们的64%。这个集过赢得了ILSVRC2015图像定位人的第一名。

   

猜你喜欢

转载自www.cnblogs.com/yunshangyue71/p/11646904.html