Densely Connected Convolutional Networks

摘要

作者提出了一种新的网络结构,传统的L层网络间有L个连接,作者提出的Densenet的L层网络间有L(L+1)/2个连接。对某一层,之前的所有层的特征图都被用做输入。Densenet有以下几个优点:缓解了梯度消失,加强了特征传播,实现了特征重用和充分减少了参数数目。

介绍和相关工作

随着神经网络的加深,输入信息经过多层网络常常出现梯度消失等问题。Resnet、Highway Networks、Stochastic depth and FractalNets解决梯度消失问题的共性是它们在前面网络层与后面层之间创造了短连接。在本文中,作者提出了一种将信息最大化向下一层传播的网络。


Densely Connected Convolutional Networks_第1张图片
Figure 1: A 5-layer dense block with a growth rate of k= 4.Each layer takes all preceding feature-maps as input

在整合特征时没有像Resnet那样将特征图与前面层的信息相加而是将两者拼接在了一起。违背直觉的是Densenet的参数数目变少了。除了减少参数外,该网络提升了信息的流动与梯度传播让网络变得更容易去训练,并且密集连接具有正则化的作用,缓解了过拟合。

DenseNets

考虑一幅图片X0输入一个卷积网络,该网络包含L层,每层有一个非线性传输函数H(l),H可以是一系列操作的组合,例如批正则化,RELU,池化或者卷积操作。


Densely Connected Convolutional Networks_第2张图片
ResNets

该网络在一个block后一层输入加上了该block的输入,使得梯度可以直接由后一层向前一个block最开始的层传播,但缺点是直接相加可能会妨碍网络中信息流动。

Dense connectivity

为了提升信息在层之间的流动,作者提出了如图结构,在每一个block里整合前一层特征图信息时,将其与更早的特征图进行拼接而不是相加。

Composite function

定义H(l)由BN、RELU和一个3x3的卷积构成。

Pooling layers

将整个网络划分为多个blocks,并在blocks之间进行卷积和池化。在该实验中,使用了一个BN和一个1x1的卷积层和一个2x2的平均池化层。

Growth rate

假设每一个H操作就会产生k个feature maps,那么当层数为l的时候就会有k*(l-1)+k0 (k0是input的通道数,RGB的话,就是3),如果k太大,会导致数据量特别大,而这个k又是卷积核的个数,所以也不能太大,太大了,网络的参数又太多。为了控制参数数目,作者引入超参数k,为增长率。


Densely Connected Convolutional Networks_第3张图片

一种解释是每一层所学到的都作为block中共享的知识,而每一层所学的对整体的贡献由k所决定。

Bottleneck layers

为了减少特征图从而减少计算量,采用在3x3卷积结构前加1x1卷积结构减少特征图数目。加入这种结构的blocks称为DenseNet-B。

Compression

为了让网络结构更加紧凑,本实验在blocks之间的过渡层增加了reduce率为0.5的操作,这时称这个模型为 DenseNet-BC。
之后就是实现细节了。

总结

通过实验证明了模型在一些数据集上表现达到领先水平,在达成相同准确率的情况下,DenseNet所需的参数和浮点操作数远小于ResNet。

点评

文章中对于输入信息流的处理比较特别,算是Resnet中对信息处理的想法的一种扩展,仅仅是这样的操作使模型表现或许有所提升,但参数数量也会增多,计算量变大。所以文章中一系列的减少参数的操作十分重要,并且难能可贵的是它仍然保证了模型的表现。

你可能感兴趣的:(Densely Connected Convolutional Networks)