1.Densenet算法思想
从feature入手,通过对feature的极致利用达到更好的效果和更少的参数
多个block进行连接
2.Densenet算法特点
1、减轻了vanishing-gradient(梯度消失)
2、加强了feature的传递
3、更有效地利用了feature
4、一定程度上减少了参数数量
3.Densenet block结构图
在传统的卷积神经网络中,如果你有L层,那么就会有L个连接,但是在DenseNet中,会有L(L+1)/2个连接
简单讲,就是每一层的输入来自前面所有层的输出
图中,
x
1
,
x
2
,
x
3
,
x
4
x_{1},x_{2},x_{3},x_{4}
x1,x2,x3,x4为feature map,每层feature map的个数由k决定。k是growth rate,表示每个dense block中每层输出的feature map个数。
4.Densenet与Resnet的区别
ResNet
这里,
l
l
l表示层,
x
l
x_{l}
xl表示
l
l
l层的输出,
H
l
H_{l}
Hl表示一个非线性变换。所以对于ResNet而言,
l
l
l层的输出是
l
−
1
l-1
l−1层的输出加上对
l
−
1
l-1
l−1层输出的非线性变换。
Densenet
这里,
[
x
0
,
x
1
,
…
,
x
l
−
1
]
[x0,x1,…,xl-1]
[x0,x1,…,xl−1]表示将0到
l
−
1
l-1
l−1层的输出feature map做concatenation。concatenation是做通道的合并,就像Inception那样。而前面resnet是做值的相加,通道数是不变的。
H
l
H_{l}
Hl包括BN,ReLU和3*3的卷积。
5. Densenet结构图
Transition layer包括1 * 1的卷积和2 * 2 average_pool,其中1*1的卷积为bottleneck操作,其中bottleneck是为了减少一个block中的输入通道(channel)数,transition 有个参数reduction(范围是0到1),表示将这些输出缩小到原来的多少倍,默认是0.5,这样传给下一个Dense Block的时候channel数量就会减少一半