论文

Rethinking the Inception Architecture for Computer Vision

论文地址

https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Szegedy_Rethinking_the_Inception_CVPR_2016_paper.pdf

摘要

本文正在探索通过适当的因式分解卷积和积极的正则化来尽可能有效地利用增加的计算的方法来扩展网络。我们在ILSVRC 2012分类挑战验证集上对我们的方法进行了基准测试,结果显示,我们的方法比目前的技术水平取得了显著的进步:使用计算成本为每个推理50亿次乘法和使用不到2500万个参数的网络进行单帧评估时,top-1和top-5误差分别为21.2%和5.6%。综合4个模型和多作物评价,我们报告了3.5%的top-5误差和17.3%的top-1误差。

结论

本文提供了一些设计原则来扩展卷积网络,并在Inception架构的背景下研究了它们。这种指导可以带来高性能的视觉网络,与更简单、更单一的体系结构相比,具有相对适中的计算成本。在ILSVR 2012分类中,我们最高质量的Inception-v3版本达到了21.2%,top-1和5.6%的top-5错误的single crop评价。
本文还证明,在接受野分辨率低至79 × 79的情况下,可以获得高质量的结果。这可能有助于探测相对较小的物体。我们研究了神经网络内部的分解卷积和激进降维是如何在保持高质量的情况下使网络具有相对较低的计算成本的。较低的参数计数和附加的正则化与批归一化辅助分类器和标签平滑的结合允许在相对中等规模的训练集上训练高质量的网络。


1 介绍

在这篇论文中,我们首先描述了一些被证明对有效地扩大卷积网络是有用的一般原理和优化思想。尽管我们的原则并不局限于Inception类型的网络,但是由于Inception类型构建块的一般结构足够灵活,能够自然地合并这些约束,因此在该上下文中更容易观察到它们。
这是由于大量使用了降维和Inception模块的并行结构,从而减轻了结构变化对附近组件的影响。然而,这样做需要谨慎,因为应该遵守一些指导原则来保持模型的高质量。


2 总体设计原则

1、 避免代表性瓶颈,特别是在网络早期,应该避免使用极端压缩的瓶颈。一般来说,在达到用于手头任务的最终表示之前,表示的大小应该从输入到输出慢慢减小。从理论上讲,信息内容不能仅仅通过表示的维度来评估,因为它摒弃了相关结构等重要因素;维度仅仅提供了信息内容的粗略估计。

2、 高维度能够很更容易在网络的局部进行处理。在卷积网络结构中,增加非线性能够使得更多的特征解耦合。从而使的网络训练速度更快。

3、 在低维空间进行空间信息汇总,而无需担心信息丢失,推测是因为如果采用空间聚合,则相邻的位置的信息具有强相关性,即使进行了降维,也不会带来太多的损失,并且维数的降低,也能够加速网络学习。

4、 网络深度和宽度的平衡。本文认为提升网络深度可以提高网络输出质量增加宽度可以在同等质量达到最佳水平。


3 具有大尺寸滤波器的分解卷积

GoogLeNet网络[20]的大部分原始收益来自于对降维的大量使用。这可以看作是一种特殊情况下的分解卷积的计算效率的方式。考虑一个1×1的卷积层和一个3×3的卷积层。在视觉网络中,附近激活的输出是高度相关的。因此,我们可以预期在聚合之前可以减少它们的激活,这应该会导致类似的表达局部表示。
在这里,我们探索了在各种设置下分解卷积的其他方法,特别是为了提高解的计算效率。由于Inception网络是完全卷积的,每个权重对应于每个激活的一次乘法。因此,任何计算成本的减少都会导致参数数量的减少。这意味着通过适当的分解,我们可以得到更多解离的参数,因此可以得到更快的训练。此外,我们可以使用节省的计算和内存来增加我们网络的滤波器组大小,同时保持我们在一台计算机上训练每个模型副本的能力。

分解成更小的卷积

具有更大空间滤波器(例如5×5或7×7)的卷积在计算方面往往是不成比例的昂贵。例如,在一个有m个滤波器的网格上,一个有n个滤波器的5×5卷积的计算成本是具有相同数量滤波器的3×3卷积的25/9 = 2.78倍。所以减少滤波器的几何尺寸需要付出很大的代价来表达。
然而,我们可以问,一个5×5卷积是否可以被一个参数更少、输入大小和输出深度相同的多层网络所取代?如果我们放大5×5卷积的计算图,我们会看到每个输出看起来像一个小的全连接网络,在其输入的5×5卷积上滑动。该网络可以用2个3×3卷积层表示,它重用了相邻卷积之间的激活。减少了((3×3+3×3)/5×5)的计算量,通过这种因式分解得到了28%的相对增益。
图1
这种设置提出了两个普遍的问题:这种替换会导致表达能力的丧失吗?如果我们的主要目标是分解计算的线性部分,难道不建议将线性激活保留在第一层吗?我们已经进行了几个对照实验,在分解的所有阶段,使用线性激活总是不如使用校正线性单元。我们将这一增益归因于网络可以学习的增强的变化空间,特别是当我们批量规范化输出激活时。当对降维组件使用线性激活时,可以看到类似的效果。
图2

非对称卷积的空间分解:

我们还可以问,是否应该把它们分解成更小的卷积,比如2×2?然而,通过使用非对称卷积,例如n×1,我们可以得到比2×2更好的结果。例如,使用一个3×1卷积和一个1×3卷积等价于滑动一个具有与3×3卷积相同的感知场的两层网络。如果输入和输出滤波器的数量相等,那么同样数量的输出滤波器,两层的解决方案要节约33%。相比之下,将一个3×3卷积分解为两个2×2卷积只节省11%的计算量。
图3
理论上,我们甚至可以更进一步,我们可以用一个1×n卷积和一个n×1卷积来代替任何n×n卷积,随着n的增长,计算成本的节省显著增加。
在实践中,我们发现采用这种分解方法在早期层上效果不佳,但在中等网格尺寸(在m×m特征图上,m的范围在12-20之间)上效果非常好。在这个层次上,使用1×7卷积和7×1卷积可以获得非常好的结果。
图4


4 辅助分类器的使用

[20]引入了辅助分类器的概念,以提高非常深层网络的收敛性。最初的动机是将有用的梯度推到较低的层,使它们立即有用,并通过解决非常深的网络中的梯度消失问题,提高训练过程中的收敛性。Lee等人[11]也认为辅助分类器促进更稳定的学习和更好的收敛。有趣的是,我们发现辅助分类器并没有在训练早期提高收敛性:在两个模型达到较高精度之前,有和没有侧头的网络的训练进展看起来几乎相同。在训练接近结束时,有辅助分支的网络开始超过没有辅助分支的网络的准确性,并达到一个略高的平台。[20]在网络的不同阶段使用了两个侧头。移除较低的辅助分支对网络的最终质量没有任何不利影响。
这意味着最初[20]的假设,即这些分支帮助发展低级特征很可能是错误的。相反,我们认为辅助分类器充当正则化器,这是由这样一个事实所支持的:如果分支是批处理规范化(BN)的(或有一个dropout层),那么网络的主分类器就会执行得更好。这也为批量标准化(BN)作为正则化器的猜想提供了一个微弱的支持证据。


5 有效减小网格尺寸

传统的卷积网络通过一些池化操作来减小特征图的网格大小。为了避免表示瓶颈,在应用最大池或平均池之前,网络过滤器的激活维数进行了扩展。使用k个过滤器启动d×d网格,如果我们想要达到一个d/2 × d/2的网格和2k滤波器,一种方法:首先需要用2k个滤波器计算一个步长为1的卷积,然后应用一个附加的池化步骤。这意味着总的计算成本是由使用2d2k2操作的大网格上昂贵的卷积所支配的。另一种方法:将池化转换成卷积,从而产生2*(d/2)2k2 减少了四分之一的计算成本。然而,当表示的整体维度下降到(d/2)2k时,这会产生表征瓶颈,导致表达能力较差的网络。
图5
减少网格大小的两种可选方法。左边的解决方案违反了第2节中不引入代表性瓶颈的原则。右边的版本在计算上要多3倍。
本文建议使用另一种变体,在消除表征瓶颈的同时进一步降低计算成本。在扩展滤波器组的同时减小网格大小。它既计算成本低又避免了原则1所建议的代表性瓶颈。
图6左图是从操作的角度考虑,右图是从网格大小的角度考虑。


6 Inceptionv2

提出了一个新的架构,改善了ILSVRC 2012分类基准的性能。我们的网络布局如表所示。注意,基于分解成更小的卷积层思想,我们已经将传统的7×7卷积分解为3个3×3卷积。
图7
对于Inception部分,有3个传统的inception模块,每个模块288个过滤器,使用前文中(有效减小网格尺寸)网格简化技术,被简化为768个过滤器的17×17网格。
在这里插入图片描述

然后有5个分解inception模块,使用的是上图中网络缩减技术,缩减为1280个8×8网络。
在这里插入图片描述

有2个如图所示的inception模块,每个模块连接输出滤波器组的大小为2048。
图8
只要遵守前文中总结的四项原则,网络的质量对变化是相对稳定的。虽然我们的网络是42层的深度,但我们的计算成本只比GoogLeNet高2.5左右,效率仍然比VGGNet高很多。


7 通过标签平滑的模型正则化(LSR)

通过估计训练过程中label-dropout的边缘效应来正则化分类器层的机制。
本文提出了一种鼓励模型不那么自信的机制。虽然如果目标是最大化训练标签的对数似然性,这可能并不需要,但它确实使模型规范化,并使其更具适应性。方法很简单。考虑标签u(k)上的分布,独立于训练示例x和平滑参数ε。对于带有真实标签 y 的训练示例,我们替换标签分布q(k|x) = δk,y为:
在这里插入图片描述
它是原始地真分布q(k|x)和固定分布u(k)的混合,权重分别为(1-ε)和ε。可以看作是得到的标签k的分布如下:首先,将其设置为groundtruth标签k = y; 然后,以概率ε将 k 替换为从分布 u(k) 中抽取的样本。 我们建议使用标签上的先验分布作为 u(k)。 在我们的实验中,我们使用了均匀分布 u(k) = 1/K,因此上式可为:
在这里插入图片描述
我们将这种地面真实标签分布的变化称为标签平滑正则化(LSR),LSR实现了防止最大logit变得比其他logit大得多的预期目标。事实上,如果这种情况发生,那么单个q(k)将趋于1,而其他所有q(k)将趋于0,这将导致与q’(k)的交叉熵较大,因为与q(k) = δk,y不同,所有q’(k)都有一个正的下界。
通过考虑交叉熵可以得到LSR的另一种解释:
在这里插入图片描述
LSR相当于用一对交叉熵损失H(q, p)和H(u, p)替换单个交叉熵损失H(q, p)
第二个损失惩罚预测标签分布p与先验u的偏差,相对权重为ε/1-ε。
请注意,KL散度可以等效地捕获此偏差,因为 H(u, p) = DKL(ukp) + H(u)和H(u)是固定的。 当u是均匀分布时,H(u, p)是对预测分布 p与均匀分布的不同程度的度量,也可以通过负熵−H§来测量(但不等价);我们还没有尝试过这种方法。在我们使用 K = 1000个类的 ImageNet 实验中,我们使用 u(k) = 1/1000 和 ε= 0.1。对于 ILSVRC 2012,我们发现前1 错误和前5错误(见表)的绝对值一致提高了约0.2%。
在这里插入图片描述


8 训练方法

利用TensorFlow[1]分布式机器学习系统,使用50个副本在NVidia Kepler GPU上运行,每个副本的批处理大小为32,共100个epoch,用随机梯度训练我们的网络。我们早期的实验使用动量[19],衰减为0.9,而我们最好的模型是使用RMSProp[21],衰减为0.9和ε= 1.0。我们使用0.045的学习率,使用0.94的指数率每两个周期衰减一次。
此外,阈值为2.0的梯度裁剪[14]被发现有助于稳定训练。使用随时间计算的参数的运行平均值来执行模型评估。


9 低分辨率输入的性能

视觉网络的一个典型用例是先检测后分类,例如在 Multibox [4]上下文中,这包括对包含一个具有某种上下文的单个对象的图像的相对较小的像素进行分析。任务是确定像素的中心部分是否对应于某个对象,如果对应,则确定对象的类。挑战在于对象往往相对较小,分辨率较低。这就提出了如何正确处理低分辨率输入的问题。
人们普遍认为,采用更高分辨率接收场的模型往往能显著提高识别性能。然而,区分第一层接收场分辨率增加的影响和更大的模型电容和计算量的影响是非常重要的。如果我们只是改变输入的分辨率而不进一步调整模型,那么我们最终会使用计算成本低得多的模型来解决更困难的任务。这些解决方案已经松散了,因为减少了计算工作。为了做出准确的评估,模型需要分析模糊的提示,以便能够“幻觉”的细节,这在计算上是昂贵的。因此问题仍然存在:如果计算工作量保持不变,那么更高的输入分辨率有多大帮助。确保持续努力的一个简单方法是,在低分辨率输入的情况下,减少前两层的步幅,或者简单地删除网络的第一个池层。
为此,本文进行了三个实验:
1.299×299感受野,步幅2,第一层后最大池化。
2.151×151感受野,步幅1,第一层后最大池化。
3.79×79感受野,步幅1,第一层后无池化。
这三个网络的计算成本几乎相同。尽管第三个网络稍微便宜一些,但池层的成本微乎其微,并且(在网络总成本的1%以内)。在每种情况下,对网络进行训练直到收敛,并在ImageNet ILSVRC 2012分类基准的验证集上测量其质量。结果如表所示。虽然低分辨率网络需要更长的时间来训练,但最终结果的质量与高分辨率网络相当接近。
在这里插入图片描述
单纯地根据输入分辨率减小网络大小,那么网络的性能就会差得多。然而,这将是一个不公平的比较,因为我们将在更困难的任务上(低分辨率)比较一个计算成本低16倍的模型。表中的这些结果还表明,在R-CNN[5]的背景下,可以考虑为较小的物体使用专用的高成本低分辨率网络


10 实验结果和比较

如表显示了第6节中描述的关于我们提出的架构(Inceptionv2)识别性能的实验结果。每行Inception v2显示了累积变化的结果,包括突出显示的新修改和所有早期修改。标签平滑指的是第7节中描述的方法。分解7×7包括将第一个7×7卷积层分解为3个3×3卷积层序列的变化。
BN辅助分类器是指辅助分类器的全连接层也被批量规范化的版本,而不仅仅是卷积。我们将表最后一行中的模型称为Inception-v3,并评估其在multi-crop多作物和集合设置中的性能。
正如[16]所建议的,我们对ILSVRC-2012验证集上的48238个非黑名单示例进行了所有评估。我们还评估了所有50000个示例,结果在前5个错误中大约差0.1%,在前1个错误中约0.2%。在本文的下一版本中,我们将在测试集上验证我们的集成结果,但在我们上次在春季对BN-Inception进行评估时[7],表明测试集和验证集的错误往往相关性很好。
在这里插入图片描述表中single-crop结果比较了各种影响因素的累积效应。对于“Inception-v2”行,更改是累积的,并且每个后续行除了以前的更改之外还包括新的更改。最后一行指所有变换称之为inceptionv3

在这里插入图片描述
表中,单模式single-crop、多作物multi-crop试验结果比较了各种影响因素的累积效应。我们将我们的数据与ILSVRC 2012分类基准上公布的最佳单模型推断结果进行了比较。

在这里插入图片描述
表中比较多模型、multi-crop多作物报告结果的集成评估结果。我们的数据与ILSVRC 2012分类基准上公布的最佳集成推断结果进行了比较。∗所有结果,但报告的前5个集合结果都在验证集中。在验证集上,集合产生了3.46%的前5个错误。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐