4

DenseNet-论文简记

 3 years ago
source link: http://lanbing510.info/2018/01/04/DenseNet.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

DenseNet-论文简记

2018年01月04日




本篇主要介绍CVPR 2017最佳论文:《Densely Connected Convolutional Networks》,主要整理自参考文献[1-3]。

随着网络结构的加深,梯度与信息消失现象也就越明显。为了解决这一问题,人们设计出ResNet,Highway Network,FractalNets等。这些网络结构都有一个共同的特点:在每一层与之后的层之间建立捷径来缓解梯度消失这种现象。但是这样也会带来一些问题:巨量的网络参数,网络结构的利用率不高(一些层被有选择地Drop掉了)。鉴于此,DenseNet作者提出了这种新的网络结构,利用当前层与后面层的连结(Concatenate)使得每一层的信息得到充分的利用,缓解了梯度消失的同时,极大地减少了参数。


一、让网络中的每一层都直接与其前面层相连,实现特征的重复利用;

二、同时把网络的每一层设计得特别「窄」,即只学习非常少的特征图(最极端情况就是每一层只学习一个特征图),达到降低冗余性的目的。


一、网络整体结构图表

网络整体结构图示如下。其中第一幅图是一个5层的Dense Block示意图,生长率(Grow Rate)k=4;第二幅图是含有是三个Dense Blocks的DenseNet示意图;第三个表展示了ImageNet上DenseNet的结构,表中素有网络的生长率都为k=32,每一个Conv层都对应着BN-ReLU-Conv。

densenet1.png

densenet2.png

densenet3.png

二、结构中的一些概念细节

1 紧密连接(Dense Connectivity)

在DenseNet结构中,讲每一层的输出都导入后面的所有层,与ResNet的相加不同的是,DenseNet结构使用的是连结结构(Concatenate)。这样的结构可以减少网络参数,避免ResNet中可能出现的缺点(例如某些层被选择性丢弃,信息阻塞等)。

2 组成函数(Composite Function)

使用Batch Normalization + ReLU + 3*3 Conv层作为组成函数。

3 过渡层(Transition Layer)

过渡层包含瓶颈层(Bottleneck layer,即1*1卷积层)和池化层。

1)瓶颈层

1*1的卷积层用于压缩参数。每一层输出k个Feature Maps,理论上将每个Dense Block输出为4k个Feature Maps,然而实际情况中会大于这个数字。卷积层的作用是将一个Dense Block的参数压缩到4k个。

2)池化层

由于采用了Dense Connectivity结构,直接在各个层之间加入池化层是不可行的,因此采用的是Dense Block组合的方式,在各个Dense Block之间加入卷积层和池化层。

4 增长率(Growth Rate)

这里的增长率代表的是每一层输出的Feature Maps的厚度。ResNet,GoogleNet等网络结构中经常能见到输出厚度为上百个,其目的主要是为了提取不同的特征。但是由于DenseNet中每一层都能直接为后面网络所用,所以k被限制在一个很小的数值。

5 压缩(Compression)

跟1*1卷积层作用类似,压缩参数。作者选择压缩率(theta)为0.5。包含Bottleneck Layer的叫DenseNet-B,包含压缩层的叫DenseNet-C,两者都包含的叫DenseNet-BC。


DenseNet.py

另:作者公开的源码和训练的模型在这里,整理了PyTorch,Caffe,Tensorflow,Keras,MXNet等各种深度学习开源平台下的实现。


[1] DenseNet, Densely Connected Convolutional Networks.

[2] CVPR 2017最佳论文作者解读:DenseNet 的“What”、“Why”和“How”|CVPR 2017.

[3] Densely Connected Convolutional Networks论文阅读.

[4] Keras_Application中的DenseNet实现


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK