densenet论文解析

简介

最近的工作表明,如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则可以更加深入,更准确,更有效地进行训练。
在本文中,我们接受上面的观点,并介绍了密集卷积网络(DenseNet),它以前馈的方式将每一层连接到其他层。
而传统卷积网络具有L层时其也具有L层的短连接 - 每层与其后续层之间都有连接 。但是当DenseNet网络为L层的时候,其具有L(L + 1)/2个直接连接。
对于每层,所有前面层的所有feature-maps 都是用作输入,其自己本层的feature-maps 用作所有后续层的输入。
其具有下面的优点
1,其可以缓解消失梯度问题,加强特征传播,鼓励特征重用,并大幅减少参数数量
DenseNets在大多数设备上获得了相对于最新技术的显着改进,同时需要较少的计算来实现高性能

1, 介绍

对于深层的卷积网络,当有关输入或梯度的信息通过许多层时,其在到达网络尾端时可能会出现时梯度消失或者被“清除”。
对于这个问题ResNets和Highway Networks 通过恒等连接将信息从一层传输到下一层。
对于这个问题后期人们还提出了
虽然这些不同的方法虽然在网络拓扑和训练过程中有所不同,但是它们都具有一个关键特征:它们创建了从早期层到后期层的短路径。即就是  **short connect**  
本文在上述 **short connect** 的观点基础 之上,提出了一种新的网络结构,
其为了**确保网络中各层之间的最大信息流,我们将所有层(每层的feature-maps必须匹配才可以相连接)直接相互连接**
为了保持前馈性质,每个层从所有前面的层获得附加输入,并将其自己的特征映射传递给所有后续层。
至关重要的是,与ResNets相比,在它们被传递到一个层之前我们从不通过求和组合功能;相反我们通过连接它们来组合功能。

2. 前人研究的相关工作

1,从Highway Networks 到resnet,其已经证明了short connect有助于增加网络的深度。
2,最近,stochastic depth被提出,作为成功的一种方式其训练了一个1202层的ResNet。 随机深度通过在训练期间随机丢弃某层来改进深度残差网络的训练。** 这表明并非所有层都需要,并强调在深度残差网络中存在大量冗余**
densenet网络结构也受到了这个网络结构的启发
3,另一种加深网络深度的方法就是增加网络的宽度,比如GoogLeNet使用“Inception module”来连接由不同大小的卷积核生成的feature-maps。
因此宽度人们提出了宽度残差网络
事实上,只要增加ResNets每层中的过滤器数量(从而增加了网络的宽度),只要ResNets深度足够(层数足够的多),就可以提高网络的性能
4,DenseNets抛弃了上面的观点,没有通过加深或加宽网络,去提高网络的功能,而是通过重用特征来发挥网络的潜力,产生易于训练且参数效率高的压缩模型。
5,将
不同层学习的 feature-maps
连接,增加了后续层的输入的变化并提高了效率。 这构成了DenseNets和ResNets之间的主要区别。
6,与Inception networks相比,它也连接不同层的feature-maps,但是DenseNets更简单,更高效。
7,ResNets的一个优点是梯度可以直接通过恒等映射(identity function)从后面的层流到更早的层。 然而,H(x )和x直接通过求和进行组合,这可能阻碍网络中的信息流。

3,Dense connectivity架构

我们介绍从任何层到所有后续层的直接连接,假设网络一共有L层,则第l层的输出,会被连接到[l,L]之间的任何一层。即其会做为后续每一层的输入
为了便于实现,我们将H(l)的多个输入连接成单个张量。
在这里插入图片描述

4,Composite function.

受到Identity mappings in deep residual networks的启发,我们将H(l)定义为三个连续运算的复合函数:批量归一化(BN)和激活函数(ReLU)和3*3卷积(Conv)

5,Pooling layers.

第l层输出公式
如果上述等式里面的每一个x的feature-maps不一样,则无法进行连接操作,此时则必须进行下采样工作去改变feature-maps的size。为了便于在我们的网络架构中进行下采样,我们将网络划分为多个密集连接的密集块比如上图里面的Dense1 Block;
每个block块之间的被称为transition layers。其用于进行卷积和池化操作,

在我们的实验中使用的transition layers包括batch normalization layer 和 11 convolutional layer 和 22 average pooling layer

6,Growth rate

如果每一层产生K个feature maps,则第l层输入k0+k*(l-1)个feature maps。K0是最开始的输入层的feature maps个数。
DenseNet与现有网络架构之间的一个重要区别是,DenseNet可以具有非常窄的层,例如k = 12。
我们将超参数k称为网络的增长率。
我们在第4节中表明,相对较小的增长率k足以在我们测试的数据集上获得最先进的结果。
One explanation for this is that each layer has access to all the preceding feature-maps in its block and, therefore, to the network’s “collective knowledge”.

可以将feature-maps视为网络的全局状态。 每个层都将自己的k个feature-maps添加到此状态。 增长率k规定了每层为全局的状态贡献多少新信息。 一旦编写完全全局状态,就可以从网络中的任何地方访问,并且与传统网络体系结构不同,不需要在层与层之间复制它

7,Bottleneck layers

其就是resnet里面的Bottleneck。用于减少参数的数量。
BN-ReLU-Conv(11)-BN-ReLU-Conv(33) version of H(l), as DenseNet-B. In our experiments, we let each 1*1 convolution produce 4k feature-maps.

我们将加入Bottleneck layers层的网络称为 DenseNet-B

8, Compression

为了进一步提高模型的紧凑性,我们可以减少transition layers层的feature-maps数量。
我们将此时的网络结构称为DenseNet-B
将同加入Bottleneck layers和Compression的网络结构称为 DenseNet-BC.

9,实现细节

在除ImageNet之外的所有数据集上,我们实验中使用的DenseNet有三个密集块,每个块具有相同数量的层
  1. 第一步

在进入第一个密集块之前,对输入图像执行16输出通道的卷积(或2倍生长速率的DenseNet-BC)。

  1. 卷积

卷积的核数是3*3
使用0进行填充,填充的padding为1.用于保持feature-map大小不变

  1. 减少GPU内存的消耗
    请注意,DenseNet的简单实现可能导致内存效率低下。
    为了解决这个问题,可以参考Memory-efficient implementation of densenets. arXiv preprint arXiv:1707.06990, 2017.

  2. drop Out
    we add a dropout layer after each convolutional layer (except the first one) and set the dropout rate to 0.2.

4.3. Classification Results on CIFAR and SVHN

  1. Capacity.
    随着L和k的增加,DenseNets表现得更好。我们主要将这归因于模型容量的相应增长。
    这表明DenseNets可以利用增加模型深度去提高准确率
    因为参数的数量减少,所以此还表明它们不会受到过度拟合或残差网络的优化困难的影响

5. Discussion

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值