DenseNet

论文地址:
https://arxiv.org/pdf/1608.06993v5.pdf

文章目录

  • 简评
    • ResNet和DenseNet的比较
    • 参数更少
    • 每一层都可以直接从损失函数和原始输入信号获得梯度,对于训练更深的网络十分有利
    • DenseNet 在相对较小计算量和相对较小的模型大小的情况下,相比同等规模的 ResNet 的准确率提升会更明显
    • 连续的跨层 Concatenate 操作仅存在于每个 Dense Block 之内
    • 模型结构在训练过程中是否有一些技巧
  • 论文翻译
    • 2. Related Work
    • 3. DenseNets

简评

2016年的ResNet通过独具创造的设计,证明了加深网络层数和提升模型准确性是可以兼顾的,作为2017CVPR的 best paper,DenseNet对于ResNet是有借鉴的,但是更重要的是,DenseNet在借鉴的基础上,推陈出新,工作同样非常有创意且出色

基于CNN的网络结构变得更加深度,从AlexNet,VGG,GoogLeNet再到ResNet,我们从来没有放弃过对深度的追求,因为,加深网络确实会带来更丰富的表达,但是正如我在ResNet中说到的,越来越深的网络是不利于梯度在层之间的传播的,很容易发生梯度消失或者爆炸问题,为了解决这个问题,各个网络结构大显神通,

  • ResNet,Highway Net将信息从一层转发到下一层;
  • 随机深度网络通过在训练过程中随机drop掉一些层,缩短了ResNet,促进了信息和梯度信息更好的流动;
  • FractalNets构造的是一种分形网络,将多个具有不同卷积块数的并行层序列组合在一起,获得较大的名义深度,同时保持网络中的许多短路径。

尽管这些网络各有高招,但是都有一个关键特征:都具有从early layer到later layer的短路结构(short path)

顾名思义,DenseNet采用的是一种更密集的连接方式,是一个密集卷积神经网络,以前向传播方式,将每一层与其余层密集连接。这样做的目的是可以确保各层之间的信息流动达到最大,将所有层(特征图大小匹配)直接连接在一起,注意,这里是维度上相加。

  • 传统的卷积神经网络,L层一共会有L个连接,是一种一对一的模式;
  • 在DenseNet中,一个层会和其余所有层相连,因此,同样L层,会有L(L+1)/2个连接。

DenseNet的结构如下图所示,对于每一层而言,前面所有层的特征映射都用作输入,而它自己的特征映射也会用作后面所有层的输入。


DenseNet有以下几个显著特点:

(1)缓解了梯度消失问题

(2)增强了特征在网络间的传播

(3)实现和加强了特征重用

(4)有效减少了参数数量

ResNet和DenseNet的比较

  • 在ResNet中,层与层之间是元素相加的,
  • 但是在DenseNet中,不同层之间的连接方式变成了concatenating,即维度上的叠加。

参数更少

这种密集连接的模式,乍一看非常繁琐,会引入很多参数,其实完全相反,DenseNet比传统的卷积网络所需要的参数更少,因此密集连接带来了特征重用,不需要重新学习冗余的特征图,而且维度拼接的操作,带来了丰富的特征信息,利用更少的卷积就能获得很多的特征图。

传统的前向传播网络结构可以看做是状态在不同层的传递,每一层读取状态信息,并将其写入下一层,在这个过程中,状态将会发生变化但同时那些需要被保存的信息会继续传递下去,在ResNet中,通过添加shortcuts,显式的保存此信息。而在DenseNet中,明确区分了添加到网络中的信息和保留的信息,DenseNet层非常狭窄,只向网络的集合知识(collective knowledge)中添加一小组特征映射,并保持其余的特征映射不变,最终分类器根据网络中的所有特征映射做出决策。

每一层都可以直接从损失函数和原始输入信号获得梯度,对于训练更深的网络十分有利

除了更高效的参数,DenseNet还有一个大的优势就是它提升了整个网络中信息和梯度的流动,对训练十分有利。密集连接的结构,使得每一层都可以直接从损失函数和原始输入信号获得梯度,对于训练更深的网络十分有利,同时作者还提出,密集连接的网络结构有正则化的效果,能够减少过拟合风险。

DenseNet 在相对较小计算量和相对较小的模型大小的情况下,相比同等规模的 ResNet 的准确率提升会更明显

在小模型的场景下 DenseNet 有更大的优势。同时,作者也和近期发表的 MobileNet 这一针对移动端和小模型设计的工作进行了对比,结果显示 DenseNet(~400MFlops)可以在更小的计算量的情况下取得比 MobileNet(~500MFlops)更高的 ImageNet 分类准确率

连续的跨层 Concatenate 操作仅存在于每个 Dense Block 之内

每个 Dense Block 最后的特征图已经将当前 Block 内所有的卷积模块的输出拼接在一起,整体经过降采样之后送入了下一个 Dense Block,其中已经包含了这个 Dense Block 的全部信息,这样做也是一种权衡。

模型结构在训练过程中是否有一些技巧

https://arxiv.org/pdf/1707.06990.pdf

论文翻译

最近的工作表明,如果卷积网络在靠近输入的层和靠近输出的层之间包含更短的连接,则它们可以更深入、更准确、更有效地进行训练。

在本文中,我们将这一观察结果加以概括,并介绍了密集卷积网络(DenseNet),该网络以前馈的方式将每一层连接到其他每一层。

具有 Llayers 的传统卷积网络有 L 个连接——每层与其后续层之间有一个连接——我们的网络有 L(L+1)/2 个直接连接。

对于每一层,所有前面层的特征图用作输入,而它自己的特征图用作所有后续层的输入。

DenseNets 有几个引人注目的优点:

  • 它们减轻了梯度消失问题,
  • 加强了特征传播,
  • 鼓励特征重用,
  • 并大大减少了参数的数量。

我们在四个竞争激烈的对象识别基准任务(CIFAR-10、CIFAR-100、SVHN 和 ImageNet)上评估了我们提出的架构。 DenseNets 在大多数情况下获得了比最先进的显着改进,同时需要更少的计算来实现高性能。

最初的 LeNet5 [19] 由 5 层组成,VGG 有 19 个 [29],仅在去年 Highway Networks [34] 和 Residual Networks (ResNets) [11] 已经超过了 100 层的

随着 CNN 变得越来越深,一个新的研究问题出现了:

  • 当有关输入或梯度的信息经过许多层时,它可能会在到达网络的末尾(或开头)时消失和“冲刷”。

许多最近的出版物解决了这个或相关的问题。

  • ResNets [11] 和 Highway Networks [34] 通过身份连接将信号从一层旁路到下一层。
  • 随机深度 [13] 通过在训练期间随机删除层来缩短 ResNets,以允许更好的信息和梯度流。
  • FractalNets [17] 将多个并行层序列与不同数量的卷积块重复组合以获得较大的标称深度,同时在网络中保持许多短路径。

尽管这些不同的方法在网络拓扑和训练过程上有所不同,但它们都有一个关键特征:它们创建了从早期层到后期层的短路径。

在本文中,我们提出了一种架构,将这种见解提炼为一个简单的连接模式:

  • 为了确保网络中各层之间的最大信息流,我们将所有层(具有匹配的特征图大小)直接相互连接。

为了保持前馈性质,每一层从所有前面的层获得额外的输入,并将它自己的特征图传递给所有后续层。图 1 示意性地说明了这种布局。

至关重要的是,与 ResNets 相比:

  • 我们从不在将特征传递到层之前通过求和来组合特征;相反,我们通过连接特征来组合特征。

因此,

  • 第 L层 有 L 个输入,由所有前面卷积块的特征图组成。
  • 它自己的特征图被传递到所有 L 后续层。
  • 这在 L 层网络中引入了 L(L+1)2 个连接,
  • 而不是像在传统架构中那样只是 L。
  • 由于其密集的连接模式,我们将我们的方法称为密集卷积网络(DenseNet)。

这种密集连接模式的一个可能违反直觉的影响是它需要的参数比传统卷积网络少,因为不需要重新学习冗余特征图。

传统的前馈架构可以被视为具有状态的算法,该状态在层与层之间传递。每一层从其前一层读取状态并将其写入后续层。它会改变状态,但也会传递需要保留的信息。

ResNets [11] 通过附加身份转换使这种信息保留变得明确。
ResNets [13] 的最新变化表明,许多层的贡献很小,实际上可以在训练期间随机删除。这使得 ResNets 的状态类似于(展开)循环神经网络 [21],但 ResNets 的参数数量要大得多,因为每一层都有自己的权重。

我们提出的 DenseNet 架构明确区分添加到网络的信息和保留的信息。
DenseNet 层非常窄(例如,每层 12 个过滤器),仅向网络的“集体知识”添加一小组特征图网络并保持剩余的特征图不变——最终分类器根据网络中的所有特征图做出决定

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

2. Related Work

  • 在 1980 年代的神经网络文献中已经研究了类似于我们提出的密集网络布局的级联结构 [3]。 他们的开创性工作侧重于以逐层方式训练的全连接多层感知器。
  • 最近,提出了用批量梯度下降训练的全连接级联网络 [40]。 尽管对小数据集有效,但这种方法仅适用于具有几百个参数的网络。
  • 在 [9, 23, 31, 41] 中,已发现通过跳过连接利用 CNN 中的多级特征对各种视觉任务都很有效。
  • 与我们的工作并行,[1] 为具有类似于我们的跨层连接的网络推导出了一个纯理论框架。

高速公路网络 [34] 是最早提供一种方法来有效训练超过 100 层的端到端网络的架构之一。使用旁路路径和门控单元,可以毫不费力地优化具有数百层的公路网络。绕过路径被认为是简化这些非常深网络的训练的关键因素。这一点得到 ResNets [11] 的进一步支持,其中使用纯身份映射作为绕过路径。 ResNets 在许多具有挑战性的图像识别、定位和检测任务(例如 ImageNet 和 COCO 对象检测 [11])上取得了令人印象深刻、破纪录的性能。最近,随机深度被提出作为一种成功训练 1202 层 ResNet [13] 的方法。随机深度通过在训练过程中随机丢弃层来改进深度残差网络的训练。这表明可能不需要所有层,并强调深度(残差)网络中存在大量冗余。我们的论文部分受到了这一观察的启发。具有预激活功能的 ResNet 还有助于训练具有 > 1000 层的最先进网络 [12]

使网络更深的正交方法(例如,在跳过连接的帮助下)是增加网络宽度。 GoogLeNet [36, 37] 使用“Incep-tion 模块”,该模块连接由不同大小的过滤器生成的特征图。 在 [38] 中,提出了一种具有宽泛化残差块的 ResNets 变体。 事实上,只要深度足够,简单地增加每层 ResNet 中的过滤器数量就可以提高其性能 [42]。 FractalNets 还使用广泛的网络结构在多个数据集上取得了有竞争力的结果 [17]

DenseNets 不是从极深或极宽的架构中汲取表示能力,而是通过特征重用来利用网络的潜力,产生易于训练且参数效率高的压缩模型。 将不同层学习的特征图连接起来,增加了后续层输入的变化,提高了效率。 这构成了 DenseNets 和 ResNets 之间的主要区别。 与也连接来自不同层的特征的 Inception 网络 [36, 37] 相比,DenseNets 更简单、更高效。

还有其他值得注意的网络架构创新已经产生了竞争结果。

  • Network in Network (NIN) [22] 结构将微型多层感知器包含在卷积层的过滤器中,以提取更复杂的特征。
  • 在深度监督网络 (DSN) [20] 中,内部层由辅助分类器直接监督,可以增强较早层接收到的梯度。
  • 梯形网络 [27, 25] 将横向连接引入自编码器,在半监督学习任务中产生了令人印象深刻的准确性。
  • 在 [39] 中,提出了深度融合网络 (DFN),通过组合不同基础的中间层来改善信息流 网络。
  • 具有最小化重建损失的路径的网络增强也被证明可以改进图像分类模型 [43]

3. DenseNets

考虑通过卷积网络的单个图像 x0。

该网络由 L 层组成,每一层都实现了一个非线性变换 H(⋅)H(·)H(⋅)

H(·)可以是诸如批量归一化(BN)[14]、整流线性单元(ReLU)[6]、池化[19]或卷积(Conv)等操作的复合函数。 我们将 L 层的输出表示为 xlx_lxl​

ResNets. 传统的卷积前馈网络将 L 层的输出作为输入连接到 (L+1) 层 [16],从而产生以下层转换:x=H(x−1)。ResNets [11] 添加了一个跳过连接,它绕过了具有恒等函数的非线性变换:


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

Dense connectivity
为了进一步改善层之间的信息流,我们提出了一种不同的连接模式:我们引入了从任何层到所有后续层的直接连接。 图 1 示意性地说明了生成的 DenseNet 的布局。 因此,thlayer 接收所有先前层的特征图,[x0,...,xl−1][x_0,...,x_{l−1}][x0​,...,xl−1​],作为输入:


由于其密集的连接性,我们将这种网络架构称为密集卷积网络(DenseNet)。 为了便于实现,我们将 H(·) 的多个输入连接成一个张量。

复合功能
受 [12] 的启发,我们将 H(·) 定义为三个连续操作的复合函数:批量归一化 (BN) [14],然后是整流线性单元 (ReLU) [6] 和 3×3 卷积 (转化)。

池化层。当特征图的大小发生变化时,连接操作是不可行的。然而,卷积网络的一个重要部分是改变特征图大小的下采样层。为了在我们的架构中进行下采样,我们划分了网络 成多个密集连接的密集块;见图 2。我们将块之间的层称为过渡层,它进行卷积和池化。 我们实验中使用的过渡层由一个批量归一化层和一个 1×1 卷积层和一个 2×2 平均池化层组成。

DenseNet 和现有网络架构的一个重要区别是 DenseNet 可以有非常窄的层

我们将超参数称为网络的增长率。 我们在第 4 节中表明,相对较小的增长率足以在我们测试的数据集上获得最先进的结果。 对此的一种解释是,每一层都可以访问其块中的所有先前特征图,因此可以访问网络的“集体知识”。 人们可以将特征图视为网络的全局状态。 每个层都将自己的特征映射到此状态。 增长率调节每层对全局状态贡献多少新信息。 全局状态一旦写入,就可以从网络内的任何地方访问,并且与传统网络架构不同,不需要从层到层复制它。

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

压缩
为了进一步提高模型的紧凑性,我们可以减少过渡层的特征图的数量。

如果一个密集块包含 m 个特征图,我们让下面的过渡层生成 [θm] 个 coutput 特征图,其中 0<θ≤1 被称为压缩因子。当 θ=1 时,跨过渡层的特征图数量保持不变。

我们将θ<1的DenseNet称为DenseNet-C,我们在实验中设置θ=0.5。当同时使用θ<1的瓶颈层和过渡层时,我们将我们的模型称为DenseNet-BC。

实现细节。在除 Ima-geNet 之外的所有数据集上,我们实验中使用的 DenseNet 具有三个密集块,每个块都有相同的层数。在进入第一个密集块之前,对输入图像执行具有 16 个(或 DenseNet-BC 增长率的两倍)输出通道的卷积。对于内核大小为 3×3 的卷积层,输入的每一侧都填充了一个像素以保持特征图大小固定。我们使用 1×1 卷积,然后是 2×2 平均池化作为两个连续密集块之间的过渡层。在最后一个密集块的末尾,进行全局平均池化,然后附加一个 softmax 分类器。三个密集块中的特征图大小分别为 32×32、16×16 和 8×8。我们用配置{L= 40,k= 12}、{L=100,k= 12}和{L= 100,k= 24}对基本的DenseNet结构进行实验。对于 DenseNet-BC,评估具有配置{L=100,k=12},{L=250,k=24}和{L=190,k=40}的网络

DenseNet翻译:Densely Connected Convolutional Networks相关推荐

  1. DenseNet:Densely Connected Convolutional Networks

    DenseNet:Densely Connected Convolutional Networks Motivation 最近的工作表明,如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则 ...

  2. 论文翻译-Densely Connected Convolutional Networks

    Densely Connected Convolutional Networks/密集连接卷积网络 摘要: 第一段:denseNet的连接方式和优点 最难研究表明:如果网络中包含接近输入层和接近输出层 ...

  3. CVPR2017:密集连接的卷积网络DenseNet《Densely Connected Convolutional Networks》

    文章目录 原文地址 初识 相知 回顾 参考 原文地址 https://arxiv.org/abs/1608.06993 初识 深度卷积神经网络由于相关信息和梯度在前向传递和反向传播时都需要经过很多层, ...

  4. 【DenseNet】Densely Connected Convolutional Networks (2018) 全文翻译

    作者 Gao Huang∗(Cornell University,gh349@cornell.edu) Zhuang Liu∗(Tsinghua University,liuzhuang13@mail ...

  5. 论文精读:DenseNet:Densely Connected Convolutional Networks

    1.核心思想 最近的研究表明,如果在卷积网络的输入与输出之间添加短连接(shorter connections),那么可以使得网络变得更深.更准,并且可以更有效的训练.本文,我们围绕短连接思想,提出密 ...

  6. 骨干网络之DenseNet:Densely Connected Convolutional Networks论文学习

    0.优点 核心就两个模块:dense block ,transition.我看完这篇论文觉得和resnet的思想很想 1.由于他和renet一样都是会在训练的时候提前底层特征所以会避免梯度消失 (re ...

  7. 【图像分类】(DenseNet)Densely Connected Convolutional Networks

    论文名称:Densely Connected Convolutional Networks 论文下载地址:https://arxiv.org/pdf/1608.06993.pdf 论文代码地址:htt ...

  8. 深度学习论文翻译解析Densely Connected Convolutional Networks

    在开始学习之前推荐大家可以多在FlyAI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力.FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台.每周免费提供项目开源算法样例,支持 ...

  9. 论文笔记:Densely Connected Convolutional Networks(DenseNet模型详解)

    [ 转载自http://www.yyliu.cn/post/7cabb4ff.html ] CVPR 2017上,清华大学的Zhuang Liu.康奈尔大学的Gao Huang和Kilian Q.We ...

  10. DenseNet: Densely Connected Convolutional Networks

    Densely Connected Convolutional Networks Tags: Backbobe 作者: Gao Huang, Zhuang Liu 发表日期: 2018 引用量: 26 ...

最新文章

  1. JAVA的正则表达式语法
  2. 《人工智能标准化白皮书(2018版)》发布|附下载
  3. 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode
  4. 函数平移口诀_呆哥数学函数合集——函数的图形变换来啦【4】
  5. spire.doc 转html,c# html 转Word--Spire.Doc
  6. pil拷贝,剪切,缩放
  7. Crawler:关于爬虫的简介、安装、使用方法之详细攻略
  8. oracle用户权限的管理
  9. Directfb【01】 基础模块和基本运行机制介绍 -- 源码结构分析图
  10. 《著名企业求职面试指南》——揭秘顺利通过名企面试的“潜规则”
  11. python time时间戳和格式化日期_[转] Python之time模块的时间戳、时间字符串格式化与转换...
  12. 整理python小爬虫
  13. 米家扫地机器人怎么加水_时隔两年半终于更新 贵了500元的小米米家扫地机器人1S值得买吗?...
  14. HTML 参考手册- (HTML5 标准)
  15. vue3.0版本下动态修改表格数据
  16. matlab图例显示均值方差,MATLAB中均值、方差、均方差的计算方法
  17. 人工智能导论--基于神经网络的模式识别实验
  18. Java 结构化数据处理开源库 SPL
  19. 阿迪达斯智能运营中心在苏州工业园区开工建设;信达生物任命生物医药科学家刘勇军为集团总裁 | 美通企业日报...
  20. Java内存大小换算

热门文章

  1. 使用Python的Arcpy.mapping 模块自动化制图
  2. 设置MySQL最大连接数
  3. 运输层(UDP)详解(一)
  4. 初学者如何学习NLP?这里有一些最棒的项目推荐
  5. Android Studio如何Debug对应so文件C/C++代码
  6. 用python爬取图片和搞笑段子
  7. linux 文件 跳板机_linux 跳板机得搭建
  8. python实现归并排序_排序算法学习(python版本)之归并排序(MergeSort)
  9. 数据结构c语言版马睿课后答案,清华大学出版社-图书详情-《C语言程序设计习题解答与实验指导》...
  10. java前端 js弹出框_前端js弹出框组件使用方法