DenseNet——Densely Connected Convolutional Networks
1. 摘要
传统的 L 层神经网络只有 L 个连接,DenseNet 的结构则有 L(L+1)/2 个连接,每一层都和前面的所有层进行连接,所以称之为密集连接的网络。
针对每一层网络,其前面所有层的特征图被当作它的输入,这一层的输出则作为其后面所有层的输入。
DenseNet 有许多优点:消除了梯度消失问题、加强了特征传播、鼓励特征复用并且大大减少了参数的数量。
2. 介绍
随着卷积神经网络变得越来越深,一个新的问题出现了:输入信息或者梯度在很多层之间传递的过程中会渐渐消失并且被洗掉。很多最近的工作都在尝试解决这个问题,它们都有一个共同的特点:在前面的层和后面的层之间创建捷径,也就是跳跃连接。
在本文中,作者则将这种认识提炼成一种简单的连接模式:为了保证网络中层与层之间最大的信息流动,我们直接把特征图大小匹配的所有层直接相连。

如上图所示,每一层都获取其前面所有层的特征图作为输入,并且将自己的特征图作为随后所有层的输入。但是,不同于 ResNet,作者是将特征按照通道拼接在一起而不是通过相加的操作。
这种密集连接模式的一个反直觉效果可能是它需要比传统卷积网络更少的参数,因为不需要重新学习冗余特征映射。传统的网络结构可以看作是一个具有状态的算法,每一层都读取它前面层的状态并且向下一层写入一个新的状态。改变状态的同时也需要传递一些需要保留的信息。ResNet 通过相加的恒等映射来保留信息,但是一些研究表明很多层贡献非常小甚至可以被随机丢弃掉。但是,DenseNet 的结构明确区分了要添加到网络的信息和保留的信息,因此它的网络非常窄(例如,每层 12 个卷积核),只为网络的“集体知识”添加一小组特征图,并保持其余的特征图不变,而最终的分类器则根据网络中的所有特征图来决策。
除此之外,DenseNet 的一大优势是它改善了整个网络中信息和梯度的流动,使其易于训练。每一层网络都可以直接访问到原始的输入信号,以及来自于损失函数的梯度,这有助于更深的网络架构的训练。而且,密集的连接也具有正则化的效果,这减小了在较小数据集上任务的过拟合风险。
相较于之前的设计通过特别深或者特别宽的结构来获取表示能力,DenseNet 则通过特征复用来开发网络的潜力,从而产生了易于训练和高参数效率的压缩模型。将不同层学习到的特征图拼接在一起增加了后续层输入的变化并提高了效率。
3. 网络结构
- Dense connectivity
第 L 层网络接受其前面所有层网络的特征图作为输入,

为了便与实现,作者将多个输入直接拼接成一个张量。
- Composite function
H 则是一个包含连续三个操作的复合函数:BN,ReLU,以及一个 3×3 的卷积。
- Pooling layers
特征图大小不一致时我们就无法进行对它们进行拼接了,但是卷积神经网络中必要的下采样层一定会改变特征图大小。因此,作者将网络划分为几个密集连接块,块与块之间的层称之为过渡层,来进行卷积和池化。作者实验中的过渡层采用的是 BN、1×1 的卷积以及 2×2 的平均池化。

- Growth rate
在一个 Dense 块内,如果每一层网络产生 k 个特征图,那么经过 L-1 层网络后,输入的特征图就会增加 k*(L-1) 个,作者将超参数 k 称之为网络的增长率。DenseNet 与现有网络结构的一个不同就是它的网络层可以非常窄,作者发现一个相对比较小的增长率就足以取得最好的结果。
- Bottleneck layers
在 3×3 的卷积前面引入 1×1 的卷积可以减少特征图的数量,因此提升计算效率。作者将这种引入了瓶颈结构的模型称之为 DenseNet-B,它们的结构是这样的:BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3),其中,1×1 的卷积输出 4*k 个特征图。
- Compression
为了进一步提升模型的紧凑性,在过渡层也可以对特征图数量进行减少。如果一个 Dense 块有 m 个特征图,我们让紧随其后的过渡层产生 am 个特征图。0<a<= 1,a=1 时,特征图适量保持不变。a<1 时的模型称之为 DenseNet-C。如果瓶颈层和过渡层的 a 都小于 1,这时的模型称之为 DenseNet-BC。
- Implementation Details

4. 实验结果
4.1. CIFAR and SVHN 分类

在没有压缩和瓶颈层的情况下,DenseNets 随着网络层数和增长率的增加表现逐渐变好,作者将此归结为网络容量增加的结果。
我们的 250 层模型只有 15.3M 个参数,但却比 FractalNet 和 Wide ResNets 这些拥有超过 30M 参数的模型表现要好。
4.2. ImageNet 分类

DenseNet 在更少的参数量下取得了比 ResNet 更好的效果,而且这是在超参数针对 ResNet 最优的情况下测试的,也就是说,DenseNet 仍然还有进步空间。
5. 讨论
- Model compactness

DenseNet-BC 要达到和 ResNet 一样的效果,只需要其三分之一的参数量即可。
- Implicit Deep Supervision
对 DenseNet 准确率提升的一种解释可能是各个层都通过跳跃连接接受到来自损失函数的额外监督,这可以理解为 DenseNet 执行了一种“深度监督”。
- Feature Reuse

其中,(l, s) 位置的颜色代表 l 层利用 s 层的特征图的程度,越接近红色,说明利用越强。可以发现:
- 所有层都将权重分布在同一 Dense 块内的许多输入上,这表明由非常早的层提取的特征实际上可以直接被深层使用。
- 过渡层也将权重分布在前面 Dense 块内的所有层上,这表明在 DenseNet 中信息大都可以直接从第一层流到最后一层。
- 第二三个 Dense 块对上一个过渡层的输入分配了最少的权重,说明过渡层有大量冗余特征,这也就是 DenseNet-BC 中采取压缩的好处。
- 分类层的权重更集中于最后一层的特征,说明这里可能有更多高层次的特征。
获取更多精彩,请关注「seniusen」!

DenseNet——Densely Connected Convolutional Networks的更多相关文章
- Deep Learning 33:读论文“Densely Connected Convolutional Networks”-------DenseNet 简单理解
一.读前说明 1.论文"Densely Connected Convolutional Networks"是现在为止效果最好的CNN架构,比Resnet还好,有必要学习一下它为什么 ...
- Densely Connected Convolutional Networks 论文阅读
毕设终于告一段落,传统方法的视觉做得我整个人都很奔溃,终于结束,可以看些搁置很久的一些论文了,嘤嘤嘤 Densely Connected Convolutional Networks 其实很早就出来了 ...
- 深度学习论文翻译解析(十五):Densely Connected Convolutional Networks
论文标题:Densely Connected Convolutional Networks 论文作者:Gao Huang Zhuang Liu Laurens van der Maaten Kili ...
- 【Network Architecture】Densely Connected Convolutional Networks 论文解析
目录 0. Paper link 1. Overview 2. DenseNet Architecture 2.1 Analogy to ResNet 2.2 Composite function 2 ...
- Paper | Densely Connected Convolutional Networks
目录 黄高老师190919在北航的报告听后感 故事背景 网络结构 Dense block DenseNet 过渡层 成长率 瓶颈层 细节 实验 发表在2017 CVPR. 摘要 Recent work ...
- Densely Connected Convolutional Networks(緊密相連卷積網絡)
- Dense blocks where each layer is connected to every other layer in feedforward fashion(緊密塊是指每一個層與每 ...
- 【文献阅读】Densely Connected Convolutional Networks-best paper-CVPR-2017
Densely Connected Convolutional Networks,CVPR-2017-best paper之一(共两篇,另外一篇是apple关于GAN的paper),早在去年八月 De ...
- (转)ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks
ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks by KO ...
- VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition
Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...
随机推荐
- python-文件基本操作(一) (转载)
转载自: https://www.cnblogs.com/nizhihong/p/6528439.html 一.打开文件的方法: 注意:file()和open()基本相同,且最后要用close()关闭 ...
- js 操作字典
有时候我们进行ajax请求的时候,列表并不满足我们需求,有时候需要 key :value形式. 如果还按照python的定义: var data={}; data[tag_id][tag_ch_id] ...
- U盘安装咱中国人自己的操作系统UbuntuKylin14.04LST(超具体原创图文教程)
本文仅供參考,在准备级安装过程中出现的一切意外情况均与本文作者无关!原创教程转载请注明原转载地!系统简单介绍:UbuntuKylin 是Ubuntu官方认可的衍生版,其宗旨是创建一个Ubuntu的中文 ...
- oracle错误分析:ora-04063:view view_test has errors
百度了一下,有一个大佬是这样说的: 在PL/SQL中查询数据库视图时总是报告“ora-04063:view view_test has errors”的错误: Oracle视图非常强大的功能之一在于其 ...
- 【Hive一】Hive安装及配置
Hive安装及配置 下载hive安装包 此处以hive-0.13.1-cdh5.3.6版本的为例,包名为:hive-0.13.1-cdh5.3.6.tar.gz 解压Hive到安装目录 $ tar - ...
- 自学tensorflow——2.使用tensorflow计算线性回归模型
废话不多说,直接开始 1.首先,导入所需的模块: import numpy as np import os import tensorflow as tf 关闭tensorflow输出的一大堆硬件信息 ...
- python3爬虫-通过selenium获取到dj商品
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.c ...
- C语言学习记录_2019.02.12
"学计算机一定要有一个非常强大的心理状态,计算机不是黑魔法,都是人想出来的,别人能够想的出来,那么,总有一天,我也能够想的出来." 指针类型的变量就是保存地址的变量. int* p ...
- Java面向对象六大原则
引用自百度知道: ——根据首字母快速记忆SOLID(固体,坚固的),具体请参考这里 1) Open-Close Principle(OCP),开-闭原则, 讲的是设计要对扩展有好的支持,而对修改要严格 ...
- windows 8 中 使用 httpclient
基本技术点 windows 8 中 使用 httpclient 代替 windows phone 中的 httpwebclient , 使用方法 也有些不同 . 下面是windows 8种使用 htt ...