- 在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”(shortcuts,skip connection),这有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。
- DenseNet模型,它的基本思路与ResNet一致,但是它建立的是前面所有层与后面层的密集连接(dense connection),它的名称也是由此而来。
- DenseNet的另一大特色是通过特征在channel上的连接来实现特征重用(feature reuse)。
1、设计理念
- 相比ResNet,DenseNet提出了一个更激进的密集连接机制:即互相连接所有的层,具体来说就是每个层都会接受其前面所有层作为其额外的输入。
- 图1为ResNet网络的连接机制,作为对比,图2为DenseNet的密集连接机制。

- 可以看到,ResNet是每个层与前面的某层(一般是2~3层)短路连接在一起,连接方式是通过元素级相加。
- 而在DenseNet中,每个层都会与前面所有层在channel维度上连接(concat)在一起(这里各个层的特征图大小是相同的,后面会有说明),并作为下一层的输入。对于一个 L L L 层的网络,DenseNet共包含 L ( L + 1 ) 2 \cfrac{L(L+1)}{2} 2L(L+1) 个连接,相比ResNet,这是一种密集连接。而且DenseNet是直接concat来自不同层的特征图,这可以实现特征重用,提升效率,这一特点是DenseNet与ResNet最主要的区别。
- 如果用公式表示的话,传统的网络在
l
l
l 层的输出为:
x l = H l ( x l − 1 ) x_l=H_l(x_{l-1}) xl=Hl(xl−1) - 而对于ResNet,增加了来自上一层输入的identity函数:
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])
其中,上面的 H l ( ) H_l() Hl() 代表是非线性转化函数(non-liear transformation),它是一个组合操作,其可能包括一系列的BN(Batch Normalization),ReLU,Pooling及Conv操作。注意这里 l l l 层与 l − 1 l-1 l−1 层之间可能实际上包含多个卷积层。
参考资料:
论文笔记:CNN经典结构2(WideResNet,FractalNet,DenseNet,ResNeXt,DPN,SENet)
DenseNet:比ResNet更优的CNN模型
DenseNet 论文阅读笔记
本文探讨了DenseNet模型,它通过密集连接所有层实现特征重用,与ResNet的短路连接机制对比,DenseNet的优势在于更深层次的特征融合。理解这两种经典模型的设计理念和区别,有助于提升计算机视觉任务的性能。

被折叠的 条评论
为什么被折叠?



