[深度学习从入门到女装]DenseNet

论文地址:Densely Connected Convolutional Networks

 

ResNet是在每层卷积层之后加入一个short cut,也就是将之前卷积层的输出连接到这一次卷积层的输出,l层一共有l个连接,而DenseNet提出在每一层都使用之前所有层的输出,也就是l(l+1)/2个连接,可以有效的解决梯度消失问题

[深度学习从入门到女装]DenseNet_第1张图片

与ResNet不同的地方在于,ResNet是使用前一层的输出加上这一层的输出来作为一个映射,而DenseNet是将前几层的输出特征concatenate到一起作为输入

在传统的卷积网络中,梯度的传递需要一层一层向前传递,传递速度很慢,但是DenseNet可以直接将梯度传递到每一层,训练速度大幅提高,有助于深层网络的训练。并且文中还指出他们观察到这种结构有正则化的效果还可以避免over-fitting

ResNet的数学表达为x_{l}=H_{l}(x_{l-1})+x_{l-1}

DenseNet的数学表达为x_{l}=H_{l}([x_{0},x_{1},...,x_{l-1}])

其中x_{l}l层的输出,H_{l}为第l层的卷积操作,[x_{0},x_{1},...,x_{l-1}]为进行concatenate操作

论文提出了transition layer用来连接各层block,包含1*1的卷积,和2*2的avePooling

如果一层输出k个feature maps,那么这层有k0+k×(l−1)个feature maps输入。k0是输入层的通道数。如果k太多,即feature map太多,从而导致模型参数太多。这里我们定义Growth rate就是超参数kk,用于控制feature maps的数量。

DenseNet也有类似Bottleneck layer使用1*1卷积降低维度然后再进行卷积的操作,BN-ReLU-Conv(1*1)-BN-ReLU-Conv(3*3)为DenseNet-B

还使用了compression,transition层输出特征图数为\left \lfloor \theta m \right \rfloor,其中m为输入的特征图数,\theta为压缩因子(compression fator),当时\theta<1时,为DenseNet-C,当同时使用compression和bottleneck的时候为DenseNet-BC

[深度学习从入门到女装]DenseNet_第2张图片

 

 

参考:https://blog.csdn.net/u011974639/article/details/78290448

你可能感兴趣的:(深度学习)