ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【图像分类】一文彻底搞明白GoogLeNet

2021-06-13 10:02:31  阅读:269  来源: 互联网

标签:frac 一文 卷积 网络 GoogLeNet v1 图像 Inception


1、 模型介绍

​ GoogLeNet作为2014年ILSVRC在分类任务上的冠军,以6.65%的错误率力压VGGNet等模型,在分类的准确率上面相比过去两届冠军ZFNet和AlexNet都有很大的提升。从名字GoogLeNet可以知道这是来自谷歌工程师所设计的网络结构,而名字中GoogLeNet更是致敬了LeNet。GoogLeNet中最核心的部分是其内部子网络结构Inception,该结构灵感来源于NIN,至今已经经历了四次版本迭代(Inception_v1-4)。下表是Inception_v1-4提出的时间表

Inception不同版本的性能比较图

一般来说,提升网络性能最直接的办法就是增加网络深度和宽度,但一味地增加,会带来诸多问题:
1)参数太多,如果训练数据集有限,很容易产生过拟合;
2)网络越大、参数越多,计算复杂度越大,难以应用;
3)网络越深,容易出现梯度弥散问题(梯度越往后穿越容易消失),难以优化模型。
我们希望在增加网络深度和宽度的同时减少参数,为了减少参数,自然就想到将全连接变成稀疏连接。但是在实现上,全连接变成稀疏连接后实际计算量并不会有质的提升,因为大部分硬件是针对密集矩阵计算优化的,稀疏矩阵虽然数据量少,但是计算所消耗的时间却很难减少。在这种需求和形势下,Google研究人员提出了Inception的方法。

2、 模型结构

​ 如图所示,GoogLeNet相比于以前的卷积神经网络结构,除了在深度上进行了延伸,还对网络的宽度进行了扩展,整个网络由许多块状子网络的堆叠而成,这个子网络构成了Inception结构。为了更详细的了解Inception,下面对Inception_v1、Inception_v2、Inception_v3、Inception_v4做更详细的说明。

Inception_v1

Inception_v1在同一层中采用不同的卷积核,并对卷积结果进行合并; 下面的两张图展示Inception_v1采用的两种卷积模块a和b。

对上图做以下说明:

1 . 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;

2 . 之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;

3 . 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。

4 . 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。

但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,文章借鉴NIN2,采用1x1卷积核来进行降维。

例如:上一层的输出为100x100x128,经过具有256个输出的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256。其中,卷积层的参数为128x5x5x256。假如上一层输出先经过具有32个输出的1x1卷积层,再经过具有256个输出的5x5卷积层,那么最终的输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256,大约减少了4倍。

具体改进后的Inception Module如下图:

​ GoogLeNet中Inception_v1网络参数配置

网络层

输入尺寸

核尺寸

输出尺寸

参数个数

卷积层 C_ 11  

 H× W ×C_1  

 1  ×1  ×  C_2 /2

   frac  H   2   ×  frac  W   2   ×  C_2  

 (1  ×1  ×  C_1 +1)  ×  C_2  

卷积层 C_  21  

 H  ×  W   ×  C_2  

 1  ×1  ×  C_2 /2

   frac  H   2   ×  frac  W   2   ×  C_2  

 (1  ×1  ×  C_2 +1)  ×  C_2  

卷积层 C_  22  

 H  ×  W   ×  C_2  

 3  ×3  ×  C_2 /1

 H  ×  W   ×  C_2 /1

 (3  ×3  ×  C_2 +1)  ×  C_2  

卷积层 C_  31  

 H  ×  W   ×  C_1  

 1  ×1  ×  C_2 /2

   frac  H   2   ×  frac  W   2   ×  C_2  

 (1  ×1  ×  C_1 +1)  ×  C_2  

卷积层 C_  32  

 H  ×  W   ×  C_2  

 5  ×5  ×  C_2 /1

 H  ×  W   ×  C_2 /1

 (5  ×5  ×  C_2 +1)  ×  C_2  

下采样层 S_  41  

 H  ×  W   ×  C_1  

 3  ×3/2

   frac  H   2   ×  frac  W   2   ×  C_2  

 0

卷积层 C_  42  

   frac  H   2   ×  frac  W   2   ×  C_2  

 1  ×1  ×  C_2 /1

   frac  H   2   ×  frac  W   2   ×  C_2  

 (3  ×3  ×  C_2 +1)  ×  C_2  

合并层 M

   frac  H   2   ×  frac  W   2   ×  C_2 (  ×4)

拼接

   frac  H   2   ×  frac  W   2   ×(  C_2   ×4)

 0

Inception_v2

Inception_v2组合不同卷积核的堆叠形式,并对卷积结果进行合并;把5*5的卷积改成了两个3*3的卷积串联,它说一个5*5的卷积看起来像是一个5*5的全连接,所以干脆用两个3*3的卷积,第一层是卷积,第二层相当于全连接,这样可以增加网络的深度,并且减少了很多参数。模型的结构如下图:

 

 

 

 Inception_v2还引入了使用了Batch Normalization,加了这个以后训练起来收敛更快,学习起来自然更高效,可以减少dropout的使用。

28x28 的 Inception 模块的数量由 2 增加到了 3.

Inception 模块,Ave 和 Max Pooling 层均有用到. 参考表格。

两个 Inception 模块间不再使用 pooling 层;而在模块 3c 和 4e 中的 concatenation 前采用了 stride-2 conv/pooling 层.

详细的参数列表

 

Inception_v3

Inception_v3则在v_2​基础上进行深度组合的尝试,输入改为299×299×3。

Inception_V3出了采用Inception_V2中,将5×5的卷积分解成两个3×3的卷积,还衍生出了非对称分解,将一个3x3的卷积分解为3x1和1x3,进一步衍生出了一种混合两种分解方式的结构Inception_V3三种结构如下图:

 

Inception_v4

Inception_v4结构相比于前面的版本更加复杂,不仅使用了前面的Inception,同时子网络中嵌套着子网络,作者还尝试了 Residual Connection。Inception_v4的输入是384×384×3

 

 


总结

  • Inception V1——构建了1x1、3x3、5x5的 conv 和3x3的 pooling 的分支网络,同时使用 MLPConv 全局平均池化,扩宽卷积层网络宽度,增加了网络对尺度的适应性;

    Inception V2——提出了 Batch Normalization,代替 Dropout 和 LRN,其正则化的效果让大型卷积网络的训练速度加快很多倍,同时收敛后的分类准确率也可以得到大幅提高,同时学习 VGG 使用两个3´3的卷积核代替5´5的卷积核,在降低参数量同时提高网络学习能力;

    Inception V3——引入了 Factorization,将一个较大的二维卷积拆成两个较小的一维卷积,比如将3´3卷积拆成1´3卷积和3´1卷积,一方面节约了大量参数,加速运算并减轻了过拟合,同时增加了一层非线性扩展模型表达能力,除了在 Inception Module 中使用分支,还在分支中使用了分支(Network In Network In Network);

    Inception V4——研究了 Inception Module 结合 Residual Connection,结合 ResNet 可以极大地加速训练,同时极大提升性能,在构建 Inception-ResNet 网络同时,还设计了一个更深更优化的 Inception v4 模型,能达到相媲美的性能

 

标签:frac,一文,卷积,网络,GoogLeNet,v1,图像,Inception
来源: https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/117776589

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有