论文阅读-《Densely Connected Convolutional Networks》

来源:互联网 发布:淘宝优惠券平台排名 编辑:程序博客网 时间:2024/06/07 10:45

CVPR 2017 Best Paper

Motivation:

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

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

DenseNet的优点在于能够有效缓解梯度消失的问题,梯度可以通过long range connection直接传回到浅层,相当于整个网络所有的卷积层都可以通过几个skip connection得到loss function直接的监督,可以保证浅层的参数得到有效的更新;

另一方面,DenseNet能够重复利用特征,提高特征的质量,并大大减少网络的参数数目。每一个层的输入都是前面所有层的输出,这样增大了每一个卷积层的输入分布的variation,可以让卷积层的参数得到充分的训练,提高特征的质量,达到以较少的层就能学习到较强的表达能力的效果。

Framework

D1
上图表示作者设计的DenseNet.

其中输入图像首先经过卷积操作,然后输入连续的几个dense block;

对于每一个block内部的卷积层采用densely connected的方式,即每一个unit的输入都是前面所有unit的输出的concate。上图中每一个unit表征的操作为BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3),引入Conv(1x1)的目的是为了减少计算量。同一个block内部每一个unit输出feature map的channel都固定为4k,k表示growth rate,显然k越大,网络的参数越多,capacity越大,学习能力越强。

不同的block之间为transition layer,transition layer是由BN-Conv(1x1)-Pooling(2x2)组成。其中1x1的卷积层可以通过设置输出channel数目来决定是否需要压缩模型参数。

我们定义上面的模型为DenseNet-BC(B:block C:compression)
D2
上图表示作者针对Imagenet设计的DenseNet的网络示意图。DenseNet-k中的k表示网络的层数。

Experiments

作者主要在cifar10,cifar100,SVHN以及imagenet分类问题上做的实验。
D4
上图表示实验的结果,C10+表示经过data augmentation的cifar数据集。作者模型的测试结果中超过前人的都用黑体标出来了,同时每一个数据集下面最好的结果用蓝色黑体标注
DenseNet表示普通的DenseNet结构,即没有block形式以及transition layer的模型。

从测试的结果来看,作者的模型在以上各个数据集的测试结果均是state-of-art。在没有做data augmentation的数据集上,作者的方法相比原来的state-of-art有了很大的提升。另外值得注意的是:

1.随着DenseNet网络深度的增加,模型的测试正确率在不断上升,这说明模型的capacity在逐渐增大,并且随着模型的加深,并没有很受到参数优化和过拟合的影响。

2.作者的模型往往需要更少的参数,但是能得到更高的准确率。

3.另外可以看到从普通的数据集到增强了的数据集,别人的模型都有了很高的提升,但是作者的模型提升比较少,从另一个方面说明了作者的模型更不容易overfitting

D5
这张图表示在Imagenet classification任务上DenseNet和Resnet的比较,可以看到,DenseNet往往可以用更少的参数得到比Resnet更好的结果。

阅读全文
2 0