论文笔记——Densely Connected Convolutional Networks(DenseNet)

时间:2024-03-26 08:20:32

论文笔记——Densely Connected Convolutional Networks(DenseNet)


论文下载:

https://arxiv.org/pdf/1608.06993.pdf

论文代码:

https://github.com/liuzhuang13/DenseNet


论文摘要:

作者提到,卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接(即输入卷积层的特征和卷积层输出的特征进行整合连接),那么这个网络的训练就可以更深入、更准确、更有效。作者基于这一观察,引入DenseNet(Dense Convolutional Network),以向前传递特征的方式连接每一层和其他的层(a feed-forward),传统的卷积网络L层只有L个连接,即每个层和它接下来的卷积层之间只有一个连接,但是DenseNet有L(L+1)/2个连接

DenseNet有几个显著的优点:缓解梯度消失的问题,加强了特征传播,促进重新利用特征,大大减少了参数量


提出DenseNet的思路:

随着CNN网络层数的增加,会出现“梯度消失”,引用原文(as information about the input or gradient passses through many layers,it can vanish and “wash out” by the time it reaches the end (or beginning) of the network)。

当时提出的Resnets和FractalNets都是采用相似的思路:在网络中采用多条连接,即连接不同卷积层输出的特征。

从之前的研究表明,加深网络(增加卷积层的数量)或者加宽网络(增加卷积核的数量)都能有效提高网络精度。相反,DenseNet没有使用这两个因素,而是重点通过重新利用特征

这也使DenseNet网络参数量较小,效果却很好。


DenseNet:

论文笔记——Densely Connected Convolutional Networks(DenseNet)

每个DenseBlock之间都有过渡层,过渡层为一个BN层、一个1×1卷积层和一个2×2平均池化层。

DenseBlock模块图:

论文笔记——Densely Connected Convolutional Networks(DenseNet)

插图的K(growth rate)为4,即卷积核的数量为4。可以观察到,红色模块输出的特征都与接下来四个模块输出的特征连接。

正常卷积层的特征:

论文笔记——Densely Connected Convolutional Networks(DenseNet)

ResNet网络卷积层的特征,即连接了上一层的特征:

论文笔记——Densely Connected Convolutional Networks(DenseNet)

DenseNet网络卷积层的特征,可以DenseBlock每一层特征都是与前面层的特征连接:

论文笔记——Densely Connected Convolutional Networks(DenseNet)

完整的DenseNet架构,所有网络的(growth rate)k= 32。表中显示的每个“conv”层都对应于BN-ReLU-Conv序列:

论文笔记——Densely Connected Convolutional Networks(DenseNet)


更多细节:

(1)增长率(growth rate):将超参数K(卷积核数量)作为网络的增长率。每个卷积层生成K个特征,则第l层有K0+K×(l-1)个输入特征

(2)瓶颈层(bottleneck):虽然K很小,但是每一层concat下来,卷积核的数目也很多,所以在每个3×3卷积之前添加一个1×1的卷积,即利用该卷积降维

(3)压缩(compression):最后每个DenseBlock的输出的卷积核(channel)数量也有1000,作者设置一个压缩参数θ,θ<1的称为DenseNet-C,瓶颈层和转换层的θ<1的称为DenseNet-BC。在实验中设置θ=0.5

针对于网络特征连接的数量原文中还提到使用了dropout操作,避免过拟合


实验结果:

CIFAR和SVHN数据集的错误率(%):

论文笔记——Densely Connected Convolutional Networks(DenseNet)

与ResNet相比,DenseNets使用更少的参数来实现更低的错误率。在没有数据增强的情况下,DenseNet的性能要好得多

使用单作物/10作物测试的ImageNet验证集的第1和第5的错误率:

论文笔记——Densely Connected Convolutional Networks(DenseNet)

比较DenseNets和ResNets在ImageNet验证数据集上的top-1错误率(单作物测试),作为学习参数的函数(左)和测试时间的FLOPs(右):

论文笔记——Densely Connected Convolutional Networks(DenseNet)

左:DenseNet变化在C10+上参数效率的比较

中:DenseNet-BC与(预活化)ResNets参数效率比较

右:参数大于10M的1001层预**ResNet[12]和参数仅为0.8M的100层DenseNet的训练测试曲线

DenseNet-BC需要大约1/3的ResNet参数才能达到相同的精度:

论文笔记——Densely Connected Convolutional Networks(DenseNet)

经过训练的DenseNet中卷积层的平均绝对滤波权值:
论文笔记——Densely Connected Convolutional Networks(DenseNet)