CNN结构演变总结(一)经典模型

简介: 在本文将对这些经典模型的结构设计演变做一个总结,旨在让读者了解一些结构的设计原理,产生效果的原因。在面对一个具体任务时能够准确地选择一个合理的特征提取网络,而不是随便选择一个。在自主设计网络时,也能根据总结的原则和经验设计出合理的结构,避免随心设计。

自2012年AlexNet在ImageNet比赛上获得冠军,卷积神经网络逐渐取代传统算法成为了处理计算机视觉任务的核心。


   在这几年,研究人员从提升特征提取能力,改进回传梯度更新效果,缩短训练时间,可视化内部结构,减少网络参数量,模型轻量化, 自动设计网络结构等这些方面,对卷积神经网络的结构有了较大的改进,逐渐研究出了AlexNet、ZFNet、VGG、NIN、GoogLeNet和Inception系列、ResNet、WRN和DenseNet等一系列经典模型,MobileNet系列、ShuffleNet系列、SqueezeNet和Xception等轻量化模型。


   在本文将对这些经典模型的结构设计演变做一个总结,旨在让读者了解一些结构的设计原理,产生效果的原因。在面对一个具体任务时能够准确地选择一个合理的特征提取网络,而不是随便选择一个。在自主设计网络时,也能根据总结的原则和经验设计出合理的结构,避免随心设计。


CNN结构演变总结

在这个系列将按照以下三个部分对CNN结构演变进行总结。


一、经典模型,对AlexNet、VGG、NIN、GoogLeNet和Inception系列、ResNet、WRN和DenseNet这些模型的结构设计部分进行总结。


二、轻量化模型,对MobileNet系列、ShuffleNet系列、SqueezeNet和Xception等轻量化模型总结介绍轻量化的原理,设计原则。


三、对前面经典模型、轻量化模型中一些经典设计进行总结。如1x1卷积的作用、两种池化的应用场合、降低过拟合的方法、归一化方法、卷积层大小尺寸的设计原则和卷积核的作用等。

 


注:本系列没有对自动化结构网络设计的模型进行总结,主要原因是模型是由算法根据具体任务自主设计而来,并非人工设计,因此并不知道其设计原理,对其总结的意义不大。


这些模型的详细解读,包括实验,实际效果,完整结构,大部分都可在公众号CV技术指南的模型解读部分看到,少数模型的解读将在后续更新。相关模型的原论文以及所有模型解读的总结pdf,可关注公众号 CV技术指南 回复“CNN模型”获取。

 

LeNet


第一个卷积神经网络出现在1989年,这个网络没有名字,对读者来说这个结构没什么新颖的,但其作为第一个卷积神经网络,值得致敬。其结构由卷积层和全连接层组成,激活函数使用tanh函数,损失函数使用的是均方误差MSE,使用了反向传播算法和随机梯度下降。值得一提的是,在这篇论文中还出现了权重共享和特征图像的概念。


LeNet是同作者LeCun在另一篇论文中提出的,用于手写数字识别。其结构图如下:

1432790-20210227122203770-1535593896.png

AlexNet(2012)


AlexNet是第一个深度神经网络,结构图如下:

1432790-20210227122304667-20723194.png

其创新之处有五处:


1. 使用ReLU作为激活函数。


2. 提出在全连接层使用Dropout避免过拟合。注:当BN提出后,Dropout就被BN替代了。


3. 由于GPU显存太小,使用了两个GPU,做法是在通道上分组。这算不上创新,之所以在这里写上这一点,是因为它是ShuffleNet_v1使用分组卷积想法的来源。关于ShuffleNet_v1在公众号CV技术指南的模型解读中有详细解读。


4. 使用局部响应归一化(Local Response Normalization --LRN),在生物中存在侧抑制现象,即被激活的神经元会抑制周围的神经元。在这里的目的是让局部响应值大的变得相对更大,并抑制其它响应值相对比较小的卷积核。例如,某特征在这一个卷积核中响应值比较大,则在其它相邻卷积核中响应值会被抑制,这样一来卷积核之间的相关性会变小。LRN结合ReLU,使得模型提高了一点多个百分点。


注:LRN后自Batch-Normalization出现后就再也没用过了,我印象中只有FstCN 2015年(使用分解时空卷积的行为识别)中用了一次,因此读者对这个可以不用去了解。


5. 使用重叠池化。作者认为使用重叠池化会提升特征的丰富性,且相对来说会更难过拟合。注:使用重叠池化会出现棋盘格效应。


NiN(2014)

1432790-20210227122330865-741814594.png

创新之处有二:


1. 使用MLPconv,后来在其它模型中就演变成了1x1卷积。


2. 提出全局平均池化代替全连接层。


这样做的好处有以下几点:


1. 相比于使用全连接层,参数量极大地减少,相对来说没那么容易过拟合。


2. 使得feature map直接映射到类别信息,这样更符合卷积网络的结构。


3. 全局平均池化综合了空间所有的信息,使得对输入的空间转换更鲁棒。


也有一个缺点:必须固定输入大小。

 

VGG(2014)

1432790-20210227122359277-1173152273.png

创新之处有二:


1. 使用了多个小尺寸的卷积核堆叠来代替一个大的卷积核,这样参数更少,而感受野却是一样的。全部使用了3X3的尺寸,池化都是2x2,步长都为2。


2. 去掉了LRN。作者发现它效果不明显。


GoogLeNet(2014)


GoogLeNet也称为Inception_V1, 其后续还有三个改进版,合称Inception系列,对这个系列的解读在模型解读部分有详细解读,这里只介绍新颖之处。


创新之处有二:


1. 提出Inception Module。大家发现网络越深越宽的效果越好,然而这样会带来以下几个问题:


1) 参数量,计算量越来越大,在有限内存和算力的设备上,其应用也就越难以落地。


2) 对于一些数据集较少的场景,太大的模型反而容易过拟合,但模型太小则泛化能力不够。


3) 容易出现梯度消失的问题。


解决这些问题比较直观的方法就是采用稀疏连接来代替全连接层,但很明显,由于底层是通过矩阵计算的,稀疏连接在参数量上减少了,但并没有减少计算量。因此设计了如下第一个图的结构。

1432790-20210227122443597-740596288.png


 1432790-20210227122454997-1427476260.png

 

使用上面这个结构又会出现一个问题,由于使用了在通道上拼接的方式,导致通道数很大,因此使用NiN中1x1卷积的方式降低通道数。最终决定使用如第二个图所示的结构

 

2. 使用了辅助分类函数,如下图所示,有3个softmax输出位置,有两个是在中间位置,这样方便在中间层输出分类,同时通过加权(中间0.3)的方式加到最终的分类结果中。作者认为这样能给模型增加反向传播的梯度信号,缓解了梯度消失问题,在一定程度上也有正则化的效果。在推理阶段,这两个softmax将会去除。


注:后面的InceptionV2-V3论文中会发现这玩意没用,但读者可以在自己的方向上尝试一下,也许会有用呢。


完整的结构图如下:


1432790-20210227122534924-1941366557.png

Inception_v2和Inception_v3


这两者是出现在同一篇论文中,作者提出了很多改进技术,使用了其中一部分的称为V2, 全部都使用的是V3。


创新之处有四:


1. 提出分解卷积。如将5x5卷积核分解为1x5和5x1的非对称卷积堆叠。


1432790-20210227122558290-848030792.png

最终还衍生出了下面这种混合式的模块。(个人感觉没必要这么干,意义不大)

1432790-20210227122612938-740603471.png

2. 使用了批归一化Batch-Normalization (BN), 关于BN,完整的介绍出现在另一篇论文中,公众号CV技术指南中也有对其完整的解读,感兴趣的读者可在模型解读中的《Inception系列之Inception_v2》中看到。注:当BN提出后,Dropout就被BN替代了。


3. 提出一种高效降低特征图大小的方法。


 在降低特征图尺寸时,若按下图这两种方式设计,第一种会出现瓶颈,违背模型设计原则。(关于这些设计原则将会总结在《CNN结构演变总结》的第三篇中),第二种方式则参数量巨大。

1432790-20210227122627783-1240149201.png


1432790-20210227122637752-1563280418.png

4. 提出标签平滑化。如果模型在训练过程中学习使得全部概率值给ground truth标签,或者使得最大的Logit输出值与其他的值差别尽可能地大,直观来说就是模型预测的时候更自信,这样将会出现过拟合,不能保证泛化能力。因此标签平滑化很有必要。


平滑化的方式是使得标签值小于1,而其它值大于0,如5个类,使得标签值为{0.05,0.05,0.8,0.05,0.05}。具体是由狄拉克函数函数实现的。感兴趣的可看该论文的解读。


完整的结构如下:

1432790-20210227122658372-1411727706.png

Inception_v4, Inception_ResNet_v1和v2


在Inception系列的第四篇论文里,提出了三种结构,这三种结构没什么创新点,作者在论文中也没有介绍为什么这么设计。


如果一定要说有创新点的话,主要就是在上面Inception_v2-v3的基础上,第一种Inception_v4在Inception模块上改了一些参数,提出了几个不同参数的Inception block,与v2和v3没有本质上的改变。第二第三种结构在Inception模块中加入了残差连接,同样是没有本质上的改变,且比较少见有用这三种作为特征提取网络的,因此这里不多介绍。感兴趣的看该论文的解读,里面有完整的结构。

 

ResNet(2015)


一般而言,网络越深越宽会有更好的特征提取能力,但当网络达到一定层数后,随着层数的增加反而导致准确率下降,网络收敛速度更慢。


针对这个问题,ResNet的创新之处有二:


1. 提出shortcut connection, 右边直接连接的部分称为identity mapping。该方法灵感来源于Highway Networks。

1432790-20210227122733378-789401780.png

注:刚开始认为残差连接可以缓解梯度消失问题,但在后续的论文中经过实验证明它似乎并不能。


2. 提出瓶颈模块( bottleneck block )。这个瓶颈模块在MobileNet v2中有所应用并调整。

1432790-20210227122748717-189491596.png

使用瓶颈模块构建出了ResNet34, ResNet50, ResNet101, ResNet152等深层神经网络。


 

 

WRN(2017)



使用identity mapping的残差块使我们可以训练一个非常深的网络,但与此同时,残差块也是残差网络的一个缺点。当梯度流通过整个网络时,网络不会强迫梯度流过权重层(这会导致训练中学习不到什么)。所以很有可能少量的块能够学习有用的表达,或者很多的块分享非常少的信息,对最终结果影响很小。


创新之处有二:


1. 提出加宽残差块的方式,这种方式可以更加高效地提高残差网络性能,而不是增加网络深度,使用这种方式构建了wider residual networks (WRN)。


2. 提出在残差块中使用Dropout。前人的研究中,dropout被插入到了残差网络中的identity连接上,这导致性能下降。而WRN提出dropout插入到卷积层之间的方式使性能有所提升。

1432790-20210227122828849-1466502968.png

DenseNet(2018)


传统的卷积网络在一个前向过程中每层只有一个连接,ResNet增加了残差连接从而增加了信息从一层到下一层的流动。FractalNets重复组合几个有不同卷积块数量的并行层序列,增加名义上的深度,却保持着网络前向传播短的路径。相类似的操作还有Stochastic depth和Highway Networks等。

 

这些模型都显示一个共有的特征,缩短前面层与后面层的路径,其主要的目的都是为了增加不同层之间的信息流动。


基于信息流动的方式,DenseNet创新之处有一:


1. 传统L层的网络仅有L个连接,在DenseNet中使用了L(L+1)/2个连接。这样做有几个明显的优点:避免了梯度消失问题,加强了特征传播,实现特征复用(feature reuse),以及实质上减少了参数量。


1432790-20210227122854332-1916750780.png

使用这个密集连接构建了Dense Block

1432790-20210227122904785-549334558.png

总结:本文对比较经典的一些模型在结构上的创新之处进行了总结,让读者对目前特征提取网络有一个比较全面的了解,通过对创新之处的总结概括,相信读者对于CNN这种特征提取网络的作用机制有了清晰的认识。

相关文章
|
6天前
|
机器学习/深度学习 人工智能 编解码
【AI系统】轻量级CNN模型新进展
本文继续探讨CNN模型的小型化,涵盖ESPNet、FBNet、EfficientNet和GhostNet系列。ESPNet系列通过高效空间金字塔卷积减少运算量;FBNet系列采用基于NAS的轻量化网络设计;EfficientNet系列通过复合缩放方法平衡网络深度、宽度和分辨率;GhostNet系列则通过Ghost模块生成更多特征图,减少计算成本。各系列均旨在提升模型效率和性能,适用于移动和边缘设备。
25 6
|
6天前
|
机器学习/深度学习 存储 人工智能
【AI系统】轻量级CNN模型综述
本文介绍了几种常见的小型化CNN模型,包括SqueezeNet、ShuffleNet、MobileNet等系列。这些模型通过减少参数量和计算量,实现在有限资源下高效运行,适用于存储和算力受限的场景。文章详细解释了各模型的核心技术和优化策略,如Fire Module、Channel Shuffle、Depthwise Separable Convolutions等,旨在帮助读者理解和应用这些高效的小型化CNN模型。
15 3
|
2月前
|
机器学习/深度学习 编解码 算法
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
44 0
|
3月前
|
机器学习/深度学习
ACM MM24:复旦提出首个基于扩散模型的视频非限制性对抗攻击框架,主流CNN和ViT架构都防不住它
【9月更文挑战第23天】复旦大学研究团队提出了ReToMe-VA,一种基于扩散模型的视频非限制性对抗攻击框架,通过时间步长对抗性潜在优化(TALO)与递归令牌合并(ReToMe)策略,实现了高转移性且难以察觉的对抗性视频生成。TALO优化去噪步骤扰动,提升空间难以察觉性及计算效率;ReToMe则确保时间一致性,增强帧间交互。实验表明,ReToMe-VA在攻击转移性上超越现有方法,但面临计算成本高、实时应用受限及隐私安全等挑战。[论文链接](http://arxiv.org/abs/2408.05479)
82 3
|
4月前
|
机器学习/深度学习
CNN模型验证和CNN模型保存
【8月更文挑战第10天】CNN模型验证和CNN模型保存。
68 27
|
4月前
|
机器学习/深度学习
加载CNN保存模型
【8月更文挑战第10天】加载CNN保存模型。
46 12
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
163 9
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。
【7月更文挑战第2天】计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。AlexNet开启新时代,后续模型不断优化,推动对象检测、语义分割、图像生成等领域发展。尽管面临数据隐私、模型解释性等挑战,深度学习已广泛应用于安防、医疗、零售和农业,预示着更智能、高效的未来,同时也强调了技术创新、伦理考量的重要性。
68 1
|
5月前
|
机器学习/深度学习 数据采集 算法
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
124 0

热门文章

最新文章