在本文中,我们研究了卷积网络深度在大尺度图像识别设置中对其准确率的影响。我们的主要贡献是使用一个带有非常小(3x3)卷积滤波器的架构对增加深度的网络进行了彻底的评估,这表明通过将深度推进到16 - 19个权重层,可以实现对先前art配置的显著改进。
这些发现是我们2014年ImageNet挑战提交的基础,我们的团队在本地化和分类轨道上分别获得了第一和第二名。我们还表明,我们的表示可以很好地推广到其他数据集,在这些数据集上可以获得最先进的结果。我们已经公开了两个表现最好的ConvNet模型,以便于进一步研究计算机视觉中深度视觉表示的使用。
作者首先说CNN取得重大成就离不开这三点:
而在本文中,我们讨论了ConvNet架构设计的另一个重要方面—深度。为此,我们修复结构的其他参数,和稳步增长的深度网络通过添加更多的回旋的层,这是可行的由于使用非常小(3×3)卷积过滤器在所有层。
因此,我们想出更精确的事先架构,不仅实现了先进的准确性在ILSVRC分类和本地化的任务,但也适用于其他图像识别的数据集,使用时,他们甚至实现性能优良的一个相对简单的管道pipeline(如深线性SVM分类的特性不带微调)。我们已经发布了两个性能最好的模型,以促进进一步的研究。
在第2部分中,我们描述了我们的对流网结构。第3部分,主要是图像分类训练与评价。对第4部分中ILSVRC分类任务的配置进行了比较。第5部分是本文的结论。为了完整性,我们还在附录A中描述和评估了我们的ILSVRC-2014对象定位系统,并在附录B中讨论了将非常深入的特性推广到其他数据集。
为了测量增加的对网络深度在一个公平的设置带来的改善,我们所有的受Ciresan等人的启发,ConvNet层的配置也采用了相同的原则。在本节中,我们首先描述ConvNet配置的一般布局(第2.1节),然后详细说明评估中使用的具体配置。
①在训练中,我们的是络一个固定大小的输入224×224 RGB图像。我们所做的唯一预处理是从每个像素中减去在训练集上计算的平均RGB值。
②图像通过卷积层的堆栈传递,其中我们使用接受域很小的过滤器:3x3(这是捕捉左/右、上/下、中心概念的最小尺寸)。在其中一种配置中,我们还使用了11个卷积滤波器,它可以被看作输入通道的线性变换(后面是非线性)。卷积步长固定为1像素;空间填充是指经过卷积后保留空间分辨率,即3个卷积层的填充为1像素。
③后面由5个max-pooling层执行,它们遵循一些conv层(不是所有conv层都遵循max-pooling)。Max-pooling是在一个22像素的窗口上执行的,步长为2。
④所有隐藏层均使用ReLU。
本文计算的ConvNet配置如表1所示,每列一个。下面我们将用网名(A-E)来指代网络。所有配置都遵循第2.1节中给出的通用设计,仅在深度上有所不同:与网络A中的11个权重层不同(8 conv.和3 FC层)到网络E中的19个权重层(16个conv层和3个FC层)。conv.层的宽度(channel的数量)比较小,从第一层的64开始,每一层max-pooling后增加2倍,直到512。
网络的参数个数:
首先使用3层非线性激活函数来代替一个,使得函数更可分。然后,减少参数数量。
同时也有1x1的卷积层,近期在Network in Network论文中被使用。
主要介绍ConvNet的训练和验证评估。
初始化:由于初始化不好会由于深度网中的梯度不稳定而导致学习停滞。为了避免这个问题,我们从训练配置A(表1)开始,它足够浅,可以用随机初始化进行训练。然后,在训练更深入的架构时,我们初始化了前4个卷积层和最后3个与net A层完全连接的层(中间层是随机初始化的)。我们没有降低预初始化层的学习率,允许它们在学习过程中发生变化。
首先,将其向同性地重新缩放到预先定义的最小图像端,记为Q(我们也将其称为测试尺度)。我们注意到Q不一定等于训练量表S(如我们将在第4节中所示,对每个S使用几个Q值可以提高性能)。
然后,网络以类似于(Sermanet et al. 2014)的方式在重新缩放的测试图像上密集应用。即先将全连通层转换为卷积层(第一个FC层转换为7x7conv层,最后两个FC层转换为11conv层)。然后将得到的全卷积网络应用于整个(未裁剪的)图像。其结果是一个类得分映射,其中通道数等于类数,并具有依赖于输入图像大小的可变空间分辨率。
最后,为了得到图像的类分数的固定大小向量,对类分数映射进行平均池化。我们还增加了测试集的水平翻转图像;对原始图像和翻转图像的软最大值类后验进行平均,得到图像的最终得分。
利用C++ Caffe toolbox,在4个Titan Gpu上并行计算,比单独GPU快3.75倍,每个网络差不多2-3周。
首先,我们注意到在没有任何正则化层的情况下,使用本地正则化(A- LRN网络)并不能改善模型A。因此,我们没有在更深层次的架构中使用规范化。
第二,我们观察到的分类误差随深度增加事先:从11层至19层E。值得注意的是,尽管同样的深度,配置C(包含三个1x1 conv.层),执行比配置D,它使用3c3 conv.层在整个网络。这表明尽管非线性激活函数帮助(C比B更好),同样重要的是使用conv.过滤器捕捉到与非线性空间的上下文(D比C好)。我们架构的错误率当深度达到19层,但更深层次的模型可能是有益的更大的数据集。我们还将B与浅层神经网络网进行了比较,浅层网有5个5x5 conv层,并且浅层网由B衍生而来,将每对3x3 conv层替换为单一的5x5 conv层(接受域与2.3节解释的相同)。浅层网的top-1误差比B(在中央切割图像上)高7%,这证实了带有小过滤器的深度神经网络优于带有大过滤器的浅层网。
最后,训练时的尺度抖动(S-[256;512]),即使在测试时使用单一尺度,其效果也明显优于最小边固定(S = 256或S = 384)图像的训练。这证实了通过尺度抖动增强训练集确实有助于捕获multi-scale统计量。
A vs A-LRN:A-LRN结果没有A好,说明LRN作用不大。
A vs B,C,D,E:越深越好
A vs C:增加1*1filter,即增加额外的非线性确实提升效果
C vs D:3*3的filter比1*1filter要好,使用较大的filter能够捕捉更大的空间特征。
训练方法:在scale区间[256;512]通过scale增益来训练网络,比在固定的两个S=256和S=512,结果明显提升。Multi-scale训练确实很有用,因为ZF论文中,卷积网络对于缩放有一定的不变性,通过multi-scale训练可以增加这种不变性的能力。
scale jittering
它包括在测试图像(对应于不同的Q值)的多个经过重新缩放的版本上运行模型,然后对得到的类后验进行平均。考虑到训练和测试尺度的巨大差异导致性能下降,我们在三个测试图像大小上对固定S训练的模型进行了评估,接近于训练图像的大小:Q = {S 32, S, S + 32}。同时,训练时的尺度抖动使得网络在测试时可以应用于更大范围的尺度,因此Q = {Smin, 0.5(Smin + Smax), Smax}。
方法1:single-scale训练 S,multi-scale测试 {S-32,S,S+32}
方法2:multi-scale训练[Smin;Smax],multi-scale测试{Smin,middle,Smax}
结果:此处结果为B’
1 B vs B’, C vs C’,……:single-scale训练,利用multi-scale测试,有0.2%的top-5提升。
2 B-256 vs B-384 ……:single-scale在256和348上训练,无论用什么测试方法,结果基本上差不多。说明网络在单个scale上提取能力有限。
3 multi-scale训练,multi-scale测试,对于网络提升明显,D’和E’的top-5分类达到了7.5%。
我们将密集对流网评价与多作物评价进行了比较(详见3.2节)。我们还通过平均两种验证的最大产出来评价这两种评价技术的互补性。从图中可以看出,使用多种模型融合的效果略好于深度验证,这两种方法确实是互补的,因为它们的组合效果优于各自。
如上所述,我们假设这是由于卷积边界条件的不同处理。
通过结果求平均,融合上面不同网络的结果。
结果如表6所示。在提交ILSVRC时,我们只训练了单尺度网络和多尺度模型D(只微调了完全连接的层,而不是所有层)。所得到的7个网络的总体ILSVRC测试误差为7.3%。
提交之后,我们只考虑了两个性能最好的多尺度模型的集合(配置D和E),使用密集评价将测试误差降低到7.0%,使用密集和多作物联合评价将测试误差降低到6.8%。作为参考,我们的最佳性能单一模型达到7.1%的误差。
本文的结果有一些差距,感觉可能是训练平台和方法的原因,不同的训练平台和方法对于结果也有影响。
从表7可以看出,我们的very deep ConvNets明显优于上一代模型,在ILSVRC-2012和ILSVRC-2013比赛中取得了最好的成绩。我们的结果也与分类任务的赢家(GoogLeNet与与ILSVRC-2013中奖作品Clarifai相比,后者有外部培训数据和没有培训数据的情况下分别获得了11.2%和11.7%的成绩。这是值得注意的,考虑到我们的最佳结果是通过组合两个模型实现的——比大多数模型使用的模型要少得多ILSVRC提交。
本篇论文在附录也展开了对LOCALISATION EXPERIMENTS实验和对生成deep features的思考。