Densely Connected Convolutional Networks

密集连接的卷积网络——DenseNet(解读)(原论文)


摘要

如果卷积网络包含接近输入的层和接近输出的层之间的较短连接(残差连接/跳过连接),则卷积网络可以更深,更准确,更有效。 密集卷积网络(DenseNet),以前馈的方式将每一层连接到后面的每一层。 而具有L层的传统卷积网络每层与其后续层之间的连接具有L个。 DenseNet 网络具有L(L + 1)/2个直接连接。 对于每个图层,所有前面图层的特征图用作输入,其自身的特征图用作所有后续图层的输入。DenseNets具有几个引人注目的优点:可以缓解消失梯度问题加强特征传播鼓励特征重用,并大幅减少参数数量


DenseNets优势

Densely Connected Convolutional Networks_第1张图片

为了确保网络中各层之间的最大信息流,将所有层(具有匹配的特征图大小)直接相互连接。为了保持前馈性质,每个层从所有前面的层获得附加输入,并将其自己的特征映射传递给所有后续层。图1示意性地说明了这种布局。至关重要的是,与ResNets相比,DenseNets 通过连接来组合特征,而非求和来组合特征。

这种密集连接模式的可能反直觉效应是它比传统卷积网络所需的参数更少,因为不需要重新学习冗余特征映射。传统的前馈体系结构可以被视为具有状态的算法,该状态在层与层之间传递。每个层从其前一层读取状态并写入后续层。它改变了状态,但也传递了需要保留的信息。

ResNets 通过加权恒等变换使这一信息保持明确。最近ResNets 的变化表明,许多层贡献很少,实际上在训练期间可以随机丢弃。这使得ResNets的状态类似于(展开的)递归神经网络,因为每个层都有自己的权重,所以ResNets的参数数量要大得多。DenseNet架构明确区分了添加到网络的信息和保留的信息。

DenseNet层非常窄(例如,每层12个过滤器),只为网络的“集体知识”添加一小部分特征映射,并保持其余的特征图不变,最终分类器根据网络中的所有特征映射做出决策。

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


DenseNets 网络构架

网络包括L层,每层实现非线性变换,例如批量归一化(BN),线性整流单位(ReLU),池化(Pooling)或卷积(Conv)等操作的复合函数。

Dense connectivity 密集连接

引入从任何层到所有后续层的直接连接。 图1示意性地示出了所得到的DenseNet的布局。

Composite function 复合函数

三个连续运算的复合函数:批量归一化(BN),然后是线性整流单位(ReLU)和3×3卷积(CONV)。

Pooling layers 池化层

Densely Connected Convolutional Networks_第2张图片

 为了便于在架构中进行下采样,将网络划分为多个密集连接的密集块;参见图2。将块之间的层称为过渡层,它们进行卷积和池化。 在实验中使用的过渡层包括批量标准化层和1×1卷积层,接着是2×2平均池化层

Growth rate 增长率

DenseNet可以具有非常窄的层,例如k = 12.我们将超参数k称为网络的增长率。相对较小的增长率足以在我们测试的数据集上获得最先进的结果。对此的一种解释是,每个层都可以访问其块中的所有前面的特征映射,因此可以访问网络的“集体知识”。可以将特征映射视为网络的全局状态。每个层都将自己的k个特征映射添加到此状态。增长率规定了每层为全局状态做出多少新信息。一旦编写完全全局状态,就可以从网络中的任何地方访问,并且与传统网络体系结构不同,不需要在层与层之间复制它。

Bottleneck layers 瓶颈层

虽然每个层仅生成k个输出特征图,但它通常具有更多输入。在每个3×3卷积之前可以引入1×1卷积作为瓶颈层,以减少输入特征图的数量,从而提高计算效率。 这种设计对DenseNet特别有效,即BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)作为DenseNet-B。 在实验中,让每个1×1卷积产生4k特征映射。

Compression 压缩

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

Implementation Details 实施细节

在除ImageNet之外的所有数据集上,实验中使用的DenseNet有三个密集块,每个块具有相同数量的层。在进入第一个密集块之前,对输入图像执行16(或DenseNet-BC生长速率的两倍)输出通道的卷积。对于内核大小为3×3的卷积层,输入的每一侧都按零填充一个像素,以保持特征图大小固定。使用1×1卷积,然后使用2×2平均池化作为两个连续密集块之间的过渡层。在最后一个密集块的末尾,执行全局平均池化,然后附加softmax分类器。三个密集块中的特征映射大小分别为32×32,16×16和8×8。 我们尝试了基本的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}的网络。

Densely Connected Convolutional Networks_第3张图片

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


论述

模型紧度

任何DenseNet层学习的特征映射都可以被所有后续层访问。 这鼓励整个网络中的特征重用,并导致更紧凑的模型。

隐性深层监督

对密集卷积网络的精确度提高的一种解释可能是各个层通过较短的连接从损失函数接收额外的监督。 人们可以解释DenseNets执行一种“深度监督”。 网络将分类器附加到每个隐藏层,强制中间层学习辨别特征。 DenseNets以隐式方式执行类似的深度监督:网络顶部的单个分类器通过最多两个或三个过渡层为所有层提供直接监督。 然而,由于在所有层之间共享相同的损失函数,因此DenseNets的损失函数和梯度基本上不那么复杂。

随机与确定性连接

密集卷积网络与残差网络的随机深度正则化之间存在有趣的联系[13]。 在随机深度中,残差网络中的层随机掉落,这在周围层之间产生直接连接。 由于池化层永远不会被丢弃,因此网络会产生与DenseNet类似的连接模式:如果所有中间层都是随机丢弃的,则相同池化层之间的任何两个层都有可能直接连接。 尽管这些方法最终完全不同,但随机深度的DenseNet解释可以提供对该正则化器成功的见解。

特征重用

Densely Connected Convolutional Networks_第4张图片

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

  1. 所有层将权重分布在同一块内的多个输入上。这表明由非常早的层提取的特征实际上直接由整个相同密集块中的深层使用
  2. 过渡层的权重也将其权重分散在前一个密集块内的所有层上,表明间接从DenseNet的第一层到最后一层通过很少的信息流
  3. 第二和第三密集块内的层始终将最小权重分配给过渡层的输出(三角形的顶行),表示过渡层输出许多冗余特征(平均权重低)。这与DenseNet-BC的强大结果一致,正是这些输出被压缩。
  4. 尽管最右边显示的最终分类层也使用了整个密集区域的权重,但似乎集中了最终的特征图,这表明可能会有更多的高级特征在网络中。

实验

Densely Connected Convolutional Networks_第5张图片


代码

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

你可能感兴趣的:(论文)