点击上方“计算机视觉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卷积不只能够减小神经网络的参数量,还能够压缩通道数,大大提升了计算效率。
把不一样大小的卷积核组合在一块儿

把不一样的卷积核组合在一块儿,不只能够增大感觉野,并且还能够提升神经网络的鲁棒性。在一层里把不一样大小的卷积核叠在一块儿后,意味着一层里能够产生不一样大小的卷积核处理以后的效果,也意味着不用人为的来选择这一层要怎么卷,这个网络本身便会学习用什么样的卷积(或池化)操做最好。
下面是卷积神经网络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均可经过替换为两个分别为1xn与nx1的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网络结构

首先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源创计划”,欢迎正在阅读的你也加入,一块儿分享。