DenseNet学习笔记

转载:http://www.yyliu.cn/post/7cabb4ff.html
背景:CVRP2017上,Densely Connected Convolutional Networks获得了CVRP2017最佳论文

摘要:
最近的研究表明,当靠近输入的层和靠近输出的层之间的连接越短,卷积神经网络就可以做的更深,精度更高而且可以更加有效的训练。本论文根据这一结论,提出了DenseNet,这种结构将每一层与之前所有层相连接。传统的L层神经网络有L个连接,换句话说就是传统的神经网络层与层之间的连接只存在于相邻的两个层之间,而DenseNet有L(L+1)/2个直接连接。对于每一层,其输入的特征是之前所有的层,而它自己的特征图会输出到之后的所有层中去。
DenseNet的优点:缓解梯度消失问题,加强特征传播,鼓励特征复用,极大的减少了参数量(但是训练是非常消耗现显存的)
作者在(CIFAR-10,CIFAR-100, SVHN, and ImageNet)上对DenseNet的结构进行了测试,结果表明DensNet在大多数的测试图像库中都获得了最好的效果,然而它只需要很少的计算量来达到很高的性能。
代码参见:https://github.com/liuzhuang13/DenseNet

DenseNet与ResNet对比:
作者受到了ResNet和Highway NetWorks的启发,通过与之后的某一层进行直接连接传递信息,下面我们将一一对比:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

DenseNet与ResNet的区别:
ResNet的结构可以使用下面这个公式表示,其中Hl代表一个非线性变换。

而DenseNet的结构用公式表示则如下:

这两个公式可以充分表现出两个网络的区别,言简意赅!

缺点:
DenseNet在训练时十分消耗内存,这是由于算法实现不优带来的。当前的深度学习框架对DenseNet的密集连接没有很好的支持,所以只能借助反复的拼接(Concatenation)操作,将之前层的输出与当前层的输出拼接在一起,然后传递给下一层,对于大多数框架(Torch和Tensorflow),每次拼接都会开辟新的内存在保存拼接后的特征。这样就导致了一个L层的网络,要消耗相当于L(L+1)/2层网络的内存,为此作者又写了一份技术报告,专门介绍这一问题,介绍如何提升对内存的使用率,同时提供的Torch,PyTorch,MxNet以及Caffe的实现,代码参见:
Torch implementation:https://github.com/liuzhuang13/DenseNet/tree/master/models
PyTorch implementation:https://github.com/gpleiss/efficient_densenet_pytorch
MxNet implementation:https://github.com/taineleau/efficient_densenet_mxnet
Caffe implementation:https://github.com/Tongcheng/DN_CaffeScript

参考资料:

1、CVPR 2017最佳论文作者解读:DenseNet 的“what”、“why”和“how”|CVPR 2017
2、Huang G, Liu Z, Weinberger K Q, et al. Densely connected convolutional networks[J]. arXiv preprint arXiv:1608.06993, 2016.
3、如何评价Densely Connected Convolutional Networks?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值