Inception系列

一.Inception V1

Inception v1的原始Inception module如下所示:

                        

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

                                

最后实现的inception v1网络是上图结构的顺序连接,其中不同inception模块之间使用2x2的最大池化进行下采样,如表所示。

                  

在之前的网络中,最后都有全连接层,经实验证明,全连接层并不是很必要的,因为可能会带来以下三点不便:

  • 网络的输入需要固定
  • 参数量多
  • 易发生过拟合

实验证明,将其替换为平均池化层(或者1x1卷积层)不仅不影响精度,还可以减少参数量。

此外,实验室的小伙伴最近做了下实验,如果是小目标检测的话,网络的最后还是需要几层全连接层的,猜想可能是用池化的话会损失太多信息,毕竟是小目标。

Inception V2和Inception V3的改进,主要是基于V3论文中提到的四个原则:

  1. 避免表示瓶颈,尤其是在网络的前面。一般来说,特征图从输入到输出应该缓慢减小。
  2. 高维度特征在网络局部处理更加容易。考虑到更多的耦合特征,在卷积网络中增加非线性。可以让网络训练更快。
  3. 空间聚合可以以低维度嵌入进行,这样不会影响特征的表达能力。如,在进行大尺度卷积之前,先对输入进行降维。
  4. 平衡网络的宽度和深度。增加宽度和深度都会带来性能上的提升,两者同时增加带来了并行提升,但是要考虑计算资源的合理分配。

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

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

二.Inception v2

1.学习VGGNet的特点,用两个3*3卷积代替5*5卷积,可以降低参数量。

2.提出BN算法。BN算法是一个正则化方法,可以提高大网络的收敛速度。简单介绍一下BN算法。就是对输入层信息分布标准化处理,使得规范化为N(0,1)的高斯分布,收敛速度大大提高。

 ⑴ 使用BN层,将每一层的输出都规范化到一个N(0,1)的正态分布,这将有助于训练,因为下一层不必学习输入数据中的偏移,并且可以专注与如何更好地组合特征(也因为在v2里有较好的效果,BN层几乎是成了深度网络的必备);

⑵ 使用2个3x3的卷积代替梯度(特征图,下同)为35x35中的5x5的卷积,这样既可以获得相同的视野(经过2个3x3卷积得到的特征图大小等于1个5x5卷积得到的特征图),还具有更少的参数,还间接增加了网络的深度,如下图。(基于原则3

                                                      

⑶ 3x3的卷积核表现的不错,那更小的卷积核是不是会更好呢?比如2x2。对此,v2在17x17的梯度中使用1*n和n*1这种非对称的卷积来代替n*n的对称卷积,既降低网络的参数,又增加了网络的深度(实验证明,该结构放于网络中部,取n=7,准确率更高),如下。(基于原则3

                                                       

⑷ 在梯度为8x8时使用可以增加滤波器输出的模块(如下图),以此来产生高维的稀疏特征。(基于原则2

(原则2指出,在高维特征上,采用这种结构更好,因此该模块用在了8x8的梯度上)

                                                                                                                                                                

⑸ 输入从224x224变为229x229。

最后实现的Inception v2的结构如下表。

                                                                                                                                                        

如表,inception v2相比inception v1在imagenet的数据集上,识别误差率由29%降为23.4%。 

三.Inception v3 

inception模块之间特征图的缩小,主要有下面两种方式:

                                                     

右图是先进行inception操作,再进行池化来下采样,但是这样参数量明显多于左图(比较方式同前文的降维后inception模块),因此v2采用的是左图的方式,即在不同的inception之间(35/17/8的梯度)采用池化来进行下采样。

但是,左图这种操作会造成表达瓶颈问题,也就是说特征图的大小不应该出现急剧的衰减(只经过一层就骤降)。如果出现急剧缩减,将会丢失大量的信息,对模型的训练造成困难。(上文提到的原则1

因此,在2015年12月提出的Inception V3结构借鉴inception的结构设计了采用一种并行的降维结构,如下图:

                                                                

具体来说,就是在35/17/8之间分别采用下面这两种方式来实现特征图尺寸的缩小,如下图: 

                                                                               

                                                                     figure 5' 35/17之间的特征图尺寸减小 

                                                                             

                                                                          figure 6' 17/8之间的特征图尺寸缩小 

这样就得到Inception v3的网络结构,如表所示。 

                                                    

                                                                                                inception v3 

经过优化后的inception v3网络与其他网络识别误差率对比如表所示。 

                                                                                                                                                              

如表所示,在144x144的输入上,inception v3的识别错误率由v1的7.89%降为了4.2%。

此外,文章还提到了中间辅助层,即在网络中部再增加一个输出层。实验发现,中间辅助层在训练前期影响不大,而在训练后期却可以提高精度,相当于正则项。

 四.Inception V4

将原来卷积、池化的顺次连接(网络的前几层)替换为stem模块,来获得更深的网络结构。stem模块结构如下

                                                       

  stem之后的,同v3,是inception模块和reduction模块,如下图                                                        

                  

                                    inception v4 中的inception模块(分别为inception A inception B inception C)

                    

                                              inception v4中的reduction模块(分别为reduction A reduction B)

最终得到的inception v4结构如下图。

                                                                    

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值