DenseNet阅读笔记

  • DenseNet
  • DenseNet网络结构
  • DenseNet优点


DenseNet

如果卷积网络在靠近输入的层与靠近输出的层之间包含更短的连接,那么卷积网络的深度可以显著增加,准确度更高,并且更易于训练。

许多最近的研究致力于解决这个问题或相关的问题,这些不同的方法在网络拓扑和训练过程中有所不同,但它们都具有一个关键特性:它们创建从靠近输入的层与靠近输出的层的短路径。

DenseNet网络结构

从feature入手,通过对feature的极致利用达到更好的效果和更少的参数
密集连接卷积网络(DenseNet),它以前馈的方式将每个层与每个其它层连接起来。具有L层的传统卷积网络具有L个连接(每个层与其后续层之间),而我们的网络具有的连接个数为:L(L+1)2。对于每个层,所有先前层的特征图都被用作本层的输入,直接将特征图在深度上进行连接,并且本层输出的特征图被用作所有后续层的输入。

dense在机器学习里_卷积

  1. 紧密连接(Dense connectivity)
    在DenseNet结构中,讲每一层的输出都导入后面的所有层,与ResNet的相加不同的是DenseNet结构使用的是连结结构(concatenate)。这样的结构可以减少网络参数,避免ResNet中可能出现的缺点(例如某些层被选择性丢弃,信息阻塞等)。
  2. 组合函数(Composite function)
    将Batch Normalization + ReLU + 3*3 Conv组合成一个非线性变换:Hl(·)
  3. 过渡层(Transition Layer)
    过渡层包含瓶颈层(bottleneck layer,即1*1卷积层)和池化层。
    1x1的卷积层用于压缩参数。每一层输出k个feature maps,理论上将每个Dense Block输出为4k个feature maps,然而实际情况中会大于这个数字。卷积层的作用是将一个Dense Block的参数压缩到4k个。
  4. 增长率(Growth rate)
    这里的增长率代表的是每一层输出的feature maps的厚度。ResNet,GoogleNet等网络结构中经常能见到输出厚度为上百个,其目的主要是为了提取不同的特征。但是由于DenseNet中每一层都能直接为后面网络所用,所以k被限制在一个比较小的数值。
  5. 压缩(Compression)
    使用1*1卷积层减少通道数,减少压缩参数。作者选择压缩率(theta)为0.5。
    DenseNet Hl包含BN-ReLU-Conv(3x3)
    DenseNet-B Hl包含BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)
    DenseNet-C 过渡层使用1x1 Conv.减少参数数量
    DenseNet-BC B和C结合

DenseNet优点

  1. 减轻了消失梯度(梯度消失)。每层可以直接从损失函数和原始输入信号中获取梯度,改善了整个网络中的信息流和梯度流,这就算是一种较为深入的监督了,有助于训练更深的网络。通过观察,该密集结构还有正则化效果,一定程度上减小过拟合。
  2. 加强特征传播,鼓励特征重用
  3. 大大减少参数数量,其实是提高参数效率, 与ResNet相比,达到相同的精确率,只需要更少的参数量
  4. 更有效地利用了特征,鼓励特征重用