DenseNet 特征复用 2021-03-22

2018 https://arxiv.org/pdf/1608.06993.pdf
参考博客:
https://towardsdatascience.com/review-densenet-image-classification-b6631a8ef803

跳跃拼接

核心:特征复用。
DenseNet的跳跃连接和残差连接看起来很相似,一个相加另一个拼接,但是结果差别还是很大的,resnet是浅层特征通过支路和深层特征逐个单元相加融合,而Dense连接直接将浅层和深层的特征拼在一起形成一个层数更多的特征矩阵。在之前的resnet和highway network的对比中我们发现保持支路畅通无阻似乎很关键,DenseNet比起ResNet来也不用相加,干脆就直接拿来用了。

Dense连接

Dense连接

Dense Block

[图片上传失败...(image-c2ada-1618654382170)]

生长率Growth rate:k是每次拼接增加的特征图层数,我们可以把特征图矩阵看成神经网络的一个全局状态,每一层都会将自己输出的k张特征图添加到这个状态当中。

虽然每一层的层数不多,到了第L层就累计了一共K_0+k*(L-1)张特征图。在每一层的特征提取前进行通道压缩可以减少计算量,采取这个操作的网络称为DenseNet-B。另外还可以在Transition Layer同样使用1*1卷积核,进行进一步压缩, 用 来控制压缩的程度. 的网络称为 DenseNet-C,原文使用.

[站外图片上传中...(image-9fcfc-1618654382170)]

[站外图片上传中...(image-efbd43-1618654382170)]

虽然这些残差模块中的连线很多看起来很夸张,但是它们代表的操作只是一个空间上的拼接,所以Densenet相比传统的卷积神经网络可训练参数量更少,只是比较占内存。

DenseNet 整体网络

[站外图片上传中...(image-5c5df9-1618654382170)]

网络结构
DenseNet-BC对比ResNet, BC中的B代表Bottleneck, C代表过渡层中 theta<1
    features = [init_features]
    for name, layer in self.items():
        new_features = layer(features)
        features.append(new_features)
    return torch.cat(features, 1)

为什么效果好?

  1. 每一层通过短接接收到了额外的监督信息,是一种隐式的deep Supervision,深度监督简单理解就是中间层可以得到直接的监督信息去提取特征。

  2. 特征复用,使浅层的信息(更接近原图)能直接被深层使用,dense 连接的结构其实同时继承了resnet的恒等映射和inception系列分支卷积再拼接的特点,最终使得在几百层的范围内,DenseNet能持续获得更好的表现,没有发生表现退化或者过拟合的现象。

你可能感兴趣的:(DenseNet 特征复用 2021-03-22)