论文精读:DenseNet:Densely Connected Convolutional Networks

1.核心思想

        最近的研究表明,如果在卷积网络的输入与输出之间添加短连接(shorter connections),那么可以使得网络变得更深、更准,并且可以更有效的训练。本文,我们围绕短连接思想,提出密集卷积网络(DenseNet):前向传播中,每一层都与其前面的所有层连接。传统的L层卷积网络有L个连接(每层都有一个连接),而我们的网络有L(L+1)/2个连接。对于网络的每一层,前面所有层的网络都作为该层的输入,那么本身的特征图作为后续所有层的输入。

2.优势

DenseNet具有几个明显的优势:缓解梯度消失问题,加强特征传播,特征重利用,极大地减少了参数量。

3.主要内容

3.1 Introduction

随着CNN不断的加深,新的问题出现:当输入和梯度在层间流动的时候,可能在到达网络的最后之前(或者一开始)就会消失。最近的很多工作都在解决这个问题。 他们有个共同的特点:都在层与层之间创建了短连接。

        本文作者提出一种网络结构,它将short path细化为一种简单的连接模式:保证层间信息流动的最大化,我们将所有的层与其它层连接(但得保证具有相同大小的特征图)。为了保留前向传播的特性,每一层将前面的层作为输入,并且将其自己的特征图传递到后面的层。图1给出了这种设计模式。更为关键的是,与ResNet对比,其它层传入该层的方式并不是求和的方式,相反我们将前几层的特征进行连接(concatenating)。因此,第L层具有l个输入(前面所有层的连接组合)。它本身的特征图传递到所有后面的L-l层。所以,L层的网络具有L(L+1)/2个连接,而不是像传统网络具有L个连接。由于其特有的连接模式,称之为Dense Convolutional Network(DenseNet)。

DenseNet这种密集连接的方式,虽然直觉上可能参数很多,但是事实却比传统网络参数更少,因为不需要重新学习多余的特征图信息。传统的前向结构可以看作一个状态(state),它们在层之间传递。每一层都会读取前面网络层的状态,并传递给下一层。转态改变的同时,也会保存传递的信息。ResNet通过额外的恒等连接保存传递的信息。最近,ResNet的变体表明:很多层对于网络的贡献很少,并且可以被随机的丢弃。这使得ResNet的状态类似于RNN,但是ResNet的参数很多(由于每一层都有自己的权重)。我们提出的DenseNet网络使得要加到网络的信息和要保存的信息是有差别的。DenseNet的网络结构是很窄的(例如每一层有12个卷积核),仅仅将少部分的特征图添加到信息收集器(collective knowledge),保持其它的信息不变,最终分类器根据所有的网络特征图进行分类预测。

除了更少的参数量,DenseNet的另一个优势:改善了网络之间信息和梯度的流动,使得网络更容易训练。每一层都可以直接与损失函数传回的梯度有联系以及原始的输入信息,形成了隐含的深度监督。这有助于提升网络训练。更进一步,我们观察到,密集连接具有正则化的作用,在小的数据集上具有缓解过拟合的作用。

3.2 Related Work

        resnet等通过提升网络的深度使网络更优,GoogLeNet网络等通过提升网络的宽度使网络更优。

        不同于提升网络的深度和宽度,DenseNet通过特征的重用来提高网络的潜力,得到浓缩的模型(容易训练并且很高的参数效率)。将不同层学习的特征图连接,提高了每一层输入的变化以及效率。这是ResNet和DenseNet最大的区别。与Inception网络相比,也是将不同的特征组合,但是DenseNet更简单,更有效。 

3.3 . DenseNets

        考虑输入到卷积网络的单张图x_{0},网络包含L层,每一层包含一个非线性变换H_{l}(*),l 表示层。H_{l}(*)包含基本的操作:BN,Pooling,ReLU以及Conv。第 l 层的输出是x_{l}

        ResNets:传统的卷积网络的前向传播中,第 l 层的输出是第(l+1)的输入,形式:。ResNet添加了边路的恒等映射变换:

 

        ResNet的优势是可以使得梯度可以通过恒等映射函数传递到网络前几层。但是,恒等映射函数通过相加的方式与H_{l}(*)结合,这可能阻碍信息在网络中流动。

         Dense Connetivity: 为了进一步提高信息在网络之间的流动,我们提出了一种不同的连接模式:我们将任何一层都与后续的每一层进行连接。图1给出了一个模块的结构。因此,l^{th}层接受前面所有层的特征图,x_{0},.....,x_{l-1},作为输入:

x_{l}=H([x_{0},.....,x_{l-1}])

这里,x_{0},.....,x_{l-1}是第0,...,l-1层产生的特征图。由于其密集连接,我们称之为DenseNet,我们将多个输入连接为一个tensor。

Composite Function: 受[12]启发,我们将H_{l}(*)定义为包含三个连续操作的复合函数:BN+ReLU+Conv(3x3)。 

 Pooling Layers:当特征图的大小改变时,方程(2)中的连接操作不可执行。但是,卷积网络的一个核心操作(pooling)可以改变特征图的尺寸。为了使用下采样,我们将网络分为多个dense blocks,见图2。我们将相邻层之间称为转换层(transition layers),执行卷积核池化操作。转换层结构:BN+1x1Conv+2x2AveragePooling

 

Growth Rate: 如果每一个H_{l}产生k个特征图,那么下一层的输入具有k_{0}+k*(l-1)个特征图,是输入层特征图数量。ResNet与DenseNet的重要差别:DenseNet网络非常的窄,比如k=12(那么Dense Block每一层产生k个特征图)。我们称k为增长率。Section4表明,一个小的k值就能获得较好的网络性能。DenseNet的一种解释:dense block每一层都可以获取前面所有特征图,并放入网络的"collective knowledge"。我们可以将特征图视为网络的全局状态。每一层添加k个特征图到这个状态。增长率k决定了每一层有多少新信息贡献到这种全局状态。全局状态(global state)一旦确定,网络的任何一部分都可以获取,然而,传统网络没有具备这种重用的特性。

Bottleneck Layers:尽管每一层仅仅产生k个特征图,但是每一层有很多的输入。[37, 11]表明1x1卷积可以作为瓶颈层(bottleneck layer),降低输入特征图的数量(放在3x3卷积前),这样可以提高计算效率。我们发现这种结构对于DenseNet依然有效,我们在网络中添加这样的一层:H_{l},BN-ReLU-1x1Conv-BN-ReLU-3x3Conv,称为DenseNet-B。在我们的实验中,我们让1x1Conv产生4k特征图。

Compression:为了进一步压缩模型,我们可以降低转换层(transition layers)的特征图数量。如果一个Dense Block包含m个特征图,我们让转换层(transtiate layer)产生\theta m,0<\theta <1个特征图,。如果\theta=1,特征图数量不变。若\theta<1,称为DenseNet-C,论文实验中,。当bottleneck和transition layers同时使用,并且,那么称为DenseNet-BC。

Implementation Details:除了ImageNet数据集,其它所有数据集上,使用三个dense block,每一个具有相同的层。在流入第一个dense block的时候,添加一层卷积,输出通道为16(或者DenseNet-BC模块,大小为2k)。卷积核的大小为3x3,每一边进行零填充一个像素。两个dense block之间使用1x1conv+2x2average pooling。在最后的dense block后,添加全局平均池化和softmax 分类器。三个dense block特征图大小分别为32x32,16x16,8x8。我们使用基本的DenseNet结构,配置如下:{L=40,k=12},{L=100,k=12}以及{L=100,k=24}。对于DenseNet-BC,配置如下:{L=100, k=12},{L=250,k=24}以及{L=190,k=40}。

         在ImageNet数据集上,使用4个DenseNet-BC,输入图像大小为224x224,第一层卷积包含2k个7x7卷积,滑动为2;其它层的卷积核数量根据 k 的大小而定。准确的配置如表1:

3.4. Experiments  

        作者在几个数据集上对比了实验结果,尤其是与ResNet的对比

Training
优化器:SGD

CIFAR、SVHN:batch size 64,分别训练300, 40epoch,学习率:初始0.1,在训练到50%和75%epoch,除以10,除了第一层卷积,其它卷积后面都添加dropout,大小为0.2;

ImageNet:训练90epoch,batch size:256,学习率:0.1,在30和60epoch,除以10;

之后,使用动量优化(0.9)和Nesterov加速梯度

5.Discussion

表面上,DenseNet与ResNets非常相似,方程(2)和方程(1)最大的差别是输入是concatenated,而不是求和。但是,也正是这一点的差别,导致两种结构有着本质的区别。

Model Compactness:输入concatenation的直接的结果是:任何层学习到的特征图都可以被后续的其它层使用。这使得特征可以再次利用(贯穿整个网络),模型变得更加紧凑。

Desenet只要0.8M的参数就能达到参数量为10.2M的ResNet的效果

Implicit Deep Supervision. 稠密网络能够很好的训练,并且取得不错的效果,一个解释:通过短连接,损失函数可以监督每一层的训练。可以认为DenseNet呈现一种隐含的深度监督。深度监督的概念首次呈现在DSN网络中,它将分类器连接到每一个隐藏层,强迫中间层学习具有判别性的特征。

DenseNet以一种隐含的方式执行了类似的深度监督:分类器位于网络的顶端,通过转换层(transition layers),分类器可以监督所有的层。但是,DenseNet的损失函数和梯度复杂度都很低,同一个损失函数被所有层共享。

Stochastic vs. Deterministic Connection. 稠密网络和随机深度正则化的残差网络有一个有趣的联系。在随机深度中,残差网络中的层被随机丢弃,周围的层进行直接的连接。由于池化层不会被丢弃,该网络与DenseNet有着类似的连接模式:两个相同的池化层可能被连接。尽管两种方法最终是不一样的,但是DenseNet给出了相应的正则化解释。

Feature Reuse. 通过设计,DenseNet的层可以获得前面所有层的特征(尽管有时候通过转换层,Transition Layer)。我们设计了一个实验:一个训练好的网络可以重复利用特征的。我们首先在C10+上训练DenseNet,L=40,k=12。对于dense block内的每一层 l,计算平均权重(与层s连接的部分)。图5给出了所有的dense block的热量图。平均权重表示每一层对前面层的依赖程度。(l,s)位置中的红色点表示层l对前面层的使用程度非常高。从图5中可以得到如下结论:

  • 所有的层会将权重传播到同一个dense block内的所有层,进行使用。这足以表明:早期提取的特征可以被同一个dense block内所有层直接使用;
  • 转化层的权重也会传播到前面dense block内部的每一层,表明,transition layers使用前面层的特征;
  • 第2-3个Denseblock中的层对之前Transition layer利用率很低(block2和block3的第一层都是蓝色),说明transition layer输出大量冗余特征.。这也为DenseNet-BC模块提供了证据支持,即:Compression的必要性;
  • 最后的分类层虽然使用了之前dense block中的多层信息,但更偏向于使用最后几个feature map的特征,说明在网络的最后几层,某些high-level的特征可能被学习到;

3.6. Conclusion

        作者提出密集卷积网络(DenseNet)。它引入了具有相同特征图大小的任意两个层之间的直接连接。同时证明了densenet自然扩展到数百层,而没有优化困难 随着参数数量的增加,dense网络倾向于产生持续的精度提高,而没有任何性能下降或过拟合的迹象。在多个设置下,它在几个高度竞争的数据集上取得了最先进的结果。此外,dennet需要更少的参数和更少的计算来实现最先进的性能。由于我们在研究中采用了针对残余网络优化的超参数设置,作者认为通过更详细地调整超参数和学习速率计划,可以进一步提高网络的准确性。

        同时遵循一个简单的连接规则,densenet自然地集成了身份映射、深度监督和多样化深度的属性。它们允许在整个网络中重用特征,因此可以学习更紧凑,根据我们的实验,更精确的模型。由于其紧凑的内部表示和减少的特征冗余,DenseNets可能是各种基于卷积特征的计算机视觉任务的良好特征提取器,例如,[4,5]。作者计划在未来的工作中用网络来研究这种特征转移。

 

 

       

 

 

 

 

 

 

 

 

 


 

 

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱花的浪漫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值