论文笔记:Densely Connected Convolutional Networks(DenseNet模型详解)

DenseNet是一种创新的卷积神经网络结构,通过密集连接层解决了梯度消失问题,提高了特征复用效率。相较于传统网络,DenseNet在多个图像识别基准上取得了优秀表现,同时大幅减少了参数数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CVPR 2017上,清华大学的Zhuang Liu、康奈尔大学的Gao Huang和Kilian Q.Weinberger,以及Facebook研究员Laurens van der Maaten 所作论文Densely Connected Convolutional Networks当选 ,与苹果的首篇公开论文Learning From Simulated and Unsupervised Images through Adversarial Training共同获得了2017 CVPR 最佳论文。下面我们就来看看DenseNet是何方神圣吧。


摘要

最近的研究表明,当靠近输入的层和靠近输出的层之间的连接越短,卷积神经网络就可以做得更深,精度更高且可以更加有效的训练。本文根据这一结论,提出了一种稠密卷积神经网络(Dense Convolutional Network,DenseNet),这种结构将每一层与之前所有层相连接。传统的L层卷积神经网络有L个连接——位于每一层和其后一层之间—,而我们的神经网络有L(L+1)2L(L+1)2个直接链接。对于每一层,其输入的特征是之前所有的层,而它自己的特征图作为之后所有层的输入。DenseNet有以下几个引人注目的优点:缓解梯度消失问题,加强特征传播,鼓励特征复用,极大的减少了参数量。我们在四个极具竞争力的物体识别标准图像库(CIFAR-10,CIFAR-100, SVHN, and ImageNet)对我们所提出的结构进行测试。结果表面DenseNet在大多数的测试图像库中都获得了最好的效果,然而它只需要很少的计算两来达到很高的性能。代码参见https://github.com/liuzhuang13/DenseNet

DenseNet与ResNet对比

作者主要受ResNet和Highway NetWorks的启发,通过与之后的某一层进行直接连接来传递信息,下面我们直观的从结构来看ResNet和DenseNet的差异。 
假设一个单张的图片x0x0输入一个有L层的卷积网络,每层的激励函数为Hl()Hl(⋅)Hl()Hl(⋅)可以是BN、ReLU、Pooling、Conv等操作的集合。假设x1x1为第l层的输出。


mark 
最原始的前馈卷积神经网络,将第l层的输出作为第l+1层的输入,所以第l层的输出为:Xl=Hl(xl1)Xl=Hl(xl−1)


mark 
ResNet除了本层与下一层的连接之外,还增加了一个skip-connection,即将l层和l-1层的输出共同作为l+1层的输入,即,第l层的激活值不仅仅影响l+1层,而且还影响l+2层。所以第l层的输出为:Xl=Hl(xl1)+xl1Xl=Hl(xl−1)+xl−1


mark 
DenseNet则是让l层的输入直接影响到之后的所有层,它的输出为:xl=Hl([X0,X1,,xl1])xl=Hl([X0,X1,…,xl−1])。并且由于每一层都包含之前所有层的输出信息,因此其只需要很少的特征图就够了,这也是为什么DneseNet的参数量较其他模型大大减少的原因。


DenseNet结构详解

DenseNet的整体结构包含稠密块(Dense Block)和过渡层(transition layers),可以简单来可以看作是Dense Block-transition layers-Dense Block-transition layers··· 
如下图: 
mark 
要将结构分为Dense Block和transition layers的原因是,transition layer中包含的Poling层会改变特征图的大小,而Dense Block内部必须保证特征图的大小一致,否则这种层之间的连接方式就不可行了。 
下面就来看看Dense Block内部结构吧。 
mark 
上图是一个包含五层,层宽度(Growth rate)为k=4的Dense Block,层与层之间的激励函数(即Hl()Hl(⋅))为BN-ReLU-Conv(3x3)的结构。这个Growth rate实际上就是每一层特征图的数量,这样第l层就有k0+k×(l1)k0+k×(l−1)个特征图了。 
为了进一步减少参数辆,作者又作了以下改进: 
* 将Hl()Hl(⋅)该为BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)的结构,记为DenseNet-B 
* 为了进一步减少参数量,在DenseNet-B的基础上,对过渡层的特征图进行压缩,产生θm⌊θm⌋个特征图,其中0<θ10<θ≤1,为压缩因子。

下面放上一张DenseNet与现有模型实验对比图: 
duibi 
前面是深度和参数量,后面是在各图像库中测试的错误率,蓝色表明结果最优。可以看到相比于其他模型DenseNet有更少的参数且出错率更低。

缺点

DneseNet在训练时十分消耗内存,这是由于算法实现不优带来的。当前的深度学习框架对 DenseNet 的密集连接没有很好的支持,所以只能借助于反复的拼接(Concatenation)操作,将之前层的输出与当前层的输出拼接在一起,然后传给下一层。对于大多数框架(如Torch和TensorFlow),每次拼接操作都会开辟新的内存来保存拼接后的特征。这样就导致一个 L 层的网络,要消耗相当于 L(L+1)/2 层网络的内存(第 l 层的输出在内存里被存了 (L-l+1) 份)。为此作者又写了一个技术报告(Memory-Efficient Implementation of DenseNets)专门针对这一问题,介绍如何提升对内存的使用率,同时提供的Torch, PyTorch, MxNet 以及 Caffe 的实现,代码参见:

Torch implementation:https://github.com/liuzhuang13/DenseNet/tree/master/models 
PyTorch implementation:https://github.com/gpleiss/efficient_densenet_pytorch 
MxNet implementation:https://github.com/taineleau/efficient_densenet_mxnet 
Caffe implementation:https://github.com/Tongcheng/DN_CaffeScript


论文只是粗略的看了,如果还有内容会继续补充。


参考资料: 
1. CVPR 2017最佳论文作者解读:DenseNet 的“what”、“why”和“how”|CVPR 2017 
2. Huang G, Liu Z, Weinberger K Q, et al. Densely connected convolutional networks[J]. arXiv preprint arXiv:1608.06993, 2016. 
3. 如何评价Densely Connected Convolutional Networks?

  • 插入代码
  •      

DenseNet算法详解

  • u014380165
  • u014380165
  • 2017-07-15 08:24:15
  • 23202
论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:...

DenseNet模型

  • u012938704
  • u012938704
  • 2016-12-05 18:55:27
  • 28975
《Densely Connected Convolutional Networks》阅读笔记 代码地址:https://github.com/liuzhuang13/DenseNet 首先看一张图...

JAVA?:使用 - 优快云博客

Java基础复习第一天 1.计算机的五大组成部分:运算器,控制器,存储器,输入设备,输出设备2.DOS命令使用 打开DOS控制台的方式 win7:Window+R输入cmd win8/10:搜索cm...
  • 2018-4-12

Java中&、|、&&、||详解 - 优快云博客

1、 Java中&叫做按位与,&&叫做短路与,它们的区别是: & 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符...
  • 2018-3-26

DenseNet 简介

  • Bryan__
  • Bryan__
  • 2017-08-17 19:00:11
  • 4809
1.首先对深度学习做一个简单的回顾 2.介绍DenseNet 1.1 DNN回顾 如下图所示是一个基本DNN结构,通过forward传播和backword传播来训练一个模型 包含input层,...

Java之道 - 优快云博客

Java之道 Love live, Love  java! 我的消息 我的博客 我的学院 我的下载 我的收藏 消息 只看原创 按照时间检索: 搜索条件: 点击返回全部 置顶 《 Java...
  • 2018-4-24

java基本概念 - 优快云博客

1.  Java 语言的优点? 简单、高效  Java 语言与 C++ 类似,如果用户了解 C++ 和面向对象的概念,就可以很快编写出  Java 程序;此外, Java 又不同于诸如 C++ 语言...
  • 2018-3-23

DenseNet:更接近于真实神经网络的跨层连接

  • linolzhang
  • linolzhang
  • 2017-08-16 22:11:08
  • 3090
一. 提出背景       论文:Densely Connected Convolutional Networks 【点击下载】       Caffe代码:【Github】       受 High...

深度学习总结(lecture 10)DenseNet

  • malele4th
  • malele4th
  • 2018-03-03 11:18:53
  • 122
lecture 10:DenseNet 目录 lecture 10:DenseNet 目录 1、DenseNet网络结构 2、稠密连接、优点 3、DenseNet-BC 代码 4、一些...

Java历史简介 - 优快云博客

Java是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。1991 年Sun公司的James Gosling等人开始开发名称为 Oak...
  • 2018-4-21
undefined

densenet代码

  • 2018年04月14日 22:28
  • 156KB
  • 下载

我读DenseNet

  • xuanwu_yan
  • xuanwu_yan
  • 2017-07-12 23:54:25
  • 2365
背景之前听说过DenseNet,再次被提起是因为七月初上交大主办的SSIST 2017,Yann Lecun的一页PPT,将其地位放置到如此之高,查了一下是CVPR 2017的一篇Oral,于是下定决...

ResNet && DenseNet(原理篇)

  • Gavin__Zhou
  • Gavin__Zhou
  • 2016-12-03 16:29:45
  • 21056
这篇博客讲现在很流行的两种网络模型,ResNet和DenseNet,其实可以把DenseNet看做是ResNet的特例 文章地址: [1]Deep Residual Learning for Im...

CVPR2017 DenseNet, Refiner

  • sylar49
  • sylar49
  • 2017-07-23 15:22:46
  • 821
师兄给我安利了CVPR2017的两篇最佳论文,就瞄了两眼;发觉最佳论文真的是简单易懂,特别是DenseNet感觉看图就可以了= = 越发觉越厉害的东西表述起来越简单,,ԾㅂԾ,, 首先是Dense...

系统学习深度学习(二十)--ResNet,DenseNet,以及残差家族

转自:http://blog.youkuaiyun.com/cv_family_z/article/details/50328175CVPR2016 https://github.com/KaimingHe/de...
  • App_12062011
  • App_12062011
  • 2017-03-15 13:19:15
  • 11023

DenseNet学习笔记

  • yaoliangsjtu
  • yaoliangsjtu
  • 2017-09-05 10:59:38
  • 949
ResNet: 模型的深度加深,学习能力增强,因此更深的模型不应当产生比它更浅的模型更高的错误率。而这个“退化”问题产生的原因归结于优化难题,当模型变复杂时,SGD的优化变得更加困难,导致了模型...

DenseNet的使用

  • mdjxy63
  • mdjxy63
  • 2017-07-30 19:02:54
  • 1419
去年提出的DenseNet获得今年CVPR2017最佳论文 在github上已经发布了代码,在此贴一下链接:https://github.com/liuzhuang13/DenseNetCaffe ...

在跑DenseNet代码的时候遇到的问题

  • mdjxy63
  • mdjxy63
  • 2017-08-05 16:24:05
  • 2255
去年新出来一个DenseNet,据说效果很好,在下载好caffemodel+deploy.prototxt之后,运行predict.py出现了如下的错误 Question:https://git...

DenseNet

  • shuzfan
  • shuzfan
  • 2017-09-22 19:44:22
  • 1671
2017CVPR Best Paper: 《Densely Connected Convolutional Networks》Github项目主页: https://github.com/liuzhu...

DenseNet-2.0.zip 17年冠军模型

  • 2017年12月14日 17:26
  • 7.61MB
  • 下载

DenseNet详细解读

  • csdnldp
  • csdnldp
  • 2017-10-26 19:11:12
  • 300
这篇文章是Densely Connected Convolutional Networks的解读,在精简部分内容的同时补充了相关的概念。如有错误,敬请指正。...

极深网络(ResNet/DenseNet): Skip Connection为何有效及其它

Residual Network通过引入Skip Connection到CNN网络结构中,使得网络深度达到了千层的规模,并且其对于CNN的性能有明显的提升,但是为何这个新结构会发生作用?这个问题其实是...
  • malefactor
  • malefactor
  • 2017-03-28 16:06:39
  • 11540

DenseNet阅读总结PPT

  • 2018年01月02日 21:35
  • 420KB
  • 下载

CVPR 2017最佳论文解读:密集连接卷积网络DenseNet

CVPR 2017最佳论文解读:密集连接卷积网络
  • zchang81
  • zchang81
  • 2017-07-26 17:49:29
  • 3512
  • 个人资料
等级: 
1级,点击查看等级说明
访问量:  1331
积分:  18
排名:  222万+
  • 文章搜索
  • 文章分类
  • 文章存档
2017年9月  (1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值