GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记

GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记

标题:Rethinking the Inception Architecture for Computer Vision
作者:Christian Szegedy,Vincent Vanhoucke, etc.
下载地址:https://arxiv.org/abs/1512.00567

1 简介

  • 自2012年Alexnet提出以来,图像分类、目标检测等一系列领域都被卷积神经网络CNN统治着。接下来的时间里,人们不断设计新的深度学习网络模型来获得更好的训练效果。一般而言,许多网络结构的改进(例如从VGG到RESNET可以给很多不同的计算机视觉领域带来进一步性能的提高。
  • 这些CNN模型都有一个通病:计算量大。最早的AlexNet含有60M个参数,之后的VGGNet参数大致是AlexNet的3倍之多,而14年GoogLe提出的GoogleNet仅有5M个参数,效果和AlexNet不相上下。虽然有一些计算技巧可以减少计算量,但是在无形中会增加模型的复杂度。参数少的模型在一些超大数据量或内存受限的场景下具有很大优势。
  • 14年GoogLe提出的GoogleNet也叫Inception,设计的目的就是为了减少计算参数和内存使用,但其论文does not provide a clear description about the contributing factors that lead to the various design decisions of the GoogLeNet architecture,于是很难将其用到一些新的场景上。本篇论文,就是要对Inception结构进行改进,已获得更好的分类效果。

2 一些设计准则

  • 本小节介绍了四个基于大量实验得出的设计经验,后面的模型多少也有体现出这些准则,但是这些并非在所有场景下都适用:
    • 在网络的前面部分,避免表示瓶颈。网络中的特征图尺寸虽然越来越小,但是一开始不能将尺寸压缩得太过。特征的维度(通道)只能提供图像信息的简单估计,很多结构关联信息都体现在特征的尺寸上。
    • 高维度特征在网络局部更容易处理。增加维度(通道数)能让网络生成更多解耦的信息,利于训练。
    • 在低维度时进行空间聚合,可减少表达的损失。
    • 权衡网络的宽度和深度。宽度和深度可能分别指的是每个卷积层滤波器数量和网络总深度(Optimal performance of the network can be reached by balancing the number of filters per stage and the depth of the network. )。虽然二者同时增加最能提高网络性能,但需要注意计算资源的消耗。

3 卷积的因式分解

  • GoogleNet带来的性能提升很大程度上要归功于“降维”,也就是卷积分解的一种。考虑到网络邻近的激活单元高度相关,因此聚合之前进行降维可以得到类似于局部特征的东西。接下来主要讨论其他的卷积分解方法。既然Inception网络是全卷积,卷积计算变少也就意味着计算量变小,这些多出来的计算资源可以来增加filter-bank的尺寸大小。

卷积因式分解成小的卷积

  • 卷积核大,计算量也是成平方地增大。假设有一个5*5的卷积核,我们可以Figure1将其分成两次3*3卷积,这样输出的尺寸就一样了。虽然5*5的卷积可以捕捉到更多的邻近关联信息,但两个3*3组合起来,能观察到的“视野”就和5*5的一样了。分解之后,训练的参数从 55=25 变成了 233=18
    GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第1张图片
  • 进行分解后,原来的Inception结构也相应发生改变(从Figure4变到Figure5)。
    GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第2张图片GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第3张图片
  • 还有两个问题,一个是就是这样分解是否会导致表达损失,还有一个是是否要在两个卷积之间添加非线性计算。通过实验表明,因式分解没有带来太大问题,而在卷积之间添加非线性效果也更好。

卷积因式分解为空间上不对称的卷积

  • 其实,以上的卷积分解还不是最优策略,3*3卷积还可以进一步分解为1*3和3*1,两个卷积分别捕捉不同方向的信息,参数只有之前的6/9。其实,这个可以推广到n*n卷积的情况,n*n卷积因式分解为1*n和n*1。这个方法在网络前面部分似乎表现欠佳,但在中间层起到很好的效果。
    GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第4张图片GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第5张图片

4 辅助分类器

  • 辅助分类器这个概念在GoogleNet中已经用到了,就是把一些网络中间层提前拿出类进行回归分类,主要目的是为了更有效地回传梯度。作者发现,辅助分类器在其中扮演者regularizer的角色,因为辅助分类器使用了batch normalization后,效果会更好。

5 降低特征图尺寸

  • 假设有一个 ddk 的特征图,为了转换成 d/2d/22k 大小,可以先用1*1卷积变成 dd2k ,再进行池化,这样的计算量很大。而先池化再增加通道则会出现 representational bottlenecks 的问题。
    GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第6张图片
  • 为了减少计算量且保留特征表达,作者提出一种双线结构,将分别进行池化和步长为2的卷积操作,最后在合并起来(如下图)。
    GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第7张图片

6 Inception-v2模型

  • 上面介绍了这么多改进方法,现在终于可以组合成一个模型了,模型结构如Table 1所示。统计下来,网络有42层,但参数仅有GoogleNet的2.5倍,还是比VGG少多了。
    GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第8张图片

7 通过平滑标签正则化模型

  • 此处没细看,以后补上

8 训练方法

  • batch大小为32,周期100,框架是自家的Tensorflow,早期优化器是momentum,衰减值0.9。后期为了最好的效果,使用了RMSdrop,其中 decay=0.9ϵ=0.1 。学习率为0.045,每两个周期指数衰减0.94。

9 低分辨率输入的表现

  • 一些目标识别方面,需要进行分类的box分辨率可能很小,网络需要“高分辨率”的感受野来“hallucinate”其中的细节。作者用了79*79,151*151,299*299三种不同大小的感受野,结论是高分辨率的网络(299*299)虽然花更长时间来训练,但最终准确度要更高。

10 实验结果

  • 结果如下所示。其中,Inception-v2的那些结果中,下面的已经包含了上面采用的方法(比如Inception-v2 Label Smoothing使用了上面的RMSdrop,而倒二行的Inception-v2 Factorized 7 × 7,已经使用了上面的RMSProp、Label Smoothing,以此类推)。最后一行的模型被称作Inception-v3。
    GoogLe图像分类模型 Inception-v2,Inception-v3 论文笔记_第9张图片

你可能感兴趣的:(深度学习)