DenseNet:CVPR2017 Best Paper,引用次数已超1w次
paper:https://arxiv.org/abs/1608.06993v5
code:https://github.com/liuzhuang13/DenseNet
Abstract
作者发现如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则可以进行更深入,更准确和有效的训练。 在本文中,作者接受了这一现象,并介绍了密集卷积网络(DenseNet),该网络以前馈方式将每一层连接到其他每一层。 具有L层的传统卷积网络具有L个连接(每一层与其后一层之间有一个连接),而我们的网络具有L(L+1)/2 个直接连接。 对于每一层,所有先前层的特征图都用作输入,而其自身的特征图则用作所有后续层的输入。 DenseNets具有几个引人注目的优点:它们减轻了消失梯度的问题,增强了特征传播,鼓励了特征重用,并大大减少了参数数量。 本文在四个竞争激烈的对象识别基准测试任务(CIFAR-10,CIFAR-100,SVHN和ImageNet)上评估该结构,发现DenseNet在大多数方面都比最新技术有了显着改进,同时只需要较少的计算来实现高性能。
Introduction
随着CNN深度不断地增加,从最初5层的LeNet5到超过100层的ResNet,出现了新的问题,在于随着信息或梯度穿过很多层,他会在靠近末端时信息消失,最近的一些别的工作也都致力于解决这一问题,它们都具有一个关键特征在于创建了早期层到后期层的短路径。
本文中所提出的架构将这种见解提炼为简单的连接模式,将所有层都直接相互连接,为保留前馈特性,每一层都从先前的层获取其他输入,并将自身特征图传递给后续所有层。与ResNet相比,永远都不会在特征传递到层之前通过求和来组合特征,而是采用concatenate的方法来组合特征,所以第l层具有l个输入,包括之前所有的卷积层,他自己的特征图传给后续所有L-l层,所以在L层的网络中共包含L(L+1)/2个连接。
一个反直觉的效应是,相比于传统卷积网络这种密集连接模式需要的参数更少,因为它没有必要重新学习冗余的特征图。传统的前馈结构可以看作一种状态算法,这种状态从一层传到下一层,每一层从它的前一层读取状态,并写入到后面的层。虽然这种方式改变了状态,但是传递了需要保留的信息。ResNet通过加性标识转换达到了使信息显式保持的目的。ResNet的参数量大很多,因为每一层都有自己的权重。我们提出的DenseNet结构将加到网络上的信息和需要保留的信息进行了明确的区分。DenseNet层非常窄(例如,每层只有12个滤波器),仅向网路的“集体知识”("collective knowledge")中添加一小部分特征图并保持其余的特征图保持不变,最终的分类器基于网络中所有的特征图进行决策。
DenseNets
Dense connectivity 第l层接受之前所有层的特征图作为输入:,代表着之前所有层的concatenation
Composite function BN - ReLU - 3x3 convolution
Pooling layer 当feature map的大小更改时之前的串联操作就不可行,在卷积网络中一个很重要的部分就在于下采样来改变feature map的特征图,为了方便在结构中进行下采样我们将网络划分为多个密集连接块,我们将块之间的层成为 transition layer,它们进行卷积和池化,实验中所使用的transition layer包括BN,1x1卷积和2x2平均池化,如图:
Growth rate 如果每个函数Hl生成k个feature map,则第l层具有k0+k*(l-1)个输入特征图,其中k0是输入层中的通道数,DenseNet与现有的网络之间的重要区别在于DenseNet可以具有非常狭窄的层,例如k=12,我们将超参数k成为网络的增长率,我们在下面文章中可以看到一个相对较小的growth rate适合于在我们测试的数据集上获得较好的结果。对此的一个解释在于每一层都可以访问其块中先前所有的feature map,可以将feature map视为网络的全局状态,每一层将自己的k个feature map添加到此状态中,增长率调节每一层能给全局的状态新产生多少信息。全局状态一旦被写入就可以在网络中任何地方获取到,并不像传统网络结构,在每一层之间无需复制。
Bottleneck layers 尽管每一层只产生k个输出的feature map,他还是有很多的输入,在每个3x3卷积前引入1x1卷积作为瓶颈层可以减少输入特征图的数量,从而可以提高计算效率。
Compression 为了进一步提高模型的紧凑性,我们可以在transition layer减少特征图的数量。如果一个密集块包含m
个特征图,我们让其后的过渡层产生θm个输出feature map,θ为压缩参数,当θ=1时意味着feature-map的数量保持不变,如果小于1,我们成为DenseNet-C,在实验中设置为0.5,当同时使用bottleneck和过渡层θ<1时,我们称为DenseNet-BC。
Implementation Details 在除ImageNet之外的所有数据集上,我们的实验中使用的DenseNet具有三个dense blocks,每个密集块具有相等的层数。 在进入第一个密集块之前,对输入图像执行16个卷积(或DenseNet-BC增长率的两倍)的卷积。 对于内核大小为3×3的卷积层,输入的每一侧都用一个像素zero-padding,以保持特征图的大小固定。 我们使用1×1卷积,然后使用2×2平均池作为两个连续密集块之间的过渡层。 在最后一个密集块的末尾,执行全局平均池化,然后附加softmax分类器。 三个密集块中的特征图大小分别为32×32、16×16和8×8。 我们使用配置{L = 40,k = 12},{L = 100,k = 12}和{L = 100,k = 24}的基本DenseNet结构进行实验。 对于DenseNetBC,评估配置为{L = 100,k = 12},{L = 250,k = 24}和{L = 190,k = 40}的网络。在ImageNet上的实验中,我们在224×224输入图像上使用具有4个密集块的DenseNet-BC结构。初始卷积层包括2k个大小为7×7的卷积,步幅为2; 其他所有图层的要素贴图数量也取自设置k。 表1显示了我们在ImageNet上使用的确切网络配置。
Experiments
三种数据集分别为CIFAR SVHN ImageNet
Training 都使用SGD训练,在CIFAR和SVHN上用batch大小为64分别训练300和40个epoch,最初学习率的设定为0.1,在epoch的50%和75%处分别减少一半,在ImageNet上用batch大小为256的训练90个epoch,在30和60个epoch时将学习率从0.1降低十倍。
Results
Conclusion
本文提出了一个系的卷积网络架构,它在任意两层相同的feature map上直接连接。我们证明了DenseNets自然可以扩展到数百个层,而没有出现优化困难。 在我们的实验中,DenseNets倾向于随着参数数量的增加而不断提高精度,而没有任何性能下降或过度拟合的迹象。 在多种设置下,它在几个竞争激烈的数据集上均取得了最先进的结果。 此外,DenseNets需要更少的参数和更少的计算来实现最新性能。 由于我们在研究中采用了针对残差网络优化的超参数设置,因此我们相信,通过更详细地调整超参数和学习速率计划,可以进一步提高DenseNets的准确性。
遵循简单的连接规则,DenseNets自然地集成了身份映射,深度监控和多样化深度的属性。 它们允许在整个网络中重用特征,从而可以学习更紧凑的模型,并且根据我们的实验,可以更精确地学习模型。 由于其紧凑的内部表示形式和减少的功能冗余,DenseNets可能是基于卷积特征的各种计算机视觉任务的良好特征提取器。 我们计划在以后的工作中使用DenseNets研究这种功能转移。
https://www.jianshu.com/p/08a2a1f2a814