Inception-v1

声明:文章仅作知识整理、分享,如有侵权请联系作者删除博文,谢谢!

经典分类网络(传送门):目录索引LeNetAlexNetVGGResNetInceptionDenseNetSeNet

相关文章:Inception-v2Inception-v3、v4

1、简介

与VGG同年,google也独立在深度网络的深度方向及多尺度方面进行了研究。该结构充分利用了网络结构中子网络的计算,在设计过程中,受到了多尺度处理的启发。GoogLeNet的参数量相比AlexNet要少很多,是AlexNet参数的1/12。

2、研究动机

针对之前的网络结构(ALeNet)设计,主要存在几个方面的缺点:

1、参数太多,模型的熵容量太大,容易导致过拟合,尤其对于比较小的数据集;

2、网络越大,计算复杂度也就越大,在实际应用困难

3、网络越深,模型训练越困难,梯度消失问题不可避免。

一般来说,提升网络性能最直接的办法就是增加网络深度和宽度,这也就意味着巨量的参数。但是,巨量参数容易产生过拟合也会大大增加计算量。

文章认为解决上述两个缺点的根本方法是将全连接甚至一般的卷积都转化为稀疏连接。一方面现实生物神经系统的连接也是稀疏的,另一方面有文献1表明:对于大规模稀疏的神经网络,可以通过分析激活值的统计特性和对高度相关的输出进行聚类来逐层构建出一个最优网络。这点表明臃肿的稀疏网络可能被不失性能地简化。 虽然数学证明有着严格的条件限制,但Hebbian准则有力地支持了这一点:fire together,wire together。

3、GoogLeNet的研究动机

Inception 结构的主要思路是怎样用密集成分来近似最优的局部稀疏结构。 

深度: 网络采用了一个22层的结构,9个Inception(2-5-2结构),但是为了避免梯度消失问题,GoogLeNet在不同层增加了Loss的输出;

宽度: 网络在每一个小的结构中,利用了1x1, 3x3, 5x5的卷积核和直接Max Pooling操作(为了保证输出的特征层的大小与卷积核输出大小相同,步长设置为1),为了避免由于宽度的增加带来每一个卷机核或者Max Pooling输出的特征层cancatenate之后,特征层的深度过深,也为了减少网络参数,在每一个3x3,5x5的卷积核前面和3x3Max Pooling后面都利用了一个1x1的卷积核进行降维,如下图:

对上图做以下说明:

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倍。

4、GoogLeNet模型结构

GoogLeNet的整体结构如下图:

对上图做如下说明:

1、显然GoogLeNet采用了模块化的结构,方便增添和修改;

2、网络最后采用了average pooling来代替全连接层,想法来自NIN,事实证明可以将TOP1 accuracy提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune;

3、虽然移除了全连接,但是网络中依然使用了Dropout ;

4、为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。文章中说这两个辅助的分类器的loss应该加一个衰减系数,但看caffe中的model也没有加任何衰减。此外,实际测试的时候,这两个额外的softmax会被去掉。

5、辅助分类器

这种做法在GoogLeNet上就已经使用,认为这种辅助分类器,在网络训练过程中扮演着非常重要的角色,能有效的将梯度传播到底层。但是作者发现辅助分类器并没有提升收敛速度,但是却起到了正则化的作用

如果辅助分类器使用了batch-normalized或者dropout层,最终的分类器效果更好。

一些模型是在较小的物体上训练的,有一种经过验证的方法非常有效,那就是对图像的个个大小块进行降采样,这些快的大小均匀分布在图像面积的8%到100%之间,并且在3/4到4/3之间随机选择宽高比,一定程度上能够克服过拟合。

6、优点

把整个Inception的网络架构画出来,更直观感受网络结构

1.宽度。总共是9个Inception的模块,每个模块除了num_output的个数不一样之外,其他的都是相同的。每一个卷积后都要做relu操作。

2.深度。除了在最后的全连接计算了loss和top_1,top_5的准确率之外,还在inception_4a/output和inception_4d/output之后进行池化卷积全连接,最后计算loss和top_1,top_5。

个人感觉这种方式,一方面可以比较不同深度下的loss和准确率,同时,这些中间层的backward computation会对整个起到调整梯度的作用,这样防止当层次过深时的梯度消失的问题。

7、结论

GoogLeNet是谷歌团队为了参加ILSVRC 2014比赛而精心准备的,为了达到最佳的性能,除了使用上述的网络结构外,还做了大量的辅助工作:包括训练多个model求平均、裁剪不同尺度的图像做多次验证等等。详细的这些可以参看文章的实验部分。

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

测试时,将图像调整到4个尺度,其中较短的维度(高度或宽度)分别为256、288、320、352,取这些调整后的图像的坐标中间右边的方块,按照224x224剪裁,生成数据。

参考文章:

1、深度学习之基础模型—InceptionV1(GoogLeNet)

https://blog.csdn.net/whz1861/article/details/78160190

2、GoogLeNet学习心得

https://www.cnblogs.com/Allen-rg/p/5833919.html

上一篇:ResNet总结及启发,下一篇:Inception-v2,传送门:分类网络目录索引

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingbo1801

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值