GoogLeNet(Inceptionv1) 论文解读/总结

Posted 耿鬼喝椰汁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GoogLeNet(Inceptionv1) 论文解读/总结相关的知识,希望对你有一定的参考价值。

为此文章为深度学习在计算机视觉领域的图片分类经典论文GoogleNet(Inception)v1(Going Deeper with Convolutions)论文总结。

论文原文:Going Deeper With Convolutions (cv-foundation.org)

此系列文章是非常适合深度学习领域的小白观看的图像分类经典论文。系列文章如下:

 AlexNet:AlexNet论文解读/总结_耿鬼喝椰汁的博客-CSDN博客

VGGNet:VGGNet论文解读/总结_耿鬼喝椰汁的博客-CSDN博客

GoogLeNet:GoogLeNet(Inception)v1 论文解读/总结_耿鬼喝椰汁的博客-CSDN博客

ResNet:ResNet论文解读/总结_耿鬼喝椰汁的博客-CSDN博客


   前言

Abstract (摘要)

问题与解决

Inception

辅助分类器(Auxiliary Classifer)

1x1卷积

GoogLeNet网络结构

训练方法

总结


前言

       GoogLeNet是2014年Google团队提出的,其中L为大写,目的是为了致敬LeNet。论文的多处命名来自于电影盗梦空间。GoogLeNet主要的模型是Inception(中文翻译为盗梦空间)。                     GoogLNet当年取得了ILSVRC 2014年分类冠军,检测冠军以及定位亚军。开启了多尺度,1*1卷积时代,以及衍生了GooLeNet v2 v3 v4系列。


Abstract (摘要)

 在摘要中总结以下几点:

     (1)在保证网络的深度和宽度的同时,为减少网络的计算量,提出了一种Inception模块的思想,这种架构的主要特点是提高了网络内部计算资源的利用率。

     (2)为优化性能,结构的思想源于Hebbian principle(赫布理论) 和multi-scale processing(多尺度信息处理)。

     (3)GoogLeNet是一个22层的深度网络。并获得ILSVRC14的图像分类和目标检测冠军。

问题与解决

        增加网络深度和宽度是提升网络性能最直接的方法,但这样也会带来诸多问题:参数太多,如果训练数据集有限,很容易产生过拟合;网络越大,参数越多,计算复杂度越大,应用难度越高;网络越深,越容易出现梯度弥散问题。

        GoogLeNet 共有 22 层网络,网络层数比 AlexNet 和 VGG 深。但其参数量却比 AlexNet 和 VGG 小很多。GoogLeNet 使用的方法:

(1)引入Inception模块,获取不同尺度的图像特征。

(2)使用 1x1 卷积进行降维,减少计算量。

(3)添加两个辅助分类器缓解梯度弥散问题,帮助训练。

(4)丢弃全连接层,使用平均池化层,大幅减少模型参数量。

Inception

Inception 结构图如下,上图是 Inception 的原始结构,下图是加上降维功能的结构:

       Inception块里有4条并行的线路。前3条线路使用窗口大小分别是1x1、3x3和5x5的卷积层来抽取不同空间尺寸下的信息,其中中间2个线路会对输入先做1x1卷积来减少输入通道数,以降低模型复杂度。第4条线路则使用3x3最大池化层,后接1x1卷积层来改变通道数。4条线路都使用了合适的填充来使输入与输出的高和宽一致。最后我们将每条线路的输出在通道维上连结,并向后进行传输。

      Inception 结构能够提取不同尺度的特征,同时利用稀疏矩阵计算的原理来加速收敛。此外,论文作者认为池化也具有提取特征的功能,因此在第四个分支也使用了最大池化。Inception 结构共有 4个分支,输入特征经由各分支得到4个输出,之后在通道维度进行拼接得到最终输出。对比上图,下图在分支 2,3,4 上加入了 1x1 卷积以降维,在增加非线性表达能力的同时,减少参数量和计算量。

辅助分类器(Auxiliary Classifer)

       辅助分类器主要用以缓解梯度弥散问题 ,   GoogLe Net 网络中使用了两个辅助分类器,二者的结构是一模一样的,结构参数如下:  第一层:平均池化下采样层,池化核大小为5x5,stride=3;第二层:卷积层,卷积核大小为 1x1, stride=1,卷积核个数为 128;第三层:全连接层,共1024 个节点;第四层:全连接层,节点数为 1000,对应类别数。

      辅助分类器就是结构图中的右边部分,在训练模型时,将两个辅助分类器的损失乘以权重(论文中是0.3)加到网络的整体损失上,再进行反向传播。

      辅助分类器的作用 :可以把他看做inception网络中的一个小细节,它确保了即便是隐藏单元和中间层也参与了特征计算,他们也能预测图片的类别,他在inception网络中起到一种调整的效果,并且能防止网络发生过拟合。给定深度相对较大的网络,有效传播梯度反向通过所有层的能力是一个问题。通过将辅助分类器添加到这些中间层,可以期望较低阶段分类器的判别力。在训练期间,它们的损失以折扣权重(辅助分类器损失的权重是0.3)加到网络的整个损失上。

1x1卷积

      它的计算方法和其他卷积核一样,唯一不同的是它的大小是1x1,没有考虑在特征图局部信息之间的关系它的作用主要是:

(1)实现跨通道的交互和信息整合。

(2)卷积核通道数的降维和升维,减少网络参数,并修正激活函数。

       1x1的卷积核在计算过程中,能够将位于同一空间位置但在不同通道的特征连接在一起,其连接的节点的相关性最高,天为我们知道在同一空间位置的不同通道的卷积核的输出结果在某种程度上是非常相关的,因此1*1卷积核在Inception Module运用频繁。相比较其3x3或5x5的卷积核稍大一点尺寸卷积核,它们所连接的节点相关性也高,所以适当使用可以增加多样性。

GoogLeNet网络结构

(1) 全局平均池化,减少参数量,用GAP代替全连接层。

(2)所有激活层用ReLu,1X1卷积核后面也是用ReLu激活函数。

(3)预处理:输入图像224X224尺寸,RGB通道,减去了均值。

(4)4a和4d后加辅助分类器。

       整个网络Inception Net含有22层,中间主要结构单元是Inception module,在Inception module中存在三类卷积核,其中1x1的卷积核最多,其次是3x3和5x5卷积核。整个网络除了最后一层的输出结果,中间节点也使用辅助分类,就是在训练过程中,将中间某层的输出结果用作分类,并按照一个比较小的权重(0.3)加到最终的分类结果中。

训练方法

1.数据并行 :一个batch均分k份,让不同节点前向和反向传播,再由中央param server优化更新权重。

2.异步随机梯度下降:momentum=0.9,学习率每8次遍历下降4%。

3.裁剪策略:裁剪为原图的8%-100%,宽高比为3/4-4/3之间最好。 

4.一些图像增强技巧:等概率使用不同插值方法。

总结

      GoogLeNet是谷歌团队为了参加ILSVRC 2014比赛而精心准备的,为了达到最佳的性能,除了使用上述的网络结构外,还做了大量的辅助工作。

       本文的主要想法其实是想通过构建密集的块结构来近似最优的稀疏结构,从而达到提高性能而又不大量增加计算量的目的。


今天的学习总结就到这里啦!如果有什么问题可以在评论区留言呀~

如果帮助到大家,可以一键三连+关注支持下~

以上是关于GoogLeNet(Inceptionv1) 论文解读/总结的主要内容,如果未能解决你的问题,请参考以下文章

Inception系列

深度学习面试题29:GoogLeNet(Inception V3)

经典CNN网络结构-AlexNet、VGG、GoogleNet、ResNet)

论文笔记GoogLeNet系列

第九篇 GoogLeNet——论文翻译

第九篇 GoogLeNet——论文翻译