深度学习视频理解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1.10 DenseNet

DenseNet(稠密连接网络)(Huang et al.,2017)的目的也是缓解梯度消失,其获得了2017年CVPR 最佳论文奖。如图2-14所示,和ResNet的残差模块不同,稠密连接(Dense)模块中任意两层之间均有短路连接,训练时梯度可以更直接地进行传播。也就是说,每一层的输入通过特征拼接的形式包含了之前所有层的特征,对于一个img层的DenseNet,共包含img个短路连接。

img

图2-14 DenseNet 网络结构图

形式化地假设第img个模块的输入特征为img,输出特征为img,ResNet中的残差模块是将残差分支的输出img加上短路分支的输出img,作为模块整体输出特征:

img

(2.3)

而在DenseNet中,第img个模块会以之前所有模块的特征作为输入,模块输出特征为

img

(2.4)

其中,img是输入层(即图像)的特征。当img比较大时,由于第img个模块的输入以特征拼接的形式包含了之前所有模块的特征,所以第img个模块的输入特征通道数会很大,这会使得第img个模块中的卷积层参数量和计算量都很大。因此,DenseNet中的img实际包括了BN层+ReLU层+img卷积层+BN层+ReLU层+img卷积层,其中,img卷积层的作用是对第img层的输入特征进行降维,这样可以降低整体的参数量和计算量。

为了能进行特征拼接,特征img需要保持相同的空间维度,而卷积神经网络中会随着层数加深逐渐降低特征空间维度。因此 DenseNet 整体网络结构采用了DenseBlock+Transition+DenseBlock+Transition+img的形式,每个DenseBlock 内部特征维度相同,相互之间采用稠密连接形式(见图2-14),而在Transition 内会通过平均汇合层降低特征空间维度。

DenseNet 通过拼接不同层特征达到特征重用(Feature Reuse)的效果,和之前方法不同的是,DenseNet中的卷积层只需要很少的卷积核数目(对应输出通道数)。整体上,DenseNet 只用ResNet 一半的参数量即可达到 ResNet的性能。但在实现方面,直接将特征拼接会占用很大的GPU 显存,后来通过共享存储(Pleiss et al.,2017),可以在相同的GPU 显存资源下训练更深的DenseNet,但由于有些中间结果需要重复计算,该实现会增加一些训练时间。