AlexNet
深度学习崛起的开端。
引入dropout,用于减轻过拟合。
将激活函数换成ReLU。
使用group convolution在两个GPU上训练,为后续的CNN网络带来启发。
提出了LRN,可以理解为一种对比度归一化,一种正则化方法,可以提升网络泛化能力。
使用了重叠的max-pooling。
NIN
提出了全局平局池化(global average pooling),用于替代全连接层,没有需要学习的参数,避免了全连接层带来的过拟合和不可解释问题。
VGG
重复堆叠3x3 conv和 2x2 max-pooling构成的模块,这种模块堆叠的思想成为了构建CNN架构的重要思想。
两个3x3 conv串联在一起具有的感受野与一个5x5 conv的感受野一样。
三个3x3 conv串联在一起具有的感受野与一个7x7 conv的感受野一样。
使用3x3卷积堆叠的好处:
- 增加更多的非线性激活层
- 减少参数量
1x1卷积增加非线性
1x1 conv可以看作是线性变换(全连接层)
GoogleNet(Inception)家族
GoogleNet
受到NIN网络的启发。
Inception模块: 1x1 conv, 3x3 conv, 5x5 conv
1x1 conv作用: 降维减少计算量,有助于不同特征层的空间信息交互。
Inception V2
内部协方差偏移(internal covariate shift): 每层输入的分布会发生变化,原因是之前层的参数发生了变化。
危害:会降低训练速度,因为需要更低的学习率和小心的参数初始化。
提出了Batch Normalization,好处:
- 减少内部协方差偏移
- 允许更高的学习率,训练速度更快
- 不再需要小心翼翼初始化参数
- 充当一种正则化,减少dropout的使用
- 使网络可以使用具有饱和性的非线性激活函数
原理:
对于mini-batch,
均值,
方差,
进行归一化:
引入两个超参数,使输出具有任意均值和方差:$ y_i= γ\hat{x_i} + β$
Inception V3
提出nxn的卷积可以分解成1xn卷积与nx1卷积的串联。
Inception V4
验证了残差连接可以加速Inception网络的训练。
验证了带残差连接的Inception网络的性能超过不带残差连接的Inception网络。
Xception
使用了深度可分离卷积,使用了残差连接。
它和Inception V3具有差不多的参数,由于模型参数的利用效率更高,使得它比Inception V3表现更好。
ResNet
退化问题: 随着网络深度的增加,精度达到饱和并且会迅速退化。退化并不是由过拟合引起的,给一个合适深度的网络增加更多层时,训练误差会增加。
通过引入深度残差学习框架,解决了退化问题。
通道数先压缩再膨胀
DPN
双路径网络
通过揭露ResNet和DenseNet在高阶RNN框架中的等价性,作者发现ResNet允许特征再利用,而DenseNet可以挖掘新的特征,这两个特点对学习好的特征表示都很重要。
作者实现了DPN模块,共享特征,同时保留两者的优点。
DenseNet
问题:输入信息(梯度信息)经过许多层之后,在它到达网络末尾(开端),它会消失和“洗净”。
解决方法:用前馈的方式连接每一层与所有其他层。
优势:
- 减轻梯度消失问题
- 强化特征传播
- 鼓励特征再利用
- 实质地减少参数数量(反直觉)
Dense block由Batch Normalization、ReLU、3x3 Conv构成。
ResNeXt
在ResNet的残差模块的基础上进行改进,将单条路径改成多条具有相同拓扑结构的路径(可以用group convolution实现多条路径)。
ResNeXt在ImageNet分类数据集上超越了ResNet-101/152,ResNet-200, Inception-v3和Inception-ResNet-v2。特别地,一个101层的ResNeXt可以比ResNet-200实现更高的精度,但只有后者50%的复杂度。它在ILSVRC 2016分类任务中,赢得第二名。
SqueezeNet
提出了Fire模块,由squeeze convolution layer (1x1 conv) 和 紧接其后的expand layer(由1x1conv和3x3conv按一定比例组成)按一定比例组成。
MobileNet系列
一种轻量级CNN。
bottleneck layer: 1x1 conv
MobileNet V1
MobileNets是基于流线型的架构,它使用深度可分离卷积构建轻量级的深度神经网络。引入了两个简单的全局超参数,可以高效平衡计算代价和精度。
网络共28层,1.0 MobileNet-224的精度与GoogleNet和VGG16想当,参数量为4.2M。
MobileNet V2
主要贡献提出了一种新颖的模块:the inverted residual with linear bottleneck。拓扑结构类似残差模块,但是细节部分与它相反,它先膨胀到高维度,然后进行轻量级的depthwise convolution,随后用一个线性卷积(不带非线性激活的卷积)将特征映射到低维表示。
与MobileNet V1相比,在深度可分离卷积之前加入了1x1卷积,在第二个1x1卷积之后未使用ReLU。
倒残差连接: 作者通过实验验证了瓶颈的跳跃连接比膨胀层的跳跃连接更好,但是RegNet的作者发现并没有提升性能。
MobileNet V3
NAS搜索
MobileNetV3 = MobileNetV2 + SE block
提出了HardSigmoid和HardSwish
ShuffleNet系列
一种轻量级CNN。
ShuffleNet V1
一种轻量级CNN。
可以看做是对ResNet的残差模块的改进。将3x3 Conv换成3x3 DWConv,将1x1 Conv换成1x1 Pointwise Group Conv,为了使Pointwise Group Conv的跨组信息能流动,在第一个Group Conv之后加入了一个Channel Shuffle,第二个1x1 Pointwise Group Conv的作用是恢复通道维度使得能够和旁路的通道维度相匹配。
ShuffleNet V2
使用直接的指标,比如速度、内存访问代价、平台特性,来指导神经网络结构设计,而不是只考虑间接的指标FLOPs。原因有两个:(1)FLOPs忽略了一些重要因素:比如内存访问代价(MAC);(2)并行化的程度。
相同FLOPs的操作可能有不同的运行时间,这取决于平台。
设计高效网络结构的原则:(1)使用直接指标(比如速度),而不是FLOPs。(2)应该在目标平台上评估指标。
网络设计指导:
(1)固定总的FLOPs,相同的输入输出通道数可以最小化内存访问代价(MAC)
(2)过度的group conv会增加MAC
(3)网络碎片会降低并行计算的程度
(4)按元素的操作是不可忽略的。(按元素相加可考虑换成concat)
子图©进行了Channel Split,保持通道数不变。
子图(d)进行了空间下采样(尺寸减半);由于未进行Channel Split,通道数翻倍。
NASNet
先在CIFAR-10数据库上搜索最佳卷积层(cell),然后通过堆叠这些cell的副本,将这些cell应用到ImageNet数据库,每个cell都有自己的参数,这样设计出的CNN架构叫做NASNet架构。也引入了一个新的正则化技术,叫做ScheduledDropPath,它可以显著提高NASBet模型的泛化能力。
SENet
引入soft attention,给每个通道加权,使特征图的每个通道具有不同的重要性。
Res2Net
在残差模块中加入多尺度
SKNet
原理:视觉神经元的感受野会根据刺激来调整大小。作者根据这个提出了SK unit,带有不同卷积核尺寸的多分支的单元。
提出了SK conv
将ResNext的多分支思想与soft attention相结合,并使用了多尺度的思想。
EfficientNet
NAS搜索
RegNet
NAS搜索
- 对于depthwise conv, Swish比ReLU表现更好,但是潜在的原因不是很清楚。
ResNeSt
与SKNet的做法有点相近,多分支与soft attention相结合