Iception v1-v3介绍

**

从Iception到Xception

**
下图是「原始」Inception 模块。它使用 3 个不同大小的滤波器(1x1、3x3、5x5)对输入执行卷积操作,此外它还会执行最大池化。所有子层的输出最后会被级联起来,并传送至下一个 Inception 模块。

在这里插入图片描述
如前所述,深度神经网络需要耗费大量计算资源。为了降低算力成本,作者在 3x3 和 5x5 卷积层之前添加额外的 1x1 卷积层,来限制输入信道的数量。尽管添加额外的卷积操作似乎是反直觉的,但是 1x1 卷积比 5x5 卷积要廉价很多,而且输入信道数量减少也有利于降低算力成本。不过一定要注意,1x1 卷积是在最大池化层之后,而不是之前。

实现降维的 Inception 模块。(图源:https://arxiv.org/pdf/1409.4842v1.pdf)

利用实现降维的 Inception 模块可以构建 GoogLeNet(Inception v1),其架构如下图所示:

GoogLeNet。橙色框是 stem,包含一些初始卷积。紫色框是辅助分类器。较宽的部分是 inception 模块。(图源:https://arxiv.org/pdf/1409.4842v1.pdf)

GoogLeNet 有 9 个线性堆叠的 Inception 模块。它有 22 层(包括池化层的话是 27 层)。该模型在最后一个 inception 模块处使用全局平均池化。

不用多说,这是一个深层分类器。和所有深层网络一样,它也会遇到梯度消失问题。

为了阻止该网络中间部分梯度的「消失」过程,作者引入了两个辅助分类器(上图紫色框)。它们对其中两个 Inception 模块的输出执行 softmax 操作,然后在同样的标签上计算辅助损失。总损失即辅助损失和真实损失的加权和。该论文中对每个辅助损失使用的权重值是 0.3。

The total loss used by the inception net during training.total_loss = real_loss + 0.3 * aux_loss_1 + 0.3 * aux_loss_2

辅助损失只是用于训练,在推断过程中并不使用。

Inception v2

Inception v2 和 Inception v3 来自同一篇论文《Rethinking the Inception Architecture for Computer Vision》,作者提出了一系列能增加准确度和减少计算复杂度的修正方法。

在这一篇论文中,作者表示非常深的卷积网络自 2014 年以来就成为了计算机视觉领域的主流,它在各种基准测试中都获得了非常多的提升。只要有足够的标注数据,增加模型大小与计算成本可以在大多数任务中快速提升模型质量。在这篇论文中,作者积极探索扩展网络的方法,旨在通过适当的分解卷积与积极的正则化尽可能高效地利用添加的计算。他们在 ILSVRC 2012 分类任务挑战赛的验证集上证明了模型的优秀性能,使用每个推断过程有 50 亿次乘加运算的模型,作者实现了单帧评估 21.2% top-1 和 5.6% top-5 误差率,且模型的总参数还不到 250 万。

论文:Rethinking the Inception Architecture for Computer Vision
论文地址:https://arxiv.org/pdf/1512.00567v3.pdf

以下首先介绍 Inception V2。

问题:

减少特征的表征性瓶颈。直观上来说,当卷积不会大幅度改变输入维度时,神经网络可能会执行地更好。过多地减少维度可能会造成信息的损失,这也称为「表征性瓶颈」。
使用更优秀的因子分解方法,卷积才能在计算复杂度上更加高效。

解决方案:

将 5×5 的卷积分解为两个 3×3 的卷积运算以提升计算速度。尽管这有点违反直觉,但一个 5×5 的卷积在计算成本上是一个 3×3 卷积的 2.78 倍。所以叠加两个 3×3 卷积实际上在性能上会有所提升,如下图所示:
在这里插入图片描述

最左侧前一版 Inception 模块中的 5×5 卷积变成了两个 3×3 卷积的堆叠。
此外,作者将 n*n 的卷积核尺寸分解为 1×n 和 n×1 两个卷积。例如,一个 3×3 的卷积等价于首先执行一个 1×3 的卷积再执行一个 3×1 的卷积。他们还发现这种方法在成本上要比单个 3×3 的卷积降低 33%,这一结构如下图所示:
在这里插入图片描述

此处如果 n=3,则与上一张图像一致。最左侧的 5x5 卷积可被表示为两个 3x3 卷积,它们又可以被表示为 1x3 和 3x1 卷积。

模块中的滤波器组被扩展(即变得更宽而不是更深),以解决表征性瓶颈。如果该模块没有被拓展宽度,而是变得更深,那么维度会过多减少,造成信息损失。如下图所示:
在这里插入图片描述

Inception v3

问题:

作者注意到辅助分类器直到训练过程快结束时才有较多贡献,那时准确率接近饱和。作者认为辅助分类器的功能是正则化,尤其是它们具备 BatchNorm 或 Dropout 操作时。
是否能够改进 Inception v2 而无需大幅更改模块仍需要调查。

解决方案:

Inception Net v3 整合了前面 Inception v2 中提到的所有升级,还使用了:

RMSProp 优化器;
Factorized 7x7 卷积;
辅助分类器使用了 BatchNorm;
标签平滑(添加到损失公式的一种正则化项,旨在阻止网络对某一类别过分自信,即阻止过拟合)。

猜你喜欢

转载自blog.csdn.net/youtiankeng/article/details/97132672