阅读笔记9——DenseNet

一、DenseNet

  DenseNet的网络结构如图1-1所示,其核心是Dense Block模块,Dense Block中的一个黑点就代表一个卷积模块(不是一个卷积层,而是DenseNet提出的一个BottleNeck模块,后文有讲解),每条黑线都代表着数据的流动。
在这里插入图片描述

图1-1 DenseNet网络结构
  • DenseNet的每一个Dense Block内保持特征图的尺寸一致,目的是为了直接进行Concat操作,因此,DenseNet被分成了多个Dense Block(每个Dense Block内不能改变特征图大小,但整个DenseNet为了提取特征,需要减小特征图尺寸,即每个Dense Block内特征图尺寸一致,不同Dense Block内特征图尺寸不一致),Dense Block的数量一般为4。
  • 两个相邻的Dense Block之间的部分被称为Transition层,具体包括BN、ReLU、1×1卷积、2×2平均池化。其中,1×1卷积的作用是降维,2×2平均池化的作用是降低特征图的尺寸。

二、Dense Block

  Dense Block的实现细节如图2-1所示,每一个Dense Block由若干个BottleNeck卷积模块组成,BottleNeck由BN、ReLU、1×1卷积、BN、ReLU、3×3卷积顺序组成。

在这里插入图片描述

图2-1 Dense Block结构
  • 每一个BottleNeck的输出通道数是相同的(每个BottleNeck模块最后3×3卷积的输出通道数相同),例如图2-1中的32,每经过一次Concat,特征图的通道数就增加32,因此这里的32也被称为GrowthRate。(假设对于一个Dense Block来说,输入通道数为 c i n c_{in} cin,输出通道数为 c o u t c_{out} cout,该Dense Block内有 n n n个BottleNeck,则 c o u t = c i n + n × G r o w t h R a t e c_{out}= c_{in} + n\times GrowthRate cout=cin+n×GrowthRate,图2-1可看作 192 = 64 + 4 × 32 192=64+4\times 32 192=64+4×32

  • 1×1卷积的作用是固定输出通道数,避免因网络结构过深而导致特征图的通道数急剧增加(每次Concat后,通道数都会增加GrowthRate,若不使用1×1卷积降维,后续3×3卷积的参数量会急剧增加)。1×1卷积的通道数通常是GrowthRate的4倍。

三、DenseNet优势

  • 密集连接的特殊网络,使得每一层都会接受其后所有层的梯度,而不是像普通卷积链式的反向传播,因此一定程度上解决了梯度消失的问题。
  • 通过Concat操作使得大量特征被复用,每个曾独有的特征图的通道是较少的,因此比ResNet的参数更少且计算更高效。

猜你喜欢

转载自blog.csdn.net/python_plus/article/details/129211696