CVPR 2017 best paper
点击查看原文

摘要

  最近的研究表明,当靠近输入的层和靠近输出的层之间的连接越短,卷积神经网络就可以做得更深,精度更高且可以更加有效的训练。本文根据这一结论,提出了一种稠密卷积神经网络(Dense Convolutional Network,DenseNet),这种结构将每一层与之前所有层相连接。传统的L层卷积神经网络有L个连接——位于每一层和其后一层之间;而我们的神经网络有$-\dfrac {L\left(L+1\right)} {2}-$个直接链接。对于每一层,其输入是之前所有层的特征图,而它自己的特征图作为之后所有层的输入。DenseNet有以下几个引人注目的优点:缓解梯度消失问题,加强特征传播,鼓励特征复用,极大的减少了参数量。我们在四个极具竞争力的物体识别标准图像库(CIFAR-10,CIFAR-100, SVHN, and ImageNet)对我们所提出的结构进行测试。结果表明,DenseNet在大多数的测试图像库中比现有技术的效果有显著提升,并且它只需要很少的计算量来达到很高的性能。代码和预训练的模型参见https://github.com/liuzhuang13/DenseNet。

论文结构

Densely-Connected-Convolutional-Networks

主要内容

DenseNet 结构及变体

  1. Dense Block 结构
    增长率k=4的5层dense block
    增长率k=4的5层dense block
  • 密集连接:$- x_ℓ = H_ℓ([x_0, x_1, \cdots, x_{ℓ−1}]) -$
  • $-H_ℓ()-$是一个复合函数:BN — ReLU — 3 × 3 (Conv)
  • 每个H函数产生k个特征图,那么第ℓ层的输入特征图总数为 $-k_0+k(ℓ-1)-$
  1. DenseNet 结构
    拥有三个Dense Block的DenseNet,两个相邻块之间的层称为过渡层,通过卷积和Pooling来改变特征图的大小
    完整的DenseNet
  • 块之间的Convolution+Pooling = Transition Layer,用以降低Feature Map的大小
  1. 变体
  • DenseNet-B
    在每个3x3卷积前引入1x1卷积作为瓶颈层可以减少输入特征图的数量,从而可以提高计算效率。
  • DenseNet-C
    若dense_block的输出是m,将其后的过渡层输出压缩成θm个,其中0<θ≤1被称为压缩因子。

实验结果

  1. CIFAR、SVHN
    DensenNet的测试结果中超过前人的都用黑体标出来了,同时每一个数据集最好的结果用蓝色黑体标注
    test on CIFAR-SVHN
    从CIFAR到CIFAR+(增加的数据集),其他模型都有了很高的性能提升,但是DensenNet提升比较少,说明了DenseNet更不容易overfitting
  2. ImageNet
    test on ImageNet
    在达成相同准确率的情况下,DenseNet所需的参数和浮点操作数远小于ResNet

创新点

  • 特征复用;只需要ResNet1/3的参数就可以达到同样效果
  • 密集连接
  • 提出了以后可能研究利用DenseNet正则化和特征提取(^_^)

不足

  1. 训练时非常耗费显存,作者写了篇报告介绍如何提升DenseNet对内存的使用效率:Memory-Efficient Implementation of DenseNets
  2. 文章中为了实验对比,超参数与ResNet保持一致(作者貌似也提出了优化方法)

参考:
CVPR 2017最佳论文作者解读:DenseNet
论文阅读-《Densely Connected Convolutional Networks》