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

news2024/11/29 10:57:04

目录

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的基础上,提出来的层与层的密集连接思想,并且因为实现和加强了特征重用,一定程度上减少了参数数量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql忘记密码怎么解决(几乎囊括你可能遇到的所有问题)

mysql忘记密码解决: 多次输入都错误,出现下面的提示 Access denied for user rootlocalhost (using password: YES)解决: 1.关闭mysql service mysqld stop2.mysql停止后输入 mysqld --shared-memory --skip-grant-tables3.重新打开一个…

利用Pinpoint搭建全链路监控系统

随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪,而通过调研多个开源APM工具后,最终我们选择了Pinpoint。 简介 Pinp…

PyQt5 QDialog对话框(QMessageBox,QInputDialog,QFontDialog,QFileDialog,QColorDialog)

PyQt5 QDialog对话框QDialog类图QDialogQMessageBoxQInputDialogQFontDialogQFileDialogQColorDialogQDialog类图 QDialog import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtCore import Qtclass MyDialogWindow…

数据结构之插入排序

插入排序 一种思想我们所在指向位是需要进行插入的数据 我们锁指向位置前的数据是被插入的数据组 我们根据与前面的数据元素一个个比较来确定插入位置的排序 比如现在的76比前面的97小,97进行一个右移,就是赋值给data[4](我这里猜测是76应该是…

QT 介绍

QT 介绍 Qt是一个跨平台的 C 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。且完全面向对…

项目实战——匹配系统(上)

ps:从这篇文章开始,整个项目最精华(困难)的部分就要来了,因此这里会把每一个步骤细分,并且说一下自己对于每个步骤的思考和理解(博主水平有限,错误在所难免,欢迎指出讨论…

MyBatis-Plus(第一篇开山篇)

MyBatis-Plus(第一篇开山篇) 目录MyBatis-Plus(第一篇开山篇)结论:使用mybatis plus步骤1.导包2.整合(修改spring-dao配置文件)3.使用3.1 javaBean3.2 mapper层3.3 service层3.3.1 service接口3.3.2 service实现类3.4 …

【MEF:深度感知增强(细节增强:色彩映增强)】

Multi-exposure image fusion via deep perceptual enhancement (基于深度感知增强的多曝光图像融合) 多曝光图像融合 (MEF) 是通过将具有不同曝光的多个镜头集成在一起来解决此问题的有效方法,这在本质上是一个增强问题。在融合过程中&…

IDEA最实用的设置

​ 目录 全局设置 全局设置 选择 Configure->settings进入设置界面 1.设置主题 2.设置编码区的字体及大小 3.设置控制台的字体及大小 4.修改编码方式 解决有时我们在导入项目时,代码中的中文注释变成乱码问题。 5.设置按住Ctrl鼠标滚轮改变字体大小 6.设置…

Java基础深化和提高 ---- 函数式编程 Lambda

Lambda表达式介绍 Lambda简介 Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内 部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作 中,可以极大地优化代码结构。 在Java语言中,可以为变量赋予一…

计算机网络-传输层(TCP可靠传输(校验,序号,确认,重传),TCP流量控制,TCP拥塞控制(慢开始,拥塞避免)(快重传,快恢复))

文章目录1. TCP可靠传输2. TCP流量控制3. TCP拥塞控制1. TCP可靠传输 网络层:提供尽最大努力交付,不可靠传输。 传输层:使用TCP实现可靠传输 可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。 TCP可…

redis 哨兵

哨兵可以帮助我们解决主从架构中的单点故障问题 哨兵的配置: 新建目录:usr/local/docker/redis/sen/ docker-compose.yml文件如下 version: "3.1" services:redis1:image: daocloud.io/library/redis:5.0.7restart: alwayscontainer_name: …

STL技巧大赏

STL技巧大赏 map insertinsertinsert 不允许有重复的键值的,如果新插入的键值与原有的键值重复则插入无效beginbeginbeginendendendclearclearclear 清除所有countcountcount 某个元素出现次数lower/upperboundlower/upper boundlower/upperbound set 比 mapmapm…

半导体新能源智能装备上位机工业软件设计方案

一、什么是上位机软件 如果说PLC是工业控制的小脑,那么上位机软件就是其大脑。在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,上位机往往是数字信号的处理和命令的下发,下位机往往是模拟量的处理和…

【Linux】初识系统调用进程状态

文章目录1. 什么是系统调用1.1 通过系统调用获取进程标示符通过其他方式查看PIDTopPS使用PID1.2 通过系统调用创建进程-fork初识2. 进程状态看看Linux内核源代码怎么定义查看状态Z(zombie)-僵尸进程僵尸进程危害孤儿进程1. 什么是系统调用 在linux中,系统调用是指操…

[附源码]java毕业设计校园志愿者服务管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Node_exporter主机探针部署

部署需求分析 使用ansible批量部署node-exporter监控客户端 node-exporter解压安装目录为home 添加至Linux服务重新加载,启动模块并设置开机启动 测试环境(centos 7——3.10.0-1160.el7.x86_64)运行成功 因为部署步骤较少,单个pla…

主从延迟读写不一致解决方案分析

具体业务场景方案分析 问题背景: 虽然强制走写库,避免了主从延迟带来的读库数据不一致问题,但是增加了写库的QPS,带来了巨大压力,所以通过限流来保护db,但这样会降低QPS。 业务上暂时不清楚,所…

[附源码]java毕业设计校园新闻管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

转铁蛋白修饰脂质体定制,Transferrin-Liposome

人转铁蛋白(Human Transferrin)主要在肝脏合成,是由位于同源N-端和C-端的两个叶片(Lobe)组成的一种单链糖蛋白。人转铁蛋白共含678个氨基酸残基,等电点为5.9、分子量为76kD。每分子的转铁蛋白能携带2个三价…