论文研读:Densely Connected Convolutional Networks

论文:Densely Connected Convolutional Networks

目录

Abstract

Introduction

DenseNets

DenseBlock

bottleneck 

Transition

Experiments

​编辑

​编辑

​编辑

Conclusion 


Abstract

研究表明,如果卷积网络在靠近输入和接近输出的层之间包含更短的连接,那么卷积网络可以更深入、更准确、更有效地训练。在本文中,作者引入了DenseNet,它以前馈方式将每一层连接到其他每一层。传统的L层卷积网络有L个连接——每层和后续层之间有一个连接——而本文的网络有L(L+1)/2个直接连接。对于每一层,使用所有前一层的特征映射作为输入,并使用其自身的特征映射作为所有后续层的输入。DenseNets有几个引人注目的优点:它们缓解了梯度消失问题,加强了特征传播,鼓励特征重用,并大大减少了参数的数量。作者在四个高度竞争的目标识别基准任务(CIFAR-10CIFAR-100SVHNImageNet)上评估了我们提出的架构。DenseNets在大多数情况下获得了最先进的显著改进,同时需要更少的计算来实现高性能。

Introduction

我们来看一下经典的ResNet与DenseNet的区别:
ResNet: 通过建立前面层与后面层之间的“短路连接”,这有助于训练过程中梯度的反向传播,从而能训练出更深的 CNN网络。
DenseNet: 采用密集连接机制,即互相连接所有层,每个层都会与前面所有层在 channel 维度上连接 concat 在一起,实现特征重用,作为下一层的输入。这样,不但减缓了梯度消失的现象,也使其可以在参数与计算量更少的情况下实现比 ResNet更优的性能。

DenseNets

考虑通过卷积网络传递的单个图像x0。该网络由L层组成,每一层都实现了一个非线性变换H(\cdot),其中H(\cdot)可以是Batch Normalization(BN)rectified linear units (ReLU) PoolingConv等操作的复合函数。我们把第l^{th}层的输出表示为x_{l}

传统的网络在𝑙l层的输出为:

x_{l}=H_{l}(x_{l-1})

ResNet:传统的卷积前馈网络将第l^{th}层的输出作为输入连接到第(l+1)^{th}层,这就产生了如下的层跃迁: x_{l}=H_{l}(x_{l-1})。ResNets添加了一个skip-connection,通过恒等函数绕过非线性转换:

x_{l}=H_{l}(x_{l-1})+x_{l-1}

DenseNet:为了进一步改善层之间的信息流,作者提出了一种不同的连接模式:我们引入从任何层到所有后续层的直接连接。

x_{l}=H_{l}([x_{0},x_{1},...,x_{l-1}])

DenseBlock

在DenseBlock 中,各个层的特征图大小一致,可以在 channel 维度上连接。 DenseBlock 中的非线性组合函数H(\cdot) 采用的是BN+ReLU+3×3Conv 的结构。
假定输入层的特征图的channel 数为k_{0} , DenseBlock 中各个层卷积之后均输出k 个特征图,即得到的特征图的 channel数为k,那么l 层输入的 channel 数为k_{0}+(l-1)k我们 k称为网络的增长率(growth rate )。
Dense Block 采用了激活函数在前、卷积层在后的顺序,即 BN- ReLU -Conv 的顺序,这种方式也被称为 Pre-activation 。通常的模型 ReLU 等激活函数处于卷积 conv 、批归一化 batchnorm 之后,即 Conv-BN- ReLU ,也被称为 post-activation 。作者证明,如果采用 post-activate 设计,性能会变差。

bottleneck 

由于后面层的输入会非常大, DenseBlock 内部可以采用 bottleneck 层来减少计算量,主要是原有的结构中增加 1×1Conv ,即
BN+ReLU+1\times 1Conv+BN+ReLU+3\times 3Conv
称为DenseNet-B 结构。其中 1×1 Conv 得到 4k 个特征图,他起到的作用是降低特征数量,从而提升计算效率。

Transition

它主要是连接两个相邻的DenseBlock,并且降低特征图大小。Transition层包括一个1×1的卷积和2×2AvgPooling,结构为

BN+ReLU+1\times 1Conv+2\times 2AvgPooling

Transition层可以起到压缩模型的作用。假定Transition的上接DenseBlock得到的特征图channels数为mTransition层可以产生[\theta m]个特征(通过卷积层),其中[0,1]是压缩系数。当\theta=1时,特征个数经过Transition层没有变化,即无压缩,而当压缩系数小于1时,这种结构称为DenseNet-C,一般使用\theta=0.5。对于使用bottleneck层的DenseBlock结构和压缩系数小于1Transition组合结构称为DenseNet-BC

Experiments

Table2是DenseNet与其他经典算法在三个数据集(C10C100SVHN)上的对比结果。我们可以也很明显的看出DenseNet的算法的错误率远低于其他算法。DenseNet-BC的网络参数和相同深度的DenseNet相比确实减少了很多!在相同深度情况下,DenseNet-BC比DenseNet拥有更小的参数量,且错误率也更低。在SVHN数据集上k24的情况下,DenseNet反而比DenseNet-BC的效果更好,应该是SVHN数据集较为简单导致的。

Figure3为DenseNets和ResNets算法在ImageNet数据集上的对比,左图可以明显的看出在参数量相同的情况下,DenseNet的错误率更低,右图可以明显看出在运算量相同的情况下DenseNet的错误率更低。

Figure4的左图是不同类型DenseNet算法在不同参数量的错误率情况,中间图为DenseNet-BC与ResNet相同参数下错误率情况,可以明显看出DenseNet-BC在相同参数下的错误率更低。右图可以看出DenseNet-BC-100在极少的参数就可以达到ResNet01001的效果。

Conclusion 

本文作者提出了一种新的卷积网络结构,称之为DensNet,它可以自然扩展到数百层,同时不存在优化困难。有效地解决了深度学习中的一些关键问题,如梯度消失和参数效率,已成为深度学习领域的一个重要里程碑。

DenseNet的优点:

1、省参数。ImageNet 分类数据集上达到同样的准确率,DenseNet 所需的参数量不到 ResNet 的一半。对于工业界而言,小模型可以显著地节省带宽,降低存储开销。

2、省计算。达到与 ResNet 相当的精度,DenseNet 所需的计算量也只有 ResNet 的一半左右。

3、抗过拟合。DenseNet 具有非常好的抗过拟合性能,尤其适合于训练数据相对匮乏的应用。对于 DenseNet 抗过拟合的原因有一个比较直观的解释:神经网络每一层提取的特征都相当于对输入数据的一个非线性变换,而随着深度的增加,变换的复杂度也逐渐增加(更多非线性函数的复合)。相比于一般神经网络的分类器直接依赖于网络最后一层(复杂度最高)的特征,DenseNet 可以综合利用浅层复杂度低的特征,因而更容易得到一个光滑的具有更好泛化性能的决策函数。

4、泛化性能更强。如果没有data augmentionCIFAR-100下,ResNet表现下降很多,DenseNet下降不多,说明DenseNet泛化性能更强。

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值