原文:https://arxiv.org/abs/1409.1556
2015年
摘要
在这项工作中,我们研究了在大规模的图像识别中卷积神经网络的深度对其准确度的影响。我们主要贡献是对使用非常小的卷积核(3× 3)架构的网络逐渐增加层数的全程评估,这表明通过将深度加到16-19个权重层可以实现对现有技术配置的显著改进。这些发现基于我们2014ImageNet 挑战赛的应用,我们团队分别获得了本地化第一名和分类跟踪的第二名。我们还表明,我们的表示也适用于其他数据集,用这个表示获得最新的结果。我们已经公开发布了两款性能最佳的ConvNet模型,以便于进一步研究计算机视觉中深度视觉表示的使用。
1.引言
卷积网络(ConvNet)最近在大规模图像和视频的识别(引用)方面已经取得了很大的成功,归功于大型公开的图像仓库(如ImageNet(引用))和高性能计算系统(如GPU或大规模分布式集群(引用))。特别是,ImageNet大规模视觉识别挑战(ILSVRC)(引用)对深度视觉识别架构的进步起了很重要的作用,它已经成为几代大规模分类系统的测试平台,从高维浅层特征编码(引用)(ILSVRC2020的获胜者)到深层卷积网络(引用)(ILSVRC2012的获得者)。
随着卷积网络在计算机视觉领域越来越成为一种商品,许多人尝试改进K等原始体系架构以便获得更高的准确性。比如,2013年ILSVRC最佳性能提交在第一个卷积层使用较小的感受野(卷积核?)和较小的步长。另一个改进在整幅图和多规模(引用)进行密集地训练和测试网络。本文提出另一个卷积网络架构设计的重要方面——层数。最后,我们固定了体系的其他参数,并且通过增加更多的卷积层来逐步增加网络的深度,这种方法可行归因于在所有层使用中都使用了非常小的(3× 3)卷积核。
结果,我们提出了更加准确的卷积网络架构,不仅实现了在ILSVRC分类和定位任务目前最好的准确度,而且可以应用到其他图像识别的数据集中,即使使用本架构作为相对简单的通道(例如,由没有经过微调的线性SVM分类的深度特征)也可以实现很棒的性能。我们已经发布了两个最好的模型以促进进一步的研究。
本文的其余的部分如下:在第2部分,我们介绍了我们卷积网络的配置。接着第3部分展示了图像分类训练的细节和评估,第4部分关于ILSVRC分类任务的配置比较。第5部分总结本文。为了完整性,我们还在附录A中介绍和评估了ILSVRC2014目标检测系统,并且在附录B讨论了其他数据集的深层特征的泛化能力。最后,附录C列出了论文主要的修订版本。
2.ConvNet配置
为了在公平的环境评估增加卷积网络层数带来的改进,我们卷积网络所有层的配置使用和C等人同样的规则。这部分,我们首先在2.1部分介绍了卷积网络配置的通用布局,然后在2.2部分细化了在评估中使用的具体配置。然后在2.3讨论了我们的设计选择并与现有技术进行比较。
2.1架构
训练期间,卷积网络的输入图片固定大小为224× 224RGB。我们唯一做的预处理是计算训练集中每像素减去计算的RGB平均值。图像经过一堆卷积核为3× 3(捕获左/右,上/下,中心区域的最小尺寸)卷积层堆。其中一个配置中,我们使用了1× 1卷积核,可以看做是输入通道的线性转换(之后是非线性)。卷积步长固定为1;卷积层输入的空间填充是卷积后保留的空间分辨率,对3× 3卷积层来说填充是一个像素。空间池化是由5个最大池化层进行的,跟在一些卷积层的后面(并不是所有的卷积层后面都跟着池化层)。最大池化层是的核为2× 2大小,步长为2。
卷积层(架构不同深度不同)之后是3个全连接层(FC):前两个每个有4096个通道,最后一个产生1000路ILSVRC分类,因此包含1000个通道(每个通道是一个类别)。最后一层是softmax层。所有网络中的所有全连接层配置都一样。
所有的隐层都用修正非线性单元(ReLU)。注意,我们网络只有一个包含局部响应正则化(LRN)(引用);会在第4部分展示,这种正则化不会改善ILSVRC数据集的性能,但会增加内存消耗和计算时间。在适用的情况下,LRN层的参数是(K等)的参数。
2.2配置
本文评估的卷积网络配置如表1每列所示。接下来我们会通过名字(A-E)来指代网络。所有配置都遵循2.1节中提出的通用设计,唯一不同的是深度:从网络A(8个卷积层3个全连接层)的11个权重层到网络E(16个卷积层和3个全连接层)19个权重层。卷积层的宽度(通道的数量)很小,从第一层64然后在每个最大池化层后逐步增加2倍直到512.
表1和表2截图地址:https://blog.csdn.net/wspba/article/details/61625387
表2我们列出了每个配置的参数数量。尽管深度较深,但是我们网络中的权重数量并不比宽的卷积层和感受野浅层网络(144M个权重(S等))中权重数多。
2.3讨论
我们卷积网络的配置与ILSVRC-2012(K等)和ILSVRC-2013(Z等)比赛中有很大的不同。他们在第一个卷积层使用使用相对大卷积核(K等步长为4的11×11,Z等步长为2的7×7),而我们在整个网络中使用很小的3×3卷积核,对输入每个像素进行卷积处理(步长为1)。显然,两个3×3卷积层(中间没有空间池化)和一个5×5卷积层效果一样;同理,3个3×3和一个7×7感受野一样。
让我们看看用3个3×3卷积层而不是一个7×7会发生什么。首先,我们引入3个非线性修正层而不是一个使得决策函数更具有辨别力。其次,我们减少了参数:假设一个三层3×3卷积堆的输入和输出都有C个通道,这个堆有3(32C2 )=27C2 个权重参数化;与此同时,一个7×7卷积层将会需要72C2 = 49C2 个参数,比上面多超过81%。这可以被看做是对7×7卷积核强加正则化,迫使它们通过3×3卷积核(之间注入非线性)进行分解。
C等之前已经使用过小的卷积核,但是他们的网络远没有我们的深,并且他们也没有在大规模的数据集ILSVRC上评估。G等曾在街道牌号识别的任务中应用了深层卷积网络(11个权重层),并证明了增加深度使模型能产生更好的性能。ILSVRC-2014分类任务最佳模型GoogleNet,虽然区别于我们的模型,但相似的是,它也是基于非常深的卷积网络(22个权重层)和小卷积核(除了3×3卷积核,他们还用了1×1和5×5卷积)。但他们的网络拓扑远比我们的复杂,而且为了降低计算量,特征图的空间分辨率在第一层衰减的很严重。4.5节将会提及,我们的模型在单一网路分类准确率上优于GoogleNet网络。
3.分类框架
在上一章节我们展示了我们网络配置的细节。这一章,我们将介绍分类卷积网络的训练和评估。
3.1训练
卷积网络的训练过程基本按照K等的进行的(除了从多尺度训练图像上采样裁切的输入图像,稍后解释)。也就是说,通过使用含动量小批梯度下降(基于反向传播)优化多元逻辑回归来对模型进行训练。小批大小为256,动量为0.9。通过权值衰减( L2惩罚系数设置为5 . 10−4. )以及对前两个全连接层执行dropout(dropout比率设置为0.5)来对训练进行正则化。初始学习率设置为10−2,然后当验证集准确率稳定时将学习率降低10倍。学习率总共降低了3次,训练一共进行了370K次迭代(74个epoch)。我们推测尽管和K等相比,我们的网络有更多的参数和更深的层,但我们网络达到收敛只需更少的epoch来收敛,这是因为:(a)更深的层和更小的卷积核隐式增强了正则化;(b)某些层执行了预初始化。
初始化网络权重很重要,因为不合适的初始化将会阻碍网络的学习。为了避免这个问题,我们从配置A(如表1)训练开始,网络足够浅以至于能使用随机初始化进行训练。然后训练更深的结构时,我们对前四个卷积层和最后3个全连接层使用网络A来初始化(中间层使用随机初始化)。我们没有降低预初始化层的学习率,使其在训练过程中能改变。对于随机初始化的权重,我们从均值为0方差为10−2的正态分布中采样。值得注意的是,在文章提交后,我们发现可以使用G等中的随机初始化程序对权重进行初始化而不需要进行预训练。
卷积网络输入图像的固定大小(224×224)从经过尺寸缩放的训练图像(每张图片的每一次SGD迭代时裁剪一次)上进行随机裁剪而得。为了进一步对训练集进行数据扩增,裁剪图像进行随机的水平翻转和随机的RGB颜色转换。训练图像的尺寸缩放将在后面进行解释。
训练图片大小 用S代表经过各项同性缩放的训练图像的最小边,卷积网络的输入就是从这些图片里裁剪得来的(我们也称S为训练规模)。当裁剪大小固定为224×224时,原则上S可以取任意不小于224的值:因为当S等于224时,裁减会捕获整幅图的统计信息,可以完全覆盖图像的最小边;当S ≫224时,裁剪会对应图像的一小部分,包含一个小对象或者对象的局部。
我们考虑两种方法来设置训练规模S。第一种方法是,针对单规模图像的训练(注意:在裁剪图像内的内容仍可以表示多规模图像的统计信息)。在我们的实验中,我们评估了两种固定尺寸训练的模型:S= 256(前人经常使用的(引用))和S=384。给定卷积网络配置我们先用S=256训练网络。为了加速S=384的训练。我们使用S=256预训练权重进行初始化,并且使用一个很小的初始学习率:10−3。
第二种设置S的方法是多规模训练,每个训练图像从某个范围 [Smin, Smax ](最小值为256,最大值为512)随机抽取S来缩放。由于图片中的对象可能是不同大小的,在训练期间把这个考虑在内是有利的。这也可以视为通过抖动扩增数据集,使得一个单一模型能够识别大范围的对象。考虑到训练速度,我们使用固定S=384预训练模型同等配置对一个单一模型的所有层进行微调,来训练多规模模型。
3.2测试
在测试阶段,给定一个训练好的卷积网络和一张输入图片,用如下的方法进行分类。首先,图像的最小边被各向同性缩放成预定义的大小,设为Q(我们也称此为测试尺寸)。我们注意到Q并一定要与训练尺寸S相同(第4部分会提及,对于一个S使用不同的Q有助于提升性能)。然后,根据S的方法将网络密集的应用在经过尺寸缩放的测试图像上。也就是说,先将全连接层转换成卷积层(第一个FC转换成7×7的卷积层,后两个FC全连接层转换成1×1的卷积层),再将这样的全卷积网络运用到整幅图像上(未裁剪的)。结果是一个分类得分图,通道数和类别数相同,空间分辨率依赖于图像输入时大小。最终,为了得到图片固定大小的分类得分矢量,分类得分图进行进行空间平均化(求和——池化)。我们也通过水平翻转来增大测试数据集;在原始图像和翻转图像上的softmax分类概率的平均值作为这幅图的最终得分。
由于测试阶段在整幅图上使用了全卷积网络,因此不需要对图像进行多个裁剪取样(引用),因为网络对每个裁剪的重新计算会使效率降低。与此同时,使用正如GoogleNet所做的,使用大量的裁剪图片可以提升准确度,因为和全卷积网络相比,它能生成关于输入图片更好的采样。同样,由于不同的卷积边界条件,多裁剪评估与密度的评估是互补的:当把卷积网络用到裁剪中时,卷积特征图使用0填充,而使用密度评估时,对于同样裁剪图片的填充自然来源于图像邻近的部分(归因于卷积和空间池化),这大大增加了整个网络的感受域,因此会捕获更多的上下文。虽然我们相信在实践中,增加多重裁剪计算时间并不会潜在地获得准确率,作为参考,我们也评估了我们使用的每规格50张裁剪图像的网络(5×5大小2个步长),3个规模总共150张裁剪图片,这个S等中使用的4种尺寸共144张裁剪图片是可比的。
3.3实现细节
我们的实验基于公开的C++Caffe工具包(引用)(2013年12月版),但包含一些重要的修改,让我们能在一个单一系统的多个GPU上进行训练和评估,以及训练和评估多规格原始图片(未裁剪)(如上所述)。多GPU训练利用数据并行,通过将每批训练图像分给多个GPU进行并行运算。计算完每批的梯度后,再求平均值来作为总的梯度。在多个GPU上的梯度计算是同步的,所以和使用一个GPU训练的结果是一致的。
虽然K等提出了更加复杂的方法来加快训练卷积网络,那就是在网络的不同层上利用模型和数据并行,而我们发现但是提出的相对简单的方案在现成的4块GPU系统上已经比单GPU提升了3.75倍的计算速度。在配有4块NVIDIA Titan Black GPU的系统上,训练一个单一网络需要2-3周的时间。
4.分类实验
数据集 这部分,我们展示了通过已描述的架构在ILSVRC-2012数据集(在ILSVRC 2012-2014挑战赛上使用的)上图像分类的结果。这个数据集有1000个分类,被分成3块:训练集(1.3M张),验证集(50K)和测试集(100K张有标签的图像)。我们用两种方法进行分类评估:top-1和top-5错误率。前者是多类分类错误率,如错误分类图片的百分比;后者是ILSVRC上使用的主要评估标准,即真实类别不在top-5预测类别之中的图像百分比。
对于大部分实验,我们使用验证集作为测试集。某些实验也在测试集上进行,并提交给官方ILSVRC服务器作为VGG团队参加ILSVRC-2014竞赛。
4.1单一规模评估
我们先评估单一尺度上使用2.2节中描述的层的配置独立卷积网络模型的性能。测试图片的大小如下:对于固定的S,令Q=S;S抖动时,S ∈ [Smin, Smax]设置Q = 0.5(Smin + Smax) 。结果如表3所示。
首先,注意使用局部响应标准化(A-LRN网络)没有改善未使用任何标准化的模型A。因此我们在更深的结构(B-E)不再使用标准化。
其次,我们观察到,随着卷积网络层数的增加分类错误降低了:从A中11层增加到E中的19层。值得注意的是,尽管深度相同,C(包含3个1×1卷积层)不如整个网络使用3×3卷积层的D模型。表明增加非线性层对网络的提升有帮助(C比B好),通过使用非平凡感受域卷积核对于捕获上下文信息很重要(D比C好)。当我们模型深度增加到19层时我们架构的错误率达到饱和,但对更大的数据集可能更深的网络更好。我们比较了B网络和一个使用5个5×5卷积层的浅层网络进行比较,从B衍生出来的,用一个5×5卷积层代替每对3×3卷积层(和2.3节的感受域相同)。浅层网络的top-1错误率为7%高于B(在中心裁剪上),证明使用小卷积核的深层网络优于使用大卷积核的浅层网络。
最后,在训练期间图像最小边区域内变化(S ∈ [256; 512] )比固定大小结果要好的多,即使在测试期间使用单一规模。表明了使用范围变化来扩增训练集对捕获对规模图像统计信息确实很有用。
4.2多尺度评估
在评估卷积网络的单一规模后,我们现在评估在测试期间的规模抖动。它包含在一张测试图像多个缩放版本运行模型(对应Q的不同值),然后对结果类的后验进行平均。考虑到训练和测试规模之间的巨大差异导致性能下降,我们用固定的S训练的模型评估3个测试图像大小,接近训练:Q ={S − 32, S, S + 32} 。同时,训练期间的尺寸抖动允许网络在测试期间更广泛的尺度范围,因此模型用变量S ∈ [Smin; Smax] 在更大的尺寸范围Q = {Smin, 0.5(Smin + Smax), Smax}上评估。
表4的结果表明测试时尺寸抖动导致了更好的性能(与在单一尺度上相同模型的评估相比,如表3所示)。如前所述,最深的配置(D和E)执行最佳,并且尺寸抖动优于使用固定最小边的训练。我们在验证集上的最佳单网络性能为top-1和top-5分别为24.8%,7.5%(表4用粗体表示)。在测试集上,配置E实现了top-5位7.3%的错误率。
4.3多裁剪评估
在表5中,我们比较了密卷积网络评估和多裁剪图像评估(细节参见3.2)。我们通过平均其softmax输出来评估两种技术的互补性。可以看出,使用多裁剪图像比密集评估略好,而且这两种方确实互补,因为它们的组合由于其中的每一种。如上所述,我们假设这归因于卷积边界条件的不同处理。
4.4卷积网络融合
到目前为止,我们评估了单个卷积网络的性能。这部分实验中,我们通过对softmax类后验平均,组合了几种网络模型的输出。由于模型的互补性,这提高了性能,并在2012年(K等)和2013年(Z等)ILSVRC的顶级提交中使用。
结果如表6所示。在ILSVRC提交的时候,我们只训练了单规模网络,以及一个多尺度模型D(尽在全连接层进行微调而不是所有层)。由此产生的7个网络组合具有7.3%的ILSVRC测试误差。在提交之后,我们只考虑了两个最佳表现的多尺度模型(配置D和E)的组合,使用密集评估将测试误差降到7.0%,使用多裁剪图像评估降到6.8%。作为参考,我们最佳表现的单模型实现7.1%的误差(如表5的模型E)。
4.5与现有技术的比较
最后,我们在表7中把我们的结果和最新的技术相比较。在ILSVRC-2014挑战的分类任务(R等)中,我们的VGG团队获得第二名,使用7个模型的组合获得了7.3%的误差。提交之后,我们使用2个模型的组合将错误率降到6.8%。
从表7可以看出,我们非常深的卷积网络显著优于前一代模型,在ILSVRC-2012和ILSVRC-2013竞赛中取得了最好的结果。我们的结果可以和分类任务的获胜者(GoogleNet具有6.7%错误率)相匹敌,并且远优于ILSVRC——2013获胜者Clarifai的提交结果,其使用外部数据取得了11.2%的错误率,不使用外部数据则为11.7%。考虑到我们最好的结果是组合两个模型实现的,这一点非同凡响-明显少于大多数提交的模型。就单网络性能而言,我的架构实现了最好的结果(7.0%的测试误差),比单个GoogleNet少了0.9%。值得注意的是,我们并没有偏离LeChun等的经典卷积网络架构,只是通过通过加深深度改变它。
5.结论
在这项工作中,我们评估了非常深的卷积网络(最多19个权重层)用于大规模图像分类。已经证明,表示深度有利于分类精度,并且大大增加传统卷积网络架构(LeChun等)的深度可以实现ImageNet挑战数据集上的最佳性能。在附录中,我们也显示了我们的模型很好地泛化到各种各样的任务和数据集上,可以匹敌甚至超越更复杂的识别流程,其构建围绕深度很小的图像表示。我们结论再次证明了深度在视觉表示中的重要性。
致谢
这项工作得到ERC授权的VisRec编号228180的支持。我们非常感谢NVIDIA公司捐赠GPU为此研究使用。