DenseNet阅读笔记
- DenseNet
- DenseNet网络结构
- DenseNet优点
DenseNet
如果卷积网络在靠近输入的层与靠近输出的层之间包含更短的连接,那么卷积网络的深度可以显著增加,准确度更高,并且更易于训练。
许多最近的研究致力于解决这个问题或相关的问题,这些不同的方法在网络拓扑和训练过程中有所不同,但它们都具有一个关键特性:它们创建从靠近输入的层与靠近输出的层的短路径。
DenseNet网络结构
从feature入手,通过对feature的极致利用达到更好的效果和更少的参数
密集连接卷积网络(DenseNet),它以前馈的方式将每个层与每个其它层连接起来。具有L层的传统卷积网络具有L个连接(每个层与其后续层之间),而我们的网络具有的连接个数为:L(L+1)2。对于每个层,所有先前层的特征图都被用作本层的输入,直接将特征图在深度上进行连接,并且本层输出的特征图被用作所有后续层的输入。
- 紧密连接(Dense connectivity)
在DenseNet结构中,讲每一层的输出都导入后面的所有层,与ResNet的相加不同的是,DenseNet结构使用的是连结结构(concatenate)。这样的结构可以减少网络参数,避免ResNet中可能出现的缺点(例如某些层被选择性丢弃,信息阻塞等)。 - 组合函数(Composite function)
将Batch Normalization + ReLU + 3*3 Conv组合成一个非线性变换:Hl(·) - 过渡层(Transition Layer)
过渡层包含瓶颈层(bottleneck layer,即1*1卷积层)和池化层。
1x1的卷积层用于压缩参数。每一层输出k个feature maps,理论上将每个Dense Block输出为4k个feature maps,然而实际情况中会大于这个数字。卷积层的作用是将一个Dense Block的参数压缩到4k个。 - 增长率(Growth rate)
这里的增长率代表的是每一层输出的feature maps的厚度。ResNet,GoogleNet等网络结构中经常能见到输出厚度为上百个,其目的主要是为了提取不同的特征。但是由于DenseNet中每一层都能直接为后面网络所用,所以k被限制在一个比较小的数值。 - 压缩(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优点
- 减轻了消失梯度(梯度消失)。每层可以直接从损失函数和原始输入信号中获取梯度,改善了整个网络中的信息流和梯度流,这就算是一种较为深入的监督了,有助于训练更深的网络。通过观察,该密集结构还有正则化效果,一定程度上减小过拟合。
- 加强特征传播,鼓励特征重用
- 大大减少参数数量,其实是提高参数效率, 与ResNet相比,达到相同的精确率,只需要更少的参数量
- 更有效地利用了特征,鼓励特征重用