【深度学习】经典卷积神经网络(八)DenseNet

介绍

DenseNet发表在2017年的CVPR上,并获得了当时的best paper。ResNet的出现使模型可以变得更深,通过建立前面层与后面层之间的shortcut提高模型的性能。DenseNet将ResNet与跨层连接的思路进一步发挥,它将前面建立的所有层都与后面层的密集连接(Dense Connection)。另外DenseNet通过特征在channel上的连接实现特征重用,最终让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能。
论文:Densely Connected Convolutional Networks
论文链接:https://arxiv.org/pdf/1608.06993.pdf
代码的github链接:https://github.com/liuzhuang13/DenseNet

结构


DenseNet的结构也很好理解,即每一层都与后面的所有层跨层连接。但这样可能会造成参数量巨大,比如图中最后一层的channel数量可能就是原来的好几倍。当然,这个是可以通过bottleneck压缩一下。
尽管很多思路类似ResNet,但是与之还是有区别的的,例如DenseNet是直接concat来自不同层的特征图,这可以实现特征重用,提升效率。简单来说,ResNet是通过相加,而DenseNet是通道叠加。
但直接叠加可能又会有问题,feature map的大小可能不一致。针对这个问题,DenseNet网络中使用DenseBlock+Transition的结构,其中DenseBlock是包含很多层的模块,每个层的特征图大小相同,层与层之间采用密集连接方式。而Transition模块是连接两个相邻的DenseBlock,并且通过Pooling使特征图大小降低。

基于Dense Block可以堆叠出更复杂的网络,并且可以降低网络的深度,例如Dense一百层可能比1000层的普通网络效果还要好。跨层连接造成了很多参数量,所以一般通过bottleneck来压缩一下并且注意通道数的控制。卷积层其实现基本的是BN+ReLU+Conv,或者加入bottleneck的BN-ReLU-Conv(1×1)-BN-ReLUConv(3×3) 。下面是一些网络的设计:

最终,DenseNet也取得了比较好的效果:

另外提一下DenseNet和stochastic depth的关系,在stochastic depth中,residual中的layers在训练过程中会被随机drop掉,其实这就会使得相邻层之间直接连接,这和DenseNet是很像的。

思考

DenseNet的充分利用了各层的feature map,跨层连接的方式与ResNet也有不同,进一步减轻了荼毒小时的问题。另外,利用bottleneck layer,translation layer以及较小的growth rate使得网络变窄,参数减少,有效抑制了过拟合,同时计算量也减少了。这里总结一下其中的一些思路:

  • 将更多的层进行跨层连接
  • 使用通道连接进行跨层连接
  • 应用bottleneck、translation layer缩小参数
  • 充分利用feature map

参考资料

https://zhuanlan.zhihu.com/p/37189203
https://blog.csdn.net/u014380165/article/details/75142664

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值