经典卷积神经网络总结:Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet等_夏洛的网的博客-CSDN博客_senet的改进
网络 | 时间 | 网络结构 | 缺点 | 优点 |
lenet5 | 1989 | conv,下采样层,sigmoid,fc | 1.超深的网络结构; 2.提出residual模块; 3.使用BN加速训练(丢弃dropout) | |
AlexNet | 随着层数的增加,优化退步 | |||
vgg | 2014 | vgg19:19层,conv+3个fc | ||
Inception | 2014-v1 | 1.使网络深度增加的同时使分类性能增加; 2.保持准确度不降低的情况下,降低模型的计算开销和内存开销 | ||
resnet | 2015 |
1.LetNet
1989年提出,是一种用于手写体字符识别的非常高效的卷积神经网络。它利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别。
网络结构
32*32-c1-28*28-s2-14*14-c3-10*10-s4-5*5-c5-1*1*120-fc-fc
输入尺寸:32*32。MNIST 数据集中的每张图片由 28 x 28 个像素点构成, 每个像素点用一个灰度值表示。32*32的图像大小比MNIST数据集的图片要大一些,这么做的原因是希望潜在的明显特征如笔画断点或角能够出现在最高层特征检测子感受野(receptive field)的中心。因此在训练整个网络之前,需要对28*28的图像加上paddings(即周围填充0)。
s2、s4:
采样区域:2*2
采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
LeNet-5使用的激活函数便是Sigmoid函数
c5:
卷积核大小:5*5
输出featureMap大小:1*1
在实际的试验中发现,随着卷积层和池化层的叠加,不但没有出现学习效果越来越好的情况,反而两种问题:
1.梯度消失和梯度爆炸(因为网络太深、不适合的激活函数造成的)
梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0
梯度爆炸:若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大2.退化问题
随着层数的增加,预测效果反而越来越差。如下图所示
2.Resnet
- 为了解决梯度消失或梯度爆炸问题,ResNet论文提出通过数据的预处理以及 BN层来解决。
- 为了解决深层网络中的退化问题,ResNet提出残差网络
假设X=5,H(x)=5.1
- 如果是非残差的结构,网络映射:F'(5)=5.1
- 如果是残差的结构,网络映射:F(5)=0.1
F'和F都是网络参数映射,引入残差后的映射对输出的变化更敏感。比如原来是从5.0到5.1,映射F'负责映射5.1,,而残差结构映射F负责映射0.1。明显后者输出变化对权重的调整作用更大,所以效果更好。
Resnet有两种残差块:
a:renet18/34,b:resnet50/101/152
resnet18:17个conv+1个fc
3.Inception
主要包含Inception V1、Inception V2、Inception V3、Inception V4、Inception-Resnet。
提出的目的:
1.使网络深度增加的同时使分类性能增加;
2.保持准确度不降低的情况下,降低模型的计算开销和内存开销
3.1Inception V1
(1)原理
使用不同尺寸的卷积核提取多尺寸特征,增加特征的多样性。
使用1*1的卷积减少卷积核的通道数,减少参数量,并且1*1卷积可以将信息汇聚起来。
四个支路的输出concat在一起,如果输出尺寸不同,将各结果中心对齐,补零之后串联。
(2)组成的网络-GoogleNet
GoogleNet由conv层、Inception v1模块、Relu、max pool、dropout(0.4)、avg pool(最后一个pool)、linear组成。
GoogleNet有三个输出:在中间的两个Inception模块后增加了辅助分类器输出,其损失乘以权重0.3加到了总损失中,这种设计可以增强反向传播的误差信号,同时带来一定的正则化效果。
3.2Inception V2
提出BN层
2个3*3卷积代替一个5*5卷积
1*n卷积+n*1卷积代替一个n*n卷积
Figure 5 表示将5x5卷积替代为两个3x3卷积的结构;Figure 6 表示将nxn卷积替代为1xn卷积和nx1卷积;Figure 7 的结构主要应用在高维特征上,文中为8x8的feature map。
任意nxn卷积均可由1xn和nx1卷积替代。但是作者发现这种替代方案在网络前几层的表现并不好,而在特征图尺寸在12-20之间有很好的效果。
3.3Inception V3
Inception v3整体上采用了Inception v2的网络结构,并在优化算法、正则化等方面做了改进:
1.优化算法使用RMSProp替代SGD;
2.使用Label Smoothing Regularization(LSR)方法;
3.将第一个7x7卷积层分解为两个3x3卷积层;
4.辅助分类器(auxiliary classifier)的全连接层也进行了batch-normalization操作
3.4Inception V4
3.5Inception-ResNet
两个Inception-ResNet结构:Inception-Resnet-v1和Inception-Resnet-v2
(1)Inception-Resnet-v1
(2)Inception-Resnet-v2
Inception-Resnet-v2网络结构同Inception-Resnet-v1,Stem模块同Inception v4
3.6xception
- Xception是google继Inception后提出的对Inception v3的另一种改进
- 作者认为,通道之间的相关性 与 空间相关性 最好要分开处理:采用separable convolution来替换原来Inception v3中的卷积操作。
separable convolution:先进行1*1卷积,然后对每个channel分别进行3*3卷积,最后将结果concat。
Depthwise Separable Convolution:第一步:Depthwise 卷积:对每个通道进行3*3卷积,并将结果concat;第二步:Pointwise 卷积,对 Depthwise 卷积中的 concat 结果进行1*1卷积操作。
Xception网络框架
Xception 的结构基于 ResNet,但是将其中的卷积层换成了Separable Convolution。如下图所示。整个网络被分为了三个部分:Entry,Middle和Exit。
4.Efficienet