经典神经网络 | 从Inception v1到Inception v4全解析

点击上方“计算机视觉cv”便可“进入公众号”
web

重磅干货第一时间送达微信

本文介绍了 Inception 家族的主要成员,包括 Inception v一、Inception v2 、Inception v三、Inception v4 和 Inception-ResNet。它们的计算效率与参数效率在全部卷积架构中都是顶尖的。网络

Inception 网络是CNN分类器发展史上一个重要的里程碑。在 Inception 出现以前,大部分流行 CNN 仅仅是把卷积层堆叠得愈来愈多,使网络愈来愈深,以此但愿可以获得更好的性能。架构

例如AlexNet,GoogleNet、 VGG-Net、ResNet等都是经过加深网络的层次和深度来提升准确率。app

GoogLeNet 最大的特色就是使用了 Inception 模块,它的目的是设计一种具备优良局部拓扑结构的网络,即对输入图像并行地执行多个卷积运算或池化操做,并将全部输出结果拼接为一个很是深的特征图。由于 1*一、3*3 或 5*5 等不一样的卷积运算与池化操做能够得到输入图像的不一样信息,并行处理这些运算并结合全部结果将得到更好的图像表征。编辑器

Inception常见的版本有:性能

  • Inception v1
  • Inception v2 和 Inception v3
  • Inception v4 和 Inception-ResNet

每一个版本都是前一个版本的迭代进化。了解 Inception 网络的升级能够帮助咱们构建自定义分类器,优化速度和准确率。学习

Inception v1

Inception v1首先是出如今《Going deeper with convolutions》这篇论文中,做者提出一种深度卷积神经网络 Inception,它在 ILSVRC14 中达到了当时最好的分类和检测性能。测试

Inception v1的主要特色:一是挖掘了1 1卷积核的做用*,减小了参数,提高了效果;二是让模型本身来决定用多大的的卷积核flex

1* 1卷积

1* 1卷积

1* 1卷积不只能够减小神经网络的参数量,还能够压缩通道数,大大提升了计算效率。

把不一样大小的卷积核组合在一块儿

把不一样的卷积核组合在一块儿,不只能够增大感觉野,并且还能够提升神经网络的鲁棒性。在一层里把不一样大小的卷积核叠在一块儿后,意味着一层里能够产生不一样大小的卷积核处理以后的效果,也意味着不用人为的来选择这一层要怎么卷,这个网络本身便会学习用什么样的卷积(或池化)操做最好。

下面是卷积神经网络Inception模块的基本组成部分:

Inception v2

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

将5* 5卷积分解为两个3* 3卷积

将 5×5 的卷积分解为两个 3×3 的卷积运算以提高计算速度。如此能够有效地只使用约(3x3 + 3x3)/(5x5)=72%的计算开销。下图可看出此替换的有效性。

因此升级后的Inception模块以下图所示:

最左侧前一版 Inception 模块中的 5×5 卷积变成了两个 3×3 卷积的堆叠。

将 n*n 的卷积核尺寸分解为 1×n 和 n×1 两个卷积。

例如,一个 3×3 的卷积等价于首先执行一个 1×3 的卷积再执行一个 3×1 的卷积。这样一样能够只使用约(1x3 + 3x1) / (3x3) = 67%的计算开销。下图是此替换的有效性。做者更进一步发挥想象,认为任一个nxn conv均可经过替换为两个分别为1xnnx1的convs层来节省计算与内存。

更新后的Inception模块以下图所示:

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

模块中的滤波器组被扩展(即变得更宽而不是更深),以解决表征性瓶颈。若是该模块没有被拓展宽度,而是变得更深,那么维度会过多减小,形成信息损失。以下图所示:

Inception v3

Inception v3 整合了前面 Inception v2 中提到的全部升级,还使用了:

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

Inception v2和Inception v3最终模型

Inception v4

Inception v4 和 Inception -ResNet 在同一篇论文《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》中提出来。

Inception v4网络结构

Inception v4

首先stem分支,能够直接看论文的结构图:

而后接下来它们有三个主要的Inception 模块和Reduction模块,称为 A、B 和 C(和 Inception v2 不一样,这些模块确实被命名为 A、B 和 C)。它们看起来和 Inception v2(或 v3)变体很是类似。

Inception v4 引入了专用的「缩减块」(reduction block),它被用于改变网格的宽度和高度。早期的版本并无明确使用缩减块,但也实现了其功能。

缩减块 A(从 35x35 到 17x17 的尺寸缩减)和缩减块 B(从 17x17 到 8x8 的尺寸缩减)。这里参考了论文中的相同超参数设置(V,I,k)。

直接看其网络结构:

Inception-ResNet

在该论文中,做者将Inception 架构残差链接(Residual)结合起来。并经过实验明确地证明了,结合残差链接能够显著加速 Inception 的训练。也有一些证据代表残差 Inception 网络在相近的成本下略微超过没有残差链接的 Inception 网络。做者还经过三个残差和一个 Inception v4 的模型集成,在 ImageNet 分类挑战赛的测试集上取得了 3.08% 的 top-5 偏差率。

(左起)Inception ResNet 中的 Inception 模块 A、B、C。注意池化层被残差链接所替代,并在残差加运算以前有额外的 1x1 卷积。

  • 主要 inception 模块的池化运算由残差链接替代。然而,你仍然能够在缩减块中找到这些运算。缩减块 A 和 Inception v4 中的缩减块相同。

具体Inception-resnet A、B、C各个模块网络结构详见原论文

针对深网络结构设计的衰减因子

若是卷积核的数量超过 1000,则网络架构更深层的残差单元将致使网络崩溃。所以,为了增长稳定性,做者经过 0.1 到 0.3 的比例缩放残差激活值。

激活值经过一个常数进行比例缩放,以防止网络崩溃。

Inception-ResNet v1结构

结果精度对比

本文分享自微信公众号 - 计算机视觉CV(jsjsjcv)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索