本文的工作 ,在大规模图像识别背景下,我们探究了卷积网络的深度对图像识别的准确性。我们的主要贡献是使用很小的(3×3)卷积滤波器的架构对深度不断增加的网络进行了彻底评估,这表明通过将深度推至16–19个权重层,可以实现对现有技术配置的显著改进。这些发现是我们2014年ImageNet挑战赛提交的基础,我们的团队在图像定位和图像分类方面分别获得了第一名和第二名。我们还表明,我们的表示可以很好地推广到其他数据集,在那里它们可以获得当前最好的结果。我们已经公开了我们的两个性能最好的ConvNet模型(VGG-16,VGG-19),以便于在计算机视觉领域中进一步研究深度视觉模型的使用。
总结:
本文的任务是探究卷积网络的深度对图像识别准确性的影响。
贡献:引入了3*3的卷积核
卷积网络(Convolutional networks)最近在大规模图像和视频识别方面取得了巨大成功(Krizhevsky等人,2012;Zeiler&Fergus,2013;Sermanet等人,2014;Simonyan&Zisserman,2014),这是由于大型公共图像存储库,如ImageNet(Deng等人,2009)和高性能计算系统,例如GPU或大规模分布式集群(Dean等人,2012)才有了这些成就。特别是,ImageNet大规模视觉识别挑战(ILSVRC)(Russakovsky等人,2014)在深度视觉识别架构的发展中发挥了重要作用,ILSVRC已经成为几代大规模图像分类系统的试验台。从高维浅特征编码(Perronnin等人,2010)(ILSVRC-2011获奖者)到深度卷积网络(Krizhevsky等人,2012)(ILSVRC-2012获奖者)。
随着ConvNets越来越成为计算机视觉领域的一种必需品,已经进行了许多尝试来改进Krizhevsky等人(2012)的原始架构,以实现更好的准确性。例如,向ILSVRC-2013提交的表现最好的ConvNets(Zeiler&Fergus,2013;Sermanet等人,2014)在第一个卷积层使用了较小的接收窗口大小(即卷积核的 size)和较小的第一卷积层步长(卷积层的 stride)。另一系列改进涉及在整个图像和多个尺度上密集地训练和测试网络(Sermanet al.,2014;Howard,2014)。在本文中,我们讨论了ConvNet架构设计的另一个重要方面——深度。为此,我们固定了架构的其他参数,并通过添加更多卷积层来稳定地增加网络的深度,这是可行的,因为在所有层中使用了非常小的(3×3)卷积滤波器。
因此,我们设计出了更精确的ConvNet架构,它不仅在ILSVRC分类和定位任务上达到了最先进的精度,而且还适用于其他图像识别数据集,其中它们甚至在用作相对简单的管道的一部分时(例如,由线性SVM分类的深度特征而不进行微调)也获得了优异的性能。我们发布了两个性能最佳的模型,以便于进一步研究。
论文的其余部分组织如下。在第2节中,我们描述了ConvNet配置。在第3节中,介绍图像分类训练和评估的细节。第4节中,在ILSVRC分类任务中比较不同网络的实验结果。第5节总结了本文。为了完整性,我们还在附录A中描述和评估了ILSVRC-2014对象定位系统,并在附录B中讨论了将非常深入的特征推广到其他数据集的问题。最后,附录C包含了主要论文修订列表。
总结:
在之前对AlexNet的改进涉及两个方面,一个是改变核的大小和stride。另一个是在整个图像上和在多尺度图像上密集地训练和测试网络。(针对第二点多尺度图像在下文有详细地解释)
由于增加了网络层的深度和使用了(3x3)的卷积核,大大提高了ConvNet的准确性。
为了在公平的环境下衡量ConvNet深度增加带来的改善,我们所有的ConvNet层配置都是使用相同的原理设计的,灵感来自Ciresan等人(2011);Krizhevsky等人(2012)。在本节中,我们首先描述ConvNet配置的一般布局(第2.1节),然后详细说明评估中使用的具体配置(第2.2节)。然后在第2.3节中讨论我们的设计选择并与现有技术进行比较。
在训练期间,ConvNets的输入是固定大小的224×224 RGB图像。我们所做的唯一预处理是从每个像素中减去在训练集上计算的平均RGB值。图像通过一堆卷积(conv.)层,在那里我们使用具有非常小的感受野的滤波器:3×3(这是捕捉左/右、上/下、中心概念的最小尺寸)。在其中一种配置中,我们还使用了1×1卷积滤波器,这可以看作是输入信道的线性变换(随后是非线性)。对于1x1的卷积滤波器,stride被固定为1;当前卷积层输入图像的padding应当遵循的原则是:在卷积后空间分辨率得以保留。即:对于3*3卷积层padding应当是1像素。空间池化由五个最大池化层执行,最大池化层在一些卷积层之后(并不是所有的卷积层后都有最大池化层)。最大池化层的窗口大小是2像素,stride 也是2 像素。
卷积层的堆叠(在不同的架构中具有不同的深度)后面是三个完全连接(FC)层:前两个层各有4096个信道,第三个层执行1000路ILSVRC分类,因此包含1000个信道(每个类一个)。最后一层是soft-max层。在所有网络中,全连接层的配置是相同的。
所有隐藏层都配备了Relu激活函数(ReLU(Krizhevsky等人,2012))。我们注意到,我们的网络(除了一个)都不包含本地响应归一化(LRN)归一化(Krizhevsky等人,2012):如第4节所示,这种归一化并不能提高ILSVRC数据集的性能,但会导致内存消耗和计算时间增加。如果使用,LRN层的参数为AlexNet那篇文章中的(Krizhevsky等人,2012)。
在本文中评估的几个网络的配置如表1所示,每一列表示一个网络。在下文中,我们将通过网络的名称来引用网络(A-E分别表示一个网络)。所有评估的网络均遵循第2.1节中给出的通用设计。
并且仅在深度上不同:从网络A中的11个权重层(8个卷积层和3个全连接层)到网络E中的19个权重层(16个权重层3个全连接层)。卷积层的宽度(通道的数量)相当小,从第一层的64开始,然后在每个最大池化层之后增加2倍,直到达到512。
在表2中,我们报告了每个配置的参数数量。尽管深度很大,但我们的网中的权重数量并不大于具有更大卷积层宽度和更大感受野的较浅深度卷积网络中的数量(144M权重(Sermanet al.,2014))。
我们的ConvNet配置与ILSVRC-2012(Krizhevsky等人,2012)和ILSVRC-2013(Zeiler&Fergus,2013;Sermanet等人,2014)比赛中表现最好的参赛作品中使用的配置截然不同。我们没有在第一个卷积层中使用相对较大的感受野(例如,步长为4 的11×11(Krizhevsky等人,2012),或步长为2的7×7(Zeiler&Fergus,2013;Sermanet等人,2014)),而是在整个网络中使用非常小的3×3感受野,进行卷积操作(步长为1)。很容易看出一堆两个 3×3 卷积层(中间没有空间池)的有效感受野为 5 × 5;(即两个3x3的卷积层等价于一个5x5的卷积层,只是多一个非线性层relu.)三个这样的层有一个 7×7 的有效感受野。那么我们通过使用例如三个 3×3 conv 的堆栈获得了什么。层而不是单个 7×7 层?首先,我们合并了三个非线性校正层而不是一个,这使得决策函数更具辨别力。其次,我们减少了参数的数量:假设三层 3×3 卷积堆栈的输入和输出都有 C 个通道,堆栈由 3 (32C2) = 27C2 个权重参数化;同时,单个 7×7 转换。层将需要 72C2 = 49C2 个参数,即多 81%。这可以看作是对 7 × 7 conv filter 进行正则化。,迫使它们通过 3×3 滤波器进行分解(在两者之间注入非线性)。
1×1 conv.filter(配置 C,表 1)是一种在不影响卷积层的感受野的情况下增加决策函数非线性的方法。尽管在我们的例子中,1×1 卷积本质上是对相同维度空间的线性投影(输入和输出通道的数量相同),但Relu引入了额外的非线性。应该注意的是 1×1 卷积层最近被用于 Lin 等人的“Network in Network”架构中。 (2014)。
Ciresan 等人以前使用过小型卷积滤波器。 (2011),但他们的网络明显不如我们的深,而且他们没有在大规模 ILSVRC 数据集上进行评估。古德费洛等人。 (2014) 将深度 ConvNets(11 个权重层)应用于街道号码识别任务,并表明增加的深度会带来更好的性能。GoogLeNet (Szegedy et al., 2014) 是 ILSVRC-2014 分类任务中表现最好的条目,它是独立于我们的工作开发的,但相似之处在于它基于非常深的 ConvNets(22 个权重层)和小卷积过滤器(除了 3 × 3,它们还使用 1 × 1 和 5 × 5 卷积)。然而,他们的网络拓扑结构比我们的更复杂,并且在第一层中更积极地降低特征图的空间分辨率以减少计算量。正如第4.5节中所示,我们的模型优于GoogLeNet (2014) 在单网络分类精度方面。
在上一节中,我们介绍了网络配置的详细信息。在本节中,我们描述了分类 ConvNet 训练和评估的细节。
ConvNet 训练过程通常遵循 Krizhevsky 等人。 (2012)(除了对训练图像的进行多尺度裁剪进行采样,稍后解释)。即,训练是通过使用具有动量的小批量梯度下降(基于反向传播(LeCun 等人,1989))优化多项逻辑回归目标来进行的。批量大小设置为 256,动量为 0.9。训练通过权重衰减(L2 惩罚乘数设置为 5 · 10−4)和前两个全连接层的丢失正则化(丢失率设置为 0.5)进行正则化。学习率最初设置为 10-2,然后当验证集准确率停止提高时降低 10 倍。总的来说,学习率降低了 3 倍,并在 370K 次迭代(74 个 epoch)后停止学习。我们推测尽管与 (Krizhevsky et al., 2012) 相比我们的网络参数数量更多且深度更大,网络需要更少的 epoch 来收敛。由于 (a) 更深的深度和更小的conv.filter size 引入了隐式正则化; (b) 某些层的预初始化。
网络权重的初始化很重要,因为糟糕的初始化会由于深度网络中梯度的不稳定性而停止学习。为了避免这个问题,我们开始训练配置 A(表 1),浅层网络通过随机初始化进行训练。然后,在训练更深层的架构时,我们用网络 A 的层初始化前四个卷积层和最后三个全连接层(中间层是随机初始化的)。我们没有降低预初始化层的学习率,允许它们在学习过程中发生变化。对于随机初始化(如果适用),我们从具有零均值和 10−2 方差的正态分布中采样权重。偏差初始化为零。值得注意的是,在提交论文后,我们发现可以使用 Glorot & Bengio (2010) 的随机初始化程序在没有预训练的情况下初始化权重。
为了获得固定大小的 224×224 ConvNet 输入图像,它们是从重新缩放的训练图像中随机裁剪的(每次 SGD 迭代每个图像裁剪一次)。为了进一步扩充训练集,作物进行了随机水平翻转和随机 RGB 颜色偏移(Krizhevsky 等人,2012 年)。下面解释了训练图像重新缩放。
**Training image size.**设 S 为各向同性缩放(同性缩放是指等比例缩放)训练图像的最小边,从中裁剪了 ConvNet 输入(我们也将 S 称为train scale)。虽然裁剪尺寸固定为 224 × 224,原则上 S 可以取任何不小于 224 的值:对于 S = 224,裁剪将捕获整个图像的统计信息(在最小边的统计信息),完全跨越训练图像的最小边;对于 S ≫ 224,裁剪将对应于图像的一小部分,包含一个小对象或对象部分。
我们考虑两种设置train scale S 的方法。第一种是固定 S,这对应于单尺度训练(请注意,采样作物中的图像内容仍然可以表示多尺度图像统计)。在我们的实验中,我们评估了在两个固定尺度下训练的模型:S = 256(已在现有技术中广泛使用(Krizhevsky 等人,2012 年;Zeiler 和 Fergus,2013 年;Sermanet 等人,2014 年))和 S = 384。给定一个 ConvNet 配置,我们首先使用 S = 256 训练网络。为了加速 S = 384 网络的训练,它使用 S = 256 预训练的权重进行初始化,然后我们使用较小的初始值学习率为 10−3。
设置 S 的第二种方法是多尺度训练,其中每个训练图像通过从特定范围 [Smin, Smax] 随机采样 S 来单独重新缩放(我们使用 Smin = 256 和 S max = 512)。由于图像中的对象可以有不同的大小,因此在训练期间考虑到这一点是有益的。这也可以看作是通过尺度抖动来增强训练集,其中训练单个模型以识别各种尺度的对象。出于速度原因,我们通过微调具有相同配置的单尺度模型的所有层来训练多尺度模型,并使用固定 S = 384 进行预训练。
在测试时,给定训练好的 ConvNet 和输入图像,它按以下方式分类。首先,它被各向同性地重新缩放到预定义的最小图像边,表示为 Q(我们也将其称为测试比例)。我们注意到 Q 不一定等于训练规模 S(正如我们将在第 4 节中展示的那样,对每个 S 使用多个 Q 值可以提高性能)。然后,网络以类似于 (Sermanet et al., 2014) 的方式在重新缩放的测试图像上密集应用。即,全连接层首先转换为卷积层(第一个 FC 层转换为 7×7 转换层,最后两个 FC 层转换为 1×1 转换层)。然后将生成的全卷积网络应用于整个(未裁剪的)图像。结果是一个类别得分图,其通道数等于类别数,并且空间分辨率可变,具体取决于输入图像大小。最后,为了获得图像的类分数的固定大小向量,类分数图在空间上进行平均(sum-pooled)。我们还通过水平翻转图像来扩充测试集;对原始图像和翻转图像的 soft-max 类后验进行平均以获得图像的最终分数。
由于全卷积网络应用于整个图像,因此无需在测试时对多个裁剪物进行采样 (Krizhevsky et al., 2012),多次裁剪这样效率较低,因为它需要为每个裁剪物重新计算网络。同时,使用大量裁剪图片,如 Szegedy 等人所做的那样。 (2014),可以提高准确性,因为与全卷积网络相比,它可以对输入图像进行更精细的采样。此外,由于不同的卷积边界条件,多裁剪评估与密集评估是互补的:当将 ConvNet应用于裁剪评估时,卷积特征图用零填充,而在密集评估的情况下,相同裁剪的填充自然来来自图像的相邻部分(由于卷积和空间池),这大大增加了整个网络的感受野,因此捕获了更多的上下文。虽然我们认为在实践中增加多种裁剪物的计算时间并不能证明准确性的潜在收益是合理的,但作为参考,我们还使用每个尺度 50 个裁剪物(5 × 5 规则网格和 2 个翻转)来评估我们的网络,总共 150 个超过 3 个尺度的裁剪物,这与 Szegedy 等人使用的超过 4 个尺度的 144 种作物相当。 (2014)。
我们的实现源自公开可用的 C++ Caffe 工具箱(Jia,2013 年)(2013 年 12 月分支),但包含许多重大修改,使我们能够对安装在单个系统中的多个 GPU 进行训练和评估,以及作为训练和评估多尺度(如上所述)的全尺寸(未裁剪)图像。多 GPU 训练利用数据并行性,通过将每批训练图像分成几个 GPU 批次,在每个 GPU 上并行处理来执行。在计算出 GPU 批次梯度后,对它们进行平均以获得完整批次的梯度。梯度计算在 GPU 之间是同步的,因此结果与在单个 GPU 上进行训练时的结果完全相同。
虽然最近提出了更复杂的加速 ConvNet 训练的方法 (Krizhevsky, 2014),这些方法对网络的不同层采用模型和数据并行性,但我们发现我们概念上更简单的方案已经提供了 3.75 倍的加速与使用单个 GPU 相比,现成的 4-GPU 系统。在配备四个 NVIDIA Titan Black GPU 的系统上,训练单个网络需要 2-3 周,具体取决于架构。
在本节中,我们展示了所描述的 ConvNet 架构在 ILSVRC-2012 数据集(用于 ILSVRC 2012-2014 挑战赛)上取得的图像分类结果。该数据集包括 1000 个类别的图像,分为三组:训练(130 万张图像)、验证(5 万张图像)和测试(10 万张带有保留类标签的图像)。分类性能使用两种度量来评估:top-1 和 top-5 错误。所谓Top-1 error-rate就是使用预测结果和正确结果进行对比,如果相同则表示预测正确!相比而言,Top-5 error-rate 就是使用预测结果的Top-5(分类结果标签的前五个)与正确结果进行对比,如果五个之中有一个正确那么就认为分类器预测结果正确。对于大多数实验,我们使用验证集作为测试集。某些实验也在测试集上进行,并将实验的结果作为ILSVRC-2014比赛的“VGG”团队参赛作品提交给ILSVRC官方服务器(Russakovsky等人,2014)。
我们首先使用第 2.2节中描述的层配置在单一尺度上评估单个 ConvNet 模型的性能。测试图像大小设置如下:固定S时,Q=S;当S ∈ [Smin, Smax]时,Q = 0.5(Smin + Smax)。结果如表3所示。
首先,我们注意到使用局部响应归一化(A-LRN 网络)和没有改进 不带任何归一化层的模型 A。因此,我们不在更深层次的架构(B-E)中使用归一化。
其次,我们观察到分类误差随着 ConvNet 深度的增加而减少:从 A 中的 11 层到 E 中的 19 层。值得注意的是,尽管深度相同,配置 C(包含三个 1×1 卷积层),性能比使用 3×3 conv 的配置 D 差。层贯穿整个网络。这表明虽然额外的非线性确实有帮助(C 优于 B),但使用具有非平凡感受野的conv.filters(D 优于 C) 捕获空间上下文也很重要。当深度达到 19 层时,我们架构的错误率会饱和,但更深的模型可能对更大的数据集有益。我们还将网络 B 与具有五个 5×5 卷积层 的浅网络进行了比较。它是通过把一对 3×3 conv.filter 替换为一个5x5的conv.filter 从 B 派生的(能替换的原理参考2.3节)。浅层网络的 top-1 错误率比 B(在中心裁剪上)高 7%,这证实了带有小过滤器的深网优于带有较大过滤器的浅网。
最后,训练时的尺度抖动 (S ∈ [256; 512]) 比在具有固定最小边的图像上训练(S = 256 或 S = 384)产生明显更好的结果,即使在测试时使用单个尺度也是如此。这证实了通过尺度抖动增加训练集确实有助于捕获多尺度图像统计数据。
4.2 MULTI-SCALE EVALUATION(测试时使用不同规模的图片)
在单一尺度上评估了 ConvNet 模型后,我们现在评估测试时尺度抖动的影响。它包括在测试图像的几个重新缩放版本(对应于不同的 Q 值)上运行一个模型,然后对生成的类后验概率进行平均。考虑到训练和测试尺度之间的巨大差异会导致性能下降,使用固定 S 训练的模型在三种测试图像尺寸上进行评估,接近训练图像尺寸:Q = {S − 32, S, S + 32} .同时,训练时的尺度抖动使得网络在测试时可以应用于更广泛的尺度,因此训练的模型用变量S∈[Smin; Smax] 在更大范围的尺寸 Q = {Smin, 0.5(Smin + Smax), Smax} 上进行了评估。
表 4 中显示的结果表明,测试时的尺度抖动会带来更好的性能(与以单一尺度评估同一模型相比,如表 3 所示)。和以前一样,最深的配置(D 和 E)表现最好,尺度抖动优于固定最小边 S 的训练。我们在验证集上的最佳单网络性能是 24.8%/7.5% top-1/top -5 错误(在表 4 中以粗体突出显示)。在测试集上,配置 E 达到 7.3% 的 top-5 错误率。
在表 5 中,我们将密集的 ConvNet 评估与多作物评估进行了比较(细节部分见3.2节)。我们还通过平均 softmax 输出来评估这两种评估技术的互补性。可以看出,使用多种裁剪比密集评估略好,这两种方法确实是互补的,因为它们的组合优于它们中的每一种。如上所述,我们假设这是由于对卷积边界条件的不同处理。
到目前为止,我们评估了各个 ConvNet 模型的性能。在这部分实验中,我们通过平均 soft-max 类后验来组合几个模型的输出。由于模型的互补性,这提高了性能,并在 2012 年(Krizhevsky 等人,2012 年)和 2013 年(Zeiler & Fergus,2013 年;Sermanet 等人,2014 年)的顶级 ILSVRC 提交中使用。
结果如表 6 所示。到 ILSVRC 提交时,我们只训练了单尺度网络,以及多尺度模型 D(通过仅微调全连接层而不是所有层)。由此产生的 7 个网络的集合具有 7.3% 的 ILSVRC 测试误差。
提交后,我们考虑了仅包含两个性能最佳的多尺度模型(配置 D 和 E)的集合,使用密集评估将测试误差降低到 7.0%,使用密集和多裁剪评估相结合的测试误差降低到 6.8%。作为参考,我们表现最好的单一模型达到了 7.1% 的误差(模型 E,表 5)。
最后,我们将我们的结果与表 7 中的现有技术进行比较。在 ILSVRC-2014 挑战(Russakovsky 等人,2014 年)的分类任务中,我们的“VGG”团队使用7 个模型的集合。提交后,我们使用 2 个模型的集成将错误率降低到 6.8%。
从表 7 可以看出,我们的非常深的 ConvNets 明显优于上一代模型,在 ILSVRC-2012 和 ILSVRC-2013 比赛中取得了最好的成绩的模型。我们的结果在分类任务获胜者(错误率为 6.7% 的 GoogLeNet)方面也具有竞争力,并且大大优于 ILSVRC-2013 获胜提交 Clarifai,后者在使用外部训练数据时达到 11.2%,在没有外部训练数据时达到 11.7%。这是非常了不起的,考虑到我们的最佳结果是通过仅组合两个模型来实现的——比大多数 ILSVRC 提交中使用的要少得多。在单网性能方面,我们的架构取得了最好的结果(7.0% 的测试错误),比单个 GoogLeNet 高出 0.9%。值得注意的是,我们没有偏离 LeCun 等人的经典 ConvNet 架构。 (1989),但通过大幅增加深度对其进行了改进。
在这项工作中,我们评估了用于大规模图像分类的非常深的卷积网络(最多 19 个权重层)。事实证明,表示深度有利于分类准确性,并且可以使用传统的 ConvNet 架构在 ImageNet 挑战数据集上实现最先进的性能(LeCun 等人,1989 年;Krizhevsky 等人, 2012)深度大大增加。在附录中,我们还展示了我们的模型可以很好地泛化到广泛的任务和数据集,匹配或优于围绕不太深的图像表示构建的更复杂的识别管道。我们的结果再次证实了深度在视觉表示中的重要性。