GoogleNet论文精读 | 翻译+学习笔记+PyTorch代码复现

前言

上一篇我们介绍了VGG的论文和代码,并且附有视频讲解,今天我们来看这篇, GoogLeNet 是 Google 在 2014 年提出的一种深度卷积神经网络(CNN),用于图像分类任务。它在 ILSVRC 2014(ImageNet 大规模视觉识别挑战赛)中取得了第一名,表现优于当时的 AlexNet 和 VGGNet。GoogLeNet 的核心创新在于 Inception 结构,GoogLeNet 通过 Inception 结构 提高特征提取能力,采用 更深但高效的网络,使用 全局平均池化 减少参数,引入 辅助分类器 促进训练,并以 更少的计算量 实现优越性能。

论文原文:https://arxiv.org/pdf/1409.4842.pdf

视频讲解: 保姆级详解经典神经网络(六)GoogLeNet网络(论文精读+网络详解+代码实战)上_哔哩哔哩_bilibili

代码讲解: 保姆级详解经典神经网络(六)GoogLeNet网络(论文精读+网络详解+代码实战)下_哔哩哔哩_bilibili

领取100G深度学习资料,500多篇经典论文,论文辅导等请关注作者公众号: 智算学术 回复:资料 领取

前景回顾

深度学习入门篇(一)--来瞻仰卷积神经网络的鼻祖LeNet_yann lecun卷积网络的奠定文章-CSDN博客

深度学习入门篇(二) 从理论到实战:LeNet代码实现与MNIST数据集训练(PyTorch)_lenet搭建与mnist训练-CSDN博客

经典神经网络超详细(三): AlexNet网络(论文精读+网络详解+代码实战)上-CSDN博客

经典神经网络超详细(四): AlexNet网络(论文精读+网络详解+代码实战)下-CSDN博客

经典神经网络超详细解读(五)VGG网络(论文精读+网络详解+代码实战)_dense convnet evaluation-CSDN博客

目录

前言

前景回顾

Abstract摘要

一.Introduction-介绍

二. Related Work—相关工作

三.Motivation and High Level Considerations(动机与高层次考虑)

四.Architectural Details(架构细节)

五. GoogLeNet

六、Training Methodology—训练方法

七、ILSVRC 2014 Classification Challenge Setup and Results—ILSVRC 2014分类挑战赛设置和结果

八、ILSVRC 2014 Detection Challenge Setup and Results—ILSVRC 2014检测挑战赛设置和结果

九、Conclusions—总结


Abstract摘要

翻译

我们提出了一种深度卷积神经网络架构,代号为 Inception,该架构在 2014 年 ImageNet 大规模视觉识别挑战赛(ILSVRC14)中创造了新的分类和检测领域的最新技术水平(state of the art)。该架构的主要特点是 更高效地利用网络内部的计算资源。这一点通过精心设计得以实现,使得网络可以在 保持计算预算恒定的同时增加深度和宽度。为了优化模型质量,架构设计基于 Hebbian 原则多尺度处理的直觉。在我们提交至 ILSVRC14 竞赛的具体实现版本中,采用了一种 22 层深的网络,称为 GoogLeNet,其性能在分类和检测任务中得到了验证。

精读

  1. 提出了一个新的神经网络架构: Inception,主要目的是更高效的利用计算资源

  2. 模型架构设计基于Hebbian原则和不同尺度卷积核并行提取特征。

  3. 网络结构是22层神经网络,使得网络结构更宽和更深

什么是Hebbian 原则

在生物界的理论就是"用进废退",如果两个突触是比较活跃,那么它们两个很有可能进行连接后,产生新的反应,那么在神经网络中借鉴这种思想,当很多的卷积核同时对不同特征进行提取后,因为卷积核的不同,提取的特征也不同,举个例子,一只小狗的图片,在用Inception进行提取特征,有的卷积核提取的是狗的腿,有的是头部,那么这些特征汇总到一起后,就会增强狗这个特性,从而增加了识别的预测准确率

比如,在卷积核提取特征时,是狗的概率和是猫的概率几乎相等,但是其他并行的卷积核提取出一个特别像狗腿的特征后,就会大大增加是狗这个预测的准确性.

一.Introduction-介绍

翻译

在过去的三年里,主要由于深度学习(尤其是卷积神经网络)的进步,图像识别和目标检测的质量取得了显著提升。值得鼓舞的是,这些进展不仅仅依赖于更强大的硬件、更大的数据集和更庞大的模型,而主要是 新思想、新算法 以及 改进的网络架构 所带来的结果。例如,在 ILSVRC 2014 竞赛 中,排名前列的团队在目标检测任务中并未使用新的数据源,而仅使用了该竞赛的分类数据集。

我们提交的 GoogLeNet 模型相比 Krizhevsky 等人在两年前提出的获胜架构,参数量减少了 12 倍,但准确率却显著提升。目标检测领域的最大突破 并非单纯依赖深度网络或更大规模的模型,而是来自 深度架构与传统计算机视觉技术的融合,例如 Girshick 等人提出的 R-CNN 算法。

另一个值得注意的因素是,随着 移动端和嵌入式计算的发展,算法的 计算效率 变得至关重要,尤其是 功耗和内存使用。因此,在设计本文提出的深度网络架构时,我们不仅关注提高准确率,同时也考虑了计算效率,以便这些模型能够在 1.5 billion multiply-adds(15 亿次乘加运算) 的计算预算内进行推理,从而具备 实际应用价值,而不仅仅是学术研究的产物。

本文的重点是一个 高效的计算机视觉深度神经网络架构,代号为 Inception。其名称来源于 Lin 等人在《Network in Network》论文 中的研究成果,同时也受到了著名的网络梗 “We need to go deeper”(“我们需要更深”)的启发。在本研究中,“深度” 具有两层含义:

  1. 引入新的网络组织形式 —— Inception 模块;

  2. 增加网络深度,提升模型表达能力。

总的来说,Inception 结构可以被视为 《Network in Network》 理论的逻辑延续,同时借鉴了 Arora 等人的理论研究。其优势在 ILSVRC 2014 分类和检测任务 上得到了实验验证,并显著超越了当时的最先进水平(state-of-the-art)。

精读

创新点启发来自: Lin 等人在《Network in Network》论文 中的研究成果

1.引入 MLPConv(1×1 卷积 ),提升 conv 的非线性建模能力,优点:减少参数和计算量,降维与升维,引入非线性等 2.使用全局平均池化(GAP)代替全连接层,减少参数,降低过拟合,直接在最后的特征图上取均值,输出类别得分,不再需要高参数量的 FC 层。

什么是GAP:用个生活例子理解 GAP想象你在看一张猫的照片,传统 CNN(带 FC 层)像是在照片上随便挑几个点来判断“这是不是猫”,而 GAP 更像是 把整张照片的所有像素都考虑进来,求个平均值再判断“这是不是猫”——这样得到的答案更稳定,不容易出错!

“深度” 具有两层含义:

  1. 引入新的网络组织形式 —— Inception 模块;

  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 卷积层,通常后接修正线性激活函数 [9]。这使得它可以轻松集成到当前的 CNN 流水线中。我们在我们的架构中大量使用了这种方法。然而,在我们的设置中,1×1 卷积具有双重目的:最重要的是,它们主要用作维度减少模块,以消除计算瓶颈,否则这些瓶颈将限制我们网络的大小。这使得我们不仅可以增加网络的深度,还可以在不显著影响性能的情况下增加网络的宽度。

当前目标检测的领先方法是 Girshick 等人 [6] 提出的 R-CNN(Regions with Convolutional Neural Networks)。R-CNN 将整体检测问题分解为两个子问题:首先利用低级线索,如颜色和超像素一致性,以类别无关的方式为潜在对象提案提供支持,然后使用 CNN 分类器在这些位置识别对象类别。这种两阶段的方法利用了边界框分割的准确性与低级线索的结合,以及先进的 CNN 分类器强大的分类能力。在我们的检测提交中,我们采用了类似的流水线,并在这两个阶段进行了一些改进,例如使用多框 [5] 预测以提高目标边界框的召回率,并采用集成方法来更好地分类边界框提案。

精读

  1. CNN结构:堆叠卷积层(提取特征)+全连接层(分类)。

  1. 大数据集的处理:增加网络层数和层大小,使用dropout。

  1. 最大池化争议:最大池化层会丢失空间信息,但仍在多个任务中有效。

  1. Network-in-Network:通过1×1卷积增强网络的表达能力,主要用于降维。

  1. R-CNN目标检测:分为两阶段,第一步是传统的计算机视觉的方式来框定图像的区域,第二步是利用深度学习的方法来特征提取,并映射为固定大小的特征向量,使用SVM进行分类,预测目标的类别。

三.Motivation and High Level Considerations(动机与高层次考虑)

翻译

提高深度神经网络性能的最直接方法是增加其规模。这包括增加网络的深度——即层数——以及宽度:每一层的单元数。这是一种简单且安全的训练高质量模型的方法,尤其是在大量标注的训练数据可用的情况下。然而,这种简单的解决方案有两个主要缺点。

首先,网络规模增大通常意味着更多的参数,这使得扩大后的网络更容易出现过拟合,尤其是在训练集中的标注样本有限时。这可能成为一个主要的瓶颈,因为创建高质量的训练集是非常棘手且昂贵的,尤其是当需要专家人工标注来区分像ImageNet中这样细粒度的视觉类别时(即使在1000类的ILSVRC子集上),如图1所示。

其次,均匀增加网络规模会导致计算资源的急剧增加。例如,在一个深度视觉网络中,如果两个卷积层串联在一起,任何卷积滤波器数量的均匀增加都会导致计算量的平方增加。如果增加的容量没有得到有效利用(例如,大多数权重接近零),那么就会浪费大量计算资源。由于实际中计算预算总是有限的,因此更倾向于有效地分配计算资源,而不是盲目地增加规模,即使主要目标是提高结果的质量。

解决这两个问题的根本方法是最终从全连接架构转向稀疏连接架构,即便是在卷积内部。除了模仿生物系统外,这还有一个好处,即通过Arora等人的开创性工作提供了更坚实的理论基础[2]。他们的主要结果表明,如果数据集的概率分布可以由一个非常稀疏的大型深度神经网络表示,那么可以通过分析最后一层激活的相关统计数据,并对高度相关的神经元进行聚类,从而逐层构建最优的网络拓扑。尽管严格的数学证明需要非常强的条件,但这一结论与著名的赫布原则(神经元一起激活就会连结在一起)相一致,这表明这个理论在实践中,即使在较宽松的条件下,也是适用的。

但另一方面,现今的计算基础设施在处理非均匀稀疏数据结构的数值计算时非常低效。即使算术操作减少了100倍,由于查找和缓存未命中的开销占主导地位,转向稀疏矩阵也不会有实际的回报。随着高效的数值库不断进步,能够极快地进行稠密矩阵乘法,并充分利用底层CPU或GPU硬件的细节[16, 9],这一差距进一步拉大。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。大多数当前面向视觉的机器学习系统通过采用卷积本身就利用了空间域的稀疏性。然而,卷积是作为密集连接的集合实现的,用于连接前一层的补丁。自[11]以来,ConvNets传统上使用随机和稀疏的连接表来打破对称性并改进学习,但随着[9]的提出,趋势回归到全连接,以更好地优化并行计算。结构的均匀性和大量滤波器以及更大的批次大小使得能够利用高效的稠密计算。

这就提出了一个问题,是否有希望找到下一步的中间步骤:一种架构,能够利用额外的稀疏性,即使是在滤波器级别,正如理论所建议的那样,但又能够利用我们当前硬件对稠密矩阵的计算。稀疏矩阵计算的广泛文献(例如,[3])表明,将稀疏矩阵聚类成相对稠密的子矩阵,通常能为稀疏矩阵乘法带来最先进的实际性能。我们认为,在不久的将来,类似的方法有望用于自动构建非均匀深度学习架构。

Inception架构最初作为第一作者的一个案例研究,评估一个试图近似由[2]提出的视觉网络稀疏结构的复杂网络拓扑构建算法的假设输出,并通过稠密且易于获得的组件来覆盖这一假设结果。尽管这是一项高度推测性的工作,但在精确选择拓扑的两轮迭代后,我们已经看到与基于[12]的参考架构相比,已经取得了适度的提升。在进一步调整学习率、超参数和改进训练方法后,我们确定Inception架构在定位和目标检测中,作为[6]和[5]的基础网络,尤其有用。有趣的是,尽管大多数最初的架构选择受到了质疑并进行了彻底的测试,但它们至少在局部上是最优的。

然而,需要谨慎:尽管提出的架构已在计算机视觉中取得了成功,但是否可以将其质量归因于指导其构建的原则仍然值得怀疑。确保这一点需要进行更为彻底的分析和验证。例如,如果基于以下原理的自动化工具能找到类似但更好的拓扑,适用于视觉网络,便能证明这一点。最有说服力的证据将是,如果一个自动化系统能够创建网络拓扑,并在其他领域中使用相同的算法,但采用非常不同的全局架构,同时仍然能够取得类似的提升。那么至少,Inception架构的初步成功为这一方向的未来工作提供了坚实的动机。

精读

深度神经网络增大模型的常见做法:通常为了提高深度神经网络的性能,会增加网络的层数(深度)和每层的单位数(宽度)。这确实能提高模型的质量,尤其是在有大量标签数据的情况下。

存在的问题

  • 容易过拟合:网络变大,参数多了,容易记住训练数据的噪声,导致在新数据上表现不好。

  • 计算资源浪费:增大网络需要更多的计算资源,但如果这些增加的计算没有用上,就会浪费很多资源。

解决方案

  • 稀疏连接减少不必要的连接,使得网络更加“轻量”,避免无效计算。这可以减少过拟合并优化计算资源的使用。

  • 稀疏结构通过理论和实验,表明稀疏网络能有效表示数据,但现在的计算设备对稀疏结构支持不太好,因此难以完全实现。

    什么是“特征维度”:特征维度就是你可以把每一层网络的输出看作是由很多特征组成的一个“大集合”。比如,如果你用卷积神经网络(CNN)处理图像,你可能会得到很多不同的特征图(feature maps),每一张特征图可以看作是输入图像在某个方面(比如边缘检测)的表现,那么这个大集合可以用一个超级大的矩阵来表示,并且计算复杂度超级高

    如何理解在特征维度进行稀疏连接

    在特征维度上做稀疏连接的意思就是:在神经网络中,我们并不是让每个特征都与每个其他特征连接。相反,我们只挑选最有用、最相关的特征连接。这样做的好处是:可以减少计算量,节省内存,并且让网络更专注于重要的特征。那么如何体现在矩阵中呢,就是用多个稀疏矩阵来表示一个复杂的"大集合"的矩阵,这样在数学上可以理解为分步计算后在加和

Inception架构的提出

  • Inception架构最初是基于对稀疏网络的理论研究,目的是通过密集的计算组件来模拟稀疏网络结构,结果在图像定位和目标检测中取得了不错的效果(在数学上理解就是,把一个大的矩阵拆分成多个稀疏矩阵来并行计算后在合并输出)。

  • 通过调整学习率、超参数和训练方法,Inception架构在实际应用中得到了显著的提升。

四.Architectural Details(架构细节)

翻译

Inception架构的主要思想是如何通过现有的密集组件来近似并覆盖卷积视觉网络中的最优局部稀疏结构。假设网络是由卷积构建模块组成,我们的目标是找到最优的局部结构,并在空间上重复它。Arora等人建议逐层构建网络,分析上一层的相关性统计,并将这些相关性高的单位聚类,形成下一层的单位并连接到上一层的单位。我们假设上一层的每个单位对应输入图像的某个区域,这些单位被分组到滤波器组中。在靠近输入的低层中,相关的单位会集中在局部区域,这意味着最终会有很多集中在同一区域的聚类,可以通过1×1的卷积层来覆盖。也可以预期会有一些更小的、更广泛分布的聚类,可以通过在更大区域上进行卷积来覆盖。为了避免补丁对齐问题,当前Inception架构限制了滤波器的大小为1×1、3×3和5×5,但这一决定更多是出于便利,而非必要性。这也意味着该架构是将所有这些卷积层的输出滤波器组串联成一个输出向量,作为下一阶段的输入。此外,由于池化操作在当前卷积网络的成功中起到了至关重要的作用,建议在每个阶段增加一个并行池化路径,也会带来额外的好处(见图2(a))。

随着这些“Inception模块”堆叠在一起,它们的输出相关性统计将会变化:随着高层次特征的提取,空间集中度会降低,意味着在更高层中3×3和5×5卷积的比例应该增加。

一个大问题是,至少在这种简单形式下,即使是适度数量的5×5卷积,也会在卷积层的滤波器数量很大时变得非常昂贵。当池化单元加入时,这个问题变得更加明显:池化层的输出滤波器数量与前一层的滤波器数量相等。池化层的输出与卷积层的输出合并会导致每一阶段的输出数量急剧增加。尽管该架构可能覆盖了最优的稀疏结构,但它在几层之后效率低下,导致计算量急剧增加。

这引出了提出的架构的第二个思路:在计算需求过高时,合理应用维度减少和投影。基于嵌入的成功经验,甚至低维的嵌入也可以包含大量关于较大图像补丁的信息。然而,嵌入是以密集压缩的形式表示信息,压缩信息更难建模。因此,我们希望在大多数地方保持稀疏表示(如[2]所要求的),只有在必须大量聚合时才压缩信号。也就是说,1×1卷积被用来在昂贵的3×3和5×5卷积之前进行降维。除了作为降维,它们还包括使用ReLU激活,使其具有双重用途。最终的结果如图2(b)所示。

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

该架构的一个主要优点是,它允许在每个阶段显著增加单元数,而不会导致计算复杂度的失控。广泛使用维度减少可以有效地减轻上一阶段的大量输入滤波器传递到下一层时的计算负担,先降低其维度,再对其进行大尺寸的卷积操作。这个设计的另一个实际有用的方面是,它符合视觉信息应该在不同尺度上处理并聚合的直觉,这样下一阶段就可以同时从不同尺度中提取特征。

通过提高计算资源的使用效率,Inception架构可以增加每个阶段的宽度以及阶段的数量,而不会遇到计算难题。另一种使用Inception架构的方式是创建稍微差一些但计算更便宜的版本。我们发现,所有这些调节器允许对计算资源进行有控制的平衡,结果可以使网络比没有Inception架构的同等性能网络快2到3倍,尽管目前这仍需要仔细的手动设计。

精读

卷积核的深度是与输入图像通道数保持一致的,输出图像的通道数与卷积核的个数是一致的!!

Inception架构详解

  1. 采用多个尺寸的卷积核(1x1,3x3,5x5,下采样)来并行提取输入图像的特征,每个卷积核只提取一部分特征,然后在拼接在一起(如图1)

    从数学角度来分析: 以前的网络是串联卷积核,然后进行提取特征,那么就相当于一个超大的矩阵,里面有很大的冗余信息,现在并行多个尺寸的卷积核来提取特征后,相当于把一个超大的矩阵给分解开了,分别提取这个卷积核该提取的部分,并形成稀疏矩阵后,再把各个小矩阵拼接

  2. 采用1x1的卷积核进行降维(其实就是降深度) 如图2

    为什么用1x1卷积核呢: 首先在经过了第一步后,在沿着深度方向把特征图拼接起来后,发现一个问题就是深度增加了,我们的结构一共是22层,那么随着层数的增加,导致深度也在不断增加,所以才提出使用1x1的卷积核来限制深度个数!!!

五. GoogLeNet

翻译

我们在ILSVRC14竞赛中选择了GoogLeNet作为我们的团队名称。这个名字是为了向Yann LeCun的开创性LeNet 5网络[10]致敬。我们也使用GoogLeNet来指代我们提交比赛时所使用的Inception架构的特定版本。我们还使用了一个更深更宽的Inception网络,尽管其质量略逊一筹,但将其加入集成网络似乎稍微提升了结果。我们省略了该网络的细节,因为我们的实验表明,确切的架构参数对结果的影响相对较小。在此,描述了这个最成功的特定实例(命名为GoogLeNet),具体细节见表1。相同的拓扑结构(通过不同的采样方法训练)用于我们的集成模型中的6个模型。所有卷积操作,包括Inception模块内部的卷积,都使用了修正线性激活(ReLU)。我们网络的感受野大小是224×224,采用RGB颜色通道并进行均值减法处理。“#3×3 reduce”和“#5×5 reduce”表示在3×3和5×5卷积之前使用的1×1卷积核数量。在“pool proj”列中可以看到在内置最大池化之后,投影层中1×1卷积核的数量。所有这些减小/投影层也使用修正线性激活。

该网络的设计考虑了计算效率和实用性,使得推理可以在包括内存资源有限的设备上运行,特别是对于低内存占用的设备。该网络在计算参数的层数时是22层深(如果也计算池化层则为27层)。网络的总层数(独立构建块)约为100层,但这个数字取决于所使用的机器学习基础设施系统。我们在分类器前使用平均池化的设计基于[12],尽管我们的实现有所不同,我们使用了额外的线性层。这使得我们可以轻松地将网络适应并微调其他标签集,但这主要是为了方便,预计不会产生重大影响。发现从全连接层转到平均池化后,Top-1准确度提高了约0.6%,然而即使去除了全连接层,使用dropout仍然是必要的。

考虑到网络的较大深度,如何有效地将梯度通过所有层进行反向传播是一个问题。一个有趣的观察是,相对较浅的网络在此任务上的强大表现表明,中间层生成的特征应该是非常具备辨别性的。通过在这些中间层添加辅助分类器,我们期望能鼓励分类器低层次的辨别能力,增加反向传播的梯度信号,并提供额外的正则化。这些分类器形式为较小的卷积网络,连接到Inception(4a)和(4d)模块的输出。训练过程中,它们的损失会加到网络的总损失中,并使用折扣权重(辅助分类器的损失被加权为0.3)。在推理时,这些辅助网络会被丢弃。侧面外网络的确切结构,包括辅助分类器,见下文说明,图3展示了最终网络的示意图。

精读

GoogLeNet 网络结构参数的表格, 从左往后的参数解析, type 是每个模块名称, path size/stride 是卷积核的信息,卷积核的大小和步距, output size 是经过这个模块后,输出的尺寸大小, depth是指每个模块的层数, 其他的参数请看下图

这张图是Inception 的结构,其中每个卷积核对应的参数标在了图上, Inception(3a-->5b)的结构是一样的,不一样的是结构里面的参数不同,参数请上面的表格里面对应参数.

这个是googleLeNet的辅助分类器,一共有2个辅助分类器,结构都是一样的,只是连接的位置不同,第一个辅助分类器接在了Inception4a后面,第二个接在了Inception4d后面,全连接层用平均池化层代替后,top-1提高了大约0.6%,之前的VGG Alex等这里都是三个全连接层。最后一层依旧使用dropout防止过拟合,为了在浅层使特征更加有区分性,帮助反向传播,解决梯度消失。增加了两个辅助分类器 L=L(最后)+0.3xL(辅1)+0.3xL(辅2),测试阶段去掉辅助分类器。

接两个辅助分类器的作用:GoogLeNet 中的辅助分类器通过:

  • 解决梯度消失问题

  • 提供额外的监督信号

  • 增强训练的稳定性

  • 提供正则化效果

  • 提高最终性能

上图是整体的结构,卷积 -> 池化 ->卷积 ->池化 -> 9个inception堆叠 (中间两个池化) -> 池化 -> dropout -> 线性层 -> softmax ,增加了两个辅助分类器 L=L(最后)+0.3xL(辅1)+0.3xL(辅2),测试阶段去掉辅助分类器

六、Training Methodology—训练方法

翻译

我们的网络使用DistBelief [4] 分布式机器学习系统进行训练,采用了适量的模型和数据并行化。尽管我们只使用了基于CPU的实现,但粗略估计,GoogLeNet网络可以在几台高端GPU上训练至收敛,所需时间为一周左右,主要限制因素是内存使用量。我们的训练使用了异步随机梯度下降(SGD),动量为0.9 [17],并采用固定学习率调度(每8个epoch将学习率降低4%)。我们还使用了Polyak平均 [13] 来生成最终模型,该模型用于推理阶段。

在进入比赛后,随着几个月的调整,我们的图像采样方法发生了显著变化,已经收敛的模型也使用了其他选项进行训练,有时还配合了更改的超参数,如dropout和学习率。因此,很难给出一个有效的单一训练方法来指导训练这些网络。更复杂的是,一些模型主要在较小的裁剪区域上训练,而其他模型则在较大的裁剪区域上训练,灵感来自于 [8]。尽管如此,比赛后验证过的一种效果良好的训练方法包括:从图像中采样各种大小的补丁,补丁的面积分布均匀地覆盖了图像的8%到100%,且宽高比随机选取在3/4到4/3之间。此外,我们还发现Andrew Howard [8] 提出的光度畸变方法对一定程度上缓解过拟合是有帮助的。最后,我们开始在较晚的阶段和其他超参数变化一起使用随机插值方法(如双线性、面积、最近邻和立方插值,四者的使用概率相同),但我们无法确定这些方法的使用是否对最终结果产生了积极影响。

精读

1.训练系统: 他们用了一个叫 DistBelief 的分布式机器学习系统,采用了模型和数据并行的方法。虽然只用了 CPU,但估计如果用高端 GPU,一周内就能把GoogLeNet训练好。

  1. 训练过程: 他们用了 异步随机梯度下降(SGD)来优化模型,学习率是固定的,每训练8次就降一点(4%)。

图像采样方法: 训练过程中,图像的采样方法不断调整。他们用了不同的超参数(像dropout和学习率),所以没法说哪种训练方法最有效。

采样细节: 他们在训练时会从图像里随机截取不同大小的区域,区域大小在原图面积的 8% 到 100% 之间,宽高比也会随机选,保证多样性。

光度畸变:数据增强的方法(调整亮度,调整对比度,改变色调) 他们用了一个叫 Andrew Howard 的方法(调整亮度,调整对比度,改变色调)来调整图像的光度,以减少模型的过拟合问题。

插值方法:(插值方法在神经网络中主要用于图像预处理和数据增强,它能确保图像在尺寸变换(例如缩放、裁剪等)过程中保持尽可能多的细节,从而帮助网络更好地训练和预测。) 在训练的后期,他们开始随机使用不同的插值方法(比如双线性、最近邻、立方插值等),和其他参数一起调整,但并不确定这些方法对结果有多大影响。

七、ILSVRC 2014 Classification Challenge Setup and Results—ILSVRC 2014分类挑战赛设置和结果

翻译

ILSVRC 2014分类挑战涉及将图像分类为Imagenet层次结构中的1000个叶节点类别之一。训练集有大约120万张图像,验证集有50,000张,测试集有100,000张图像。每张图像都与一个真实类别关联,性能通过最高得分的分类器预测来衡量。通常报告两个数字:top-1准确率,即将真实类别与第一个预测类别进行比较;和top-5错误率,即将真实类别与前5个预测类别进行比较:如果真实类别出现在前5个类别中,不论其排名如何,图像被视为正确分类。挑战使用top-5错误率作为排名标准。我们参与了这个挑战,没有使用任何外部数据进行训练。除了本文中提到的训练技术外,我们还在测试时采用了一些技术,以获得更高的性能,具体如下:

  1. 我们独立训练了7个版本的GoogLeNet模型(包括一个更宽版本),并对它们进行了集成预测。这些模型使用相同的初始化(甚至使用相同的初始权重,主要是因为疏忽)和学习率策略,它们仅在采样方法和输入图像的随机顺序上有所不同。

  2. 在测试期间,我们采用了一种比Krizhevsky等人[9]提出的更激进的裁剪方法。具体来说,我们将图像调整到4个尺度,其中较短的维度(高度或宽度)分别为256、288、320和352,然后从这些调整大小后的图像中取左、中、右三个方形区域(如果是纵向图像,则取上、中、下三个方形区域)。对于每个方形区域,我们还取四个角和中心的224×224裁剪图像,以及调整为224×224的方形区域及其镜像版本。这样,每张图像会得到4×3×6×2 = 144个裁剪。Andrew Howard[8]在前一年的参赛中采用了类似的方法,我们通过实验验证,结果稍逊于所提议的方案。我们注意到,这种激进的裁剪方法在实际应用中可能并非必需,因为在合理数量的裁剪后,更多的裁剪所带来的好处是边际递减的(我们将在后续部分展示)。

  3. 我们将多个裁剪和所有单独分类器的softmax概率进行平均,得到最终的预测。在实验中,我们分析了不同的测试方法,比如对裁剪图像进行最大池化和在分类器间平均,但这些方法的性能低于简单的平均法。

本文的其余部分分析了贡献最终提交的整体性能的多个因素。我们在挑战中的最终提交,在验证集和测试集上都获得了6.67%的top-5错误率,排名第一。这相比于2012年SuperVision方法,减少了56.5%的相对错误率;相比于上一年最佳方法Clarifai,减少了大约40%的相对错误率,后者使用了外部数据进行训练。下表展示了一些表现最佳方法的统计数据。我们还分析并报告了通过不同的模型数量和裁剪数量变化时的测试表现,表中列出了这些数字。我们使用一个模型时,选择了验证数据上top-1错误率最低的模型。所有数据均在验证数据集上报告,以避免过拟合测试数据统计信息。

精读

ILSVRC 2014分类挑战中,参赛者的目标是将图像分类为1000个类别之一。训练集有120万图像,验证集50,000张,测试集100,000张。评价标准包括top-1准确率和top-5错误率,其中top-5错误率用于排名。我们参与了这个挑战,且没有使用外部数据进行训练。

具体的做法如下:

  1. 训练多个模型:独立训练了7个GoogLeNet模型(包括一个更宽版本),并进行集成预测。所有模型使用相同的初始化和学习率策略,仅在图像采样方法和输入顺序上有所不同。

  2. 激进裁剪方法:在测试阶段,我们将图像调整为4个不同尺寸,并从每个尺寸中提取多个裁剪(包括四个角和中心的裁剪以及其镜像版本)。这为每张图像生成了144个裁剪。

  3. 结果合并:对多个裁剪和分类器的softmax概率进行平均,得出最终预测。实验表明,简单的平均方法比其他方法更有效。

最终结果:我们在验证集和测试集上都获得了6.67%的top-5错误率,排名第一。与2012年SuperVision方法和上一年Clarifai方法相比,减少了56.5%和40%的相对错误率。

八、ILSVRC 2014 Detection Challenge Setup and Results—ILSVRC 2014检测挑战赛设置和结果

翻译

ILSVRC检测任务的目标是为图像中的物体生成边界框,物体属于200个可能的类别之一。如果检测到的物体与地面真实值的类别匹配,且它们的边界框重叠度(使用Jaccard指数)至少为50%,则视为正确检测。与分类任务不同,每张图像可能包含多个物体,也可能没有物体,物体的大小从大到小都有。结果使用平均精度均值(mAP)进行报告。

GoogLeNet在检测任务中采用的方法类似于R-CNN,但使用Inception模型作为区域分类器。此外,通过将选择性搜索(Selective Search)方法与多框(multi-box)预测相结合,改进了区域提议步骤,从而提高了物体边界框的召回率。为了减少假阳性,超像素的大小增加了2倍,这样来自选择性搜索算法的提议数量减少了一半。我们又加入了200个来自多框预测的区域提议,总的提议数量为[6]的60%,但覆盖率从92%提高到93%。减少提议数量并增加覆盖率的总体效果是,单模型情况下,平均精度提高了1%。最后,我们使用了6个卷积网络的集成来对每个区域进行分类,这使得准确率从40%提高到43.9%。需要注意的是,与R-CNN不同,由于时间限制,我们没有使用边界框回归。

我们首先报告了检测任务的顶级结果,并展示了自检测任务首次发布以来的进展。与2013年结果相比,准确率几乎翻倍。所有表现最好的团队都使用了卷积网络。我们在表4中报告了官方得分以及每个团队的常见策略:使用外部数据、集成模型或上下文模型。外部数据通常是用于预训练的ILSVRC12分类数据,模型在检测数据上进行精细调整。一些团队还提到使用了定位数据。由于定位任务的边界框大部分不包含在检测数据集中,因此可以像分类一样,使用此数据预训练通用边界框回归器。GoogLeNet的参赛模型没有使用定位数据进行预训练。

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

精读

GoogLeNet在ILSVRC2014检测任务中的方法如下:

  1. 任务目标:为图像中的物体生成边界框,并将物体分类为200个类别之一,使用Jaccard指数衡量重叠度,检测正确性依赖于类别匹配和至少50%的重叠。

  2. 方法

    • 类似R-CNN,使用Inception模型作为区域分类器。

    • 提升区域提议步骤,结合选择性搜索和多框预测,增加物体边界框的召回率。

    • 增加超像素大小来减少假阳性,减少选择性搜索算法提议数量,但增加覆盖率,最终提高1%的mAP。

    • 使用6个卷积网络的集成方法提高分类准确率,从40%提升到43.9%。

    • 未使用边界框回归,因为时间限制。

  3. 外部数据:GoogLeNet没有使用定位数据预训练,其他一些团队使用了ILSVRC12分类数据进行预训练。

  4. 结果:与2013年相比,准确率几乎翻倍。GoogLeNet在单模型和集成模型中的表现都优于其他参赛队伍,最终在平均精度上取得了较好的成绩。

九、Conclusions—总结

翻译

我们的结果提供了有力的证据,表明通过使用现成的密集构建模块来近似期望的最优稀疏结构,是一种有效的提高计算机视觉神经网络性能的方法。该方法的主要优点是,相较于较浅和较窄的网络,计算需求只增加了适度的程度,但质量得到了显著提升。还值得注意的是,尽管我们的检测工作没有利用上下文信息或执行边界框回归,但仍然具有竞争力,这进一步证明了Inception架构的优势。虽然预计类似深度和宽度的网络可以通过更昂贵的计算实现类似的结果,但我们的方法提供了有力的证据,表明转向稀疏架构是可行且有用的。这为未来基于[2]的自动化方式创建更稀疏和更精细的结构提供了有前景的研究方向。

精读

上文总结了通过使用现成的密集模块来近似稀疏结构,提高计算机视觉神经网络性能的有效性。该方法在增加计算要求的同时,显著提升了网络的质量。尽管没有使用上下文信息或边界框回归,GoogLeNet的检测表现仍然很强,证明了Inception架构的优势。作者认为,转向稀疏架构不仅可行,而且有助于提高网络性能,未来可以在此基础上进一步研究和发展更精细的自动化稀疏结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值