Inception-V1(Going deeper with convolutions)

GoogleNet 模型

随着神经网络层数的加深,有不可避免的带来过拟合和计算量增大的困扰,谷歌团队为了减少计算量和避免过拟合,提出了Inception模型,也叫作 GoogLeNet。并在2014年,ImageNet挑战赛(ILSVRC14)中,GoogLeNet获得了第一名。GoogLeNet模型结构的特点是网络层数更深了。随着谷歌团队的研究,Inception历经了V1、V2、V3、V4等多个版本的发展

1. 思想

Inception 以降低参数量为目的,设计了一个稀疏网络结构,但是能够产生稠密的数据,既能增加神经网络表现,又能保证计算资源使用效率的网络结构。

2. 模型结构

Inception-V1(Going deeper with convolutions)_第1张图片

GoogleNet虽然降低了维度,计算更加容易了,但是缺点是每一层的卷积都是上一层的输出所得来的,这就使最后一层的卷积所需要的的计算量变得非常大,因此谷歌对其进行了改善,有了正式版的 Inception-V1模型。

Inception-V1精简版总结

	Inception V1模块提出可以使网络变宽,在保证模型质量的前提下,减少参数个数,提取高维特征。

基本思想

  • 首先通过1x1卷积来降低通道数把信息聚集
  • 再进行不同尺度的特征提取以及池化,得到多个尺度的信息
  • 最后将特征进行叠加输出
    (官方说法:可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能)

主要过程:

  1. 在3x3卷积和5x5卷积前面、3x3池化后面添加1x1卷积,将信息聚集且可以有效减少参数量(称为瓶颈层);
  2. 下一层block就包含1x1卷积,3x3卷积,5x5卷积,3x3池化(使用这样的尺寸不是必需的,可以根据需要进行调整)。这样,网络中每一层都能学习到“稀疏”(3x3、5x5)或“不稀疏”(1x1)的特征,既增加了网络的宽度,也增加了网络对尺度的适应性;
  3. 通过按深度叠加(deep concat)在每个block后合成特征,获得非线性属性。
  4. 注:在进行卷积之后都需要进行ReLU激活,这里默认未注明。
    Inception-V1(Going deeper with convolutions)_第2张图片

Inception-V1(Going deeper with convolutions)

Abstract

  • 网络的主要特点是在网络结构内部提高资源利用率
  • 允许增加网络的深度和宽度,同时保持计算预算恒定
  • 基于 Hebbian principle and the intuition of multi-scale processing

1 Introduction

  • 目标检测的最大收益不是单独使用深层网络或更大的模型,而是来自深层架构和经典计算机视觉的协同作用,如 Girshick 等人的 R-CNN 算法。
  • 随着移动和嵌入式计算的不断发展,我们算法的效率——尤其是它们的能力和内存使用——变得越来越重要。
  • 在我们的例子中,“deep”这个词有两种不同的含义:首先,我们以“Inception module”的形式引入了一个新的组织层次,还有更直接的增加网络深度的意义。
  • 在本文中,我们将专注于一种用于计算机视觉的高效深度神经网络架构,总的来说,人们可以将 Inception 模型视为 [12] 的逻辑顶点,同时从 Arora 等人的理论工作中汲取灵感和指导

2 Related Work

  • 对于 Imagenet 等较大的数据集,最近的趋势是增加层数 [12] 和层大小 [21, 14],同时使用 dropout [7] 来解决过拟合问题。
  • 受到灵长类视觉皮层神经科学模型的启发,Serre 等人使用一系列不同大小的固定 Gabor 滤波器来处理多个尺度,类似于 Inception 模型。
    然而,与 [15] 的固定 2 层深度模型相反,== Inception 模型中的所有过滤器都是学习的。此外,在 GoogLeNet 模型的情况下,Inception 层被重复多次,导致了一个 22 层的深度模型。==
  • Network-in-Network 是 为了增加神经网络的表示能力。
    当应用于卷积层时,该方法可以被视为附加的 1 × 1 卷积层,然后通常是经过修正的线性激活 [9]。这使其能够轻松集成到当前的 CNN 管道中。
  • 我们在我们的架构中大量使用这种方法。然而,在我们的设置中,** 1 × 1 卷积具有双重目的:最关键的是,它们主要用作降维模块以消除计算瓶颈,否则会限制我们网络的大小。这不仅可以增加深度,还可以增加我们网络的宽度,而不会显着降低性能。 **
  • R-CNN two-stage方法利用了具有低级线索的边界框分割的准确性,以及最先进的 CNN 的强大分类能力。我们在检测提交中采用了类似的管道,但在两个阶段都探索了增强功能,例如多框 [5] 预测用于更高的对象边界框召回率,以及用于更好地分类边界框建议的集成方法。

3 Motivation and High Level Considerations

  • 提高深度神经网络性能最直接的方法是增加它们的规模。然而,这个简单的解决方案有两个主要缺点。
    • 更大的规模通常意味着更多的参数,== 这使得扩大的网络更容易过拟合 ==,尤其是在训练集中标记示例的数量有限的情况下。特别是人类都不太容易区分的事物特征。
    • 统一增加网络规模的另一个缺点是计算资源的使用急剧增加。
  • 解决这两个问题的基本方法是最终从完全连接的架构转向稀疏连接的架构,即使在卷积内部也是如此。
  • 他们的主要结果表明,如果数据集的概率分布可以用一个大的、非常稀疏的深度神经网络来表示,那么可以通过分析最后一层激活的相关统计数据来逐层构建最优网络拓扑,具有高度相关输出的聚类神经元。
  • 不利的一面是,在非均匀稀疏数据结构上进行数值计算时,当今的计算基础设施效率非常低。通过使用稳步改进、高度调优的数值库,允许极其快速的密集矩阵乘法,利用底层CPU或GPU硬件[16,9]的微小细节,这进一步扩大了差距。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。
  • 大多数当前面向视觉的机器学习系统仅通过使用卷积就在空间域中利用稀疏性。
  • ConvNets 传统上在特征维度上使用随机和稀疏连接表,从 [11] 开始,为了打破对称性和改善学习,为了更好地优化并行计算,==趋势又变回了 [9] 的全连接。==结构的一致性和大量过滤器以及更大的批量允许利用高效的密集计算。
  • 关于稀疏矩阵计算的大量文献(例如 [3])表明,将稀疏矩阵聚类为相对密集的子矩阵往往会为稀疏矩阵乘法提供最先进的实用性能。
  • Inception 架构最初是用于评估复杂网络拓扑构造算法的假设输出,==该算法试图近似 [2] 中隐含的视觉网络稀疏结构,并通过密集的、读取的覆盖假设结果可用的组件。==在进一步调整学习率、超参数和改进的训练方法之后,我们确定由此产生的 Inception 架构作为 [6] 和 [5] 的基础网络在定位和对象检测的背景下特别有用。

4 Architectural Details

  1. Inception 架构的主要思想是基于找出卷积视觉网络中的最优局部稀疏结构如何被现成的密集组件逼近和覆盖。请注意,假设平移不变性意味着我们的网络将由卷积构建块构建。我们所需要的只是找到最优的局部构造并在空间上重复它。
  2. 为了避免补丁对齐问题,Inception 架构的当前版本仅限于过滤器大小 1×1、3×3 和 5×5,但是这个决定更多地基于方便而不是必要性。这也意味着建议的架构是所有这些层的组合,它们的输出滤波器组连接成一个单一的输出向量,形成下一阶段的输入。此外,由于池化操作对于当前最先进的卷积网络的成功至关重要,这表明在每个这样的阶段添加替代并行池化路径也应该具有额外的有益效果(见图 2(a))。
    Inception-V1(Going deeper with convolutions)_第3张图片
  3. 这导致了所提出架构的第二个想法:明智地应用降维和投影,否则计算要求会增加太多。
    • 这是基于嵌入的成功:即使是低维嵌入也可能包含有关相对较大图像块的大量信息。
    • 然而,嵌入以密集、压缩的形式表示信息,压缩信息更难建模。
    • 我们希望在大多数地方保持我们的表示稀疏,并且仅在信号必须集体聚合时才压缩信号。也就是说,在昂贵的 3×3 和 5×5 卷积之前,使用 1×1 卷积来计算缩减。除了被用作为reductions之外,它们还包括使用整流线性激活,这使它们具有双重用途。最终结果如图 2(b) 所示。
  4. 通常,**Inception 网络是由上述类型的模块相互堆叠而成的网络,偶尔使用步幅为 2 的最大池化层将网格的分辨率减半。**出于技术原因(训练期间的内存效率),仅在较高层开始使用 Inception 模块而将较低层保持在传统卷积方式中似乎是有益的。
    这不是绝对必要的,只是反映了我们当前实施中的一些基础设施效率低下。
    • 这种架构的主要优点之一是它允许显着增加每个阶段的单元数量,而不会导致计算复杂性不受控制的膨胀。
    • 降维的普遍使用允许将最后阶段的大量输入过滤器屏蔽到下一层,首先降低它们的维度,然后再用大块大小对它们进行卷积
    • 这种设计的另一个实际有用的方面是它符合直觉,即视觉信息应该在不同的尺度上进行处理,然后聚合,以便下一阶段可以同时从不同的尺度提取特征。

  • 计算资源的改进使用允许增加每个阶段的宽度以及阶段的数量,而不会陷入计算困难。

5 GoogLeNet

Inception-V1(Going deeper with convolutions)_第4张图片
我们网络中接受域的大小为 224×224,采用均值减法的 RGB 颜色通道。
“#3×3 reduce”和“#5×5 reduce”代表在3×3和5×5卷积之前使用的reduce层中1×1过滤器的数量。
在池项目列中的内置最大池化之后,可以看到投影层中 1×1 过滤器的数量。所有这些减少/投影层也使用整流线性激活。

鉴于网络相对较大的深度,以有效方式将梯度传播回所有层的能力是一个问题。
一个有趣的见解是,相对较浅的网络在此任务上的强大性能表明,网络中间的层产生的特征应该具有很强的辨别力。
过添加连接到这些中间层的辅助分类器,我们希望在分类器的较低阶段鼓励区分,增加传播回来的梯度信号,并提供额外的正则化。
这些分类器采用较小卷积网络的形式,置于 Inception (4a) 和 (4d) 模块的输出之上。
在训练期间,它们的损失以折扣权重添加到网络的总损失中(辅助分类器的损失权重为 0.3)。在inference time,这些辅助网络被丢弃。
侧边额外网络的确切结构,包括辅助分类器,如下:

  • 具有5×5 大小的过滤器和步长3 的平均池化层,导致(4a) 阶段的输出为4×4×512,(4d) 阶段的输出为4×4×528。
  • 具有 128 个滤波器的 1×1 卷积,用于降维和修正线性激活。
  • 一个具有 1024 个单元和整流线性激活的全连接层。
  • 丢弃输出的比率为 70% 的droupout层。
  • 将softmax loss 作为分类器的线性层(预测与主分类器相同的1000 个类,但在推理时删除)。
    Inception-V1(Going deeper with convolutions)_第5张图片
    Inception-V1(Going deeper with convolutions)_第6张图片
    Inception-V1(Going deeper with convolutions)_第7张图片
    注:
  • 其使用了两个辅助分类器,权重为0.3,但存在“第一个loss对网络无作用的说法”
  • 为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。文章中说这两个辅助的分类器的loss应该加一个衰减系数,但看源码中的model也没有加任何衰减。此外,实际测试的时候,这两个额外的softmax会被去掉。

6 Training Methodology

  • 网络使用 DistBelief [4] 分布式机器学习系统进行训练,使用适度的模型和数据并行性。
  • 使用基于 CPU 的实现
  • 我们的训练使用具有 0.9 动量 的异步随机梯度下降,固定学习率计划(每 8 个epoch将学习率降低 4%)。
    Polyak averaging [13] 用于创建推理时使用的最终模型。
    一些模型主要是针对较小的相关作物进行训练,而另一些针对较大的作物进行训练。
  • 一个在比赛后被证明效果很好的方法包括:
    • 对图像的各种大小的块进行采样,其大小均匀地分布在图像区域的 8% 到 100% 之间,并且其纵横比在 3/4 和4/3之间随机选择
    • 此外,我们发现 Andrew Howard 的光度失真在某种程度上有助于对抗过拟合。
    • 此外,我们开始使用==随机插值方法(双线性、面积、最近邻和三次,等概率)==相对较晚地调整大小并结合其他超参数变化,因此我们无法确定最终结果是否受到这些因素的积极影响。

7 ILSVRC 2014 Classification Challenge Setup and Results

除了本文前面提到的训练技术外,我们在测试过程中还采用了一套技术以获得更高的性能,我们将在下面详细说明。

  1. 我们独立训练了同一个 GoogLeNet 模型的 7 个版本(包括一个更宽的版本),并与它们进行了集成预测。这些模型使用相同的初始化(即使具有相同的初始权重,主要是由于an oversight)和学习率策略进行训练,它们仅在采样方法和它们看到输入图像的随机顺序上有所不同
  2. 在测试过程中,我们采用了比 Krizhevsky 等人更激进的裁剪方法。 具体来说,我们将图像调整为 4 个比例,其中较短的维度(高度或宽度)分别为 256、288、320 和 352,取这些调整大小的图像的左、中和右正方形(在肖像图像的情况下,我们取顶部、中心和底部方块)。对于每个正方形,我们然后采用 4 个角和中心 224×224 裁剪以及调整为 224×224 的正方形及其镜像版本。这导致每张图像 4×3×6×2 = 144 次裁剪。
  3. softmax 概率在多个crops和所有单个分类器上取平均值以获得最终预测。在我们的实验中,我们分析了验证数据的替代方法,例如对作物进行最大池化和对分类器求平均,但它们导致的性能比简单平均差
    Inception-V1(Going deeper with convolutions)_第8张图片
    Inception-V1(Going deeper with convolutions)_第9张图片

8 ILSVRC 2014 Detection Challenge Setup and Results

GoogLeNet 用于检测的方法类似于 R-CNN,但增加了 Inception 模型作为区域分类器。

  • 此外,通过将选择性搜索方法与多框预测相结合,提高了region proposal ,以提高对象边界框召回率。
    为了减少false positives的数量,超像素大小增加了 2 倍。这将来自选择性搜索算法的proposals 减半。

  • 我们添加了来自 multi-box 的 200 个region proposals,总共占 [6] 使用的提案的 60%,同时将覆盖率从 92% 增加到 93%。减少覆盖范围增加的region proposals数量的总体效果是单个模型案例的平均精度提高了 1%。
    最后,我们在对每个区域进行分类时使用 6 个 ConvNet 的集合,将结果从 40% 提高到 43.9%。

  • 请注意,与 R-CNN 相反,由于时间不够,我们没有使用边界框回归。

我们在表 4 中报告了官方分数和每个团队的常用策略:使用外部数据、集成模型或上下文模型。
外部数据通常是 ILSVRC12 分类数据,用于预训练模型,然后在检测数据上进行细化。
一些团队还提到了本地化数据的使用。
由于定位任务边界框的很大一部分不包含在检测数据集中,因此可以使用此数据预训练通用边界框回归器,就像使用分类进行预训练一样。 GoogLeNet 没有使用本地化数据进行预训练。

在表 5 中,我们仅使用单一模型比较结果。
表现最好的模型是 Deep Insight,令人惊讶的是,在 3 个模型的集成中仅提高了 0.3 个百分点,而 GoogLeNet 使用集成获得了明显更强的结果

9 Conclusions

  1. 证明了:通过现成的密集构建块来逼近预期的最佳稀疏结构是改进计算机视觉神经网络的可行方法。
  2. 与较浅和较窄的网络相比,这种方法的主要优点是在适度增加计算要求的情况下显着提高质量
  3. 尽管预计可以通过具有相似深度和宽度的更昂贵的网络来实现相似的结果质量,但我们的方法产生了确凿的证据,表明转向更稀疏的体系结构通常是可行且有用的想法。这表明在[2]的基础上以自动化方式创建更稀疏和更精细的结构的未来工作很有前景。

你可能感兴趣的:(论文笔记,神经网络,卷积)