Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 论文笔记

0 摘要

非常深的卷积网络已成为近年来图像识别性能最大进展的核心。Inception architectures(Inception结构)已被证明在相对较低的计算成本下实现了非常好的性能。 在更加传统的架构中引入residual connections(残差连接)的ResNet取得了2015年ILSVRC最佳成绩。那么,将Inception结构与残差连接结合起来会不会更好? 实验表明:
1、具有残差连接的训练显着加速了Inception结构的训练。
2、residual Inception networks性能优于没有残差连接的Inception结构。

1 介绍

本文研究的是将残差连接和Inception结构联合起来。ResNet已经证明残差连接对训练深度网络结构很重要。而Inception结构往往非常深,因此用残差连接替代Inception结构结构中卷积的级联阶段就很自然。这样Inception结构结构就能获得残差连接的收益,并且保持其计算效率。
除了联合残差连接和Inception结构之外,我们还研究了没有残差连接的Inception结构是否可以通过变得更深更宽从而更有效。我们提出了Inception-v4结构,它具有比Inception-v3更统一的简化架构和更多的Inception模块。
本论文中,我们将两个单一Inception变体——Inception-v3和v4与消耗相似的 Inception-ResNet混合版本进行比较。这些模型的挑选主要满足以下约束条件,即和非残差模型具有相似的参数和计算复杂度。事实上我们对更深更宽的Inception-ResNet变体Inception-ResNet-v2也进行测试,它们在ImageNet分类任务上表现性能相似。
最新的实验对组合模型的性能进行了评估。结果显示Inception-v4和Inception-ResNetv2的性能都很好,在ImageNet验证集上其性能已超过业界领先的单个框架模型。

2 相关工作

卷积网络在大规模图像识别任务上的运用非常广泛。主要的模型有Network-in-network、VGGNet、GoogleLeNet(Inception-v1)。残差连接在ResNet中提出,并指出附加的残差连接对于图像识别尤其是目标检测具有很大的优势,并给出理论和实验验证。作者认为残差连接在训练深度卷积模型是很有必要的。至少在图像识别上,我们的研究似乎并不支持这一观点。在实验部分,我们展示了不使用残差连接时深度网络的训练并不难做到。然而,使用残差连接能够极大的提高训练速度,单单这一点值得肯定。
Inception深度卷积网络被称为GoogleLeNet或Incention-v1。继而我们通过各种方法对 Inception结构进行优化,首先引入batch normalization(Inception-v2)。后来在第三代中增加卷积分解,即本文中提到的Inception-v3。

3 结构选择

3.1 单一的Inception模块

对以前的Inception模型通过分布式进行训练,将每个副本被划分成一个含多个子网络的模型,以达到在内存中对整个模型进行拟合的目的。随着TensorFlow的引入,大部分最新的模型无需分布式的对副本进行训练。它通过反向传播(back propagation)进行内存优化,并仔细考虑梯度计算需要的tensors,以及通过结构化计算减少这类tensors的数量。 由于之前没有对网络进行简化,导致网络看起来更加复杂。在最新的实验中,针对 Inception-v4网络,我们决定丢掉不必要的包袱,对于inception块的每个网格大小进行统一。下面的图中没有标记“V”的卷积使用same的填充原则,意即其输出网格与输入的尺寸正好匹配。使用“V”标记的卷积使用valid的填充原则,输出特征图的网格尺寸相应会减少。

Inception-v4整体结构
这里写图片描述
Stem结构(网络的输入模块)
这里写图片描述
Inception-A/B/C(35*35/17*17/8*8的网络结构)
这里写图片描述
Reduction-A(35*35减少到17*17的网络结构)
这里写图片描述
Reduction-B(17*17减少到8*8的网络结构)
这里写图片描述

3.2 Inception残差块

相较最初的Inception,针对Inception的残差版本我们使用更廉价的Inception块。每个Inception块后紧连接着没有激活函数的1×1卷积以进行维度扩展,以实现输入的匹配。这样补偿了在Inception块中的维度降低。
我们尝试了残差Inception的几个版本。这里对其中的两个进行具体细节展示。第一个是“Inception-ResNet-v1”,计算代价跟Inception-v3大致相同,第二个“Inception-ResNet-v2”的计算代价跟Inception-v4网络基本相同。然而,Inception-v4步长时间实际更慢,原因可能是有了更多的层。
残差和非残差Inception的另外一个技术性区别是,在Inception-ResNet网络中,我们在传统层的顶部而非所有层的顶部中使用batch-normalization。在全部层使用 batch-normalization是合情合理的,但是在tensoflow中实现batch normalization非常消耗内存,如果全部层使用BN,我们就要减少层的数量。这种平衡变得没有必要。
Inception-ResNet-v1和Inception-ResNet-v2网络的框架。两种网络的框架相同,内部实现不同。
这里写图片描述
Inception-ResNet-v1网络的Stem,Inception-ResNet-v2网络的Stem同Inception-v4的Stem
这里写图片描述
Inception-ResNet-v1网络的Inception-resnet-A/B/C结构
这里写图片描述
Inception-ResNet-v2网络的Inception-resnet-A/B/C结构
这里写图片描述

3.3 对残差模块的缩放

我们发现,如果filters数量超过1000,残差网络开始出现不稳定,同时网络会在训练过程早期便会出现“死亡”,意即经过成千上万次迭代,在平均池化(average pooling) 之前的层开始只生成0。通过降低学习率,或增加额外的batch-normalizatioin都无法避免这种状况。
我们发现,在将残差模块添加到activation激活层之前,对其进行放缩能够稳定训练。通常来说,我们将残差放缩因子定在0.1到0.3(如下图)。
这里写图片描述
类似不稳定的情形在ResNet中也出现过, 文中建议通过两个阶段的训练来避免这种情况,其中第一个“warm-up”阶段使用极低的学习率,紧接着第二阶段使用高学习率。我们发现如果filters数量非常大,那么即使很低的学习率(0.00001)也不足以解决不稳定性,而且使用高学习率训练对其效果也有损伤。最终我们发现只需对残差进行缩放的方法更加可靠。
即使缩放并不是完全必须的,它似乎并不会影响最终准确率,但是放缩能有益于训练的稳定性。

4 训练策略

与Inception-v2相同。

5 实验结果

观察四个网络变体在训练阶段top-1和top-5validation-error上的变化。

在验证集上各种结构的单个模型以及单次裁剪的top-1和top-5错误率
这里写图片描述

对ResNet做了10个裁剪,对于Inception使用12种裁剪进行验证。
这里写图片描述

144个裁剪评估,单一模型的实验结果。
这里写图片描述

比较了组合的结果。对于纯净的残差网络6个模型的组合。对于Inception网络4个模型的组合。
这里写图片描述

观察四个网络变体在训练阶段的收敛速度。
四个模型(单个模型,一次裁剪)Top-5错误率。在更大模型尺寸上得到了改善。尽管残差版本收敛更快,但是最终的准确率依赖于模型尺寸
这里写图片描述
四个模型(单个模型,一次裁剪)Top-1错误率。
这里写图片描述

6 结论

本文详细呈现了三种新的网络结构:
(1)Inception-Reset-v1:混合Inception版本,它的计算效率同Inception-v3;
(2)Inception-ResNet-v2:更加昂贵的混合Inception版本,同明显改善了识别性能;
(3)Inception-v4:没有残差链接的纯净Inception变种,性能大致和Inception-ResNet-v2。
我们研究了引入残差连接如何显著的提高inception网络的训练速度。而且仅仅凭借增加的模型尺寸,我们的最新的模型(带和不带残差连接)都优于我们以前的网络。

猜你喜欢

转载自blog.csdn.net/weixin_37904412/article/details/79975634
今日推荐