卷积神经网络之Inception Net

Goole Inception Net 首次出现在ILSVRC 2014 的比赛上,并且取得了当时比赛的第一名,当年的第二名是被VGGNet取得的。并且当时的Inception Net被称为Inception V1。

inception  V1是一个22层的结构(卷积层),如果加上池化层大概有27层。在Inception网络中最基本的结构被称为Inception  model。我们可以通过Inception model和传统卷积网络相结合的方式增加网络的层数,减少全连接的层数以减少参数的数量。并且还可以达到较高的准确度。除此之外,Inception  Net结合VGGNet的思想还产生了Inception V2, 结合把大的卷积拆分成小卷的思想产生了Inception V3,Inception v4。结合ResNet的思想产生了Inception-ResNet。下面分别介绍一些这些结构。

1. Inception  Model

  Inception Model的网络结构如上图。其原始图结构如a所示。每一个model均使用3x3,5x5的卷积,最后4条卷积路线进行汇总(在输出通道上进行维度的聚合)得到了最终的过滤器(传入下一层的数据)。为了可以在维度上聚合,在model内进行卷积计算的时候,数据处理通道数会发生变化之外,其宽和高都是不变的。采用3x3和5x5的卷积主要是为了增大视野(卷积核的宽度越大,其捕捉的面积越大,这样也就可以捕捉更大的面积特征)。关于该模型块还有以下几点说明。

 1x1卷积。由于1X1卷积在计算时相当于对同一个位置的不同通道进行线性组合。所以1x1的卷积可以完成跨通道通讯,可以提升维度、降低维度。也可以提高网络的表达能力(不同的特征可以聚合在一起)。对图片而言,同一个位置的像素点其相关性往往是比较高的。根据Hebbian原理(相关性高的区域在链接时应该聚在一起)。而1x1的卷积刚好能够把相关性最高的点聚集在一起(同一位置的点),因此有时候我们需要采用1x1的卷积来进行处理。

 根据上述原理以及1x1的卷积好处,我们对Inception Model进行了变形得到了b图,及在每层卷积前面增加了1x1的卷积核进行降维。这样既保证了网络的高表达能力,又降低了计算的维度,而且还保证了整个链接是稀疏的。从而减小了模型的参数,提高了模型的速度和准确度。

二、Inception  V1

Inception  V1(Google Net)是采用了NIN(Network   In  Net work,一张大的网络可以有许多相同的小网络叠加起来),所以在训练的时候也可以从一个一个的子网络入手。该网络有22个卷积层,每个Inception  Model算两个卷积层。网络最开始的部分是一个传统的卷积计算,两层卷积计算之后开始采用Inception  Model块来链接,采用了9个Inception Model。其具体的层网络结构如下:

由于在Inception  Net中,其中间节点也有较好的分类效果。因此在构建的过程中我们采用了增加辅助分类节点的方式在4-a和4-d的输出节点上增加了分类操作(具体可见上图),该操作构成的误差在训练的时候也是按照0.3-0.5加权计入的。由于这两个操作是在图的中间构建的因此有更少的参数,计算的时候更快。但是其准确率比使用全部网络要低一些。这也就是facenet中的NNS1和NNS2网络的模型。

三、 Inception  v2

Inception  V2采用了VGGNet的思想(VGGNet主要是采用3x3的卷积核来代替大的卷积核,比如对于一个5x5的卷积核可以拆成2个3x3的卷积核,一个7x7的卷积核也可以拆成3个3x3的卷积核)。根据这种思想,把5x5的卷积换成2个3x3的卷积,在采用Batch  Normalization方式对每个Batch进行归一化,去掉dropout层,减轻L2正则,去掉LRN就得到了Inception V2模型,其在架构上没有明显的变化。

四、 Inception  v3和Inception v4

Inception  v3引入了Factorization  into  small  convolutions的思想,将卷积核进行拆分,其拆分方式是将每个卷积核拆分成1xn 和nx1的结构。根据该思想,Inception  v3 产生了3种Inception  Model 。其输入分别是(35x35,17x17,8x8),其具体结构如下:

Inception  V4也采用了上述的Inception  Model模块,只是在构造的过程中基础模块不同,下面先给出Inception v4的模块结构,然后再说明哪些不同。Inception V4的结构还有几个中间环节的模块,具体的可以参见 【Inception-v4, Inception-ResNet and  the Impact of Residual Connections on Learning】这篇文章。整个Inception v4的网络结构如下:其中stem是开始的卷积计算,Inception - 表示Inception model, Reduction 表示其对应的维度减小的方式。

Inception V3的结构和上述类似(区别在于Inception v3采用的是3个Inception-A, 5个Inception-B, 3个Inception-C)。除此之外还存在两个明显的差别:1. 没有reduction 层,个人猜测在采用Inception模块时应该控制了最后一层卷积的步长。2. Stem不一样,在Inception V3中的Stem比较简单,只有6个常规的卷积核和一个池化层,卷积链接的方式也和一般的情况一样。

五、 Inception  ResNet

Inception ResNet 采用了ResNet的思想,即把上一层的信号直接传入到下一层作为下一层的理想输出,把通过卷积计算的方式得到输出作为实际输出,根据两个输出计算出对应的差叫做残差。学习的目标是是残差最小。其原理图如下:

根据上述原理图,对相关的Inception  model变形如下:

最终得出了Inception-ResNet1的网络结构,其中该结构的STEM模块和Inception V3中的开始模型结构类似(包括卷积的层数,池化的位置,区别在于池化后的卷积核的大小)

有关更具体的细节可以参考【Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning】这篇文章

猜你喜欢

转载自blog.csdn.net/hh_2018/article/details/81104981
今日推荐