GoogleNet/Inception(2014)

news/2024/7/10 0:54:45 标签: 深度学习, 目标检测, 计算机视觉


文章目录

  • Abstract
  • 1 Introduction
  • 2 Related Work
  • 3 Motivation and High Level Considerations
    • drawback
    • solve
  • 4 Architectural Details
    • 4.1 naive version
    • dimension reductions
  • 5 GoogLeNet
  • 6 Training Methodology
  • 7 ILSVRC 2014 Classification Challenge Setup and Results
  • 8 ILSVRC 2014 Detection Challenge Setup and Results
  • 9 Conclusions

原文

Abstract

我们提出了一个代号为Inception的深度卷积神经网络架构,它负责在2014年ImageNet大规模视觉识别挑战赛(ILSVRC14)中设置分类和检测的新技术。这种体系结构的主要特点是提高了网络内计算资源的利用率。这是通过精心设计来实现的,该设计允许增加网络的深度和宽度,同时保持计算预算不变。为了优化质量,架构决策基于Hebbian原则和多尺度处理的直觉。在我们提交的ILSVRC14中,我们使用了一个名为GoogLeNet的特殊化身,这是一个22层的深度网络,其质量是在分类和检测的背景下评估的。

1 Introduction

我们提交给ILSVRC 2014的GoogLeNet实际上使用的参数比两年前Krizhevsky等人[9]的获奖架构少了12倍,而精度却显著提高。物体检测的最大收获并不是来自单独使用深度网络或更大的模型,而是来自深度架构和经典计算机视觉的协同作用,如Girshick等人的R-CNN算法
另一个值得注意的因素是,随着移动和嵌入式计算的不断发展,我们算法的效率——尤其是它们的功率和内存使用——变得越来越重要。值得注意的是,本文中提出的深层架构设计的考虑因素包括了这个因素,而不是纯粹地关注精度数字。对于大多数实验,这些模型的设计是为了在推理时保持15亿乘法的计算预算,因此它们不会最终成为纯粹的学术好奇心,而是可以以合理的成本投入到现实世界中,即使是在大型数据集上

2 Related Work

简要介绍了各种模型,并与提出的Inception模型进行了对比
LeNet-5开始[10],卷积神经网络(CNN)通常具有标准结构——堆叠的卷积层(可选的是对比度归一化和最大池化)之后是一个或多个全连接层。这种基本设计的变体在图像分类文献中很普遍,并且在MNIST, CIFAR以及最值得注意的ImageNet分类挑战上产生了迄今为止最好的结果[9,21]。对于较大的数据集,如Imagenet,最近的趋势是增加层数[12]和层大小[21,14],同时使用dropout[7]来解决过拟合问题

3 Motivation and High Level Considerations

提高深度神经网络性能的最直接的方法是增加它们的大小。这包括增加网络的深度(层数)和宽度(每层上的单元数)。这是训练高质量模型的一种简单而安全的方法,特别是考虑到大量标记训练数据的可用性。然而,这个简单的解决方案有两个主要缺点

drawback

  1. 更大的尺寸通常意味着更多的参数这使得扩大后的网络更容易出现过拟合,特别是当训练集中有标签的样本数量有限时。这可能成为一个主要的瓶颈,因为创建高质量的训练集可能是棘手和昂贵的,特别是如果需要专业的人类评分员来区分像ImageNet(甚至在1000类ILSVRC子集中)这样的细粒度视觉类别,如图1所示。
  2. 网络规模均匀增加的另一个缺点是计算资源的使用急剧增加。例如,在深度视觉网络中,如果两个卷积层连接在一起,其过滤器数量的任何均匀增加都会导致计算量的二次增长。如果增加的容量被低效地使用(例如,如果大多数权重最终接近于零),那么就会浪费大量的计算。由于在实践中计算预算总是有限的,因此有效地分配计算资源比不加区分地增加大小更可取,即使主要目标是提高结果的质量

solve

解决这两个问题的基本方法是最终从完全连接转向稀疏连接架构,甚至在卷积内部也是如此。除了模拟生物系统外,由于Arora等人的开创性工作,这也将具有更坚实的理论基础的优势[2]。他们的主要结果表明,如果数据集的概率分布可以用一个大的、非常稀疏的深度神经网络来表示,那么通过分析最后一层的激活和具有高度相关输出的聚类神经元的相关统计,可以逐层构建最优网络拓扑。尽管严格的数学证明需要非常严格的条件,但这一说法与著名的Hebbian原理(神经元一起放电,连接在一起)相呼应的事实表明,在实践中,即使在不那么严格的条件下,其基本思想也是适用的

缺点是,当涉及到非均匀稀疏数据结构的数值计算时,当今的计算基础设施效率非常低。即使算术运算的数量减少了100倍,查找和缓存丢失的开销仍然占主导地位,因此切换到稀疏矩阵是不值得的。通过使用稳步改进的、高度调整的数字库,差距进一步扩大,这些库允许极快的密集矩阵乘法,利用底层CPU或GPU硬件的微小细节[16,9]。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。目前大多数面向视觉的机器学习系统仅通过使用卷积来利用空间域的稀疏性。然而,卷积是作为与前一层补丁的密集连接的集合来实现的。传统上,卷积神经网络在特征维度上使用随机和稀疏连接表,从[11]开始,为了打破对称性和改善学习,趋势又回到了全连接[9],为了更好地优化并行计算。结构的均匀性和大量的过滤器和更大的批量大小允许利用高效的密集计算

Inception架构最初是作为第一作者的一个案例研究,用于评估一个复杂的网络拓扑构建算法的假设输出

但是,我们必须谨慎:尽管所提出的架构在计算机视觉方面已经取得了成功,但其质量是否可以归因于导致其构建的指导原则仍然值得怀疑

4 Architectural Details

4.1 naive version

Inception架构的主要思想是基于找出卷积视觉网络中最优的局部稀疏结构如何被逼近并被现成的密集组件覆盖。注意,假设平移不变性意味着我们的网络将由卷积构建块构建。我们所需要的只是找到最优的局部结构,并在空间上重复它。Arora等人[2]提出了一种逐层构建方法,分析最后一层的相关统计数据,并将其聚类成高相关性的单元组。这些簇形成下一层的单元,并与前一层的单元相连。我们假设前一层的每个单元对应于输入图像的某个区域,这些单元被分组到滤波器组中。在较低的层(靠近输入的层)中,相关单元将集中在局部区域。这意味着,我们最终会得到很多簇集中在一个区域,它们可以在下一层被一层1×1卷积覆盖,如[12]所示。
然而,我们也可以预期,在更大的斑块上,可以被卷积覆盖的空间上分散的簇的数量会更少,在越来越大的区域上,斑块的数量会越来越少。为了避免补丁对齐问题,Inception架构的当前版本被限制为过滤器大小1×1, 3×3和5×5,然而这个决定更多的是基于方便而不是必要性。这也意味着建议的体系结构是所有这些层的组合,它们的输出过滤器组连接成一个输出向量,形成下一阶段的输入。此外,由于池化操作对于当前最先进的卷积网络的成功至关重要,因此建议在每个这样的阶段添加替代并行池化路径也应该具有额外的有益效果(参见图2(a))。
由于这些“Inception模块”彼此堆叠在一起,它们的输出相关统计数据必然会发生变化:随着更高抽象的特征被更高的层捕获,它们的空间集中度预计会降低,这表明3×3和5×5卷积的比例应该随着我们移动到更高的层而增加。

以上模块的一个大问题是,至少在这种na¨ıve形式中,即使是适度数量的5×5卷积,在具有大量过滤器的卷积层之上也可能过于昂贵。一旦池化单元加入到混合中,这个问题就变得更加明显:它们的输出过滤器数量等于前一阶段的过滤器数量。

dimension reductions

池化层的输出与卷积层的输出的合并将不可避免地导致每一阶段的输出数量增加。即使这种体系结构可能涵盖了最优的稀疏结构,但它的效率非常低,会在几个阶段内导致计算量激增
这就引出了所建议的体系结构的第二个思想:在计算需求增加过多的地方明智地应用降维和投影。这是基于嵌入的成功:即使是低维的嵌入也可能包含大量关于一个相对较大的图像补丁的信息。然而,嵌入以密集的压缩形式表示信息,压缩信息更难建模。我们希望在大多数地方保持我们的表示是稀疏的(正如[2]的条件所要求的那样),并且只在需要大量聚集信号时才压缩信号。也就是说,1×1卷积被用来在昂贵的3×3和5×5卷积之前计算约简。除了用作还原剂外,它们还包括使用整流线性活化,使它们具有双重用途。最终结果如图2(b)所示。

一般来说,Inception网络是由上述类型的模块相互堆叠而成的网络,偶尔会有跨幅为2的最大池化层,以使网格的分辨率减半。出于技术原因(训练期间的内存效率),只在较高层开始使用Inception模块,而在较低层保持传统的卷积方式似乎是有益的。这并不是绝对必要的,只是反映了我们目前实施中的一些基础设施效率低下。

这种体系结构的一个主要优点是,它允许在每个阶段显著增加单元的数量,而不会导致计算复杂性失控。降维的普遍使用允许将上一级的大量输入滤波器屏蔽到下一层,首先降低它们的维度,然后用大的贴片尺寸对它们进行卷积。这种设计的另一个实际有用的方面是,它符合直觉,即视觉信息应该在不同的尺度上进行处理,然后进行聚合,以便下一阶段可以同时从不同的尺度上抽象特征

计算资源的改进使用允许增加每个阶段的宽度和阶段的数量,而不会遇到计算困难。利用初始架构的另一种方法是创建稍微逊色但计算成本更低的版本。我们发现,所有包含的旋钮和杠杆都允许计算资源的可控平衡,这可能导致网络比具有非inception架构的类似性能的网络快2 - 3倍,然而这在这一点上需要仔细的手动设计

5 GoogLeNet

我们省略了该网络的细节,因为我们的实验表明,确切的体系结构参数的影响相对较小。这里,表1描述了最成功的特定实例(名为GoogLeNet),用于演示。在我们的集合中,7个模型中的6个使用了完全相同的拓扑(用不同的采样方法训练)。在这里插入图片描述
所有的卷积,包括那些在Inception模块内的,都使用整流线性激活。在我们的网络中,接受域的大小为224×224,取RGB颜色通道的平均次牵引。“#3×3 reduce”和“#5×5 reduce”表示在3×3和5×5卷积之前使用的约简层中1×1过滤器的数量。可以在pool proj列的内置max-pooling之后看到投影层中1×1过滤器的数量。所有这些还原/投射层也使用整流线性激活

该网络的设计考虑了计算效率和实用性,因此推理可以在单个设备上运行,甚至包括那些计算资源有限的设备,特别是低内存占用的设备。当只计算带参数的层时,网络深度为22层(如果我们也计算池,则为27层)。用于构建网络的总层数(独立的构建块)约为100层。然而,这个数字取决于所使用的机器学习基础设施系统。在分类器之前使用平均池是基于[12]的,尽管我们的实现不同于我们使用了额外的线性层。这使得适应和微调我们的网络为其他标签集很容易,但它主要是方便,我们不期望它有很大的影响。研究发现,从完全连接的层到平均池化将top-1的准确率提高了约0.6%,然而,即使在删除了完全连接的层之后,dropout的使用仍然是必不可少的

考虑到网络的深度相对较大,以有效的方式将梯度传播回所有层的能力是一个问题。一个有趣的观点是,相对较浅的网络在这个任务上的强大性能表明,由网络中间的层产生的特征应该是非常有区别的通过添加连接到这些中间层的辅助分类器,我们期望在分类器的较低阶段鼓励识别,增加被传播回来的梯度信号,并提供额外的正则化。这些分类器采用较小的卷积网络的形式,放在Inception (4a)和(4d)模块的输出之上。在训练过程中,它们的损失以一个折扣权重加到网络的总损失中(辅助分类器的损失加权为0.3)。在推理时,这些辅助网络被丢弃。
包括辅助分类器在内的侧侧额外网络的确切结构如下:
•具有5×5过滤器大小和步幅3的平均池化层,导致(4a)的输出为4×4×512, (4d)的输出为4×4×528
•1×1卷积与128个过滤器降维和整流线性激活
•具有1024个单元和整流线性激活的完全连接层
•drop - out层与70%的下降输出比率
•使用softmax loss作为分类器的线性层(预测与主分类器相同的1000个类,但在推理时被删除)

6 Training Methodology

我们的网络使用DistBelief[4]分布式机器学习系统进行训练,该系统使用适量的模型和数据并行性。虽然我们只使用了基于CPU的实现,但粗略估计表明,GoogLeNet网络可以在一周内使用少量高端gpu进行收敛训练,主要限制是内存使用。我们的训练使用0.9动量的异步随机梯度下降[17],固定学习率计划(每8个epoch学习率降低4%)。使用Polyak平均[13]来创建推理时使用的最终模型
在比赛前的几个月里,我们的图像采样方法发生了很大的变化,已经融合的模型被其他选项训练,有时与改变的超参数(如辍学率和学习率)结合在一起,所以很难给出一个最有效的训练这些网络的单一方法的明确指导。更复杂的是,受[8]的启发,一些模型主要在较小的相对作物上进行训练,另一些则在较大的相对作物上进行训练。尽管如此,在比赛结束后,一个被证明非常有效的处方包括对图像的各种大小的斑块进行采样,这些斑块的大小均匀分布在图像面积的8%到100%之间,其宽高比在3/4到4/3之间随机选择。此外,我们发现Andrew Howard[8]的光度失真在一定程度上有助于对抗过拟合。此外,我们开始使用随机插值方法(双线性,面积,最近邻和三次,等概率)来调整大小相对较晚,并与其他超参数变化一起使用,因此我们不能确定它们的使用是否对最终结果产生积极影响。

7 ILSVRC 2014 Classification Challenge Setup and Results


8 ILSVRC 2014 Detection Challenge Setup and Results


9 Conclusions

我们的结果似乎提供了一个坚实的证据,表明通过现成的密集构建块近似预期的最佳稀疏结构是改进计算机视觉神经网络的可行方法该方法的主要优点是与较浅和较窄的网络相比,在计算需求适度增加的情况下,显著提高了质量。还要注意,我们的检测工作是有竞争力的,尽管既没有利用上下文,也没有执行边界盒回归,这一事实进一步证明了Inception架构的强度。尽管我们期望类似的结果质量可以通过类似深度和宽度的更昂贵的网络来实现,但我们的方法提供了确凿的证据,证明转向更稀疏的架构总体上是可行和有用的想法。这表明,在[2]的基础上,未来有希望以自动化的方式创建更稀疏和更精细的结构。


http://www.niftyadmin.cn/n/5247452.html

相关文章

python pandas dataframe常用数据处理总结

最近一直在做数据处理相关的工作,有几点经常遇到的情况总结如下: 数据中存在为空数据如何处理 处理方式1:丢弃数据行 # 实现方式1 data data.dropna(subset[id]) # 若id列中某行数值为空,丢弃整行数据 # 实现方式2 data df[df…

《算法竞赛进阶指南》数论篇

下述理论主要参考书目: 电子版pdf:算法竞赛进阶指南(p133-150) 文章目录 下述理论主要参考书目: [电子版pdf:算法竞赛进阶指南(p133-150)](http://www.j9p.com/down/536233.html)首先补充两个前置知识:约数和最大约数有关性质,可选…

c++ 解析zip文件,实现对流式文件pptx内容的修改

libzip 官网地址&#xff1a;示例代码 #include <iostream> #include <cstdlib> #include <cstring> #include <ctime> #include <zip.h>//解析原始zip内容&#xff0c;保存为新的zip文件 int ziptest(const char* inputPath, const char* out…

​LeetCode解法汇总1466. 重新规划路线

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; n 座城市&…

为“异常”努力是值得的

异常是OO语言处理错误的方式,在C中&#xff0c;鼓励使用异常。侯捷再书中谈起异常&#xff0c;“十年前撰写“未将异常考虑在内的”函数是为一种美好实践&#xff0c;而今我们致力于写出“异常安全码”。”可见异常安全的重要。 说起异常安全&#xff0c;首先就要是异常的出现…

DataGrip常见问题

查询语句结果没有输出在output中 进行如下配置 配置后查询结果输出在output中 左侧数据库链接信息导航栏被隐藏 以上导航栏被隐藏&#xff0c;按下图操作调出

java一对一聊天

package 一对一用户; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector…

SAP UI5 walkthrough step8 Translatable Texts

在这个章节&#xff0c;我们会将一些文本常量独立出一个资源文件 这样的话&#xff0c;可以方便这些文本常量被翻译成任意的语言 这种国际化的操作&#xff0c;我们一般命名为i18n 新建一个文件i18n.properties webapp/i18n/i18n.properties (New) showHelloButtonTextSay …