返回主目录
返回 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 的大小是一致的),并作为下一层的输入。对于一个 层的网络,DenseNet 共包含 个连接。而且,DenseNet 是直接 concatenation 来自不同层的特征图,这可以实现特征重用,提升效率,这一特点是 DenseNet 和 ResNet 最主要的区别。
(2). DenseNet 特征神经网络图形 (Dense Block):
(3). 在 DenseNet 中,各个层的特征图大小一致,可以在 channels 上 concat 起来。Dense Block 中的非线性组合函数 采用的是 的结构。另外,值得注意的是,与 ResNet 不同,所有 Dense Block 中各个层卷积之后均匀输出 个 feature map,即得到的 feature map 的 channels 数为 ,或者说采用 个卷积核。 在 DenseNet 中称为 growth rate,是一个超参数。一般情况下使用较小的 (如 12),就可以得到较佳的性能。加入输入层的 feature map 的 channels 数为 ,因此随着层数增加,尽管 设置较小,但 Dense Block 的输入会非常多,不过,这是由于特征重用造成的,每个层仅 个特征是自己独有的。
(4). 由于后面的输入会非常大, Dense Block 内部可以采用 Bottleneck 层来减少计算,主要是在原有的结构中增加 1 x 1 conv。将: 称为 DenseNet-B
其中 得到 个 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 层包括一个 和 ,结构为:。另外,Transition 层可以起到压缩模块的作用。假定 Transition 层的上接 Dense Block 得到的 feature map 的 channels 为 ,Transition 层可以产生 个特征(通过卷积层,, 为压缩系数 compression rate)。当 时,特征个数经过 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),每次拼接操作都会开辟新的内存来保存拼接后的特征。这样就导致一个 层网络,要消耗相当与 层网络的内存(第 层的输出在内存里被存了 份)。
返回主目录
返回 Deep Learning 经典网络 model 发展史 目录
上一章:深度篇—— Deep Learning 经典网络 model 发展史(七) 细说 Inception-ResNet 结构和特点
下一章:深度篇—— Deep Learning 经典网络 model 发展史(九) 细说 DarkNet 结构和特点和 各模型与精度