论文链接

转自:https://blog.csdn.net/julialove102123/article/details/79632721

                                     Inception系列演变过程

                                                                           Google-Net 原始版本

Inception-V1

Inception-V1:2014年9月:Going Deeper with Convolutions提出的Inception V1(top-5错误率6.67%

核心思想

传统网络都是通过层的叠加,增加网络深度,这篇论文提出从网络宽度上改进,通过concat操作,将经过不同kernel尺度的feature map进行concat,增加网络对尺度的适应性、增加网络的宽度,提高了网络内部资源的利用率。

上图是论文中提出的最原始的版本,所有的卷积核都在上一层的所有输出上来做,那5×5的卷积核所需的计算量就太大了,造成了特征图厚度很大。为了避免这一现象提出的inception具有如下结构,在3x3前,5x5前,max pooling后分别加上了1x1的卷积核起到了降低特征图厚度的作用。

Inception V1参数少但效果好的原因除了模型层数更深、表达能力更强外,还有两点:

一、用全局平均池化层(即将图片尺寸变为1*1)来取代最后的全连接层。全连接层几乎占据了AlexNet或VGGNet中90%的参数量,而且会引起过拟合,去除全连接层后模型训练更快并且减轻了过拟合。用全局平均池化层取代全连接层的做法借鉴了Network In Network(以下简称NIN)论文。

二、Inception V1中精心设计的Inception Module提高了参数的利用效率,其结构如图所示。这一部分也借鉴了NIN的思想,形象的解释就是Inception Module本身如同大网络中的一个小网络,其结构可以反复堆叠在一起形成大网络。不过Inception V1比NIN更进一步的是增加了分支网络,NIN则主要是级联的卷积层和MLPConv层。一般来说卷积层要提升表达能力,主要依靠增加输出通道数,但副作用是计算量增大和过拟合。每一个输出通道对应一个滤波器,同一个滤波器共享参数,只能提取一类特征,因此一个输出通道只能做一种特征处理。而NIN中的MLPConv则拥有更强大的能力,允许在输出通道之间组合信息,因此效果明显。可以说,MLPConv基本等效于普通卷积层后再连接1*1的卷积和ReLU**函数。

Inception Module的基本结构有4个分支

第一个分支对输入进行1´1的卷积,这其实也是NIN中提出的一个重要结构。1´1的卷积是一个非常优秀的结构,它可以跨通道组织信息,提高网络的表达能力,同时可以对输出通道升维和降维。可以看到Inception Module的4个分支都用到了1´1卷积,来进行低成本(计算量比3´3小很多)的跨通道的特征变换。

第二个分支先使用了1´1卷积,然后连接3´3卷积,相当于进行了两次特征变换。

第三个分支先是1´1的卷积,然后连接5´5卷积。

第四个分支则是3´3最大池化后直接使用1´1卷积。我们可以发现,有的分支只使用1´1卷积,有的分支使用了其他尺寸的卷积时也会再使用1´1卷积,这是因为1´1卷积的性价比很高,用很小的计算量就能增加一层特征变换和非线性化。Inception Module的4个分支在最后通过一个聚合操作合并(在输出通道数这个维度上聚合)。Inception Module中包含了3种不同尺寸的卷积和1个最大池化,增加了网络对不同尺度的适应性,这一部分和Multi-Scale的思想类似。早期计算机视觉的研究中,受灵长类神经视觉系统的启发,Serre使用不同尺寸的Gabor滤波器处理不同尺寸的图片,Inception V1借鉴了这种思想。Inception V1的论文中指出,Inception Module可以让网络的深度和宽度高效率地扩充,提升准确率且不致于过拟合。

                                                       Inception系列演变过程

Inceptoion-V2

Inception-V2:2015年2月:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate提出的Inception V2(top-5错误率4.8%)。

核心思想

首次提出BN层,减少Internal Covariate Shift,将每一次一个batch中的数据分布控制在均值为0,方差为1。

加入了BN层,减少了Internal Covariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯; 学习VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算;使用3×3的已经很小了,那么更小的2×2呢?2×2虽然能使得参数进一步降低,但是不如另一种方式更加有效,那就是Asymmetric方式,即使用1×3和3×1两种来代替3×3的卷积核。这种结构在前几层效果不太好,但对特征图大小为12~20的中间层效果明显。

Inception-V3:

Inception-V3:2015年12月:Rethinking the Inception Architecture for Computer Vision提出的Inception V3(top-5错误率3.5%

核心思想

                                                   Inception系列演变过程

1、卷积核进行分解:使用两个3x3卷积核代替5x5卷积核,三个3x3卷积核代替7x7卷积核,减少参数量,加快计算。(两个3x3与一个5x5作用是一样的,其感受野都是5)

                                            Inception系列演变过程

2、进一步将nxn卷积核分解为1xn和nx1卷积核

v3一个最重要的改进是分解(Factorization),将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),这样的好处,既可以加速计算(多余的计算能力可以用来加深网络),又可以将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性,还有值得注意的地方是网络输入从224x224变为了299x299,更加精细设计了35x35/17x17/8x8的模块。

                                                                               Inception系列演变过程

 

3、减少feature map的size,增加channel数;

Inception-V4:

Inception-V4:2016年2月:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning提出的Inception V4(top-5错误率3.08%)。

核心思想

基于inception v3的基础上,引入残差结构,提出了inception-resnet-v1和inception-resnet-v2,并修改inception模块提出了inception v4结构。基于inception v4的网络实验发现在不引入残差结构的基础上也能达到和inception-resnet-v2结构相似的结果,从而认为何凯明等人认为的:“要想得到深度卷积网络必须使用残差结构”这一观点是不完全正确的。

v4研究了Inception模块结合Residual Connection能不能有改进?发现ResNet的结构可以极大地加速训练,同时性能也有提升,得到一个Inception-ResNet v2网络,同时还设计了一个更深更优化的Inception v4模型,能达到与Inception-ResNet v2相媲美的性能。Inception V4相比V3主要是结合了微软的ResNet.

                 Inception系列演变过程

Inception系列演变过程

Inception系列演变过程

Inception系列演变过程

Inception系列演变过程

 

 

 

相关文章: