【读点论文】Densely Connected Convolutional Networks用残差连接大力出奇迹,进一步叠加特征图,以牺牲显存为代价

Densely Connected Convolutional Networks

Abstract

  • 如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则卷积网络可以训练得更深入、更准确和有效。
  • 在本文中,接受了这种观察,并介绍了密集卷积网络(DenseNet),它以前馈方式将每一层与每一层连接起来。
  • 传统的L层卷积网络有L个连接——每层与其后续层之间有一个连接——而本文的网络有 L ( L + 1 ) 2 \frac{L(L+1)}{2} 2L(L+1)个直接连接。对于每一层,所有在前层的特征图被用作输入,并且它自己的特征图被用作所有后续层的输入
  • DenseNets有几个引人注目的优点:它们缓解了消失梯度问题,加强了特征传播,鼓励特征重用,并大大减少了参数的数量。在四个极具竞争力的目标识别基准任务(CIF AR-10、CIF AR-100、SVHN和ImageNet)上评估了本文提出的架构。
  • DenseNets在大多数方面都取得了显著的进步,同时只需要较少的计算就能实现高性能。
  • 代码和预训练模型可从以下网址获得:GitHub - liuzhuang13/DenseNet: Densely Connected Convolutional Networks, In CVPR 2017 (Best Paper Award).
  • 论文地址:[1608.06993] Densely Connected Convolutional Networks (arxiv.org)
  • DenseNet是CVPR2017的最佳论文,由康奈尔大学黄高博士(Gao Huang)、清华大学本科生刘壮(Zhuang Liu)、Facebook 人工智能研究院研究科学家 Laurens van der Maaten 及康奈尔大学计算机系教授 Kilian Q. Weinberger 所作。
  • 在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。
  • ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”(shortcuts,skip connection),这有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。DenseNet模型,它的基本思路与ResNet一致,但是它建立的是前面所有层与后面层的密集连接(dense connection),它的名称也是由此而来。
  • DenseNet的另一大特色是通过特征在channel上的连接来实现特征重用(feature reuse)。这些特点让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能,DenseNet也因此斩获CVPR 2017的最佳论文奖。本篇文章首先介绍DenseNet的原理以及网路架构,然后讲解DenseNet在Pytorch上的实现。
  • DenseNet模型,它的基本思路与ResNet一致,也是建立前面层与后面层的短路连接,不同的是,但是它建立的是前面所有层与后面层的密集连接。DenseNet还有一个特点是实现了特征重用。这些特点让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能。

Introduction

  • 卷积神经网络(CNN)已经成为视觉对象识别的主要机器学习方法。虽然它们最初是在20多年前引入的[Backpropagation applied to handwritten zip code recognition],但计算机硬件和网络结构的改进直到最近才使得真正深度的CNN的训练成为可能。最初的LeNet5 [Gradientbased learning applied to document recognition]由5层组成,VGG有19层[Imagenet large scale visual recognition challenge],仅在去年Highway Networks[Training very deep networks]和Residual Networks(resnet)才超过了100层怕瓶颈。
  • 随着CNN变得越来越深入,一个新的研究问题出现了:随着关于输入或梯度的信息通过许多层,当它到达网络的末端(或起点)时,它可能会消失并“wash out”
  • 许多工作解决了这个或相关的问题。ResNets和Highway Networks通过恒等连接将信号从一层旁路到下一层。Stochastic depth通过在训练期间随机dropout层来缩短ResNets,以允许更好的信息和梯度流动。FractalNets用不同数量的卷积块重复组合几个平行层序列,以获得大的标称深度,同时在网络中保持许多短路径。尽管这些不同的方法在网络拓扑和训练过程上有所不同,但它们都有一个共同的关键特征: 它 们 创 建 了 从 早 期 层 到 后 期 层 的 旁 路 路 径 \textcolor{red}{它们创建了从早期层到后期层的旁路路径}
  • 在本文中,提出了一种架构,将这种见解提炼为一种简单的连接模式:为了确保网络中各层之间的最大信息流,将所有层(具有匹配的特征地图大小)直接相互连接
  • 为了保持前馈性质,每一层从所有前面的层获得额外的输入,并将它自己的特征映射传递给所有后面的层。
  • 下图示意性地展示了这种布局。至关重要的是,与ResNets相比,从来不在将特征传递到层之前通过求和来组合它们;相反,通过连接它们来组合功能。因此,第L层有L个输入,包括所有前面卷积块的特征图。它自己的特征映射被传递到所有$L- \mathcal{l} 后 续 层 。 这 在 L 层 网 络 中 引 入 了 后续层。这在L层网络中引入了 L\frac{L(L+1)}{2}$个连接,而不是传统架构中的L。由于其密集的连接模式,将本文的方法称为密集卷积网络(DenseNet)。
    • 在这里插入图片描述

    • 5层致密块体,增长率k = 4。每一层都将所有前面的特征图作为输入。

  • 这种密集连接模式的一个可能与直觉相反的效果是,它比传统的卷积网络需要更少的参数,因为 不 需 要 重 新 学 习 冗 余 的 特 征 映 射 \textcolor{red}{不需要重新学习冗余的特征映射} 。传统的前馈架构可以被视为具有状态的算法,该算法从一层传递到另一层。每一层从其前一层读取状态,并写入后续层。它改变了状态,但也传递了需要保存的信息。
  • ResNets 通过附加的恒等变换使这种信息保持显式化。ResNets的最新变化表明,许多层贡献很小,实际上在训练期间可以随机dropout。这使得resnet的状态类似于(展开的)递归神经网络,但是resnet的参数数量要大得多,因为每层都有自己的权重。
  • 本文提出的DenseNet架构明确区分了添加到网络中的信息和保留的信息。DenseNet层非常窄(例如,每层12个过滤器),仅将一小组特征图添加到网络的“集体知识”中,并保持残差的特征图不变,最终分类器基于网络中的所有特征图做出决定。
  • 除了更好的参数效率之外,DenseNets的一大优势是改善了整个网络的信息流和梯度,这使得它们易于训练。每一层都可以直接访问损失函数和原始输入信号的梯度,从而实现隐含的深度监督学习。这有助于训练更深层次的网络架构。此外,还观察到密集连接具有正则化效应,这减少了对较小训练集大小的任务的过度拟合。
  • 本文在四个极具竞争力的基准数据集(CIFAR-10、CIFAR-100、SVHN和ImageNet)上评估了DenseNets。本文的模型需要的参数比现有算法少得多,但精度相当。此外,在大多数基准测试任务上,本文明显优于2015年及以前最先进的结果。
  • ResNet通过前层与后层的“短路连接”(Shortcuts),加强了前后层之间的信息流通,在一定程度上缓解了梯度消失现象,从而可以将神经网络搭建得很深,具体可以参考ResNet残差网络及变体详解。更进一步,这次的主角DenseNet最大化了这种前后层信息交流,通过建立前面所有层与后面层的密集连接,实现了特征在通道维度上的复用,不但减缓了梯度消失的现象,也使其可以在参数与计算量更少的情况下实现比ResNet更优的性能。

Related Work

  • 自从神经网络最初被发现以来,对网络结构的探索一直是神经网络研究的一部分。最近神经网络的重新流行也复兴了这个研究领域。现代网络中不断增加的层数放大了体系结构之间的差异,并激发了对不同连接模式的探索和对旧研究思想的重新审视。
  • 类似于本文提出的密集网络布局的级联结构已经在20世纪80年代的神经网络文献中进行了研究。他们的开创性工作专注于以逐层方式训练的完全连接的多层感知机。最近,有人提出用批量梯度下降法训练全连接级联网络[Neural network learning without backpropagation]。尽管这种方法在小数据集上有效,但它只适用于只有几百个参数的网络。
  • 在[Hypercolumns for object segmentation and fine-grained localization,FCN,Pedestrian detection with unsupervised multi-stage feature learning,Multi-scale recognition with dagcnns]中,已经发现通过跳跃连接利用CNN中的多级特征对于各种视觉任务是有效的。平行于我们的工作,[Adanet: Adaptive structural learning of artificial neural networks]推导了一个纯理论框架的网络与跨层连接类似于本文的。
  • Highway Networks是第一个提供有效训练超过100层的端到端网络的架构。使用旁路和门控单元,可以毫不费力地优化具有数百层的Highway Networks。 旁 路 路 径 被 认 为 是 简 化 这 些 非 常 深 的 网 络 的 训 练 的 关 键 因 素 \textcolor{red}{旁路路径被认为是简化这些非常深的网络的训练的关键因素} 。ResNets 进一步支持了这一点,在ResNets中,纯恒等映射被用作旁路路径。ResNets在许多具有挑战性的图像识别、定位和检测任务上取得了令人印象深刻的破纪录的性能,如ImageNet和COCO对象检测。
  • stochastic depth 被提出作为一种成功训练1202层ResNet的方法。随机深度通过在训练期间随机dropout层来改进深度残差网络的训练。这表明并不是所有的层都是需要的,并强调在深层(残余)网络中有大量的冗余。本文的论文部分受到了这一观察的启发。具有预激活功能的ResNets也有助于训练超过1000层的先进网络[Identity mappings in deep residual networks]。
  • 使网络更深的正交方法(例如,借助于跳跃连接)是增加网络宽度。GoogLeNet [Going deeper with convolutions,Rethinking the inception architecture for computer vision]使用“初始模块”,该模块将不同大小的过滤器产生的特征图连接起来。在[Resnet in resnet]中,提出了具有宽广义残差块的ResNets的变体。事实上,只要深度足够,简单地增加每层ResNets中的过滤器数量就可以提高其性能[Wide residual networks]。FractalNets还使用广泛的网络结构在几个数据集上取得了有竞争力的结果[Fractalnet]。
  • DenseNets不是从极深或极宽的体系结构中提取特征图的能力,而是 通 过 特 征 重 用 来 开 发 网 络 的 潜 力 \textcolor{red}{通过特征重用来开发网络的潜力} ,产生易于训练和高度参数化的精简模型。连接由不同层学习的特征图增加了后续层输入的变化并提高了效率。这是DenseNets和ResNets的主要区别。与同样连接来自不同层的特征的初始网络googlenets相比,DenseNets更简单和更有效。
  • 还有其他一些值得注意的网络架构创新,它们已经产生了竞争结果。 Network in Network(NIN)结构在卷积层的滤波器中包括微型多层感知器,以提取更复杂的特征。在深度监督网络(DSN) 中,内部层由辅助分类器直接监督,这可以加强早期层接收的梯度。梯形网络[Deconstructing the ladder network architecture,Semi-supervised learning with ladder networks]将横向连接引入自动编码器,在半监督学习任务中产生令人印象深刻的准确性。
  • 在[Deeply-fused nets]中,提出了深度融合网络(dfn)以通过组合不同基础网络的中间层来改善信息流。增加具有最小化重建损失的路径的网络也被证明可以改善图像分类模型[Augmenting supervised neural networks with unsupervised objectives for large-scale image classification]。

DenseNets

  • 考虑通过卷积网络的单个图像 x 0 x_0 x0。该网络包括 L 层,每层实现非线性变换 H l ( ⋅ ) H_l(·) Hl(),其中 l l l 对该层进行索引。 H l ( ⋅ ) H_l(·) Hl()可以是诸如批量标准化(BN)、校正线性单元(ReLU)、Pooling或卷积(Conv)等操作的复合函数。本文将第 l l l 层的输出表示为 x l x_l xl
  • 在这里插入图片描述

ResNets.

  • 传统的卷积前馈网络将第 l l l 层的输出作为输入连接到第 ( l + 1 ) t h (l+1)^{th} (l+1)th层[Imagenet classification with deep convolutional neural networks],这产生了以下层转换: x l = H l ( x l — 1 ) x_l= H_l(x_{l—1}) xl=Hl(xl1)。ResNets添加了一个跳跃连接,它使用一个恒等映射函数绕过非线性变换:

    • x l = H l ( x l − 1 ) + x l − 1 , ( 1 ) x_l=H_l(x_{l-1})+x_{l-1},(1) xl=Hl(xl1)+xl1,(1)
  • ResNets的一个优点是梯度可以直接通过单位函数从后面的层流到前面的层。然而,恒等函数和 H l H_l Hl的输出通过求和来组合,这可能阻碍网络中的信息流。

Dense connectivity.

  • 为了进一步改善各层之间的信息流,本文提出了一种不同的连接模式:引入了从任何一层到所有后续层的直接连接。下图示意性地说明了最终DenseNet的布局。因此,第 l l l 层接收所有前面层的特征映射, x 0 , . . . x l — 1 x_0,...x_{l—1} x0...xl1,作为输入:

    • x l = H l ( [ x 0 , x 1 , . . . , x l − 1 ] ) , ( 2 ) x_l=H_l([x_0,x_1,...,x_{l-1}]),(2) xl=Hl([x0,x1,...,xl1]),(2)
  • 其中 [ x 0 , x 1 , . . . , x l − 1 ] [x_0,x_1,...,x_{l-1}] [x0x1...xl1]指的是在层 0 , . . . , l − 1 0,..., l−1 0...,l1.由于其密集的连通性,本文将这种网络架构称为密集卷积网络(DenseNet)。为了便于实现,本文将等式(2)中 H l ( ⋅ ) H_l(·) Hl()的多个输入连接起来转化为单个张量。

Composite function.

  • 受[Identity mappings in deep residual networks]的启发,本文将 H l ( ⋅ ) H_l(·) Hl()定义为三个连续操作的复合函数:批量归一化(BN) ,然后是校正线性单元(ReLU) 和3 × 3卷积(Conv)。

Pooling layers.

  • 等式(2)中使用的串联运算。当特征图的尺寸改变时是不可行的。然而,卷积网络的一个重要部分是改变特征图大小的下采样层。为了在本文的架构中促进下采样,本文将网络分成多个密集连接的密集块;参见下图。
    • 在这里插入图片描述

    • A deep DenseNet with three dense blocks.

    • 两个相邻块之间的层被称为过渡层,并通过卷积和池化来改变特征地图的大小。

  • 本文将块之间的层称为过渡层,它进行卷积和池化。本文实验中使用的过渡层由一个批处理归一化层和一个1×1卷积层组成,后面是一个2×2平均池层。
  • Transition Layer将不同DenseBlock之间进行连接的模块,主要功能是整合上一个DenseBlock获得的特征,并且缩小上一个DenseBlock的宽高,在Transition Layer中,一般会使用一个步长为2的AveragePooling2D缩小特征层的宽高。

Growth rate.

  • 如果每个函数 H l H_l Hl产生k个特征映射,则第 l l l 层具有 k 0 + k ∗ ( l − 1 ) k_0+k*(l-1) k0+k(l1)输入特征映射,其中 k 0 k_0 k0是输入层中的通道数。DenseNet和现有网络架构之间的一个重要区别是DenseNet可以具有非常窄的层,例如k = 12。 本 文 将 超 参 数 k 称 为 网 络 的 增 长 率 \color{purple}{本文将超参数k称为网络的增长率} k
  • 本文表示相对较小的增长率足以在我们测试的数据集上获得最先进的结果。对此的一种解释是,每一层都可以访问其块中所有先前的特征图,因此可以访问网络的“集体知识”。人们可以将特征图视为网络的全局状态。每一层将它自己的k个特征地图添加到该状态。
  • 增长率决定了每一层对全局状态贡献多少新信息。全局状态一旦写入,就可以从网络内的任何地方访问,并且与传统的网络体系结构不同,不需要逐层复制
  • 假如输入特征图的channel为 K 0 K_0 K0,那么第 l 层的channel数就为 K 0 + ( l − 1 ) K K_0+(l-1)K K0+(l1)K,将其称之为网络的增长率(growth rate)。因为每一层都接受前面所有层的特征图,即特征传递方式是直接将前面所有层的特征concat后传到下一层,所以这个K 不能很大,要注意这个K的实际含义就是这层新提取出的特征。
    • 在这里插入图片描述

Bottleneck layers.

  • 虽然每一层只产生k个输出特征图,但它通常有更多的输入。在[Rethinking the inception architecture for computer vision,Deep residual learning for image recognition]中已经指出,可以在每个3×3卷积之前引入1×1卷积作为瓶颈层,以减少输入特征图的数量,从而提高计算效率。本文发现这种设计对DenseNet特别有效,将本文的网络称为具有这样一个瓶颈层的网络,即BN-ReLU-conv(1× 1)-BN-ReLU-conv(3×3)版本的 H l H_l Hl,称为DenseNet-B。在本文的实验中,让每个1×1卷积产生4k特征图。

  • Dense Block是DenseNet的一个基本模块,这里从一般的神经网络说起:

    • 在这里插入图片描述
  • 上图是标准神经网络的一个图,输入和输出的公式是 X l = H l ( X l − 1 ) X_l = H_l(X_{l-1}) Xl=Hl(Xl1),其中 H l H_l Hl 是一个组合函数,通常包括BN、ReLU、Pooling、Conv操作, X l − 1 X_{l-1} Xl1是第 l 层输入的特征图, X l X_{l} Xl是第 l 层输出的特征图。

  • 而对于DenseNet,则是采用跨通道concat的形式来连接,用公式来说则是 X_l = H l ( X 0 , X 1 , . . . , X l − 1 ) H_l(X_0,X_1,...,X_{l-1}) Hl(X0,X1,...,Xl1),这里要注意所有的层的输入都来源于前面所有层在channel维度的concat。

    • 在这里插入图片描述
  • 在刚才Dense Block中的非线性组合函数是指BN+ReLU+3x3 Conv的组合,尽管每前进一层,只产生K张新特征图,但还是嫌多,于是在进行3×3卷积之前先用一个 1×1卷积将输入的特征图个数降低到 4*k,发现这个设计对于DenseNet来说特别有效。所以本文的非线性组合函数就变成了BN+ReLU+1x1 Conv+BN+ReLU+3x3 Conv的结构,由此形成的网络结构我们称之为DenseNet-B。

    • 在这里插入图片描述

Compression.

  • 为了进一步提高模型的紧凑性,本文可以减少过渡层的特征映射的数量。如果密集块包含m个特征映射,本文让下面的过渡层生成floor(θm)输出特征映射,其中0 < θ ≤1被称为压缩因子。当θ = 1时,过渡层上的特征映射数保持不变。将θ <1的DenseNet称为DenseNet-C,并在实验中设置θ = 0.5。当使用θ < 1的瓶颈层和过渡层时,将本文的模型称为DenseNet-BC。

Implementation Details.

  • 在除ImageNet之外的所有数据集上,本文实验中使用的DenseNet有三个密集块,每个块都有相同数量的层。在进入第一个密集块之前,对输入图像执行与16个(或DenseNet-BC增长率的两倍)输出通道的卷积。对于核大小为3×3的卷积层,输入的每一边都用一个像素进行零填充,以保持特征图大小固定(same padding)。

  • 使用1×1卷积,然后使用2×2平均池作为两个相邻密集块之间的过渡层。在最后一个密集块的末尾,执行全局平均池化,然后附加softmax分类器。三个密集块中的特征图大小分别为32× 32、16×16和8×8。本文用基本的DenseNet结构进行实验,配置为{L = 40,k = 12}、{L = 100,k = 12}和{L = 100,k = 24}。对于DenseNetBC,评估了具有配置{L = 100,k = 12}、{L= 250,k = 24}和{L= 190,k = 40}的网络。

  • 在ImageNet上的实验中,本文在224×224的输入图像上使用具有4个密集块的DenseNet-BC结构。初始卷积层包括大小为7×7、步幅为2的2*k个卷积;所有其他层中的特征映射的数量也遵循设置k。本文在ImageNet上使用的确切网络配置如下表所示。

    • 在这里插入图片描述

    • ImageNet的DenseNet架构。所有网络的增长率都是k = 32。注意,表中所示的每个“conv”层对应于BN-ReLU-Conv序列。

Transition layer

  • 两个相邻的Dense Block之间的部分被称为Transition层,具体包括BN、ReLU、1×1卷积、2×2平均池化操作。通过1×1卷积层来减小通道数,并使用步幅为2的平均池化层减半高和宽,从而进一步降低模型复杂度

Experiments

  • 本文在几个基准数据集上实证证明了DenseNet的有效性,并与最先进的架构进行了比较,特别是与ResNet及其变体进行了比较。

Datasets

CIFAR.
  • 有两个CIFAR数据集[Learning multiple layers of features from tiny images]由32×32像素的彩色自然图像组成。CIFAR-10 (C10)由从10类中提取的图像和从100类中提取的CIFAR-100 (C100)组成。训练集和测试集分别包含50000和10000幅图像,本文提供5000幅训练图像作为验证集。本文采用一种标准的数据扩充方案(镜像/移位),广泛用于这两个数据集[resnet,stochastic depth ,Fractalnet,Network in network,Fitnets,Deeplysupervised nets,Striving for simplicity: The all convolutional net,Training very deep networks.]。用数据集名称末尾的“+”标记(例如C10+)来表示这种数据扩充方案。对于预处理,使用通道平均值和标准偏差对数据进行归一化。对于最终运行,使用所有50000个训练图像,并在训练结束时报告最终测试误差。
SVHN
  • 街景房屋编号(SVHN)数据集包含32×32彩色数字图像。训练集中有73257幅图像,测试集中有26032幅图像,用于附加训练的图像有531131幅。根据常见实践,使用所有训练数据,而不进行任何数据扩充,并从训练集中分离出一个具有6000个图像的验证集。在训练期间选择验证误差最小的模型,并报告测试误差。遵循[Wide residual networks.]并将像素值除以255,使其在[0,1]范围内。
ImageNet.
  • ILSVRC 2012分类数据集包含120万张用于训练的图像和50000张用于验证的图像,来自1000个类别。我们对训练图像采用与[Training and investigating residual nets]中相同的数据增强方案,并在测试时应用尺寸为224×224的单个作物或10个作物。在[Deep residual learning for image recognition]之后,报告了验证集上的分类错误。

Training

  • 所有网络都使用随机梯度下降(SGD)进行训练。在CIFAR和SVHN上,分别使用批量大小64训练300和40个epoch。初始学习率设置为0.1,并在训练时段总数的50%和75%时除以10。在ImageNet上,本文训练90个epoch的模型,批量大小为256。学习率最初设置为0.1,在第30和60阶段降低10倍。注意,DenseNet的简单实现可能包含内存低效。为了减少GPU上的内存消耗,请参阅关于DenseNets高效内存实现的技术报告[Memory-efficient implementation of densenets]。

  • 根据[Training and investigating residual nets],使用10e−4的权重衰减,Nesterov动量为0.9,无阻尼。采用引入的权重初始化。对于没有数据扩充的三个数据集,即C10、C100和SVHN,在每个卷积层(第一个除外)之后添加一个dropout层,并将dropout率设置为0.2。对于每个任务和模型设置,只评估一次测试错误。

Classification Results on CIFAR and SVHN

  • 用不同的深度L和增长率k训练DenseNet。下表显示了CIFAR和SVHN的主要结果。为了突出总体趋势,用粗体标记了所有优于现有最先进水平的结果,并用蓝色标记了总体最佳结果。

    • 在这里插入图片描述

    • CIFAR和SVHN数据集的错误率(%)。k表示网络的增长率。超过所有竞争方法的结果是大胆的,而总体最佳结果是蓝色的。“+”表示标准数据扩充(转换和/或镜像)。∗ 表示自己运行的结果。

    • 使用Dropout获得没有数据增强的DenseNet(C10、C100、SVHN)的所有结果。DenseNet在使用比ResNet更少的参数的同时实现了更低的错误率。如果没有数据扩充,DenseNet的性能会大大提高。

  • 精确:最明显的趋势可能来自上表的最下面一行,这表明L=190和k=40的DenseNet BC在所有CIFAR数据集上均优于现有技术。其在C10+上的错误率为3.46%,在C100+上为17.18%,显著低于宽ResNet架构实现的错误率。

  • 在C10和C100(没有数据扩充)上的最佳结果甚至更令人鼓舞:两者都比具有下降路径正则化的FractalNet低近30%。在SVHN上,L=100和k=24的DenseNet也超过了宽ResNet目前取得的最佳结果。然而,250层DenseNet BC并没有比其更短的同类产品进一步提高性能。这可以通过SVHN是一项相对容易的任务来解释,并且极深的模型可能会过度拟合到训练集。

  • 容量:如果没有压缩层或瓶颈层,一般趋势是随着L和k的增加,DenseNet的性能会更好。将这主要归因于模型容量的相应增长。C10+和C100+柱最能说明这一点。在C10+上,随着参数数量从1.0M增加到27.2M,误差从5.24%下降到4.10%,最后下降到3.74%。在C100+上,观察到类似的趋势。这表明DenseNet可以利用更大和更深模型的更强大的代表性。它还表明,它们不会遭受过度拟合或残差网络的优化困难。

  • 参数效率。上表中的结果表明,DenseNet比替代架构(特别是ResNets)更有效地利用参数。在过渡层具有瓶颈结构和尺寸减小的DenseNetBC是特别有效的参数。

  • 例如,本文的250层模型只有15.3M个参数,但它始终优于其他模型,例如FractalNet和Wide ResNets,这些模型的参数超过30M。本文还强调,L=100和k=12的DenseNet BC与1001层预激活ResNet相比,使用更少90%的参数,实现了相当的性能(例如,C10+上的4.51%对4.62%的误差,C100+上的22.27%对22.71%的误差)。

  • 下图(右面板)显示了C10+上这两个网络的训练损失和测试错误。1001层深的ResNet收敛到较低的训练损失值,但具有类似的测试误差。我们将在下面更详细地分析这种影响。

    • 在这里插入图片描述

    • 左图:DenseNet变化之间C10+的参数效率比较。中间:DenseNet BC和(预激活)ResNets之间的参数效率比较。DenseNet BC需要约为ResNet的1/3的参数才能达到可比的精度。右图:1001层预激活ResNet(参数超过10M)和100层DenseNet(参数仅为0.8M)的训练和测试曲线。

  • 过度拟合:更有效地使用参数的一个积极副作用是DenseNet不太容易过度拟合。本文观察到,在没有数据扩充的数据集上,DenseNet架构比先前工作的改进尤为显著。在C10上,改进表示误差从7.33%相对减少了29%至5.19%。在C100上,减少约30%,从28.20%降至19.64%。

  • 在本文的实验中,观察到了单个设置中的潜在过度拟合:在C10上,通过将k=12增加到k=24产生的参数的4倍增长导致误差从5.77%适度增加到5.83%。DenseNet BC瓶颈和压缩层似乎是应对这一趋势的有效方法。

Classification Results on ImageNet

  • 在ImageNet分类任务中评估了具有不同深度和增长率的DenseNet BC,并将其与最先进的ResNet架构进行了比较。为了确保两种体系结构之间的公平比较,在[Training and investigating residual nets]之前采用ResNet公开可用的Torch实现,消除了所有其他因素,如数据预处理和优化设置的差异。

  • 只需将ResNet模型替换为DenseNetBC网络,并保持所有实验设置与ResNet使用的设置完全相同。

    • 在这里插入图片描述

    • ImageNet验证集的前1和前5错误率,单作物/10作物测试。

  • 在上表中报告了ImageNet上DenseNet的单作物和10作物验证错误。下图显示了DenseNet和ResNets的单作物前1位验证错误与参数数量(左)和FLOP(右)的关系。图中所示的结果表明,DenseNet的性能与最先进的ResNets相当,同时需要显著更少的参数和计算才能实现可比的性能。

    • 在这里插入图片描述

    • ImageNet验证数据集上的DenseNet和ResNets top 1错误率(单作物测试)与测试期间学习的参数(左)和FLOP(右)的比较。

  • 例如,具有20M参数的DenseNet-201模型与具有超过40M参数的101层ResNet模型产生类似的验证误差。从右侧面板可以观察到类似的趋势,该面板将验证错误绘制为FLOP数量的函数:DenseNet需要与ResNet-50相同的计算量,而ResNet-101需要两倍的计算量。

  • 值得注意的是,本文的实验设置暗示使用针对ResNets而非DenseNet优化的超参数设置。可以想象,更广泛的超参数搜索可以进一步提高ImageNet上DenseNet的性能。

以DenseNet-121为例,看下其网络构成:
  • DenseNet-121由121层权重层组成,其中4个Dense block,共计2×(6+12+24+16) = 116层权重,加上初始输入的1卷积层+3过渡层+最后输出的全连接层,共计121层;

  • 训练时采用了DenseNet-BC结构,压缩因子0.5,增长率k = 32;

  • 初始卷积层有2k个通道数,经过7×7卷积将224×224的输入图片缩减至112×112;Denseblock块由layer堆叠而成,layer的尺寸都相同:1×1+3×3的两层conv(每层conv = BN+ReLU+Conv);Denseblock间由过渡层构成,过渡层通过1×1卷积层来减小通道数,并使用步幅为2的平均池化层减半高和宽。最后经过全局平均池化 + 全连接层的1000路softmax得到输出。

Discussion

  • 从表面上看,DenseNet与ResNets非常相似:等式(2)与等式(1)的不同之处仅在于Hl(·)的输入是串联的,而不是求和的。然而,这一看似微小的修改所带来的影响导致了两种网络架构的显著不同的行为。

  • 更强的梯度流动

    • DenseNet可以说是一种隐式的强监督模式,因为每一层都建立起了与前面层的连接,误差信号可以很容易地传播到较早的层,所以较早的层可以从最终分类层获得直接监管(监督)。

    • 在这里插入图片描述

  • 能够减少参数总量

    • 在这里插入图片描述
  • 保存了低维度的特征

    • 在这里插入图片描述

    • 在标准的卷积网络中,最终输出只会利用提取最高层次的特征。

    • 在这里插入图片描述

    • 在DenseNet中,它使用了不同层次的特征,倾向于给出更平滑的决策边界。这也解释了为什么训练数据不足时DenseNet表现依旧良好。

  • DenseNet的不足在于由于需要进行多次Concatnate操作,数据需要被复制多次,显存容易增加得很快,需要一定的显存优化技术。另外,DenseNet是一种更为特殊的网络,ResNet则相对一般化一些,因此ResNet的应用范围更广泛。

Model compactness.

  • 作为输入串联的直接结果,所有后续层都可以访问由任何DenseNet层学习的特征图。这鼓励了整个网络中的功能重用,并导致了更紧凑的模型。

  • 上上图中左侧的两幅图显示了一项实验的结果,该实验旨在比较DenseNet(左侧)和可比ResNet架构(中间)的所有变体的参数效率。在C10+上训练具有不同深度的多个小型网络,并将其测试精度绘制为网络参数的函数。

  • 与其他流行的网络架构(如AlexNet或VGG net)相比,具有预激活的ResNets使用更少的参数,同时通常获得更好的结果。因此,将DenseNet(k=12)与此架构进行比较。DenseNet的训练设置与上一节中的相同。

  • 该图显示,DenseNet BC始终是DenseNet的参数效率最高的变体。此外,为了达到相同的精度水平,DenseNet BC只需要ResNets(中间图)大约1/3的参数。该结果与在上图中展示的ImageNet上的结果一致。上上图中的右图显示,仅具有0.8M可训练参数的DenseNet BC能够实现与具有10.2M参数的1001层(预激活)ResNet相当的精度。

Implicit Deep Supervision.

  • 密集卷积网络精度提高的一种解释可能是,各个层通过较短的连接从损耗函数接收额外的监督。人们可以将DenseNet解释为执行某种“深度监督”。深度监督的好处以前已经在深度监督网络(DSN)中得到了证明,该网络在每个隐藏层上都附加了分类器,强制中间层学习辨别特征。

  • DenseNet以隐式方式执行类似的深度监管:网络顶部的单个分类器通过最多两个或三个过渡层向所有层提供直接监管。然而,由于在所有层之间共享相同的损失函数,DenseNet的损失函数和梯度基本上不那么复杂。

Stochastic vs. deterministic connection.

  • 密集卷积网络和残差网络的随机深度正则化之间存在有趣的联系。在随机深度中,残差网络中的层被随机dropout,这在周围层之间创建了直接连接。由于池化层从未被丢弃,因此网络产生了与DenseNet类似的连接模式:如果所有中间层都被随机dropout,那么相同池化层之间的任何两个层都很可能直接连接。尽管这些方法最终大相径庭,但DenseNet对随机深度的解释可能会为这种正则化器的成功提供见解。

Feature Reuse.

  • 根据设计,DenseNet允许层访问其所有先前层的特征图(尽管有时通过过渡层)。我们进行了一项实验,以调查训练有素的网络是否利用了这一机会。首先在C10+上训练一个密度网,L=40,k=12。对于一个块内的每个卷积层,计算分配给与层s连接的平均(绝对)权重。下图显示了所有三个密度块的热图。平均绝对权重用作卷积层对其先前层的依赖性的替代。位置(',s)中的红点表示图层“平均而言,强烈使用了之前生成的s图层的特征图。从图中可以看出以下几点:

    • 所有层将其权重分布在同一块中的多个输入上。这表明,早期层提取的特征实际上直接被同一密集区块的深层使用。

    • 过渡层的权重还将其权重分布在前一个密集块内的所有层上,指示通过很少的间接从DenseNet的第一层到最后一层的信息流。

    • 第二和第三密集块内的层一致地将最小权重分配给过渡层(三角形的顶行)的输出,表明过渡层输出许多冗余特征(平均权重较低)。这与DenseNet BC的强大结果一致,在那里,这些输出被压缩。

    • 尽管最后的分类层(如右图所示)也使用了整个密集区块的权重,但似乎集中于最终的特征图,这表明网络中可能会产生一些更高级的特征。

      • 在这里插入图片描述

      • 训练的DenseNet中卷积层的平均绝对滤波器权重。像素(s,')的颜色编码将卷积层s与密集块内的’连接起来的权重的平均L1范数(通过输入特征图的数量归一化)。由黑色矩形突出显示的三列对应于两个过渡层和分类层。第一行对连接到密集块的输入层的权重进行编码。

Conclusion

  • 本文提出了一种新的卷积网络架构,称之为密集卷积网络(DenseNet)。它引入了具有相同特征图大小的任意两个图层之间的直接连接。本文发现,DenseNet可以自然扩展到数百层,同时不存在优化困难。在本文的实验中,随着参数数量的增加,DenseNet趋向于在精度上产生一致的提高,而没有任何性能退化或过度拟合的迹象。

  • 在多种设置下,它在几个竞争激烈的数据集上取得了最先进的结果。此外,DenseNet需要更少的参数和更少的计算来实现最先进的性能。由于本文在研究中采用了针对残差网络优化的超参数设置,本文认为,通过更详细地调整超参数和学习速率计划,可以进一步提高DenseNet的准确性。

  • 在遵循简单的连接规则的同时,DenseNet自然地集成了身份映射、深度监管和多样化深度的属性。它们允许在整个网络中重复使用特征,因此可以学习更紧凑的模型,根据本文的实验,也可以学习更精确的模型。由于其紧凑的内部表示和减少的特征冗余,DenseNet可能是基于卷积特征的各种计算机视觉任务的良好特征提取器,例如[Deep manifold traversal,A neural algorithm of artistic style]。本文计划在未来的工作中与DenseNet一起研究这种功能转移。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值