CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量。这些工作主要从卷积操作上作文章,在AlexNet,VGG,GoogLeNet等baseline网络的基础上做改进,现罗列如下:
- Group convolution 分组卷积
最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。
另外,后来的GoogLeNet,Resnext,Xception,MobileNet,ShuffleNet都用到了分组卷积的思想,它们在卷积的时候都采用同一个策略(split-transform-merge)。其中,GoogLeNet每个分组的卷积核不同,Resnext要求每个组的卷积核大小完全相同,以减少超参数个数,方便网络配置。Xception则是更极端的将每个Channel作为一个组,MobileNet是Xception网络的一个应用。ShuffleNet则是把group Convolution的思想扩展到了pointwise(1×1)卷积。
- Inception
除了Inception v1~v4系列论文外,SqueezeNet、Resnext都可以看作Inception思想的应用。它们综合了以下几个核心思想:- 多尺寸卷积核
在单一层中引入多尺寸卷积核可以使得学到的特征更强。 - 点卷积
通过1×1卷积可以先把特征的维度降下来,以减小计算量。 - 小卷积核取代大卷积
AlexNet中用到了一些非常大的卷积核,比如11×11、5×5卷积核,这会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。于是Inception v4网络中,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳,同时参数量被降低,因此后来3×3卷积核被广泛应用在各种模型中,如SqueezeNet。
- 多尺寸卷积核
- Xception
Xception是Inception的极致化形式,它将通道和空间区域分开考虑。这个工作其实是“Factorized Convolutional Neural Networks”工作中base(基)等于1的特例。
综上,标准卷积的演变方向如下:
- 卷积核:
- 大卷积核用多个小卷积核代替(Inception v3);
- 单一尺寸卷积核用多尺寸卷积核代替(GoogLeNet);
- 可变形卷积核(Deformable convolution);
- 使用1×1卷积核(GoogLeNet);
- 卷积层通道:
- 标准卷积用depthwise卷积代替(Xception);
- 使用分组卷积(Resnext);
- 点卷积分组(ShuffleNet);
- 通道加权计算(SENet);
- 卷积层连接:
- 使用skip connection(Resnet);
- 稠密连接,每一层都融合其它层的特征输出(DenseNet)
References:
http://www.weixinnu.com/article/59a4346c1c3e37b5540bb870
网友评论