GoogLeNet Inception v1,v2,v3,v4及Inception Resnet介绍
GoogLeNet,在ILSVRC-2014分类与检测比赛中取得了冠军地位。相较于当年同类比赛中的第二名VGG网络对小尺寸卷积层(3x3)采用了较为基础且单一的方式,GoogleNet提出了更具创新性的Inception模块设计。尽管网络架构较为复杂,在参数规模上较之 AlexNet 减少了约8.7%,仅为其十二分之一水平(即约为 AlexNet 参数量的 8.7%),而 VGG 网络则达到了 AlexNet 参数量的大约三倍之多)。然而,在实际性能表现上却略高于后者。
得益于GoogLeNet卓越的性能,在其基础上进一步优化出了Inception系列中的v2、v3、v4版本以及与ResNet结合的Inception-ResNet v1和v2等优化模型
一、Inception v1
为了解决这个问题, 我们希望明确提高深度神经网络性能的主要途径是什么?然而, 在实际操作中单纯地通过增加模型的层次深度与宽度可能会导致以下两个主要的问题:
1.较大尺寸通常会带来额外引入了大量参数的情况,在这种情况下,增大网络规模可能会导致模型在训练过程中出现过拟合现象,尤其是在训练数据量不足的情况下。
2.会耗费大量计算资源。
GoogLeNet的设计理念为:
1.图像中的突出部分可能具有极大的尺寸变化。
2.信息位置的这种巨大变化,卷积操作选择正确的核大小比较困难。****
对于整体分布的信息,优先采用较大尺寸的核;而对于局部分布的信息,则采用较小尺寸的核。
**4.非常深的网络容易过拟合。**它也很难通过整个网络传递梯度更新。
5.简单地堆叠大卷积运算导致计算复杂度较高
出于上面的考虑,提出了如下图所示的初始Inception 模块

对前一层的输入实施分层卷积操作,并通过采用不同尺寸的感受野来实现(其中包含1×1、3×3和5×5尺寸的感受野)。
但是上述初始Inception ,参数量过大,从而导致计算量过大。
源自Network in Network的研究者们,在他们的研究工作中首次提出了基于深度学习模型的设计理念。他们通过应用1×1卷积操作对特征图中的通道数量进行了降秩处理,并在此基础上构建了Inception系列模型的核心架构设计。这即为Inception v1模型的具体实现方式,在后续章节中将详细阐述这一过程

inception结构的主要贡献:
一是使用1x1的卷积来进行降维;二是在多个尺寸上同时进行卷积再聚合
最终,基于Inception v1的GoogLeNet网络结构如下图:

每一层的具体情况如下图:

该网络总计由22个层构成,并且其参数规模仅为Alexnet的约1/12。当网络深度逐渐增加时,仍然会面临梯度消失的问题。为了改善这一问题,在中间层增加了两个辅助的Softmax层,并通过这种方式不仅提高了反向传播的有效性还起到了一定的正则化作用。在网络损失计算过程中,在中间辅助Softmax层产生的损失会被乘以0.3并整合到最后一层损失值中。而在实际预测过程中,则省略了中间Softmax层的结果以减少计算复杂度
二、Inception v2
Inception v2 的改进主要在以下几点:
1. 加入Batch Normalization(批归一化)层,标准结构为:卷积-BN-relu
第2点:参考VGG的设计思路,在网络架构中采用两个连续应用3×3的小核卷积来替代Inception模块中的5×5大核卷积部分。这一设计基于以下几点考虑:尽管两组小核卷积在感受野上与单个大核一致(相同),但其参数数量显著低于大核配置(减少了约1/9)。此外,在引入了额外的一层小核卷运算后(即增加了Relu激活函数),能够进一步提高模型对特征信息的提取能力(增加了额外的一层非线性映射)。这种优化策略不仅有助于提高模型的整体性能。
3. 使用非对称卷积对33的卷积进一步分解为31和1*3的卷积。如下图:

关于非对称卷积,论文中提到:
1)先进行 n×1 卷积再进行 1×n 卷积,与直接进行 n×n 卷积的结果是等价的。
非对称卷积有助于减少运算量;原本是 n×n 次乘法;经过分解后变为 2×n 次乘法;当 n 值越大时,运算量减少的比例越高。
虽然能够减少计算负担,并不适用于所有情况;这种非对称卷积不适合应用于靠近输入层的地方,在靠近输入层的位置可能会导致精度下降;相反地,在较深层的位置效果更为理想;具体而言,在图片尺寸介于12×12到20×20像素范围内的场景下表现最佳。
Inception v2中有以下三种不同的Inception 模块,如下图
第一模块(Figure 5)基于一个N \times N级别的特征图中使用了一个特殊的处理方式,在具体实现中发现该方法与传统的单个大尺寸(如7×7)的空间采样策略存在明显区别。

第2个模块(figure 6),进一步地进行3×3卷积核的分解工作,并将其划分为横向和纵向的一维卷积操作;随后将其应用于大小为17×17的特征图上;具体而言,则按照以下架构展开设计

第三部分主要用于处理高维数据(figure 7),其在网络架构中使用尺寸为8x8的特征图来实现模型的任务处理能力。具体而言

GoogLeNet Inception v2的完整网络架构如下图:


三、Inception v3
Inception v3主要基于Inception v2的网络架构,并对其优化算法与正则化技术进行了改进,具体包括:
1. 优化算法使用RMSProp替代SGD
2. 辅助分类器中也加入BN操作
通过Label Smoothing Regularization(LSR)技术实现模型训练 ,从而减少模型在单一类别预测上的高自信度 。特别关注那些低概率类别 ,以提高模型对分布尾部数据的适应能力 。(关于LSR优化方法 ,可以参考下这篇博客
4. 将刚开始的第一个7x7的卷积核替换为两个3x3的卷积核
四、Inception v4
Inception v4中的三个Inception模块如下:
1. Inception-A block:
采用两个3×3的小核卷积来取代传统的5×5大核卷积,并配合平均池化操作。该模块主要作用于大小为35×35的特征图;结构如下图:

2. Inception-B block:
该模块通过替代传统的n \times n卷积为1 \times n及n \times 1卷积,并同时采用average pooling技术进行特征提取;主要负责处理尺寸为17 \times 17的特征图;结构如下图所示

3. Inception-C block:
该模块主要处理尺寸为8x8的feature map。结构如下图:

经过尺寸缩减至17×17后再降为8×8时,并非仅依赖于简单的池化层而采用了一个双阶段的降维机制


最终,Inception v4完整结构如下图:

五、Inception-ResNet v1, v2
Inception-ResNet得名于Inception架构,在此基础上融合了ResNet的残差连接概念。该模型通过另一条专门分支将浅层特征整合到高层特征中,并从而实现特征复用的目的;同时防止深层网络出现梯度消失的问题。
Inception-ResNet v1:
三个基本模块如下图:

Inception-ResNet v1的 Reduction-A 模块和 Inception v4的保持一致,
Reduction-B模块如下:

完整架构如下:

Inception-ResNet v2:
三个基本模块如下图:

Inception-ResNet v2中的 Reduction-A组件同样具有与Inception v4相似性;Reduction-B组件的具体描述见下文。

Inception-Resnet v2的整体架构与v1保持一致,在茎的具体结构上存在差异;在茎的部分中使用的是相同的模块设计;如图所示。

诚挚邀请您关注我的公众号

