Inception系列网络

这一系列的文章回顾了1998年开始,近19年来卷积神经网络的发展概况。这篇文章介绍的网络有Inception V1、Inception V2、Inception V3、Inception V4与Inception-ResNet-V2。

从2014年开始,深度学习模型在图像内容分类和视频分类方面有了极大的应用,仅仅2014这一年就出现了对后来影响巨大的VGG和GooLeNet。

Inception V1
在这之前,网络大都是这样子的:
在这里插入图片描述
也就是卷积层和池化层的顺序连接。这样的话,要想提高精度,增加网络深度和宽度是一个有效途径,但也面临着参数量过多、过拟合等问题。(当然,改改超参数也可以提高性能)

有没有可能在同一层就可以提取不同(稀疏或不稀疏)的特征呢(使用不同尺寸的卷积核)?于是,2014年,在其他人都还在一味的增加网络深度时(比如vgg),GoogleNet就率先提出了卷积核的并行合并(也称Bottleneck Layer),如下图。
在这里插入图片描述
和卷积层、池化层顺序连接的结构(如VGG网络)相比,这样的结构主要有以下改进:
1.一层block就包含1x1卷积,3x3卷积,5x5卷积,3x3池化(使用这样的尺寸不是必需的,可以根据需要进行调整)。这样,网络中每一层都能学习到“稀疏”(3x3、5x5)或“不稀疏”(1x1)的特征,既增加了网络的宽度,也增加了网络对尺度的适应性;
2.通过deep concat在每个block后合成特征,获得非线性属性。
按照这样的结构来增加网络的深度,虽然可以提升性能,但是还面临计算量大(参数多)的问题。为改善这种现象,GooLeNet借鉴Network-in-Network的思想,使用1x1的卷积核实现降维操作(也间接增加了网络的深度),以此来减小网络的参数量(这里就不对两种结构的参数量进行定量比较了),如图所示。
在这里插入图片描述
最后实现的inception v1网络是上图结构的顺序连接,其中不同inception模块之间使用2x2的最大池化进行下采样,如表所示。
在这里插入图片描述
如表所示,实现的网络仍有一层全连接层,该层的设置是为了迁移学习的实现(下同)。

在之前的网络中,最后都有全连接层,经实验证明,全连接层并不是很必要的,因为可能会带来以下三点不便:
1.网络的输入需要固定
2.参数量多
3.易发生过拟合
实验证明,将其替换为平均池化层(或者1x1卷积层)不仅不影响精度,还可以减少参数量。

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


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

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


Inception v2
(注意,这里实现的inception v2的结构是在inception v3论文中有介绍)

2015年Google团队又提出了inception v2的结构,基于上面提到的一些原则,在V1的基础之上主要做了以下改进:

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

(在Batch-normalized论文中只增加了BN层,而之后的Inception V3的论文提及到的inception v2还做了下面的优化)

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

在这里插入图片描述
⑶ 3x3的卷积核表现的不错,那更小的卷积核是不是会更好呢?比如2x2。对此,v2在17x17的梯度中使用1n和n1这种非对称的卷积来代替n*n的对称卷积,既降低网络的参数,又增加了网络的深度(实验证明,该结构放于网络中部,取n=7,准确率更高),如下。(基于原则3)
在这里插入图片描述
⑷ 在梯度为8x8时使用可以增加滤波器输出的模块(如下图),以此来产生高维的稀疏特征。(基于原则2)

(原则2指出,在高维特征上,采用这种结构更好,因此该模块用在了8x8的梯度上)
在这里插入图片描述
⑸ 输入从224x224变为229x229。

最后实现的Inception v2的结构如下表。
在这里插入图片描述
经过网络的改进,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之间分别采用下面这两种方式来实现特征图尺寸的缩小,如下图:
在这里插入图片描述

这样就得到Inception v3的网络结构,如表所示。
在这里插入图片描述
经过优化后的inception v3网络与其他网络识别误差率对比如表所示。
在这里插入图片描述
如表所示,在144x144的输入上,inception v3的识别错误率由v1的7.89%降为了4.2%。

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

Inception V4
其实,做到现在,inception模块感觉已经做的差不多了,再做下去准确率应该也不会有大的改变。但是谷歌这帮人还是不放弃,非要把一个东西做到极致,改变不了inception模块,就改变其他的。

因此,作者Christian Szegedy设计了inception v4的网络,将原来卷积、池化的顺次连接(网络的前几层)替换为stem模块,来获得更深的网络结构。stem模块结构如下
在这里插入图片描述
stem之后的,同v3,是inception模块和reduction模块,如下图
在这里插入图片描述
在这里插入图片描述
最终得到的inception v4结构如下图。
在这里插入图片描述
Inception-ResNet-v2
ResNet(该网络介绍见卷积神经网络结构简述(三)残差系列网络)的结构既可以加速训练,还可以提升性能(防止梯度弥散);Inception模块可以在同一层上获得稀疏或非稀疏的特征。有没有可能将两者进行优势互补呢?

Christian Szegedy等人将两个模块的优势进行了结合,设计出了Inception-ResNet网络。

(inception-resnet有v1和v2两个版本,v2表现更好且更复杂,这里只介绍了v2)

inception-resnet的成功,主要是它的inception-resnet模块。

inception-resnet v2中的Inception-resnet模块如下图
在这里插入图片描述
Inception-resnet模块之间特征图尺寸的减小如下图。(类似于inception v4)
在这里插入图片描述
最终得到的Inception-ResNet-v2网络结构如图(stem模块同inception v4)。
在这里插入图片描述
经过这两种网络的改进,使得模型对图像识别的错误率进一步得到了降低。Inception、resnet网络结果对比如表所示。
在这里插入图片描述
如表,Inception V4与Inception-ResNet-v2网络较之前的网络,误差率均有所下降。

pytorch官方已经提供了inception v3的实现代码及预训练权重,同时在GitHub也是可以找到Inception V4与Inception-ResNet-v2的pytorch实现代码及预训练权重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值