博客
关于我
【深度学习原理第9篇】DenseNet模型详解
阅读量:214 次
发布时间:2019-02-28

本文共 981 字,大约阅读时间需要 3 分钟。

DenseNet是2017年CVPR最佳论文之一,它与ResNet和GoogLeNet不同,DenseNet通过更密集的特征连接实现了性能的提升。这种网络结构的核心思想是充分利用特征层,使模型性能更优,同时减少参数,提高性能。密集连接是本文的核心贡献之一。

DenseNet由多个Dense Block组成,每个Dense Block都有特定的结构。其核心原理是每个层都会接受其前面所有层作为输入,这样可以实现特征的极致利用。具体来说,每个Dense Block包括两个卷积操作:一个1×1卷积和一个3×3卷积,通过BN+ReLU作为非线性变换。这样设计既保留了特征尺寸,便于后续拼接,又减少了参数数量。

以下是Dense Block的详细分析:输入的特征图经过非线性变换后,与前一层的特征图进行拼接,这样每个层的输出都包含前面所有层的特征信息。这种方式实现了密集连接,使得网络能够更好地利用特征信息。代码实现中,通过循环结构构建多个卷积模块,每个模块包含BN、激活函数、1×1卷积和3×3卷积等操作,最终将所有输出特征拼接起来。

与ResNet相比,DenseNet的核心结构不同。ResNet通过残差边连接,直接将前一层的输出与当前层的输出相加,减少了梯度消失问题。DenseNet则通过更密集的特征连接,实现特征的重用和充分利用。

Transition Layer的作用是整合上一个Dense Block的特征,并对宽高进行下采样。它的结构包括BN、ReLU、1×1卷积和2×2平均池化。通过这种方式,DenseNet能够在不同Dense Block之间保持特征的连贯性,同时减小特征图的尺寸。

整个DenseNet网络结构包含多个Dense Block和Transition Layer。例如,DenseNet-121由121个卷积层组成,计算层数时采用1+2×6+1+2×12+1+2×24+1+2×16+1的方式。网络从7×7卷积开始,随后是池化操作,接着是多个Dense Block和Transition Layer,最后通过7×7平均池化和全连接层完成分类任务。

实验结果显示,DenseNet在性能上优于ResNet。其优势在于充分利用特征信息,但模型复杂度较高。尽管如此,DenseNet的密集连接思想具有重要意义,为后续网络设计提供了参考。

转载地址:http://qjip.baihongyu.com/

你可能感兴趣的文章
Objective-C实现查找链表的中间元素算法(附完整源码)
查看>>
Objective-C实现样条插值(附完整源码)
查看>>
Objective-C实现根据cpu和磁盘序列号生成注册码( 附完整源码)
查看>>
Objective-C实现格雷码序列算法(附完整源码)
查看>>
Objective-C实现桥接模式(附完整源码)
查看>>
Objective-C实现检查一个数字是否可以被另一个数字整除算法(附完整源码)
查看>>
Objective-C实现检查一年是否是闰年算法 (附完整源码)
查看>>
Objective-C实现检查三个点在 3D 中是否共线算法(附完整源码)
查看>>
Objective-C实现检查字符串是否包含字母表中所有字母的算法(附完整源码)
查看>>
Objective-C实现检查字符是否为字母算法(附完整源码)
查看>>
Objective-C实现检查数字是否为偶数算法(附完整源码)
查看>>
Objective-C实现检查数字是否为奇数算法(附完整源码)
查看>>
Objective-C实现检查给定图中是否存在循环算法(附完整源码)
查看>>
Objective-C实现检查给定字符串是否在camelCase中算法(附完整源码)
查看>>
Objective-C实现检查给定的字符串是否在kebabcase中算法(附完整源码)
查看>>
Objective-C实现检查给定的字符串是否在snake_case中算法(附完整源码)
查看>>
Objective-C实现检查给定的字符串是否是扁平(全部小写)的算法(附完整源码)
查看>>
Objective-C实现检检查回文字符串(区分大小写)算法(附完整源码)
查看>>
Objective-C实现检测U盘的插入与拔出 (附完整源码)
查看>>
Objective-C实现检测列表中的循环算法(附完整源码)
查看>>