论文地址:Densely Connected Convolutional Networks
ResNet是在每层卷积层之后加入一个short cut,也就是将之前卷积层的输出连接到这一次卷积层的输出,l层一共有l个连接,而DenseNet提出在每一层都使用之前所有层的输出,也就是l(l+1)/2个连接,可以有效的解决梯度消失问题
与ResNet不同的地方在于,ResNet是使用前一层的输出加上这一层的输出来作为一个映射,而DenseNet是将前几层的输出特征concatenate到一起作为输入
在传统的卷积网络中,梯度的传递需要一层一层向前传递,传递速度很慢,但是DenseNet可以直接将梯度传递到每一层,训练速度大幅提高,有助于深层网络的训练。并且文中还指出他们观察到这种结构有正则化的效果还可以避免over-fitting
ResNet的数学表达为
DenseNet的数学表达为
其中为层的输出,为第层的卷积操作,为进行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层输出特征图数为,其中为输入的特征图数,为压缩因子(compression fator),当时<1时,为DenseNet-C,当同时使用compression和bottleneck的时候为DenseNet-BC
参考:https://blog.csdn.net/u011974639/article/details/78290448