论文:Densely Connected Convolutional Networks(CVPR 2017)
DenseNet
网络深度越深越容易出现梯度消失问题,因为输入信息和梯度信息在很多层之间传递导致的,DenseNet与残差结构类似,但有更多的跳跃连接,其连接形式如下图
跳跃连接方式
网络在
l
l
l层有跳跃连接时,ResNet在该层的输出是通过相加得到:
x
l
=
H
l
(
x
l
−
1
)
+
x
l
−
1
x_l=H_l(x_{l-1})+x_{l-1}
xl=Hl(xl−1)+xl−1
DenseNet是通道合并,相当于增加了网络宽度,实现特征重用
x
l
=
H
l
(
x
0
,
x
1
,
.
.
.
,
x
l
−
1
)
x_l=H_l(x_0,x_1,...,x_{l-1})
xl=Hl(x0,x1,...,xl−1)
网络架构
对于较深的网络可以像残差块一样,用多个dense block组成较深的网络,随着通道数迅速增加,dense block间含一个
1
×
1
1 \times 1
1×1的 Translation layer,对feature map降维(融合各个通道特征),每个dense block的
3
×
3
3 \times 3
3×3卷积前面还有一个
1
×
1
1 \times 1
1×1的bottleneck layer进一步压缩通道数
DenseNet小结
- 每一层的输入来自前面所有层的输出,可以减轻梯度消失现象,训练更深的网络
- 跳跃连接充分利用各层特征,可以相对削减网络宽度,以减少参数(跳跃连接是以合并通道的方式,大量的中间 Feature maps 是否太占内存)
实验
参考文献
【1】为什么目前感觉大多数论文还是以resnet为主干网络而不是densenet?
【2】densenet比resnet参数量少,但训练速度慢的原因分析
【3】网络的宽度如何影响深度学习模型的性能?
【4】如何评价Densely Connected Convolutional Networks?
【5】DenseNet:比ResNet更优的CNN模型(含code实现)
【6】DenseNet算法详解