博客
关于我
【深度学习原理第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实现islower函数功能(附完整源码)
查看>>
Objective-C实现isPowerOfTwo算法(附完整源码)
查看>>
Objective-C实现isupper函数功能(附完整源码)
查看>>
Objective-C实现ItemCF算法(附完整源码)
查看>>
Objective-C实现ItemCF算法(附完整源码)
查看>>
Objective-C实现iterating through submasks遍历子掩码算法(附完整源码)
查看>>
Objective-C实现jaccard similarity相似度无平方因子数算法(附完整源码)
查看>>
Objective-C实现Julia集算法(附完整源码)
查看>>
Objective-C实现k nearest neighbours k最近邻分类算法(附完整源码)
查看>>
Objective-C实现k-Means算法(附完整源码)
查看>>
Objective-C实现k-nearest算法(附完整源码)
查看>>
Objective-C实现Knapsack problem背包问题算法(附完整源码)
查看>>
Objective-C实现knapsack背包问题算法(附完整源码)
查看>>
Objective-C实现knapsack背包问题算法(附完整源码)
查看>>
Objective-C实现knight tour骑士之旅算法(附完整源码)
查看>>
Objective-C实现KNN算法(附完整源码)
查看>>
Objective-C实现koch snowflake科赫雪花算法(附完整源码)
查看>>
Objective-C实现KPCA(附完整源码)
查看>>
Objective-C实现kth order statistick阶统计量算法(附完整源码)
查看>>
Objective-C实现LongestIncreasingSubsequence最长递增子序列算法(附完整源码)
查看>>