深度学习之基础模型-DenseNet

  • In this paper, we embrace this observation and introduce the Dense Convolutional Network(DenseNet), which connects each layer to every other layer in a feed-forward fashion.
  • DenseNets have several compelling advantages: they alleviate the vanishing-gradient problem, strengthen feature propagation, encourage feature reuse, and substantially reduce the number of parameters.


深度学习之基础模型-DenseNet

思想

denseNet的思想来自于作者之前的工作(随机深度网络,Deep Network with Stochastic depth),其训练过程中采用随机dropout一些中间层的方法改进ResNet,发现可以显著提高ResNet的泛化能力。
注:Deep Network with Stochastic depth,在训练过程中,随机去掉很多层,并没有影响算法的收敛性,说明了ResNet具有很好的冗余性。而且去掉中间几层对最终的结果也没什么影响,说明ResNet每一层学习的特征信息都非常少,也说明了ResNet具有很好的冗余性。【这个应该得益于ResNet的skip connections的作用】

从而作者让每一层都直接与前面的所有层建立连接。但DenseNet不同与ResNet:

  • To ensure maximum information flow between layers in the network, we connect all layers (with matching features-map sizes) directly with each other
  • currialy, in contrast to ResNets, we never combine features throughout summation before the are passed into a layer; instead, we combine features by concatenating them

优点

  • 减少参数量:在ImageNet上相同精度下,DenseNet参数量只有ResNet的一半
  • 信息传递:DenseNet提高了信息流和梯度在网络之间传递。
  • 正则化作用:减少过拟合overfitting

网络结构


深度学习之基础模型-DenseNet

DenseNet网络结构采用传统的卷积和池化操作与Dense Block之间交替叠加,从而可以有效的增加网络深度。

  • 结构对比
网络名称 说明
ResNet xl=Hl(xl1)+xl1
DenseNet xl=Hl([x0,x1,....,xl1])

- DenseNet模块结构类型

名称 说明
Dense block Conv1x1->Conv3x3
DenseNet-B BN->ReLU->Conv1x1->BN->ReLU->Conv3x3
Densenet-BC 在DenseNet-B的基础上,令输出的的channel个数缩小,由m变成θm,具有压缩功能
Transition layer dense block -> BN+Conv1x1+Pooling2x2 -> dense block

注:为了避免DenseNet最终的channel太大,设置增产率k相对比较小,如12,即每一个卷积后输出都是12个通道的特征图

网络整体结构


深度学习之基础模型-DenseNet

  • 在所有数据集上,除了ImageNet外,都是只包含3个dense block层
  • 第一个传统卷积convolution,其他数据集16层的特征图,ImageNet产生32层的特征图
  • 3x3卷积,Padding=’SAME’
  • transition layer: BN+conv1x1 + average pooling2x2
  • 最后采用global average pooling+softmax classifier
  • 其他数据集中的3个dense block的输出分别是[32x32],[16x16],[8x8]

结果分析

实验1


深度学习之基础模型-DenseNet

  • 效果
    • 在CIFAR数据集上,DenseNet L190 k40的效果已经超过了所有的其他网络
    • 在C10和C00数据集上,DenseNet错误率都要比FractalNet低将近30%以上
    • 在SVHN数据集上,DenseNet L00 k24的效果也吵过了所有其他网络
  • Cappacity
    • 在没有任何压缩或者bottleneck层的前提下,网络随着L和k的增加,效果呈上升趋势
  • Parameter Efficiency
    • DenseNet在网络参数方面利用率更好。比如250层的网络结构,却只有15.3M的参数量,但却比其他参数更多的网络结构FractalNet,Wide ResNet效果要好
    • DenseNet-BC L00 k12网络结构采用ResNet1001 10%的参数量,却达到了相同的效果
  • overfitting
    • DenseNet较少过拟合

实验2


深度学习之基础模型-DenseNet

  • 单个输入和多个输入的结果表明,随着网络深度的增加,效果越来越好。


深度学习之基础模型-DenseNet

  • 和ResNet比较
    • 相同精度的情况下,DenseNet需要的参数更少。DenseNet-201拥有20M的参数量,却能达到ResNet-101(拥有40M参数量)的效果
    • 相同精度的情况下,DenseNet需要的计算量flops也更少。DenseNet可以使用ResNet-50的计算量,达到ResNet101的精度

讨论


深度学习之基础模型-DenseNet

Model compactness

  • 上图left比较DenseNet各个模型的参数效率。
  • 通过中间图的和ResNet比较发现,同样精度的情况下,DenseNet-BC之需要ResNet参数的13
  • 最右侧的图,表明,只有0.8M的DenseNet-BC能够和ResNet1001(具有10.2M)的效果基本等价。

Implicit Deep Supervision

  • One explanation for the improved accuracy of dense convolution networks may be that individual layers receive additional supervision from the loss function through the shorter connections.
  • DenseNets perform a similar deep supervision in an implicit fashion: a single classifier on top of the network provides direct supervision to all layers though at most two or three transition layer.

Stochastic vs. deterministic connection

对了一下和作者之前的工作《Deep networks with stochastic depth》。DenseNet的思想来源于之前的工作。

Feature Reuse


深度学习之基础模型-DenseNet

参考文献

https://arxiv.org/pdf/1608.06993.pdf
http://blog.csdn.net/u012938704/article/details/53468483
http://blog.csdn.net/gavin__zhou/article/details/53445539
http://blog.csdn.net/u014380165/article/details/75142664
http://www.sohu.com/a/161639222_114877