DenseNet:Densely Connected Convolutional Networks(论文阅读笔记)

论文链接:《Densely Connected Convolutional Networks

代码链接:https://github.com/liuzhuang13/DenseNet

摘要

   最近的研究表明,如果卷积网络包含接近输入层和接近输出层之间较短的连接,那么训练卷积网络将会更加深入、准确和有效。在本文中,我们接受了这一观察,并引入了Dense Convolutional Network (DenseNet),它以feed-forward的方式将每一层连接到其他层。传统的卷积网络有 L 层,而我们的网络有 L(L+1)/ 2 个直接连接。对于每一层,前面所有层的特征映射都用作输入,而它自己的特征映射用作后面所有层的输入。densenet有几个引人注目的优点:它们缓解了消失梯度问题增强了特性传播鼓励特征重用,并大大减少了参数的数量。我们在四个高度竞争的目标识别基准任务(CIFAR-10、CIFAR-100、SVHN和ImageNet)上评估了我们提出的体系结构。DenseNets在大多数方面都比最先进的技术取得了显著的改进,同时需要更少的计算来实现高性能。

1,引言

    卷积神经网络(CNNs)已成为视觉目标识别的主流机器学习方法。虽然[18]最初是在20多年前引入的,但直到最近,计算机硬件和网络结构的改进才使真正深入的CNNs的训练成为可能。原来的LeNet5[19]由5层组成,VGG有19层[29],仅在去Highway Network[34]和残差网络(ResNets)[11]才突破了100层屏障。

    随着CNNs的日益深入,一个新的研究问题出现了:当有关输入或梯度的信息经过许多层时,它可能会消失,并在到达网络的末端(或开始)时被“洗去”。最近的许多出版物都讨论了这个或相关的问题。ResNet[11]]和High Network[34]通identity连接将的旁路信号从一层转发到另一层。随机深度[13]通过在训练过程中随机降低层数来缩短ResNets,从而允许更好的信息和梯度流动。FractalNets[17]在保持网络中多条短路径的同时,反复组合多个具有不同卷积块的并行层序列,获得较大的名义深度。尽管这些不同的方法在网络拓扑结构和训练过程中各不相同,但它们都具有一个关键特征:它们创建从早期层到后期层的短路径。

    在本文中,我们提出了一种架构,它将这种见解提炼为一种简单的连接模式;为了确保网络中各层之间的信息流达到最大,我们将所有层(具有相同的特征图大小)直接连接在一起。为了保持前馈特性,每一层都从前面的所有层获得额外的输入,并将自己的特征映射传递给后面的所有层。图1示意性地说明了这种布局。至关重要的是,与ResNet相反,我们从不再将特征传递到一个层之前通过求和(即对应元素相加)来组合它们;相反,我们通过concatenate(即通道级联)它们来组合特性因此,第 层有 个输入,包括前面所有卷积块的特征映射。自己的特征图传递给所有  的后续层。这将在L层网络中引入个连接,而不是像传统架构中那样只引入 L 个链接。由于其密集的连通性模式,我们将我们的方法称为密集卷积网络(DenseNet)。

                     图1:5层dense block,growth ratek k = 4。每一层都接受前面所有的特征图作为输入。

    这种密集连接模式的一个可能与直觉相反的效果是,它比传统的卷积网络需要更少的参数,因为不需要重新学习冗余的特征图。传统的前馈体系结构可以看作是一种具有状态的算法,它在层与层之间传递。每一层都从它的前一层读取状态并写入到下一层。它不仅改变状态,还传递需要保存的信息。ResNets[11]通过加法identity转换显式地保存信息。最近ResNets[13]的变化表明,许多层的贡献非常小,实际上可以在训练过程中随机下降。这使得ResNets的状态类似于(展开的)循环神经网络[21],但是ResNets的参数数量要大得多,因为每一层都有自己的权值。我们提出的DenseNet体系结构明确区分了添加到网络中的信息和保留的信息。DenseNet层非常狭窄(例如,每层12个过滤器),只向网络的“集体知识”添加一小组特征映射,并保持其余的特征映射不变,最终分类器根据网络中的所有特征映射做出决策。

    除了更好的参数效率外,DenseNets的一大优点是改进了整个网络的信息流和梯度,这使得它们易于训练。每一层都可以直接访问从损失函数到原始输入信号的梯度,从而实现隐式深度监控[20]。这有助于训练更深层次的网络体系结构。此外,我们还观察到密集连接具有正则化效果,这可以减少对训练集较小的任务的过度拟合

    我们在四个高度竞争的基准数据集(CIFAR-10、CIFAR-100、SVHN和ImageNet)上评估DenseNets。与现有算法相比,我们的模型需要的参数要少得多,而且精度相当。此外,在大多数基准测试任务上,我们的表现都明显优于目前最先进的测试结果。

2,相关工作

    网络结构的探索是神经网络研究的一部分。最近神经网络的重新流行也使这一研究领域重新焕发了生机。现代网络中不断增加的层数放大了架构之间的差异,并激发了对不同连接模式的探索和对旧研究思想的重新审视。

    类似于我们提出的密集网络布局的级联结构已经在20世纪80年代的神经网络文献中得到了研究。他们的开创性工作集中在完全连接的多层感知器在一层一层的方式训练。近年来,提出了利用Batch梯度下降训练的全连通Cascade网络[40]。虽然这种方法对小型数据集有效,但只适用于具有几百个参数的网络。在[9,23,31,41]中,利用CNN中多级特征的跳跃连接被发现对各种视觉任务都是有效的。与我们的工作并行,[1]推导出一个纯理论框架的网络跨层连接类似于我们的。

    Highway Network[34]是最早提供了一种方法来有效地训练超过100层的端到端网络的体系结构之一。利用选通单元的旁通路径,可以很容易地优化数百层的Highway Network。旁路(bypassing path)被认为是简化这些非常深的网络训练的关键因素。ResNets[11]进一步支持这一点,其中使用纯 identity 映射作为旁路路径(bypassing paths)。ResNets在ImageNet和COCO目标检测[11]等具有挑战性的图像识别、定位和检测任务中取得了令人瞩目的破纪录的性能。最近,随机深度被提出作为一种成功训练1202层ResNet[13]的方法。随机深度在训练过程中随机分层,提高了深度残差网络的训练效果。这表明并非所有层都是必需的,并强调了在深层(残差)网络中存在大量冗余。我们的论文在一定程度上受到了这一观察结果的启发。预激活的ResNet还有助于训练具有> 1000层[12]的最先进网络。

    使网络更深入的正交方法(例如,在跳过连接的帮助下)是增加网络宽度。GoogLeNet[36,37]使用了一个“Inception模块”,它将不同大小的过滤器生成的特征映射连接起来。在[38]中,提出了一种具有广泛广义剩余块的ResNets的变体。事实上,只要在每层ResNets中增加过滤器的数量,只要深度足够[42],就可以提高其性能。FractalNets还使用广泛的网络结构[17]在多个数据集上获得了具有竞争力的结果。

    DenseNet并没有从极深或极广的体系结构中汲取代表性的力量,而是通过特性重用来开发网络的潜力,从而生成易于训练且具有高度参数效率的浓缩模型。将不同层学习到的特征映射串联起来,可以增加后续层输入的变化,提高效率。这构成了DenseNet和ResNet之间的主要区别。与Inception网络相比[36,37],Inception网络也连接来自不同层的特性,DenseNet更简单、更高效。

    还有其他值得注意的网络体系结构创新,它们产生了具有竞争力的结果。Network in Network (NIN)[22]结构将微型多层感知器加入到卷积层的滤波器中,提取更为复杂的特征。在深度监督网络(DSN)[20]中,内部层由辅助分类器直接监督,可以增强早期层接收到的梯度。梯形网络[27,25]将横向连接引入自动编码器,在半监督学习任务中产生令人印象深刻的准确性。在[39]中,提出了将不同基础网络中间层相结合的深度融合网络(DFNs)来改善信息流。通过增加具有最小化重建损失的路径的网络,还可以改进图像分类模型[43]。

3,DenseNets

    考虑通过卷积网络传递的单个图像。 网络 包括 L 层, 每层实现 了 非线性 变换,其中  是层索引。可以 是 一 个复合函数的操作 , 比如 Batch Normalization (BN) [14],校正线性单元 (ReLU) [6], Pooling [19], 或 Convolution (Conv)。我们把第  层的输出表示为

     ResNets:传统卷积前馈网络连接的  层输出作为第 层输入。产生以下layer transition。ResNet添加一个skip-connection利用一个identity 函数绕过非线性变换:

    ResNets的一个优点是梯度可以直接通过恒等(identity)函数从后面的层流向前面的层。然而,恒等函数和的输出通过求和组合起来,这可能会阻碍网络中的信息流。

    Dense connectivity:为了进一步改进层与层之间的信息流,我们提出了一种不同的连接模式:我们引入了从任何层到所有后续层的直接连接。图1示意性地说明了生成的DenseNet的布局。因此,第 层接收前面所有层的特征映射,例如 作为输入:

    其中  指连接层  产生的特征图。由于其密集的连通性,我们将这种网络架构称为密集卷积网络(DenseNet),为了易于实现, 我们 将 eq. (2)中多个输入 到 单个 tensor.

    Composite function:受 [12]的启发, 我们 定义为 一 个 复合函数的 三个连续操作batch normalization (BN) [14], 后跟 一 个 矫正 线性 单元 (ReLU) [6] 和 一个3 x3 (Conv)卷积

    Pooling Layer:当特征映射的大小发生变化时,Eq.(2)中使用的连接操作是不可行的。然而,卷积网络的一个重要部分是下采样层,它可以改变特征图的大小。为了便于在我们的架构中进行下采样,我们将网络划分为多个密集连接的密集块(dense blocks);参见图2。我们将块之间的层称为过渡层(transition layers)它执行卷积和池化。 我们实验中的过渡层由 一个 batch normalization层 和一 个 1x1 卷积层,然后接一个2x2 平均池化层构成。

图2:一个深的DenseNet,由三个dense blocks组成。相邻两个块之间的层称为过渡层(transition layers),并通过卷积和池化来改变特征图的大小。 

    Growth rate:如果每个函数产生 k 个特征图,则它遵行以下规则,即第  层具有 输入特征图,其中 是输入层中的通道数。 DenseNet与现有网络架构之间的一个重要区别是,DenseNet可以具有非常窄的层,例如 k = 12.我们将超参数 k 称为网络的增长率(growth rate)。我们在第4节中表明,相对较小的增长率足以在我们测试的数据集上获得最先进的结果。对此的一种解释是,每个层都可以访问其块中的所有前面的特征映射,因此可以访问网络的“集体知识(collective knowledge)”。可以将特征映射视为网络的全局状态。每个层都将自己的 k 个特征映射添加到此状态。增长率规定了每层为全局状态做出多少新信息。一旦编写完全局状态,就可以从网络中的任何地方访问,并且与传统网络体系结构不同,不需要在层与层之间复制它。

    Bottleneck layers:虽然每个层仅生成 k 个输出特征图,但它通常具有更多输入。在[37,11]中已经注意到,在每个3x3卷积之前可以引入1x1卷积作为瓶颈层(bottleneck layer)以减少输入特征图的数量,从而提高计算效率。我们发现这种设计对DenseNet特别有效,我们的网络参考了这种bottleneck layer,即 BN-ReLU-Conv(1x1-BN-ReLU-Conv(3x3)版本作为DenseNet-B。在我们的实验中,我们让每个1x1卷积产生4k个特征图。

    Compression:为了进一步提高模型的紧凑性,我们可以在过渡层上减少特征图的数量。如果Dense Block 包含 m 个特征图, 我们 以下过渡 层生成 个 输出 特征图, 在 被 称为 压缩系数。当,  过渡 层之间 特征 图 的 数量 仍然 不变。我们的 DenseNet叫作 DenseNet-C,实验中我们设置当 bottleneck layer 和 transition layer同时满足 时,我们叫作 DenseNet-BC.

    实现细节:在除 ImageNet 外的所有数据集上,我们实验中使用的DenseNet有三个密集的块,每个块具有相同数量的层。在进入第一个密集块之前,对输入图像进行与16个输出通道(或DenseNet-BC增长率的两倍)的卷积。对3x3的卷积 层 ,每边采用一个零填充保持特征图尺寸固定 在两个连续的dense blocks之间采用1x1的卷积核然后接一个2x2的平均池化。在最后一个dense block后面执行一个全局平局池化然后附加一个softmax分类器。三个dense blocks的特征图尺寸分别为: 32x32 , 16x16, 和 8x8。实验中,我们的DenseNet结构配置{L= 40, k = 12},{L = 100, k = 12}, {L = 100, k = 24}对DenseNet-BC的参数配置为:{L= 100, k = 12}, {L= 250,k = 24},{L= 190,k = 40}。

    在ImageNet上的实验,我们使用 DenseNet-BC 结构有 4个dense blocks,  输入224x224初始 卷积 层 包含 2 k个7x7,步长为 2 ;所有其他层的特征图的数量也遵循k设置。我们在ImageNet上使用的确切网络配置如表1所示。

表1:ImageNet的DenseNet体系结构。所有网络的增长率为k = 32。注意,表中显示的每个“conv”层对应的序列是BN-ReLU-Conv。

实验结果

表2:CIFAR和SVHN数据集的错误率(%)。k 表示网络的增长率。超过所有竞争方法的结果是粗体的,总体上最好的结果是蓝色的。“+”表示标准数据增强(translation和/或mirroring)。*表示我们自己运行的结果.  结果所有不增加数据的DenseNets的结果(C10, C100, SVHN)都是使用Dropout得到的。与ResNet相比,DenseNets在使用更少参数的情况下实现了更低的错误率。在没有数据扩充的情况下,DenseNet在很大程度上表现得更好。

                                               表3:使用单crop/ 10-crop测试的ImageNet验证集的前1和前5个错误率。

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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值