密集卷积网络(Densenet)论文阅读笔记

密集卷积网络(Densenet)论文阅读笔记

  1. 作者Zhuang Liu(个人主页:https://liuzhuang13.github.io/)
  2. 论文的下载地址: https://arxiv.org/pdf/1608.06993.pdf
  3. 源码地址:https://github.com/liuzhuang13/DenseNet
  4. caffe模型:https://github.com/liuzhuang13/DenseNetCaffe
  5. 论文翻译:http://blog.csdn.net/yaoqi_isee/article/details/75949372

论文思路和方法

最近的一些卷积神经网络都证实了在网络当中加入short connection能够让网络更深、更准确、更高效,
另一方面,最近的一些resnet的变种往往可以用更浅层的模型达到和深层的模型差不多的性能,这些充分说明了现有的卷积神经网络学习得到的很多特征都是冗余的。

作者的想法是充分利用skip connection,设计一个dense convolutional network,让每一个层都接受它前面所有层的输出,这样的话,对于普通的神经网络,L层一共有L个connection.但是对于densely convolutional network,L层一共有L(L-1) / 2个connection。

亮点和创新点

Densenet的四大优点:

  • 缓解梯度消失问题
  • 增强特征传播
  • 促进特征再用
  • 大大减少了参数的数量

网络架构分析

为了确保网络中各层之间的最大信息流,在Dense block中,作者直接将所有层(具有匹配的特征映射大小)连接起来。为了保留前向传播的特性,每个层从前面的所有层获得附加输入,并将其自身的特征映射传递到所有后续层。Dense Block结构示意图如下:

密集卷积网络(Densenet)论文阅读笔记_第1张图片
5层的DenseBlock结构示意图

以上介绍的是densenet结构中的一个DenseBlock例子. dnesenet的总体结构图如下:

密集卷积网络(Densenet)论文阅读笔记_第2张图片
densenet网络结构图

上图中的dense block 结构即是[5层的DenseBlock结构示意图]对应的内容. 由上图可知,此图结构中包含三个DenseBlock.

要详细了解densenet网络内部的技术细节,小编推荐一篇博客文章,里面详细讲解了densenet的技术细节.

DenseBlock细节

DenseBlock 输出: xl=Hl([x0,x1, ..., xl-1]).
其中,xl代表DenseBlock中第l层输出,x ~x l-1代表前面所有层的输出.因此,第l层的输入主要由x ~x l-1层的输出组成.其中,第l层的输入特征通道数量为:k+k*(l-1),k代表growth rate,其代表前l-1层引出k个特征通道进入l层.

Hl()函数主要由以下层级组成:BN+ReLU+Conv(1*1)+BN+ReLU+Conv(3*3).其中,Conv(1*1)层级的引入作者称之为Bottleneck Layers, 其作用是为了减少输入的通道数量.一般Conv(1*1)卷积后的大小为4k(k为growth rate).

所以,DenseBlock结构中主要有两个超参数,growth rate和Bottleneck,将这两个参数理解清楚基本掌握了DenseBlock结构.

Transition Layers

作者在每两个DenseBlock结构之间引入了Transition Layers概念.为了进一步减少参数量,作者引入了一个Compression概念,用参数theta表示.Transition Layers主要由1*1卷积和3*3pooling层组成.Compression主要用1*1卷积降低DenseBlock的输出通道.因此,Compression可以进一步减少参数总量,达到密集网络的效果.

你可能感兴趣的:(密集卷积网络(Densenet)论文阅读笔记)