快速理解DenseNet的主要思想

DenseNet

  • DenseNet的主要思想
    • 一些有用的链接
    • DenseNet 的核心
    • DenseNet的优点
    • DenseNet的结构

DenseNet的主要思想

目前的网络结构要么是增加了网络的宽度(GoogLeNet),要么是增加了网络的深度(Resnet)。但是DenseNet另辟蹊径,他是从特征上入手。网络结构非常小巧,但是效果却非常的惊人!

一些有用的链接

论文:Densely Connected Convolutional Networks
论文链接:https://arxiv.org/pdf/1608.06993.pdf
代码的github链接:https://github.com/liuzhuang13/DenseNet
MXNet版本代码(有ImageNet预训练模型): https://github.com/miraclewkf/DenseNet

DenseNet 的核心

DenseNet 的核心是Dense block。这个东西我用一句话概括一下就是每一层的输入来自前面所有层的输出
在传统的神经网络中,如果你有N层,那么就有N个连接。但是在DenseNet中,会有 L ∗ ( L + 1 ) / 2 L*(L+1)/2 L(L+1)/2个连接。下面看一下Dense block的图示:
快速理解DenseNet的主要思想_第1张图片

文章中同样也用公式说明了DenseNet和ResNet的区别:
首先看一下ResNet的公式:
X l = H l ( X l − 1 ) + X l − 1 X_l = H_l(X_{l-1})+X_{l-1} Xl=Hl(Xl1)+Xl1
这里的 l l l表示层, X l X_l Xl表示 l l l层的输出, H l H_l Hl表示一个非线性变换。所以对于ResNet而言, l l l层的输出是 l − 1 l-1 l1层的输出加上对 l − 1 l-1 l1层输出的非线性变换。
再来看一下我们的DenseNet的公式:
X l = H l ( [ X 0 , X 1 , X 2 , . . . , X l − 1 ] ) X_l = H_l([X_0, X_1,X_2, ... , X_{l-1}]) Xl=Hl([X0,X1,X2,...,Xl1])
[ X 0 , X 1 , X 2 , . . . , X l − 1 ] [X_0, X_1,X_2, ... , X_{l-1}] [X0,X1,X2,...,Xl1]表示将 0 0 0 l − 1 l-1 l1层的输出feature map做concatenation。concatenation是做通道的合并,就像Inception那样。而前面resnet是做值的相加,通道数是不变的。 H l H_l Hl包括BN,ReLU和 3 × 3 3\times3 3×3的卷积。

DenseNet的优点

这里面主要说其中的四点:

1。 减轻了梯度消失的问题
2。 加强了特征的传播
3。 有效的利用了特征
4。减少了参数的数量

DenseNet的结构

下面的表示的是一个DenseNet的结构图,在这个结构图中包含了3个dense block。作者将DenseNet分成多个dense block,原因是希望各个dense block内的feature map的size统一,这样在做concatenation就不会有size的问题。
快速理解DenseNet的主要思想_第2张图片

你可能感兴趣的:(深度学习,python,机器学习)