✨博客主页:王乐予🎈
✨年轻人要:Living for the moment(活在当下)!💪
🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】
😺一、引言
CNN作为计算机视觉领域的主流方法,已经诞生了诸多优秀模型(AlexNet、VGG、GoogLeNet、ResNet等),每个模型的优点之前都有介绍。
DenseNet的作者是Zhuang Liu(清华大学)、Gao Huang和Kilian Q.Weinberger(康奈尔大学)、Laurens van der Maaten(脸书研究员),论文斩获CVPR 2017最佳论文!
论文链接:Densely Connected Convolutional Networks
作者借鉴了ResNet思想,但又跳出了从深与宽这两个角度提升网络效果的局限,从特征的角度入手,提升网络性能。
😺二、网络结构
作者摘要中说:当靠近输入的层和靠近输出的层之间的连接越短,卷积神经网络就可以做的更深、精度更高且可以更加有效的训练,因此,作者提出了稠密卷积神经网络(Dense Convolutional Network,DenseNet)。
🐶2.1 Dense Block
Dense Block结构如下图所示:
传统的L层卷积神经网络具有L个连接,作者构造的神经网络具有
L
(
L
+
1
)
2
\frac{L(L+1)}{2}
2L(L+1)个连接,对于网络的每一层,其输入都是之前的所有层。
作者在论文中列举了DenseNet的几个优点:
- alleviate the vanishing-gradient problem(减轻了梯度消失);
- strengthen feature propagation(加强了特征传递);
- encourage feature reuse(鼓励特征重用);
- substantially reduce the number of parameters(一定程度上减少了参数量)。
🐶2.2 ResNet与DenseNet不同点
ResNet与DenseNet不同点:
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
ResNet的跳跃连接是当前层与前面某层进行元素级的相加,跨越深度一般为2-3。
DenseNet的每个层都会与前面所有层在通道维度上进行连接,这里连接方式要注意,不是ResNet的add,而是concatenate。
因此,DenseNet是一种密集连接网络,且concatenate会对前面多层特征重用,提升特征利用率!
🐶2.3 DenseNet
下图是一个具有三个密集块的deep DenseNet。
在DenseNet中,两个相邻块之间的层称为过渡层!
我们知道DenseNet使用稠密连接结构,因此特征图厚度是巨大的,但网络需要特征图大小保持一致,为了实现这一过程,作者引入了过渡层。过渡层就是简单的1×1卷积和池化。
下表是在ImageNet上使用的DenseNet架构。所有网络的增长率是k=32。
DenseNet与其他网络的对比结果请见原论文!
😺三、总结
该论文建立了不同层之间的连接关系,充分利用了特征图,同时也减轻了梯度消失的问题;此外过渡层的存在使网络不至于过于厚重。
DenseNet是一个可以与ResNet抗衡的网络!