欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DenseNet论文总结

程序员文章站 2022-04-05 16:09:47
...
              论文: Densely Connected Convolutional Networks 

一、 内容简述
  作者通过研究Stochastic depth训练方法和ResNet后受到启发,设计了一种名为DenseNet的模型,能够有效地抑制梯度消失,强化特征传播同时大幅地减少参数数量。在实验中DenseNet在CIFAR、SVHN和ImageNet数据集中取得了了当时最低的错误率。
二、 Motivation
  解决网络层次变深时的梯度消失问题时使用shortcut connection是一种很好的方法,比如ResNet使用的Identity shortcut connections,但是ResNet包含的参数数量很多,需要耗费大量的计算资源和时间,因此作者受shortcut connection思想启发,设计了DenseNet,改善了信息和梯度的传播同时大幅减少了网络中需要训练的参数,提高了网络的训练速度的同时也提高了模型的精度。
三、模型结构
  DenseNet由dense block和transition layer两个核心结构组成。
1.dense block:在dense block中,对于每个卷积层来说,它前面的所有feature maps进行concat后全部作为该层的输入,这是他与ResNet最明显的差别,具体思路如下图:      DenseNet论文总结
  文中设计的dense block由多个1×1的卷积层和3×3的卷积层构成,其中每个卷积层前都使用BN+ReLU进行预**,这里是参考了ResNet设置的。
2. transition layer用来减小feature maps的数量,文章中使用的是每次经过transition layer后特征图数量会缩小为原来的一半,它由一个1×1的卷积层和一个2×2的池化层构成,结构如下:    
3.               DenseNet论文总结
  因此整个DenseNet的网络结构和工作过程如下图表:  DenseNet论文总结
  DenseNet论文总结
  文中使用了一个Growth rate参数用来表示通过dense block产生的feature maps的数量,即表中的k。与其他网络相比,这样的操作可以使网络结构变得更窄。设置Growth rate减小网络宽度,使用1×1的卷积操作,这些实际上都是为了减少参数从而减小计算量。
四、实验
1.实验主要使用了CIFAR10/10+,CIFAR100/100+和SVHN五个数据集,其中CIFAR10+表示将CIFAR10数据集经过镜像或平移等操作进行数据增强了的的数据集,CIFAR100+同理。
DenseNet论文总结
  表格中的DenseNet-BC指的是本篇周报第三部分中描述的模型,也是文章中最终提出的最好的模型,DenseNet指的是在每个dense block中的3×3卷积层前不使用1×1的卷积层(有该操作的模型记为DenseNet-B),同时在每个transition layer中的池化操作前不使用1×1的卷积层(有该操作的模型记为DenseNet-C)。很显然通过借鉴Inception结构使用1×1卷积层的DenseNet-BC参数量比普通的DenseNet更少。
  通过实验结果可以看出,本文提出的DenseNet-BC不仅比ResNet第二篇改进了的模型(ResNet pre-activation)在除SVHN数据集外的其他数据集中的表现更好,同时也比其他已有的方法都好,唯一例外的是在SVHN数据集中普通的DenseNet是错误率最低的而不是DenseNet-BC,文中表示可能是因为这个数据集太简单使得过拟合现象发生导致的。
  从实验结果还可以看出DenseNet-BC随着k和层数L的加深,模型准确率越高,同时在使用相同的k和L时DenseNet-BC比DenseNet的参数少了将近八倍。
2.DenseNet论文总结
  上图是在CIFAR10+数据集中的对比实验,也可以看出(1)DenseNet-BC比其他DenseNet结构的性能要好;(2)在相同错误率情况下DenseNet-BC比ResNet的参数数量少得多;(3)DenseNet-BC只需要很少的参数就可以达到和ResNet相同的性能效果。
3.实验在ImageNet数据集中对DenseNet-BC和ResNet进行了详细的对比:
        DenseNet论文总结
DenseNet论文总结
  可以看出,在相同的验证集错误率时进行对比,DenseNet-BC的参数以及计算量都远小于ResNet,验证了DenseNet-BC这种结构确实可以有效地减少训练参数量。