Inception v1
对应的GoogLeNet架构如下:
Inception v2, v3
- Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- Rethinking the Inception Architecture for Computer Vision
Inception v2整体架构:
- 将 7 x 7替换为了3 个 3 x 3的卷积
- 引入如figure 6, figure 7的中模块
Inception v3是在inception v2的基础上添加BN-auxiliary.
Inception v4
ResNeXt
- Aggregated Residual Transformations for Deep Neural Networks
- [https://github.com/facebookresearch/ResNeXt] (https://github.com/facebookresearch/ResNeXt)
论文中提出了一种简洁的、高度模块化的用于图像分类的网络体系结构. 网络是通过重复构建模块来构建的, 该模块具有一组相同的拓扑转化组合而成. 网络引入了一个新的维度"cardinality"(一组转换的个数)), 它是模型中的一个重要参数.
论文中提出的网络称作ResNeXt, 表示 “the next dimension”, 它的提出参考了VGG/ResNet网络"repeating layers"的策略,同时利用"split-transform-merge"策略.
它的block如下图所示:
分别采用三种不同的形式表示ResNeXt的block, 其中在实现时使用了group convolution(只有图)
ResNeXt 模板如下图所示:
ResNeXt具有如下优点:
- 在同等复杂度时,它提高了分类的accuracy(ImageNet)
- block中相同的拓扑结构,超参数减少了
Xception
Inception模块可以看成是常规卷积核Depthwise separable 卷积(depthwise 卷积 紧接着 pointwise卷积)的中间步骤.
论文的主要思想是cross-channels关联和spatial关联完全分割开, depthwise separable 卷积可以理解成具有最大数量towers的Inceptin模块, 如下图所示.
Depthwise separable卷积和Inceptionmok的极限模式有两个不同:
- Depthwise separable卷积先进行depthwise卷积再执行1x1卷积
- Depthwise separable卷积的中间层不接non-linearity部分
Xception表示"Extreme Inception", 它包括36个卷积层, 并且具有残差连接结构, 如下图所示.
SENet
卷积神经网络建立在卷积运算的基础上,该运算通过在局部感受野将空间和通道信息融合来提取信息特征. 论文工作中,专注于channel的关系, 提出了一种新的体系结构单元,我们称之为"Squeezeand-Exciation" SE block, 该单元通过显式的建模通道之间的相互依赖性来自适应地重新校准逐通道的特征响应. 至关重要的是,我们发现SE block以最小的额外计算代价为现有的最新深度架构带来了显著的性能提升.
SE block如下图所示: 可以看出主要包括3部分:
- Squeeze: 在 H * W维度进行global average pooling, 得到逐通道的统计
- Exciation: Sigmoid(FC2(ReLU(FC1(X)))), 利用FC1先降维,在利用FC2再升维
- Scale: 输入特征图与SE后的结果进行逐通道相乘
SE block 从本质上引入了以输入为条件的动态, 从而有助于功能的可分辨性
在Inception和ResNet中分别加入SE block,如下图所示:
实验结果证明, SE block在速度和模型容量上只对原始模型产生了很小的影响, 但性能得到了很大的提高.
MobileNet v1
论文中提出了一类称为MobileNets的高效模型用于移动和嵌入式视觉应用. MobileNets基于流线(streamlined)结构, 使用depthwise separable卷积来构建轻量级深度神经网络. 论文中介绍了两个简单的全局超参数, 可以有效地在延迟和准确性之间进行权衡. 这些超参数运行模型构建器根据问题的约束为其应用选择合适大小的模型.
MobileNets主要专注于优化延迟,但也会产生小型网络.
MobileNets主要使用了depthwise separable卷积, 它与传统卷积可以减少运算次数,减小模型规模.
假设某一层输出的特征图尺寸是 D F ∗ D F ∗ M D_F * D_F * M DF∗DF∗M, 输出的通道数是 N N N, 卷积核大小是 D K ∗ D K D_K * D_K DK∗DK,
传统卷积的运算次数为:
D
F
∗
D
F
∗
N
∗
D
K
∗
D
K
∗
M
D_F * D_F * N * D_K * D_K * M
DF∗DF∗N∗DK∗DK∗M
depthwise separable卷积的运算次数为:
D F ∗ D F ∗ M ∗ D K ∗ D K + D F ∗ D F ∗ N ∗ M D_F * D_F * M * D_K * D_K + D_F * D_F * N * M DF∗DF∗M∗DK∗DK+DF∗DF∗N∗M
则
D F ∗ D F ∗ M ∗ D K ∗ D K + D F ∗ D F ∗ N ∗ M D F ∗ D F ∗ N ∗ D K ∗ D K ∗ M = 1 N + 1 D K 2 \frac{D_F * D_F * M * D_K * D_K + D_F * D_F * N * M}{D_F * D_F * N * D_K * D_K * M} = \frac{1}{N} + \frac{1}{D_K^2} DF∗DF∗N∗DK∗DK∗MDF∗DF∗M∗DK∗DK+DF∗DF∗N∗M=N1+DK21
而两者的参数:
D
K
∗
D
K
∗
M
+
M
∗
N
D
K
∗
D
K
∗
M
∗
N
=
1
N
+
1
D
K
2
\frac{D_K * D_K * M + M * N}{D_K * D_K * M * N} = \frac{1}{N} + \frac{1}{D_K^2}
DK∗DK∗M∗NDK∗DK∗M+M∗N=N1+DK21
因此, 模型的运算次数和模型的参数均减少了不少.
MobileNet共有28层,结构如下表所示.
虽然base MobileNet架构已经很小且延迟很低,但是特定用例或应用程序很多时候可能要求模型更小更快.为了构建这些更小且计算量更小的模型,论文中引入了两个超参数, width multiplier α \alpha α 和 resolution multiplier ρ \rho ρ, 分别改变通道的个数和输入图像的分辨率. 他们对模型计算量的影响分别为:
D F ∗ D F ∗ α M ∗ D K ∗ D K + D F ∗ D F ∗ α N ∗ α M D_F * D_F * \alpha M * D_K * D_K + D_F * D_F * \alpha N * \alpha M DF∗DF∗αM∗DK∗DK+DF∗DF∗αN∗αM
和
ρ D F ∗ ρ D F ∗ α M ∗ D K ∗ D K + ρ D F ∗ ρ D F ∗ α N ∗ α M \rho D_F * \rho D_F * \alpha M * D_K * D_K + \rho D_F * \rho D_F * \alpha N * \alpha M ρDF∗ρDF∗αM∗DK∗DK+ρDF∗ρDF∗αN∗αM
α \alpha α的常用取值为{1, 0.75, 0.5, 0.25}, 而输入图像的分辨率可以设置为{224, 192, 160, 128}.
不同配置卷积的计算次数和模型参数对比如下:
MobileNet v2
论文中描述一种新的移动架构MobileNetV2,它可以改善移动模型在多个任务和基准以及不同模型尺寸范围内的最先进性能.它的创新点主要包括两个:
- inverted residual,
- linear bottlenecks
论文好难懂,这里先摆出MobelNetV2的网络架构吧:
其中bottlenect如下图所示:
具体地通过如下方式进行转换:
论文中还用实验进行了证明bottleneck中non-linearity和不同shortcut连接方式的对比
下表是与其他模型在ImageNet上的分类结果的对比:
论文中使用实验证明了mobiletv2在目标检测和语义分割方面的有效性.
MobileNet v3
ShuffleNet v1
论文中引入一种称作ShuffleNet的计算效率极其高的CNN架构,该架构专门为具有非常有限计算能力(10-150 MFLOPs)的移动设备而设计. ShuffleNet利用两个新的操作, pointwise group 卷积和channel shuffle, 在保持准确性的同时大大降低了计算成本.
作者注意到如Xception, ResNeXt等最先进的基本在极小的网络中不太有效,因为代价高昂的1 x 1卷积. 作者提出pointwise group convolution来减少1 x 1卷积的计算复杂度. 为了克服group卷积带来的副作用, 我们提出了一种新颖的channel shuffle操作来帮助信息在特征通道间流动.
Group convolution的概念,最初是在AlexNet中引入的,用于在两个GPU上分布模型,已经在ResNeXt中很好的证明了它的有效性. 在Xception中提出的depthwise separable卷积由inception v3, v4中的separable卷积泛化得到. 最近MobileNet利用depthwise separable convolutions并在轻量级模型中获得了最先进的成果. ShuffleNet以一种新颖的方式概况(generalize)了group convolution和depthwise separable convolution.
-
Channel Shuffle for Group Convolutions
在微小的网络中,昂贵的pointwise卷积导致了有限的通道数量来满足复杂度约束,这可能会严重损害精确性. 一种直观的解决方案是在1 x 1的卷积层采用channel sparse连接,比如group convolution. 采用channel shuffle来解决group convolution的副作用, 操作如下: 假定一个卷积层有g个groups,它的输出有g * n个通道;我是首先把输出通道维数reshape成(g, n), 转置然后将其展平, 作为下一层的输入, 如下图所示.
Channel shuffle使构建更强有力的具有多个group convolutional层的称为可能.
-
ShuffleNet Unit
它是一种带有bottlenect的残差结构, 1 * 1的卷积被 1 * 1 的group convolution代替, bottlenect由 depthwise convolution代替.
假设输入的size是 h * w * c, bottlenect的channels个数是m, 那么ResNet需要 h * w * (2 * c * m + 9 m^2), ShuffleNet需要 h * w * m * c / g + h * w * m * 9 + h * w * c * m / g = h * w * (2 * m * c / g + 9 * m), g是groups的个数
-
Network Architecture
ShuffleNet v2
目前,神经网络架构设计主要由间接指标计算复杂度(FLOPs)来指导. 然而直接度量(速度)还依赖于其它因素,比如memory access cost(MAC)和平台特效等. 因此,本论文工作提出在目标平台式评估直接指标,而不仅仅考虑FLOPs. 基于一系列对照试验,本论文工作为有效设计网络得到了几个实用指南. 因此,提出一个称为ShuffleNet v2的新架构.
论文中提到有效网络设计的四条指南
- 输入通道数和输出通道数相同最小化MAC(Equal channel width minimizes memory access cost(MAC))
- 过多的group卷积增加MAC(Excessive group convolution increases MAC)
- 网络碎片降低了并行度(Network fragmentation reduces degree of parallelism)
- 逐元素操作时不可忽视的(Element-wise operations are non-negligible),主要包括ReLU, AddTensor, AddBias, depthwise 卷积, 它们具有小的FLOPs,但是相对较大的MAC.
ShuffleNetv2的unit结构下图©, (d)所示.
- 在每一个unit开始,输入的c个特征通道被split成2个分支,分别具有 c - c’ 和 c’个通道.
- Following 第3条规则, 一个分支保持identity, 另一个分支包括三个卷积,具有相同的输入和输出通道数量, 满足第1条规则.
- 两个1 x 1的卷积不再是group-wise
- 卷积之后, 两个分支被concate, 所以通道数不变(following 第1条)
- 对于下采样的情况, 如下图(d)所示, channel split被移除了, 因此输出的通道数翻倍.
- 一般情况下, 设置 c’ = c / 2
ShuffleNetv2架构如下表所示:
ShuffleNetv2不仅高效,同时是精确的,主要包括两个原因. 第一个原因是,每一个building block的高效性使得可以有更多的特征通道和更大的网络容量. 第二个原因, 一半的特征通道直接穿过该block与下一个block相连,这可以看做是一种特征复用.