从Inception V1 到 Inception V4 网络结构的变化

最近在学习Inception系列的网络,把自己的总结一下。

2014年GoogleNet(论文地址)取得了第一名,和VGG网络同年,那时候的Inception Net称为V1版本,我们来看一下Inception V1的Inception module。

从Inception V1 到 Inception V4 网络结构的变化_第1张图片

这个左边的是一般的版本,右边的是改进的版本,首先解释一下这种Inception module的好处,从Alexnet到VGG,网络层次不断增加,深度不断增加,但是却忽视了广度上的增加,而Inception就是在广度上增加,同时使用不同的卷积核大小,3*3,5*5,1*1,这些不同卷积核的提取不同的特征,增加了特征的多样性,但是这样带来一个问题就是参数量增加太大,为了解决这个问题,就引入了1*1的卷积降维,所有右边就是使用了1*1的卷积降维了。这就是右边对左边的改进。

                                                                         从Inception V1 到 Inception V4 网络结构的变化_第2张图片

然后我们看GoogleNet,他除了有Inception module外,还有一个特点是他有三个输出,论文中解释这样做的好处是避免梯度的消失,使得方向传播能够进行,但是还有一个作用就是,这样有三个输出的好处是,相当于可以做一个Ensemble,模型的一个集成,我们知道Kaggle中这个技巧是必用的。而且我们知道,越靠前的层卷积提取的特征越低层次的特征,越靠后的卷积层的特征越高层次,如果只有最有一层的输出,也就是相当于只用了最后的高层次的特征分类,但不一定这样就好,所以GoogleNet使用三个输出,也是使用了不同层次的特征的输出作为分类,这样考虑更加周全。

GoogleNet还有一个减少参数量的方法是,他去掉了FC层,用average Pooling来代替,相比VGG网络和AlexNet网络,几乎所有的参数有耗费在FC层上。

Inception V2 

原文链接

Inception V2做了一个改进就是使用3*3的卷积代替5*5的卷积核,实验证明这样并不影响结果,但是却减少了参数量,假设输入和输出通道数都是C,那么5*5的卷积核参数量为25C^2,但是两个3*3的卷积核参数量为18C^2,同时因为使用两个3*3,使得网络层次加深,增加了非线性,提高了模型的表达能力。结果后如下图

         从Inception V1 到 Inception V4 网络结构的变化_第3张图片从Inception V1 到 Inception V4 网络结构的变化_第4张图片

还有一个相比Inception V1的改进是,Inception V2 开始引入了BN层。BN层的好处再次不叙述,相信大家都知道。

Inception V3(和Inception V2 一篇文章中讨论)

首先看他的改进:

                                                     从Inception V1 到 Inception V4 网络结构的变化_第5张图片

从图上我们可以看出,Inception V3使用了7*1和1*7的卷积代替7*7,5*1核1*5代替5*5,总结起来就是,Inception V3就是使用两个1*n和n*1的卷积核取代n*n的卷积核。这样做,相比把5*5用两个3*3代替更加参数量少,加速了网络的变化。同时增加了一层非线性扩展模型表达能力。论文解释说,这种非对称的卷积结构拆分,其结果比对称地拆为几个相同的小卷积核效果更明显,可以处理更多、更丰富的空间特征,增加特征多样性。

 Inception V4

论文地址

Inception V4其实就是使用了不同的 Inception Block,具体我们看论文给出的图

从Inception V1 到 Inception V4 网络结构的变化_第6张图片从Inception V1 到 Inception V4 网络结构的变化_第7张图片

从Inception V1 到 Inception V4 网络结构的变化_第8张图片从Inception V1 到 Inception V4 网络结构的变化_第9张图片

从Inception V1 到 Inception V4 网络结构的变化_第10张图片

就是这几个Inception Block,然后堆叠成Inception V4,成了下图

                                                             从Inception V1 到 Inception V4 网络结构的变化_第11张图片

仔细观察就会发现,依旧每个Inception Block都使用了1*1的卷积,之前讲过这样是为了降维,同时也是增加非线性提高模型的表达能力。其中Inception-A就是上面第一幅图,以此类推。其实就是得到输出为17*17的Inception Block,和得到35*35的Inception Block,的等等。

Inception-Resnet 

这个就是融合微软的残差网络的思想,就是把残差的思想引入进来,就是Inception resnet网络了。做法见下图。

从Inception V1 到 Inception V4 网络结构的变化_第12张图片从Inception V1 到 Inception V4 网络结构的变化_第13张图片

从Inception V1 到 Inception V4 网络结构的变化_第14张图片从Inception V1 到 Inception V4 网络结构的变化_第15张图片

其实就是多了一个直连边,

最终网络堆叠成了:

从Inception V1 到 Inception V4 网络结构的变化_第16张图片

所以Inception-resnet的好处肯定是和残差相关,融合了残差神经网络的优点。





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