前言:
前两篇对一些经典模型和轻量化模型关于结构设计方面的一些创新进行了总结,在本文将对前面的一些结构设计的原则,作用进行总结。
本文将介绍两种提升模型的表示能力的结构或方式,模型的五条设计原则,轻量化模型的四个设计方式。
提升模型的表示能力的结构或方式
1.“split-transform-merge”结构
这个概念来源于ResNeXt(2017年),在文中作了如下解释。
1) Split:将向量x分成低维嵌入表示;
2) Transform:每个低维特征经过一个线性变换;
3) Merge:通过单位加合成最后的输出;
Inception系列就是采用了这种策略的一个结构,在Inception模块中,Split采用的是1x1降维的方式,Transform采用卷积,Merge采用Concate的方式。通过 ”split-transform-merge”这种策略,使得模型可以以较少的参数和计算量,实现更深更大模型才具备的特征表示能力。
在ResNeXt中提到,基数(cardinality,也就是分支数)增多是一种比加深加宽网络更有效的方式提升精度。基于这一点,在PELEE网络中,就将DenseNet中的结构从单路变成双路的方式来改进模型。
2. 特征复用(feature reuse)
传统的卷积网络在一个前向过程中每层只有一个连接,ResNet增加了残差连接从而增加了信息从一层到下一层的流动。FractalNets重复组合几个有不同卷积块数量的并行层序列,增加名义上的深度,却保持着网络前向传播短的路径。相类似的操作还有Stochastic depth和Highway Networks,DenseNet等。
这些模型都显示一个共有的特征,缩短前面层与后面层的路径,其主要的目的都是为了增加不同层之间的信息流动,使用的方式就是特征复用。
特征复用的实现方式有以下几种:残差连接;feature maps留下一半进入下一层;feature maps通过不同的卷积核数量的并行层序列。
残差连接:采用直接相加的方式。
feature maps留下一半进入下一层:CSPNet。
feature maps通过不同的卷积核数量的并行层序列:FractalNets。
模型的设计原则
在Inception系列的第三篇论文里总结了四条CNN设计的四条原则。
1. 避免表示瓶颈,特别是在网络的浅层。
一个前向网络每层表示的尺寸应该是从输入到输出逐渐变小的。以下图为例,按照左边第一种的方式进行下采样,将会出现表示瓶颈。为了避免这个问题,提出了第四个