python进阶教程
机器学习
深度学习
长按二维码关注
与 ResNet 和 Pre-Activation ResNet 相比,DenseNet 具有较少的参数和较高的精度。
在Standard ConvNet中,输入图像经过多次卷积,得到高层次特征。
ResNet Concept
在ResNet中,提出了恒等映射(identity mapping)来促进梯度传播,同时使用使用 element 级的加法。它可以看作是将状态从一个ResNet 模块传递到另一个ResNet 模块的算法。
One Dense Block in DenseNet
在 DenseNet 中,每个层从前面的所有层获得额外的输入,并将自己的特征映射传递到后续的所有层,使用级联方式,每一层都在接受来自前几层的“集体知识(collective knowledge)”。
对于每个组成层使用 Pre-Activation Batch Norm (BN) 和 ReLU,然后用k通道的输出特征映射进行 3×3 卷积,例如,将x0、x1、x2、x3转换为x4。这是 Pre-Activation ResNet 的想法。
DenseNet-B
由于后面层的输入会非常大,DenseBlock内部可以采用bottleneck层来减少计算量,主要是原有的结构中增加1x1 Conv,即BN+ReLU+1x1 Conv+BN+ReLU+3x3 Conv,称为DenseNet-B结构。其中1x1 Conv得到4k个特征图它起到的作用是降低特征数量,从而提升计算效率。
Multiple Dense Blocks
采用1×1 Conv和2×2平均池化作为相邻 dense block 之间的转换层。 特征映射大小在 dense block 中是相同的,因此它们可以很容易地连接在一起。 在最后一个 dense block 的末尾,执行一个全局平均池化,然后附加一个Softmax分类器。
如果 Dense Block 包含m个特征映射,则转换层(transition layer)生成 输出特征映射,其中 称为压缩因子。
当时,跨转换层的特征映射数保持不变。在实验中,的 DenseNet 称为 DenseNet-C,默认。
当同时使用 bottleneck 和 时的转换层时,该模型称为 DenseNet-BC 模型。
最后,训练 with/without B/C 和不同L层和k生长速率的 DenseNet。
误差信号可以更直接地传播到早期的层中。这是一种隐含的深度监督,因为早期的层可以从最终的分类层直接获得监督。
RestNet 和 DenseNet 的参数数量
对于每个层,RetNet 中的参数与成正比,而 DenseNet 中的参数与成正比。由于, 所以 DenseNet 比 ResNet 的size更小。
DenseNet中更加多样化的特征
由于 DenseNet 中的每一层都接收前面的所有层作为输入,因此特征更加多样化,并且倾向于有更丰富的模式。
标准ConvNet
在标准ConvNet中,分类器使用最复杂的特征。
DenseNet
在 DenseNet 中,分类器使用所有复杂级别的特征。它倾向于给出更平滑的决策边界。它还解释了为什么 DenseNet 在训练数据不足时表现良好。
Heat map on the average absolute weights of how Target layer (l) reuses the source layer (s)
论文链接https://arxiv.org/pdf/1608.06993.pdf 参考链接https://towardsdatascience.com/review-densenet-image-classification-b6631a8ef803 Github链接https://github.com/liuzhuang13/DenseNet
本文分享自 机器学习与python集中营 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!