当前位置: 首页 > news >正文

CNN经典模型之ALexNet、ResNet、DenseNet总结和比较

目录

ALexNet(2012

研究背景

思路和主要过程

网络模型

数据增强

主要贡献点

ResNet(2015

研究背景

思路和主要过程

Residual block(残差块)和shortcut connections(捷径连接)

bottleneck block-瓶颈模块

主要贡献点:

Denset(2017

研究背景

思路和主要过程

DenseBlock+Transitio结构

主要贡献和启发

总结与思考


ALexNet(2012

研究背景

本文提出利用一个深度卷积神经网络来进行图片分类,此深度卷积神经网络(AlexNet)参加了2012年9月30日举行的ImageNet大规模视觉识别挑战赛,达到最低的15.3%的Top-5错误率,比第二名低10.8个百分点(如图1所示)。

图二左侧图是八张ILSVRC-2010测试图像和我们的模型认为最可能的五个标签。正确的标签写在每张图片下面,分配给正确标签的概率也用红色条显示(如果恰好位于前5位)。右侧图像可以理解为识别出特征向量相似的图片归类在一起

思路和主要过程

网络模型

  • 网络结构被一分为二成上下两部分,在两个GPU上各自训练
  • 一共八层,前五层为卷积层,后三层为全连接层,最后跟的是1000路的分类激活函数softmax(来进行多元分类
    • 这里可以看到卷积层只有第三层在通道维度上做了一个融合,即前一层的上下两个GPU都作为此层的输入
    • 全连接层与前一层的所有神经元相连

这里可以看到我们输入的图片从一个227*227的图像变成了一个4096的语义向量,这是一个空间信息被压缩,语义信息慢慢增加的过程

数据增强

1.通过从256×256图像中随机提取224×224的图像,并在这些提取的图像上训练我们的网络来实现这一点。这将使我们的培训集的规模增加了2048倍。但是有个问题也不能说就是2048倍,因为很多图片都是相似的

2.采用PCA的方式对RGB图像的channel进行了一些改变,使图像发生了一些变化,从而扩大了数据集

主要贡献点

1.使用 ReLU 激活函数加速收敛

2.使用 GPU 并行,加速训练。也为之后的分组卷积(group convolution)理论奠定基础

3.提出局部响应归一化(Local Response Normalization, LRN)增加泛化特性(虽然被后人证明无效)

4.使用交叠池化

(Overlapping Pooling) 防止过拟合提出Dropout

5.数据增强等手段防止过拟合

ResNet(2015

研究背景

ResNet提出之前,所有的神经网络都通过卷积层和池化层的叠加组成。理论上人为,随着卷积层和池化层的层数增加时,神经网络能够获取到的图片特征信息越全,学习效果越好。但是在实际的实验中,效果却相反。造成此现象的原因有两个

  1. 梯度消失和梯度爆炸
    1. 梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0
    2. 梯度爆炸:若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大
  2. 退化问题
    1. 随着层数的增加,预测效果反而越来越差

为了有效的改善退化问题,何凯明等提出了ResNet模型,效果如下图所示,随着神经网络层数的增加,有效性并没有降低,且ResNet模型斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名;获得COCO数据集中目标检测第一名,图像分割第一名。

思路和主要过程

Residual block(残差块)和shortcut connections(捷径连接):

残差:

残差值F(x)=求解的映射值H(x)-估计值x

即由传统的求解每层的映射值,转换为了求映射值和估计值之间的插值,即残差值。

残差结构的优点?

1.残差结构朝着恒等映射的方向去收敛

在我们训练的一个深层的网络中,无法避免有些冗余的层(甚至是反作用的),我们期待的是,把这些层对网络的影响近似于无,对输入的结果不起变化,即这时候我们希望经过这些层的输入x和输出H(x)是近似的,即叫做恒等变换,这时候F(x)=0,这时候网络结构会随着identity mapping(恒等映射)的方向去收敛,一定程度上缓解了退化问题

2.引入残差后的映射对输出的变化更敏感

举个例子:

在引入残差之前,输入x = 6 要拟合的函数H ( x ) = 6.1

引入残差后,我们的学习目标是0.1的残差值F(x)

当接下来的层的函数值为H‘(x)=6.2的时候,相对于原来的方法,H(x)是从6.1变化到6.2,即增大1.6%,

但是对于ResNet来说,F(x)的值是由0.1变到0.2,增大到了100%

显然可见,在残差网络中输出的变化对权重的调整影响更大,也就是说反向传播的梯度值更大,训练更加容易。

shortcut connections捷径连接:

普通的卷积block与深度残差网络的最大区别在于

深度残差网络有很多旁路的支线将输入直接连到后面的层,使得后面的层可以直接学习残差,这些支路就叫shortcut

传统的卷积层或全连接层在信息传递时,或多或少会存在信息丢失、损耗等问题。ResNet 在某种程度上解决了这个问题,通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络则只需要学习输入、输出差别的那一部分,简化学习目标和难度。

bottleneck block-瓶颈模块:

这两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图),一般称整个结构为一个”building block“

”bottleneck design”,目的一目了然,就是为了降低参数的数目,第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的话就是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,差了16.94倍

主要贡献点:

既利用了深层次的神经网络又避免了梯度消散和退化的问题。

Resnet看起来很深但实际起作用的网络层数不是很深,大部分网络层都在防止模型退化,误差过大。而且残差不能完全解决梯度消失或者爆炸、网络退化的问题,只能是缓解

Denset(2017

研究背景

近期的研究表明,当当靠近输入的层和靠近输出的层之间的连接越短,卷积神经网络就可以做得更深,精度更高且可以更加有效的训练。Denset网络就是在此基础上提出来的层与层之间采用密集连接方式。

对于一个L层的网络来说,DenseNet一共包含L(L+1)/2个连接,相比于ResNet,这是一种密集连接

DenseNet是直接concat来自不同层的特征图,这可以实现特征重用,提升效率,这是DenseNet与ResNet最主要的区别

思路和主要过程

DenseBlock+Transitio结构

CNN网络一般要经过Pooling或者stride>1的Conv来降低特征图的大小

但是DenseNet的密集连接方式需要特征图大小保持一致,为了解决这个问题,DenseNet网络中使用DenseBlock+Transition的结构,其中DenseBlock是包含很多层的模块,每个层的特征图大小相同,层与层之间采用密集连接方式。而Transition模块是连接两个相邻的DenseBlock,并且通过Pooling使特征图大小降低。图4给出了DenseNet的网路结构,它共包含4个DenseBlock,各个DenseBlock之间通过Transition连接在一起

主要贡献和启发

DenseNet有以下几个引人注目的优点:缓解梯度消失问题,加强特征传播,鼓励特征复用,极大的减少了参数量。

1.与传统CNNs相比参数更少,因为其不需要学习冗余特征

2.改善了整个网络中的information flow和梯度,使得训练更为容易

3.密集连接具有正则化效果,能降低训练集size较小的任务的过拟合现象

总结与思考

ALexNet是现代深度CNN的奠基之作,也是第一个深度卷积神经网络。而ResNet模型是为了解决深层次的神经网络的退化问题而提出,而残差思想本身也在一定程度上简化了模型的学习目标,使得模型训练更容易。DenseNet网络则是在ResNet的基础上,提出来的层与层的密集连接思想,并且因为实现和加强了特征重用,一定程度上减少了参数数量

相关文章:

  • 什么是固话号码认证?固话号码认证有用吗?
  • select......for update会锁表还是锁行?
  • 【强化学习论文清单】AAAI-2022 | 人工智能CCF-A类会议(附链接)
  • Android11 framework Handler
  • Linux系统漏洞本地提权
  • 【笔试强训】Day1
  • 【项目实战:核酸检测平台】第二章 大卸八块
  • Android App开发实战项目之电子书架的实现(附源码 简单易懂 可直接使用)
  • 2021年全国研究生数学建模竞赛华为杯A题相关矩阵组的低复杂度计算和存储建模求解全过程文档及程序
  • 五、 通信协议
  • C++基础知识
  • 电视剧里的代码真能运行吗?
  • 【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 2 期 | 精品题解
  • VisualDrag低代码拖拽模板
  • 机器学习模型评价指标
  • wy的leetcode刷题记录_Day45
  • 第一章三层交换应用
  • 【二叉树的顺序结构:堆 堆排序 TopK]
  • Java语法之多态
  • 力扣(LeetCode)23. 合并K个升序链表(C++)