文章目录
- CNN经典结构
-
- 前言
- Architecture
- Regularization
- Learning Rate Scheduler
- 经典网络结构
-
- 1. LeNet5
- 2.AlexNet
- 3.VGG
- 4.GoogleNet
- 5.ResNet
- 6.preresnet
- 7.resnext
- 8.densenet
- 9.SENet(Squeeze-and-Excitation Networks)
- 10. BAM: Bottleneck Attention Module
- 11.CBAM: Convolutional Block Attention Module
- 12.(genet) Gather-Excite: Exploiting Feature Context in Convolutional Neural Networks
- 13 (sknet) SKNet: Selective Kernel Networks
- 14 mobilenetV1
- 15 MoibileNetv2
- 16 MobileNetV3
CNN经典结构
前言
本文主要介绍2012-2019年的一些经典CNN结构,从Lenet,AlexNet,VGG,GoogleNet,ResNet, Resnext, Densenet, Senet, BAM, CBAM, genet, sknet, mobilenet。以下附上论文链接。另外,使用pytorch实现了大部分的模型,并在CIFAR数据集上进行测试,可在github链接中查看具体实现代码细节。如果对大家有帮助,欢迎给个star。?
Architecture
- (lenet)LeNet-5, convolutional neural networks
- (alexnet) ImageNet Classification with Deep Convolutional Neural Networks
- (vgg) Very Deep Convolutional Networks for Large-Scale Image Recognition
- (resnet) Deep Residual Learning for Image Recognition
- (preresnet) Identity Mappings in Deep Residual Networks
- (resnext) Aggregated Residual Transformations for Deep Neural Networks
- (densenet) Densely Connected Convolutional Networks
- (senet) Squeeze-and-Excitation Networks
- (bam) BAM: Bottleneck Attention Module
- (cbam) CBAM: Convolutional Block Attention Module
- (genet) Gather-Excite: Exploiting Feature Context in Convolutional Neural Networks
- (sknet) SKNet: Selective Kernel Networks
- (mobilenetV1)MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- (mobilenetV2)MobileNetV2: Inverted Residuals and Linear Bottlenecks
Regularization
- (shake-shake) Shake-Shake regularization
- (cutout) Improved Regularization of Convolutional Neural Networks with Cutout
- (mixup) mixup: Beyond Empirical Risk Minimization
Learning Rate Scheduler
- (cos_lr) SGDR: Stochastic Gradient Descent with Warm Restarts
- (htd_lr) Stochastic Gradient Descent with Hyperbolic-Tangent Decay on Classification
经典网络结构
1. LeNet5
LeNet5 诞生于 1994 年,LeNet做为CNN的经典网络结构,结构如下。
LeNet5特征能够总结为如下几点:
1)卷积神经网络使用三个层作为一个系列: 卷积,池化,非线性
2) 使用卷积提取空间特征
3)使用映射到空间均值下采样(subsample)
4)双曲线(tanh)或S型(sigmoid)形式的非线性
5)多层神经网络(MLP)作为最后的分类器
6)层与层之间的稀疏连接矩阵避免大的计算成本
2.AlexNet
网络结构
如下图所示,8层网络,参数大约有60 million,使用了relu函数,头两个全连接层使用了0.5的dropout。使用了LRN和重叠的池化,现在LRN都不用了,一般用BN作Normalization。当时使用了多GPU训练。
预处理
先down-sample成最短边为256的图像,然后剪出中间的256x256图像,再减均值做归一化(over training set)。 训练时,做数据增强,对每张图像,随机提取出227x227以及水平镜像版本的图像。除了数据增强,还使用了PCA对RGB像素降维的方式来缓和过拟合问题。
预测
对每张图像提取出5张(四个角落以及中间)以及水平镜像版本,总共10张,平均10个预测作为最终预测。
超参数
SGD,学习率0.01,batch size是128,momentum为0.9,weight decay为0.0005(论文有个权重更新公式),每当validation error不再下降时,学习率除以10。权重初始化用(0,0.01)的高斯分布,二四五卷积层和全连接层的bias初始化为1(给relu提供正值利于加速前期训练),其余bias初始化为0。
3.VGG
网络结构
如下图所示,VGG-16,16层,参数大约有138 million。实验发现LRN的加入没有提升反而更差,舍弃使用。实验发现1x1效果更差,于是没有使用,1x1卷积在Network in Network(颜水成)中提出推广,是很重要的思想,在GoogleNet和ResNet都有用到。
使用小卷积核3x3可以捕捉左右上下的信息,而且利于堆叠深度(保证参数不要过大)。步长为1。same卷积。
两个3x3卷积可以和5x5卷积达到一样的感受野。三个3x3卷积可以和7x7卷积达到一样的感受野。使用三个3x3的好处在于使用了3个非线性变换,同时后减小了参数.假设输入输出通道数一样,那么有
和AlexNet一样,头两个全连接层后面加0.5的dropout。
超参数
和AlexNet基本一致。batch size是256。初始化也是用(0,0.01)的高斯分布,只不过VGG先训练一个浅层的网络,然后把浅层网络的部分参数来初始化深层网络部分参数,其它参数还是用高斯分布。值得注意的是论文提交后VGG发现使用glorot的初始化方法可以不用预训练。
预处理
和AlexNet不同,在下采样的时候不是变成256,变成一个S,S有两种方法来设定。第一个方法是固定的S(single-scale),固定为256或384。为了加速384的网络,用256预训练的模型进行权重初始化。另外学习率调小为0.001。第二个方法从[256, 512]中随机采样S(multi-scale,注意这里的是multi-scale training,和overfeat中的multi-scale test含义不一样),这可以看成用尺寸抖动&#