【网络结构设计】4、DenseNet | 通过密集连接让信息实现层间最大流动的主干网络

【网络结构设计】4、DenseNet | 通过密集连接让信息实现层间最大流动的主干网络_第1张图片

文章目录

    • 一、背景
    • 二、方法
    • 三、效果

论文:Densely Connected Convolutional Networks

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

出处:CVPR2017 | 康奈尔大学 清华大学 Facebook

一、背景

越来越深的神经网络会带来梯度消失问题,ResNet 和 Highway Network 使用了恒等映射的方式,让网络都超过了 100 层且效果良好,也就是给梯度增加了一条高速路,可以顺畅的在浅层和深层之间传输。

但这些传输只能在前后两层之间传递,没有最大化信息传输,所以作者提出了 DenseNet。

DenseNet 挣脱了加深和加宽模型的思路,而是通过最大限度的特征重用和旁路的思想来提升网络效果。

二、方法

下图展示了一个 Dense block 内部的结构,一个 block 内部会有多个卷积层,每个卷积层的输入来自前面所有层的输出,前面所有层的特征输出会 concat 然后送入当前层。

Dense 连接只会在每个 Dense block 内部进行,不会进行跨 block 的 Dense 连接

在这里插入图片描述

DenseNet 的动机:让信息在网络中的所有层中传递最大化

DenseNet 的做法:在一个 block 内部(即特征图大小都相同),将所有的层都进行连接,即第一层的特征会直接传输给后面的所有层,后面的层会接受前面所有层的输出特征。如图 1 所示。

DenseNet 的特征是如何结合的:不像 ResNet 那样相加起来,而是 concat,所以越往后通道越多

DenseNet 的参数少的原因:DenseNet 的通道很少(如每层 12 个通道),且层浅

在这里插入图片描述

首先看一下 ResNet 的网络结构:每层接收上一层的特征输出和上一层的原始输出

在这里插入图片描述

然后再来看 DenseNet 的网络结构:每层接收前面所有层的特征输出,然后进行对应层的特征提取

在这里插入图片描述

  • 特征处理函数 H l H_l Hl:BN + ReLU + 3x3 conv
  • transition layer:每两个 dense block 之间都会有传递层,该层由 BN+ 1x1 conv + 2x2 avg pooling 组成
  • Growth rate:假设每层输出 k 个通道的特征,则第 l l l 层就会有 k 0 + k × ( l − 1 ) k_0+k \times (l-1) k0+k×(l1) 个输入, k 0 k_0 k0 为最初输入层通道数。则将 k 称为 growth rate,且 DenseNet 的通道数很小(如 12)。
  • Bottleneck layers:尽管 k 不大,但 concat 起来仍然不是一个小的数目,所以引入了一个 1x1 conv 作为 bottleneck layer 用于降低通道,称为 DenseNet-B (BN + ReLU + 3x3 conv- BN + ReLU + 3x3 conv)
  • Compression:为了让模型更简洁,可以在 transition layer 来降低特征图个数,当输出通道小于输入通道时,被称为 DenseNet-C,实验的时候会降低一半的通道

DenseNet 的结构:

【网络结构设计】4、DenseNet | 通过密集连接让信息实现层间最大流动的主干网络_第2张图片

ResNet 的结构:

【网络结构设计】4、DenseNet | 通过密集连接让信息实现层间最大流动的主干网络_第3张图片

三、效果

【网络结构设计】4、DenseNet | 通过密集连接让信息实现层间最大流动的主干网络_第4张图片

【网络结构设计】4、DenseNet | 通过密集连接让信息实现层间最大流动的主干网络_第5张图片

DenseNet 的优点:

  • 网络更窄,参数更少
  • 旁路密集连接增加了特征的重用
  • 信息流通最大化,训练简单
  • 缓解了梯度消失的问题

你可能感兴趣的:(卷积神经网络结构,目标检测,网络,深度学习)