?(1409.CVPR) inception V1:Going Deeper with Convolutions【 论文原文】
目标:设计一种既能利用稀疏性,又可以利用稠密计算的网络结构。
?contributions:
- 引入inception V1;
- 同一层网络多个filter size,为了定位图片中的不同size的object;
- 添加两个auxiliary loss(防止梯度消失)
上图所示:GoogLeNet有 9 个线性堆叠的 Inception 模块。它有 22 层(包括池化层的话是 27 层)。该模型在最后一个 inception 模块处使用全局平均池化。
不用多说,这是一个深层分类器。和所有深层网络一样,它也会遇到梯度消失问题。
为了阻止该网络中间部分梯度的「消失」过程,作者引入了两个辅助分类器(上图紫色框)。它们对其中两个 Inception 模块的输出执行 softmax 操作,然后在同样的标签上计算辅助损失。总损失即辅助损失和真实损失的加权和。该论文中对每个辅助损失使用的权重值是 0.3。(只在训练过程中用)
?(1512.CVPR) inception V2、V3:Rethinking the Inception Architecture for Computer Vision【 论文原文】
表征性瓶颈:直观上来说,当卷积不会大幅度改变输入维度时,神经网络可能会执行地更好。过多地减少维度可能会造成信息的损失。
?contributions:
- 引入inception V2、
Inception V3 - 把V1里的5x5 filter换成了俩个3x3(感知域不变,快了2.78倍)(图1);
- 其次把nxn filter换成了1xn+nx1(提高了33%效率,有一些精度损失)(图2);
- 滤波器组被扩展(即变得更宽而不是更深),以解决表征性瓶颈问题(图3)
inception V3
问题:
- 作者注意到辅助分类器直到训练过程快结束时才有较多贡献,那时准确率接近饱和。作者认为辅助分类器的功能是正则化,尤其是它们具备BatchNorm 或 Dropout 操作时。
- 是否能够改进 Inception v2 而无需大幅更改模块仍需要调查。
?contributions:
- 引入inception V3;
- Inception Net v3 整合了前面 Inception v2 中提到的所有升级,还使用了:
- RMSProp 优化器;
- Factorized 7x7 卷积;
- 辅助分类器使用了 BatchNorm;
- 标签平滑(添加到损失公式的一种正则化项,旨在阻止网络对某一类别过分自信,即阻止过拟合)。
?(1602.CVPR) inception V4、Inception-ResNet:Inception-ResNet and the Impact of Residual Connections on Learning【 论文原文】【参考文章】
动机:结合残差连接可以显著加速 Inception 的训练。使模块更加一致。作者还注意到某些模块有不必要的复杂性。这允许我们通过添加更多一致的模块来提高性能。
Inception V4和Inception-ResNet总体框架:
- 由stem、inception、reduction block三个模块堆积木一样组合而成。
?contributions:
- 引入inception V4、
Inception-ResNet; - 修改了Inception的Stem(修改了什么?);
- 添加了缩减块(Reduction Block)(A和B、例如A:从35x35降维至17x17)
解决方案:
- Inception v4 的 stem 被修改了。这里的 stem 参考了在引入 Inception 块之前执行的初始运算集。
上图:图左部是 Inception-ResNet v1 的 stem。图右部是 Inception v4 和 Inception-ResNet v2 的 stem - 它们有三个主要的 Inception 模块,称为 A、B 和 C(和 Inception v2 不同,这些模块确实被命名为 A、B 和 C)。它们看起来和 Inception v2(或 v3)变体非常相似。
上图:(左起)在 Inception v4 中使用的 Inception 模块 A、B、C - Inception v4 引入了专用的「缩减块」(reduction block),它被用于改变网格的宽度和高度。早期的版本并没有明确使用缩减块,但也实现了其功能。
上图:缩减块 A(从 35x35 到 17x17 的尺寸缩减)和缩减块 B(从 17x17 到 8x8 的尺寸缩减)。这里参考了论文中的相同超参数设置(V,I,k)
Inception-ResNet V1、V2:
受 ResNet 的优越性能启发,研究者提出了一种混合 inception 模块。Inception ResNet 有两个子版本:v1 和 v2。在我们分析其显著特征之前,先看看这两个子版本之间的微小差异。
- Inception-ResNet v1 的计算成本和 Inception v3 的接近。
- Inception-ResNetv2 的计算成本和 Inception v4 的接近。
- 它们有不同的 stem,正如 Inception v4 部分所展示的。
- 两个子版本都有相同的模块 A、B、C 和缩减块结构。唯一的不同在于超参数设置。
?contributing:
- 引入Inception-ResNet;
- 引入残差连接,它将 inception 模块的卷积运算输出添加到输入上;
解决方案:
- 为了使残差加运算可行,卷积之后的输入和输出必须有相同的维度。因此,在初始卷积之后使用 1x1 卷积来匹配深度(深度在卷积之后会增加)。
上图:(左起)Inception ResNet 中的 Inception 模块 A、B、C。注意池化层被残差连接所替代,并在残差加运算之前有额外的 1x1 卷积。 - 主要 inception 模块的池化运算由残差连接替代。然而,仍然可以在缩减块中找到这些运算。缩减块 A 和 Inception v4 中的缩减块相同。
上图:左起)缩减块 A(从 35x35 到 17x17 的尺寸缩减)和缩减块 B(从 17x17 到 8x8 的尺寸缩减)。这里参考了论文中的相同超参数设置(V,I,K) - 如果卷积核的数量超过 1000,则网络架构更深层的残差单元将导致网络崩溃。因此,为了增加稳定性,作者通过 0.1 到 0.3 的比例缩放残差激活值。 (激活值通过一个常数进行比例缩放,以防止网络崩溃。)
原始论文并没有在求和之后使用批归一化,以在单个 GPU 上训练模型(在单个 GPU 上拟合整个模型)。
研究发现 Inception-ResNet 模型可以在更少的 epoch 内达到更高的准确率。
Inception v4 和 Inception-ResNet 的网络完整架构如下图所示:
上图:左部是 Inception v4 的架构。右部是 Inception-ResNet 的架构