深度篇—— Deep Learning 经典网络 model 发展史(八) 细说 DenseNet 结构和特点

返回主目录

返回 Deep Learning 经典网络 model 发展史 目录

上一章:深度篇—— Deep Learning 经典网络 model 发展史(七) 细说 Inception-ResNet 结构和特点

下一章:深度篇—— Deep Learning 经典网络 model 发展史(九) 细说 DarkNet 结构和特点和 各模型与精度

本小节,细说 DenseNet 结构和特点,下一小节细说 DarkNet 结构和特点和 各模型与精度

论文地址:Densely Connected Convolutional Networks

二. 经典网络(Classic Network)

8. DenseNet 

DenseNet 是 CVPR 2017 年最佳论文。论文中提出的 DenseNet (Dense Convolutional Network) 主要还是和 ResNet 及 Inception 网络做对比,思想上有借鉴,但却是全新的结构,网络结构并不复杂,却非常有效,在 CIFAR 指标上全面超越 ResNet。可以说 DenseNet 吸收了 ResNet 最精华的部分,并在此上做了更创新的工作,使得网络性能进一步提升。

(1). 相比 ResNet,DenseNet 提出了一个更激进的密集连接机制:即相互连接的所有层,具体来说,就是每个层都会接受其前面所有层作为其额外的输入。在 DenseNet 中,每个层都会与前面所有层的 channels 维度上连接 (concatenation) 在一起(在这里必须要保障各个层的 feature map 的大小是一致的),并作为下一层的输入。对于一个 \large L 层的网络,DenseNet 共包含 \large \frac{L(L + 1)}{2} 个连接。而且,DenseNet 是直接 concatenation 来自不同层的特征图,这可以实现特征重用,提升效率,这一特点是 DenseNet 和 ResNet 最主要的区别。

 

(2). DenseNet 特征神经网络图形 (Dense Block):

 

(3). 在 DenseNet 中,各个层的特征图大小一致,可以在 channels 上 concat 起来。Dense Block 中的非线性组合函数 \large H(x) 采用的是 \large BN + 3 \times 3 \; conv + ReLU 的结构。另外,值得注意的是,与 ResNet 不同,所有 Dense Block 中各个层卷积之后均匀输出 \large k 个 feature map,即得到的 feature map 的 channels 数为 \large k,或者说采用 \large k 个卷积核。\large k 在 DenseNet 中称为 growth rate,是一个超参数。一般情况下使用较小的 \large k (如 12),就可以得到较佳的性能。加入输入层的 feature map 的 channels 数为 \large k_{0} + k(l - 1),因此随着层数增加,尽管 \large k 设置较小,但 Dense Block 的输入会非常多,不过,这是由于特征重用造成的,每个层仅 \large k 个特征是自己独有的。

 

(4). 由于后面的输入会非常大, Dense Block 内部可以采用 Bottleneck 层来减少计算,主要是在原有的结构中增加 1 x 1 conv。将:\large BN + 1 \times 1 \; conv + ReLU \rightarrow BN + 3 \times 3 \; conv + ReLU 称为 DenseNet-B

       其中 \large 1 \times 1 \; conv 得到 \large 4k 个 feature map 起到的作用是降低特征数量,从而提升计算效率。

 

(5). 在 CNN 网络中,通常使用 pooling 或 strides > 1 的 conv 来降低 feature map 的大小,而 DenseNet 的密集连接方式需要 feature map size 保持一致。为了解决 DenseNet 降低 feature map 大小的问题,在 DenseNet 网络中使用 Dense Block + Transition 结构,其中 Dense Block 是包含很多层的模块,每个层的 feature map size 一致,层与层之间采用密集连接方式。而 Transition 模块是连接两个相邻的 Dense Block,并且通过 pooling 使 feature map size 降低。

 

(6). 对于 Transition 层,它主要是连接两个相邻的 Dense Block,并且降低 feature map size 的大小。Transition 层包括一个 \large 1 \times 1 \; conv 和 \large 2 \times 2 \; avg\_ pooling,结构为:\large BN + 1 \times 1 \; conv + ReLU \rightarrow 2 \times 2 \; avg\_ pooling。另外,Transition 层可以起到压缩模块的作用。假定 Transition 层的上接 Dense Block 得到的 feature map 的 channels 为 \large m,Transition 层可以产生 \large \theta m 个特征(通过卷积层,\large \theta \in (0, 1]\large \theta 为压缩系数 compression rate)。当 \large \theta = 1 时,特征个数经过 Transition 层没有变化,即无压缩,而当压缩系数小于 1 时,这种结构称为 DenseNet-C。对于使用 Bottleneck 层的 Dense Block 结构和压缩系数小于 1 的 Transition 组合结构称为 DenseNet-BC。

 

(7). DenseNet 网络结构:

 

(8). DenseNet 的优势:

   ①. 由于密集连接方式,DenseNet 提升了梯度的反向传播,使得网络更容易训练。由于每层可以直达最后的误差信号,实现了隐式的 "deep supervision",减轻梯度消失现象,这样可以达到更深的网络。

   ②. 网络更窄,参数更少,且计算更高效。

   ③. 使用 concatenation 特征来实现短路连接,实现了特征重用,并采用较小的 growth rate,每个层所独有的 feature map 是比较小的。

   ④. 由于 feature 复用,更有效地利用了 feature,最后的分类器使用了低级特征。

 

(9). DenseNet 的缺点:

   ①. DenseNet 在训练时十分消耗内存,这是由于算法实现不优带来的。

   ②. 当前的深度学习框架对 DenseNet 的密集连接没有很好的支持,所以只能借助反复的拼接(concatenation) 操作,将之前的输出与当前层的输出拼接在一起,然后传给下一层。对于大多数框架(如 TensorFlow),每次拼接操作都会开辟新的内存来保存拼接后的特征。这样就导致一个 \large L 层网络,要消耗相当与 \large \frac{L(L + 1)}{2} 层网络的内存(第 \large i 层的输出在内存里被存了 \large L - i + 1 份)。

                  

返回主目录

返回 Deep Learning 经典网络 model 发展史 目录

上一章:深度篇—— Deep Learning 经典网络 model 发展史(七) 细说 Inception-ResNet 结构和特点

下一章:深度篇—— Deep Learning 经典网络 model 发展史(九) 细说 DarkNet 结构和特点和 各模型与精度

发布了63 篇原创文章 · 获赞 16 · 访问量 5996

猜你喜欢

转载自blog.csdn.net/qq_38299170/article/details/104241860