Abstract
本文提出了一种代号为Inception的深度卷积神经网络结构,其最大特点就是对网络内部计算资源的利用进行了优化。通过新的设计来使得在计算消耗稳定性不变的情况下增加网络的宽度与深度。为了提高质量,架构的设计以Hebbian理论和多尺度处理直觉为基础。我们在ILSVRC 2014提交中应用的一个特例被称为GoogLeNet,它是一个22层的深度网络,我们在分类和检测这两项指标中对其性能进行了评估。
1. Introduction
由于深度学习和卷积网络的发展,我们在目标分类和检测上的能力得到了很大的提高,这主要归功于新的想法、算法和网络结构,而不仅仅是更强的硬件、更多的数据集和更大模型的结果。我们在ILSVRC 2014中的GoogLeNet中实际使用的参数只有两年前Krizhevsky等人获胜结构参数的1/12,但我们的结果明显更加准确。另一个显著的因素是,随着移动和嵌入式设备的发展,我们的算法的效率尤其是其能量和存储利用率,变得越来越重要。值得注意的是,本文中提出的深度架构设计正是基于这样的考虑,而不是单纯的为了提高准确率。
在本文中,我们所关注的是一个应用于计算机视觉的深度神经网络,其代号为Inception,在这里单词“deep”有两个不同的含义:首先,我们以“Inception module”的形式引入了一种新层次的组织方式,同时以更加直接的方式来增加网络深度。一般来说,可以把Inception模型看作是从Arora等人的理论工作中得到了灵感。这种架构的优势已经在ILSVRC 2014分类与检测挑战赛中得到了验证,其明显优于现有最好水平。
2. Related Work
从LeNet-5 开始,卷积神经网络(CNN)通常有一个标准的结构——堆叠的卷积层,后面是一个或更多的全连接层。这种基础设计的变种在图像分类领域十分流行,对于比较大的数据集例如ImageNet来说,最近的趋势是增加层的数目和层的大小,同时使用dropout来解决过拟合问题。
尽管max-pooling层可能会引起准确空间信息的损失,但与其相同的卷积网络结构已经被成功的应用于定位、目标检测和行人姿态估计等领域。受到神经科学对主要视觉皮层进行建模的启发,Serre等人用一系列不同大小的固定的Gabor滤波器去处理多尺度,这与Inception是相一致的。但是,和以往不同的是Inception中所有滤波器是学习得到的。此外,Inception的各层都重复多次出现,形成了GoogLeNet——一个22层网络模型。
在我们的结构中也大量的使用了类似于在Network-in-Network中添加额外的1 × 1卷积层,来增加网络的深度。,在这里添加额外卷积层最关键的是,它们主要是用来作为降维模块来移除卷积瓶颈,否则将会限制我们网络的大小。这使得我们不仅可以加深网络,同时还可以加宽,而不造成严重的性能下降。
我们在我们的结构种也采用了类似于Girshick等人的基于区域的卷积神经网络(R-CNN)方法。R-CNN将整个检测问题分解为两个子问题:利用低层次的信号例如颜色,纹理以跨类别的方式来产生目标位置候选区域,然后用CNN分类器来识别那些位置上的对象类别。但我们对其中的每一步都进行了加强,比如采用多盒预测以提高边界识别集合的召回率,还对bounding box提出的分类建议进行了不同方法的搭配合成,以获得更好的结果。
3. Motivation and High LevelConsiderations
提高深度神经网络性能最直接的方式是增加它们的尺寸。这是一种训练更高质量模型容易且安全的方法,但是这个简单方案有两个主要的缺点。更大的网络规模往往意味着更多的参数,这使得扩大后的网络更易过拟合,特别是当训练集中的标签样例有限的时候。而且经常需要专家评委在各种细粒度的视觉类别进行区分,例如图1中显示的ImageNet中的类别(甚至是1000类ILSVRC的子集)。
Figure 1: Two distinct classes from the 1000 classes of the ILSVRC 2014 classification challenge.另外一个统一增加网络大小的缺点是计算资源的需求显著增加。例如,在一个深度视觉网络中,如果两个卷积层相连,它们的滤波器数目的任何均匀增加都会引起计算量平方式的增加。如果增加的能力使用时效率低下,那么大量的计算会被浪费。实际应用中可用的计算力是有限的。
解决这两个问题的一个基本方法就是将全连接层替换为稀疏的连接层,甚至是卷积层。由于Arora等人的开创性工作证明这样做可以在理论上获得更好的系统。Arora等人的主要成果说明如果数据集的概率分布可以通过一个大型稀疏的深度神经网络来表示,则最优的网络拓扑结构可以通过分析前一层激活的相关性统计和聚类高度相关的神经元来一层层的构建。
但是,当碰到在非均匀的稀疏数据结构上进行数值计算时,现在的计算架构效率非常低下。随着稳定提升和高度调整的数值库的应用,差距仍在进一步扩大,非均匀的稀疏模型要求更多的复杂工程和计算基础结构。目前大多数面向视觉的机器学习系统通过采用卷积的优点来利用空域的稀疏性。然而,卷积被实现为对上一层块的密集连接的集合。为了打破对称性,提高学习水平,卷积神经网通常在特征维度中使用随机的稀疏的连接表,以打破对称性,提高学习水平,然而,这种趋势会倒退回全连接模式,以便更好的使用并行计算。统一的结构、巨大的滤波器数量和更大的批次(batch)规模将允许使用高效的密集矩阵运算。
这提出了下一个中间步骤是否有希望的问题:一个架构能利用滤波器水平的稀疏性,正如理论所认为的那样,但能通过利用密集矩阵计算来利用我们目前的硬件。在不久的将来我们可能会利用将稀疏矩阵聚类为相对密集的子矩阵会有更佳的性能这种特性来进行非均匀深度学习架构的自动构建。
Inception架构开始是作为案例研究,用于评估一个复杂网络拓扑构建算法的假设输出, Inception被证明在定位上下文和目标检测中尤其有用。有趣的是,虽然大多数最初的架构选择已被质疑并分离开进行全面测试,但结果证明它们是局部最优的。然而必须谨慎:尽管Inception架构在计算机上领域取得成功,但这是否可以归因于构建其架构的指导原则仍是有疑问的,确保这一点将需要更彻底的分析和验证。
4. Architectural Details
Inception架构的主要思想是基于找出如何能够将卷积神经网络中的最优局部稀疏结构用现成的稠密结构所近似替代。因为转换不变性,我们的网络将会以卷积构建块为基础进行构建。我们所需要做的就是找到一个最优的局部结构并在空间上重复它。Arora等人提出了一种层级结构,其中每一层应该分析上一层的相关统计并把它们聚合成具有高相关性的单元组。这些聚类构成了下一层的单元并且与上一层的单元相连接。我们假设每个来自前面层的单元都与输入图像的某个区域相对应,而且这些单元被分到滤波器组。在较低的层(接近输入的层)相关的单元会集中于局部区域。这意味着,我们最终会有很多聚类集中于单个区域并且它们都可以被下一层的一个1×1卷积层所覆盖,正如[12]中所示。然而,也可以期望将会有在空间上扩展更多的而且能被更大块卷积覆盖的更小数量的聚类,并且随着区域的增大,块的数量将会下降。为了避免块校正的问题,目前Inception架构的典型被限制在了1×1,3×3,5×5的滤波器,然而这个决定更多的是基于便利性而不是必要性的考量。这也意味着提出的架构是那些层的集合,它们的输出滤波器被连接成一个输出向量作为下一阶段的输入。另外,因为池化操作对于当前阶段的卷积网络的成功是必不可少的,所以在每个这样的阶段添加一个可选的并行池化路径应该会有额外的好处。
因为这些Inception模块在彼此的顶部相堆叠,它们的输出相关统计必定会不同:因为高层抽象的特征是被较高的层数所捕捉的,它们的空间集中度预计会减少,这意味高层的3×3,5×5卷积单元的比例会增加。
Figure 2: Inception module以上模块,至少在这种朴素的形式中,会有一个大问题就是在有大量滤波器的卷积层之上,即使是中等数量的5×5卷积也会变得非常昂贵。这个问题会变得更加突出一旦池化单元加入到混合中:它们的输出滤波器的数量等同于前一阶段的滤波器数量。池化层与卷积层输出的合并会导致阶段到阶段的输出数量不可避免的增长。虽然这种架构可能会包含最优的稀疏结构,但是它会十分低效,导致在几个阶段内计算量爆炸。
这导致了关于提出的架构的第二个想法:在计算要求过于庞大的地方明智地应用降维和投影。这是基于嵌入方法的成功:即使是低维的嵌入也可能包含关于相对较大的图像块的大量信息。然而,嵌入方法通过密集的、压缩的形式来表达信息,并且压缩过的信息很难建模。我们希望在大多数地方保持我们稀疏的表示(正如[2]中的条件要求)并且只当它们需要集合的时候才进行压缩。也就是说,在昂贵的3×3,5×5卷积前使用1×1的卷积来进行降维。除了被用来降维以外,它们也被用来修正线性激活函数。最终的结果展示在figure 2(b)中。
这种架构的一个主要好处在于它允许在每个阶段增加单元数量而且不会导致无法控制的计算复杂度爆炸。降维的普遍使用使得大量的来自上一层的大量输入滤波器能够进入下一层,先进行降维,再与大块进行卷积。这种设计的另一个好处是它符合了视觉信息应该在不同尺度上处理再进行聚合的直觉,这样下个阶段就能够同时在不同尺度上进行特征提取。
5. GOOGLENET
通过“GoogLeNet”这个名字,我们提到ILSVRC 2014竞赛中我们提交的Inception架构的具体特例。 我们还使用了一个质量略优的更深更宽的Inception网络,但将它添加到组合中似乎只能稍微改善结果。 我们忽略了该网络的细节,因为经验证据表明确切的架构参数的影响相对较小。表1说明了比赛中使用的最常见的例子。 该网络(使用不同的图像块采样方法进行训练)被用于我们组合中7个模型中的6个。
所有的卷积,包括那些包括在Inception模块内的,都使用了修正的线性激活。我们网络中使用的感受域是在均值为0的RGB空间中的,大小是224×224。"#3×3 reduce"和"#5×5reduce"表示在3×3和5×5卷积前降维层使用的1×1滤波器的数量。在pool proj列可以看到内置的最大池化之后,投影层中1×1滤波器的数量。所有这些降维、投影层也都使用修正线性激活。
网络是考虑到计算效率和实用性而设计的,所以可以推断能在个人设备上运行,包括那些有限计算资源的设备,特别是低内存占用的设备。当只考虑有参数的层数时,网络只有22层(考虑池化的话有27层)。构建网络所总共用到的层数(独立构建层)大约是100。然而这个数目取决于使用的机器学习基础设施系统。在分类器前使用的平均池化shiver基于[12],尽管我们的实现有一个额外的线性层。这使得我们的网络能够很容易适应其他的标签集,但是它主要是为了方便,我们并不期望它能有多大用处。我们发现从全连接层变为平均池化,提高了大约0.6%的top-1准确率,但是在移除全连接层之后,dropout的使用还是至关重要的。
Table 1: GoogLeNet incarnation of the Inception architecture给定相对较深的网络,将梯度有效的通过所有的层反向传播是一个需要考虑的问题。一个有趣的见解是相对较浅的网络在这方面的强大表现暗示着网络中部产生的特征是非常具有识别力的。通过添加链接到中间层的辅助分类器,我们期望激励在较低阶段的分类器的区分度,从而增强传回的梯度信号并且提供额外的正则化。这些分类器采取小型卷积网络的形式并且被放在Inception(4a)和(4d)模块的输出上。在训练期间,它们的loss会被加权加到总的Loss上(额外辅助分类器的loss的权重是0.3)。在推断阶段,这些额外的辅助分类器会被丢弃。
包括辅助分类器在内的附加网络的具体结构如下:
(1)一个滤波器大小为5×5,步长为3的平均池化层,导致4(a)的输出是4×4×512,4d的输出是4×4×528
(2)一个具有128个滤波器的1×1卷积,勇于降维和修正线性激活
(3)一个有着1024个单元和修正线性激活的全连接层
(4) 一个丢弃70%输出的dropout层
(5)一个使用softmax loss的线性层的分类器(作为主分类器时预测1000个分类,但是在推断时移除)
最终网络的结构如figure3所示:
Figure 3: GoogLeNet network with all the bells and whistles6. Training Methodology
利用分布式机器学习系统和数据并行来训练网络,虽然实现时只用了CPU,但是可以用个别高端的GPU一周达到收敛的。采用异步随机梯度下降,动量为0.9,固定的学习率计划(每8次遍历下降学习率4%)。用Polyak平均来创建最后的模型。图像采样的块大小从图像的8%到100%,选取的长宽比在3/4到4/3之间,光度扭曲也有利于减少过拟合,还使用随机插值方法结合其他超参数的改变来调整图像大小。
7. ILSVRC 2014 ClassificationChallenge Setup and Results
ILSVRC 2014的分类任务有1000个子类、120万训练图像、5万验证图像和10万测试图像,每一张图像与一个实际类别相关联,性能度量基于分类器预测的最高分。挑战赛使用top-5错误率来进行排名,即比较实际类别与前5个预测类别,如果图像实际类别在top-5中,则认为图像分类正确。
为获得更高性能的测试中采用的一系列技巧:
(1)训练了7个网络,初始化和权重都相同,只是采样方法和随机输入图像不同。
(2)将图像的短边分别缩放成256、288、320、352这样4种尺度,取图像的左中右块(肖像图片为上中下块),每块取4个角、中心224×224裁剪图像、方块尺寸归一化为224×224,以及它们的镜像,但实际应用中可能不需要这么多。
(3)softmax概率在多个裁剪图像上和所有单个分类器上进行平均获得最终预测,简单的平均结果最好。
最终在验证集和测试集上的top-5错误率都是6.67%,获得了第一。与其他方法相比的提高如表所示:
Table 2: Classification performance改变预测图像时使用的模型数量和作物数量,获得的性能对比如下:
Table 3: GoogLeNet classification performance break down8. ILSVRC 2014 DetectionChallenge Setup and Results
检测任务是在200个可能的类别中生成图像中目标的边界框,如果检测到的对象匹配的它们实际类别并且它们的边界框重叠至少50%,则认为正确。报告的结果使用平均精度均值(mAP)。检测采用的方法类似于R-CNN,但用Inception模块作为区域分类器进行了增强。通过选择搜索方法和多箱预测相结合改进了区域生成步骤,来提高目标边界框的召回率,但没有使用边界框回归。
下表显示了比赛的结果对比和每个队伍的常见策略:使用外部数据、集成模型或上下文模型。所有表现最好的团队都使用了卷积网络。
Table 4: Detection performance Table 5: Single model performance for detection9. Conclusions
结果证明了通过易获得的密集构造块来近似期望的最优稀疏结果是改善计算机视觉神经网络的一种可行方法。相比于较浅且较窄的架构,这个方法的主要优势是在计算需求适度增加的情况下有显著的质量收益。目标检测工作没有利用上下文,也没有执行边界框回归,但仍然具有竞争力,这显示了Inception架构优势。
未来的工作将在此基础上以自动化方式创建更稀疏更精细的结构,以及将Inception架构的思考应用到其他领域。
10. The experience of our team
GoogleNet 的核心可归结为:引入Inception结构、应用平均池化代替全连接层、加入辅助softmax防止梯度消失,网络层数达到22层,其中提出了很多新颖的结构和想法,其特点是提高了网络内部计算资源的利用率。
Inception既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。借鉴了NIN的多层感知器结构,采用1x1卷积核来进行降维,解决了计算瓶颈,提高了神经网络的表达能力。.GoogleNet对数据卷积核进行并联(多尺度的对图像卷积,底层用大卷积核,上层用小卷积核),亦值得我们学习与借鉴。
网友评论