GoogLeNet - Going Deeper with Convolutions全文翻译

Inception v1

Christian Szegedy, Wei Liu, Yangqing Jia. et al

Going Deeper with Convolutions - 原文

0 Abstract

我们提出了一个名为“Inception”的深度卷积神经网结构,其目标是将分类、识别ILSVRC14数据集的技术水平提高一个层次。这一结构的主要特征是对网络内部计算资源的利用进行了优化。这一目标的实现是通过精心细致的设计,使得在保持计算预算稳定不变的同时增加网络的宽度与深度。为了提高质量,网络结构基于赫布原则和多尺度处理规则设计。一个具体化的例子是所谓GoogLeNet,也就是我们提交到ILSVRC14的成果,它是一个22层深的网络,其质量在分类和检测这两项指标中获得检验。

1 Introduction

最近三年,主要由于深度学习和越来越实际的卷积网络的发展【10】,图像识别以及目标检测的质量都在以惊人的速度提高。一个振奋人心的消息是大多数进步并不只是更强大的硬件、更大规模的数据集和更庞大的模型所带来的,而主要是一些新创意、新算法,以及优化的网络结构的成果。现在,新的数据来源已经能够使用,比如最顶级的ILSVRC 2014不仅会进行分类方面的竞赛,也会进行目标检测方面的竞赛。我们提交到ILSVRC 2014的GoogLeNet实际上使用了 比赢得两年前比赛的K【9,即AlexNet】 少12倍的参数,但精确度提高了很多。在目标检测方面,最大的收获其实并不来自于深度网络或是更庞大的模型的单独使用,而是来自深度结构和传统机器视觉的协同作用,比如G【6】提出来的R-CNN算法。

另一个值得注意的要素是随着移动计算和嵌入式计算得到越来越广泛的认同,我们的算法的效率——尤其是其性能和存储利用率——变得越来越重要。值得注意的是,这篇文章中展现的深度结构在设计时就考虑了这些因素,而不仅仅是单纯执着于提高精度。对于我们的大部分实验,模型计算量限制在预测时间内15亿次乘加运算左右,这让我们的实验并不仅仅是为了满足学术好奇心(而盲目提高精确度),而是可以在现实中使用,即使对于很大规模的数据集,开销也是合理的。

在本文中,我们所关注的是一个应用于计算机视觉的有效率的深度神经网络,名为“Inception”,它的名字来源于Lin等人【12】关于网络的论文,以及名言【1】“we need to go deeper”。在我们这,“深”有两层含义:首先,我们引入了一种高水平的组织方式来构建Inception的模块,同时以更加直接的方式来增加网络深度。一般而言,把Inception模型看做一个在Arora【2】的理论工作所激发的灵感的指引下所达到的巅峰【12】是合理的。网络结构的优势已经在ILSVRC 2014分类与检测挑战中得到验证,在比赛中它大大超越了现有发展水平。

2 Related Work

从LeNet-5开始【10】,卷积神经网络(CNN)就已经具有标准化的结构了——堆叠起来的卷积层(可能后面跟着对比度归一化层和最大池化层),后面跟随着全连接层。这种基础设计的变种在图像分类领域十分流行,并且在MNIST,CIFAR等数据集,尤其是ImageNet分类挑战赛【9,21】中产生了迄今为止的极佳结果。对于ImageNet这样的大型数据集,最近流行的趋势是增加层数【12】和每一层的大小【21,14】,并利用dropout【7】算法解决过拟合问题。

虽然对最大池化的关注造成了准确空间信息的损失,文献【9】中的网络结构还是被成功地应用到了局部化【9,14】,目标检测【6,14,18,5】和人体姿态估计【19】等方面。受灵长类视觉皮层神经科学模型的启发,Serre等人【15】用一系列不同大小的固定的Gabor滤波器去处理多尺度,这与Inception是相同的。然而,相比文献【15】中固定的两层模型,Inception中所有滤波器是都说是学习得到的。此外,Inception的各层都重复多次出现,形成了GoogLeNet——一个22层网络模型。

网中网(Network-in-Network)是Lin提出来的一种结构【12】,其目的是为了增加神经网络的表现力。当应用于卷积层的时候,这一方法可以看做一个额外的1×1卷积层,后面通常跟着一个修正的线性激活RELU【9】。这使得Network-in-Network能够轻松地集成到现有的CNN管道中。这种方法在我们的网络体系结构中被大量地使用。然而,在我们的设定中,1×1卷积具有双重目的:最重要的一点是,它们被主要用于降维模块以打破计算瓶颈,否则我们的网络规模会受到限制。这使得我们不仅可以增加网络的深度,同时还可以增加宽度,而不造成严重的性能下降。

现在最好的目标检测方法是R-CNN,由Girshick【6】提出。R-CNN将整个检测问题分解为两个子问题:第一部使用低层线索比如组成潜在物体的颜色、超像素的一致性等,提取出一些类别不可知的信息,然后接下来利用CNN分类器在这些区块信息上识别物体类别。这种双步方法中,低层线索会影响边界框分割的准确性以及CNN分类的准确度。我们在提交的检测程序中采用了同样的管道,但我们对其中的每一步都进行了加强,比如采用多盒预测【5】以提高边界识别集合的召回率,还对bounding box提出的分类建议进行了不同方法的搭配合成,以获得更好的结果。

3 Motivation and High Level Considerations

最直接提高深度神经网络性能的方法是增加其规模,包括通过增加层数以增大深度,通过增加每一层的节点数以增加宽度。这是训练高质量模型最简单安全的方法,特别是对于给定的大规模标签数据集。然而这种简单的解决方法有两大缺陷。

更大的网络规模往往意味着更多的参数,这使得扩大后的网络更易过拟合,特别是当训练集中的标签样例有限的时候。这能够变成一个主要的瓶颈,因为制作高质量的训练集是要技巧的,也是很昂贵的,特别是人类专家对于类别力度的准确把握对于ImageNet这样的数据集而言是很重要的(即使是ILSVRC的1000类子集),如图一所示。

另一个统一增加网络大小的缺陷是计算资源需求的暴增。例如,在一个深度视觉网络,如果两个卷积层相连,任何增加过滤器数量的改动都会导致增加二次方倍数的计算量。如果增加的计算力没有被有效使用(比如大部分的权值趋于0),那么大量的计算会被浪费。实际应用中可用的计算力是有限的,即使是以提高模型质量为主要目标,高效分布计算资源,其实也比盲目增加网络体积更加有效。

解决这两个问题的根本方法最终一般是把全连接改成稀疏连接的结构,甚至包括在卷积中也这么做。除了模拟生物系统,根据Arora【2】的突破性研究证明,这样做也可以在理论上获得更强健的系统。 Arora等人的主要结果显示如果数据集的概率分布是一个十分稀疏的大型神经网络所能表达的,那么最合适的网络拓扑结构可以通过分析每一步的最后一层激活函数的统计关联性,并将具有高相关性输出的神经元进行聚类,而将网络一层一层地搭建起来。虽然严格的数学证明需要很强的条件,但事实上这种情况符合著名的赫布原则——神经元如果激活条件相同,它们会彼此互联——这意味着在实践中,赫布原则在不那么严苛的条件下还是可以使用。

从缺点来说,当涉及大量非均匀的稀疏的数据结构的计算时,现在的计算设施是很低效的。即使算术运算量降低100倍,查表运算和缓存失准也依然是主要瓶颈以至于稀疏矩阵的处理无法成功。如果使用稳定改进、高度调节、拥有大量库函数支持极快速密集矩阵相乘、利用底层CPU或GPU硬件的微小细节【16、9】,那么这种计算需求与计算资源之间的鸿沟甚至可能被进一步拉大。另外,非均匀的稀疏模型需要复杂的工程结构与计算结构。目前大部分面向机器学习的系统都仅仅通过卷积的优势在空间域中使用稀疏性。然而,卷积是通过一系列与前层区块的密集连接来实现的,文献【11】发表后,卷积神经网通常在特征维度中使用随机的稀疏的连接表,以打破对称性,提高学习水平,然而,根据文献【9】这种趋势会倒退回全连接模式,以便更好滴使用并行计算。均匀的结构、巨大的过滤器数量和更大的批次规模将允许使用高效的密集矩阵运算。

这就导致了一个问题,是不是存在一个中间步骤,如同理论上所显示的,能够让整个结构即使在滤波器层面上都能使用额外的稀疏性,但依旧是利用现有硬件进行密集矩阵计算。大量关于稀疏矩阵计算的文献,比如文献【3】,都显示将稀疏矩阵聚类到相对密集的子矩阵上能够让稀疏矩阵相乘的性能达到实用水平,把同样的方法应用到自动构建非均匀的深度学习结构上,在不远的将来看起来并不过分。

Inception的体系结构始于第一作者的个例研究——评估复杂拓扑结构的网络算法的假设输出,尝试近似地用一个密集的容易获得的组件表示一个文献【2】提出的视觉网络的稀疏结构的假设输出。 然而这项工作在很大程度上是基于假设进行的,仅仅在两次迭代之后,我们就已经能够看到一些对于选定的拓扑结构非常不利的有限的成果【12】。在调节了学习率、超参数,和采用了更好的训练方法之后,我们成功地建立了Inception的体系结构,使之能够在基于文献【5】和【6】提出的局部化和目标检测的环境中非常好用。有趣的是,大多数最初的结构都被质疑过和彻底地检测过,它们都至少能够达到局部最优。

然而还是需要被谨慎考虑的是:虽然我们提出的体系结构在计算机视觉方面的应用很成功,但这能否归功于其背后的设计指导原则还不是很确定。想要确定这一点还需要更多更加彻底的分析和验证:比如,基于这些规则的自动化工具是否能够找到与之类似但却更好的网络拓扑结构。最有说服力的证据将会是自动化系统能够利用相同的算法在不同的领域创建出具有相似结果,但整体架构有很大不同的网络拓扑。最后,Inception最初的成功为探索这一领域让人激动的未来产生了巨大的动力。

4 结构细节

Inception的体系结构的主要设计思路是要在一个卷积视觉网络中寻找一个局部最优的稀疏结构,这个结构需要能够被可获得的密集组件覆盖和近似表达。请注意,假定转义的不变性意味着我们的网络将利用卷积构建块建立。我们所需要做的只是寻找局部最优化结构并在空间上对其进行重复。Arora等人在文献【2】中提出,一个逐层搭建的结构,需要分析其每一步的最后一层的统计关联性,并将高度相关的神经单元聚类为簇。这些簇组成了下一层的单元并与前一层的各个单元相连。我们假设前面一层的每个单元都对应输入图像的某些区域,而这些单元被分组分配给滤波器。在较低的层次(更靠近输入端),相关的单元聚焦于局部区域。这意味着我们能够得到大量聚焦于同一区域的簇,它们会被下一层的1×1卷积覆盖,如同文献【12】所述。然而,我们也可以预期,在更大的区块上,能够被卷积覆盖的空间分布更广的集群的数量会更少,而在越来越大的区域上,patch的数量会越来越少。为了避免区块对齐问题,现有的Inception结构将滤波器大小限制为1×1,3×3 和 5×5,然而这种设定更多是为了方便而不是必要的。这也意味着合理的网络结构应该是将所有这些层的输出滤波器组结合起来,并将其合并为单一向量作为输出以及下一层的输入。另外,因为池化操作对于现有水平的卷积网络是很重要的,建议最好在每一步增加一条并行池化通路,这样应该也会有一些额外的好处:如图2a所示。

Inception模块是一层一层往上栈式堆叠的,所以它们输出的关联性统计会产生变化:更高层抽象的特征会由更高层次所捕获,而它们的空间聚集度会随之降低,因为随着层次的升高,3×3和5×5的卷积的比例也会随之升高。

一个大问题是,上述模型,至少是朴素形式的模型,即使只有很有限个数的5×5卷积,其最上层卷积层的巨量滤波器的开支都会让人望而却步。一旦把池化层加进来,这个问题会变得更加严重:它们的输出滤波器个数与前面过程的滤波器个数相等。池化层输出与卷积层输出的合并会导致从一个阶段到另一个阶段的输出数量无法避免的暴增。即使是当这种结构覆盖了最优的稀疏结构,它可能依然还是很低效,从而导致少数几步的计算量就会爆炸式增长。

这种情况导致我们提出了第二种设想:明智而审慎地把降维和投影使用到所有计算量可能急剧增加的地方。这是基于嵌入的成功来设计的:相对于一个大型的图像区块,即使是低维的嵌入也可能包含大量的信息。然而,嵌入会把信息以一种致密的,压缩的方式展现出来,而压缩信息是很难被建模的。我们还是想在大部分位置保持稀疏性(如同文献【2】所要求的),而只在信号需要被一同聚合的时候压缩它们。也就是说,1×1卷积被用于在昂贵的3×3和5×5卷积之前降维。除了用于降维,它们也被用于数据线性修正激活RELU,这使之具有双重使命。最后的结果如图2b。

一般而言,一个Inception网络是由一系列上述结构栈式堆叠而成,有时候步长为2的最大池化层会把网络分辨率减半。出于技术原因(更高效的训练),只在高层使用Inception结构而把低层保留为传统的卷积模式似乎是有利的。这并不一定是必要的,只是反映了有些基础设施对于我们的设计而言很低效。这一结构一个有利的方面是它允许每一步的神经元大量增加,而不会导致不可控的计算复杂度的暴增。 降维的普遍存在能够阻挡大量来自上一层的数据涌入下一层的滤波器,在大区块上对其进行卷积之前就对其进行降维。这种设计的另一个实际有用的方面是,它符合直觉,即视觉信息应该在不同的尺度上处理,然后聚合,以便下一阶段可以同时从不同的尺度上抽象特征。

计算资源的优化利用允许我们增加每层网络的宽度以及层数,而无需面对增加的计算困难。
另一种使用Inception架构的方法是开发一种质量稍差,但计算起来更便宜的版本。我们已经发现,用于平衡计算资源的控制因素 可以使得我们的网络比表现相同(译者注:这里可能是指精确度)而不使用Inception结构的网络快2~3倍,只是这需要极为精细的人工调整。

5 GoogLeNet

我们选择GoogLeNet作为我们参加ILSVRC14比赛的队名。这个名字是为了纪念先驱者Yann LeCuns开发的LeNet5网络【10】。我们也是用GoogLeNet作为我们在比赛中提交的Inception结构的具体实现的名字。我们也使用了一个更深、更宽的Inception网,其质量稍差,但如果把它进行合理搭配,会稍微改进其表现。我们忽略了网络的实现细节,因为我们的实验表明,特定的某一结构参数的影响相对而言是很微小的。在此,最成功的详细说明的实例GoogLeNet是如表1所示的情况。在我们的集成中,7个模型中有6个采用了完全相同的拓扑结构(使用不同的采样方法进行训练)。

所有的卷积,包括那些Inception模块内的卷积,都使用修正线性激活函数RELU。我们网络的感知域是一个RGB三色通道的224×224区域,并且经过了减去均值的预处理。“#3×3”降维和“#5×5”降维是1×1滤波器的等量代换,用于在进行3×3和5×5卷积之前进行降维。1×1滤波器的数量可以在池化投影列中的最大池化层后面的投影层中看到。所有的降维层和投影层也都使用修正线性激活函数RELU。

网络的设计是基于计算的效率与可实践性展开的,因此其推演过程可以在单台设备上进行,即使这些设备的运算资源极其有限(尤其是低内存占用)。如果只计算有参数的层,我们的网络有22层深(算上池化层有27层)。由于构建网络的总层数(独立构建块)有将近100个。然而,这一数量需要依靠使用的机器学习的基础设施系统,用于分类器之前的平均池化层是基于文献【12】设计的,虽然我们的实现方式有点不同:我们使用了一个多出来的线性层。这使得在其它标签数据集上改变和微调我们的网络变得容易,但这主要是为了方便,我们并不指望会有什么大的影响。我们发现,从全连接层到平均池化的移动会让TOP-1准确度提高0.6%,然而,DROPOUT的使用依然很重要,即使去掉了全连接层。

对于相对更深的网络,穿过所有层次高效向后梯度传播的能力是很关键的。一个有趣的理论是,在这项任务中,相对浅层的网络的强大性能表明网络中层所产生的特征是具有很好的区分度的。通过增加一些与这些中间层相连的附加的分类器,我们可以期待在分类器的低层增加向后传播的梯度信号,同时增加更多的正则化。这些分类器采用较小的卷积网络形式,被安置在Inception(4a)和(4d)模块的输出的顶部。在训练中,它们的偏差被折扣后加到总偏差中(附加分类器的偏差乘以0.3)。在预测过程中,这些附加网络会被抛弃。

另外附加网络的精准结构,包括附加分类器的结构如下:

  • 一个平均池化层,滤波器为5×5,步长为3,在4(a)得到一个4x4x512的输出,在4(d)得到一个4x4x528的输出。
  • 一个1x1卷积,有128个滤波器,用于降维和规范化线性激活RELU。
  • 一个拥有1024个单元和规范化线性激活RELU的全连接层。
  • 一个dropout 70%输出的DROPOUT层。
  • 一个使用softmax损失的线性层,这一层被用作分类器(与主分类器一样,它进行1000类分类,但在预测阶段,它会被抛弃)

最后得到的整个网络的示意图如图三所示。

6 训练方法

我们的网络使用文献【4】提出的分布置信网络,将机器学习系统分布为合适数量的模型和数据并行。虽然我们只使用基于CPU的实现,一个粗略的估计证明GoogLeNet可以在少数几个高速GPU终端上进行训练并在一周内收敛,其主要限制是内存使用。 我们的训练使用动量(momentum)【17】为0.9的异步随机梯度下降,并将学习速率固定为每八次迭代减少4%。Polyak均值【13】被用于建立在推理过程中使用的最终模型。

我们的图片采样方法在比赛前数个月就进行了彻底的修改,并在其他设置条件下通过了收敛测试——包括结合不同的超参数,比如DROPOUT率和学习率,所以很难为找到最高效的训练网络的方法提供极为准确的指导。更复杂的是,根据文献【8】的思路启发,一些模型主要是在相对较小的粒度上进行训练,而另一些采用更大的粒度。所以,一个在比赛之后已经被证明非常有效的方案是将取样区块的大小平均分布在图片区域的8%到100%之间,纵横比随机分布在3/4和4/3之间。 同时,我们发现AH【8】提出的光度畸变在一定程度上对对抗过拟合是很有用的。

另外,我们开始的时候使用随机插入方法(双线性、区域、最近邻和立方,概率相等),以便在相对靠后的阶段重新确定取样大小,以及其他超参数的结合,所以我们无法明确知道这些方法的使用对于最后结果是不是真的有积极影响。

7 ILSVRC 2014分类挑战的设置与结果

ILSVRC 2014分类挑战包括将图片分类到1000个ImageNet层次结构的叶子节点类别中。一共有120万张图片用于训练,5万张图片用于验证,10万张图片用于测试。每张图片都与一个特定的类别相连,而性能则通过模型判断的可能性最高的类别是否合理进行检验。两个指标被用于报告中:TOP-1精确度——比较真实情况与预测认为可能性最高的情况;TOP-5错误率——比较真实情况与预测认为可能性最高的前五种情况,一张图片的真实分类如果落入前五种预测分类之一,则视为分类正确,不考虑类别的排序位置。挑战赛利用TOP-5错误率进行排名。

我们不利用任何外部数据参加这项挑战赛。除了论文前述的训练技术,我们还采用了如下一系列测试技术去提高性能:

1,我们独立训练了七个版本的相同的GoogLeNet模型(包括一个宽度更大的版本)然后将其联立起来进行预测。这些模型训练基于相同的初始化(由于一个oversight,甚至初始权值都是相同的)以及学习速率策略。唯一的不同是采样方法和图片输入顺序不同。

2,在测试中,我们采取了比Krizhevsky等人【9】更大胆的裁切策略。特别地,我们将图片重设为四种不同的尺度(高和宽),分别是256,288,320和352,包括左中右三块(如果说肖像图,我们取顶中底三块)。对于每一块,我们取其四角和中心,裁切出5个 224x224的区块,同时取其镜像。结果每张图就得到了4×3×6×2 = 144个区块。同样的方法AH【8】也在前些年的比赛中用了,根据我们的经验证明,其表现会比他们提出来的差一点。我们注意到,如此激进的方法可能在实际应用中不是很有必要,因为当区块数超过合理范围之后,其带来的好处也就不那么重要了(我们后面会展示)。

3,softmax概率分布被平均到不同的裁切以及所有的单分类器上以获取最终的预测结果。在我们的试验中,我们在验证数据上分析了所有可选的方法,比如各个裁切区块上的最大池化,以及对分类器取平均。但它们会导致比简单平均更差的表现。

在余下的文章中,我们将分析多因素在最终提交的作品中对整体性能的影响。

我们最后提交的挑战赛作品将TOP-5错误在验证集和测试集上都降到了6.67%,在参赛者中排名第一。与2012年的SuperVision方法相比,降低了56.5%,与去年获得第一的Clarifai方法相比降低了40%,而且这些方法都使用了外部数据来训练分类器。 如下表格展示了历年最优方法的统计数据。

我们还通过改变模型数量以及切分数量,分析并报告了其他几种测试策略对于图片进行预测的效果,结果见下表。当我们使用一个模型,我们选择其在验证数据上的最低TOP-1错误率。所有数据报告基于验证数据集,以避免测试集上的过拟合。

8 ILSVRC 2014识别挑战的设置与结果

ILSVRC的识别任务是在两百种可能的类别上产生围绕物体的边界线。如果边界线与事实重合至少50%(使用交除以并的雅卡尔系数Jaccard Index)则认为识别物体成功。无关的识别将视为假阳性并遭受处罚。与分类不同,每张图可能包含多个物体,也可能不包含任何物体,物体可大可小。结果报告采用平均查准率(mAP)。

GoogLeNet所采取的目标检测方法与文献【6】提出的R-CNN很类似,但因为在Inception模型中作为局部分类器使用而被放大了。

另外,为了获得更高的边界线召回率,通过将多边界预测【5】与选择性搜索(Selective Search)【20】相结合,区域提取的步骤得到了改进。为了减少假阳性,超像素的大小被扩大了两倍。这导致了选择搜索提取数量的减半我们又把两百个多盒【5】提取区域加了回去,总共包括了文献【6】提出的60%,把覆盖率从92%提高到了93%。利用增加覆盖率减少提取区域的总体效果是每个模型的平均精确度增加了1%。最后,在分类每个区域的时候我们使用6个卷积神经网络的集合,从而将准确率从40%提高到了43.9%。请注意与R-CNN相比,限于时间,我们并未使用边界线回归。

我们首先报告了可能性最高的检测结果,并从第一个版本的检测任务开始展示了整个过程。与2013年的结果相比,准确率几乎翻了一倍。系统性能最佳的队伍都使用了卷积神经网络。我们在表4展示了官方分数以及相同的系统策略:是否使用外部数据、模型集成或是其他上下文模型。外部数据主要是用ILSVRC12分类数据来进行预训练,然后再将模型限制在检测数据上。一些队伍还提到了使用局部化数据。因为适当比例的局部化任务的边界线并不包含在物体检测数据集中,可以预先将这些数据用到一个普适的边界线回归器上,用于最终预测相同的方式进行预训练。GoogLeNet并不使用这种局部化数据进行预训练。

如表5,我们比较了使用单个模型的最终结果。表现最好的是DeepInsight模型,让人惊讶的是,DeepInsight使用三种模型的集成却只提高了0.3个点(的精度),而我们的模型集成后就要强大得多。

9 结论

我们的结果似乎产生了一个坚实的结论——利用现有密集构建块逼近预想中的最佳稀疏结构,是一种可行的提高计算机视觉神经网络能力的方法。这种模型的主要优势是与浅层且较窄的网络相比,只要适度增加计算需求就能极大地提升质量。还请大家注意,我们的检测技术即使没有使用上下文和边界回归,依然很有竞争力,这一事实提供了进一步的证据证明Inception结构的强大。虽然相同质量的网络可以被同样宽度和深度的更昂贵的网络实现,我们的方法却切实地证明了切换到一个更稀疏的结构上是一个在普遍情况下可行且有用的方法。这表明未来有希望在【2】的基础上以自动化的方式创建更稀疏和更精细的结构。

猜你喜欢

转载自blog.csdn.net/TeFuirnever/article/details/88745874