ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

继往开来:DenseNet

2021-07-28 13:34:22  阅读:266  来源: 互联网

标签:Dense 卷积 Concatnate 池化 DenseNet 继往开来 Block


DenseNet

ResNet通过前层与后层的“短路连接”(Shortcuts),加强了前后层之间的信息流通,在一定程度上缓解了梯度消失的现象,从而可以将神经网络搭建得很深。DenseNet最大化了这种前后层信息交流,通过建立前面所有层与后面层的密集连接,实现了特征在通道维度上的复用,使其可以再参数计算量最少的情况下实现比ResNet更优的性能
DenseNet的网络架构如下图所示,网络由多个Dense Block与中间的卷积池化组成,核心就在Dense Block中。Dense Block中的黑点代表一个卷积层,其中的多条黑色线代表数据的流动,每一层的输入由前面的所有卷积层输出组成。注意这里使用了通道的拼接(Concatnate)操作,而非ResNet的逐元素相加操作
在这里插入图片描述
DenseNet的结构有如下两个特效:

  • 神经网络一般需要使用池化等操作缩小特征图尺寸来提取语义特征,而Dense Block需要保持每一个Block内的特征图尺寸一致来进行Concatnate 操作,因此DenseNet被分成了多个Block。Block的数量一般为4
  • 两个相邻的Dense Block之间的部分被称为Transition层,具体包括BN、ReLU、1×1卷积、2×2平均池化操作。1×1卷积的作用是降维,起到压缩模型的作用,而平均池化则是降低特征图的尺寸

Block实现细节如下图所示,每个Block由若干个Bottleneck的卷积层组成,对应上图中的黑点。Bottleneck由BN、ReLU、1×1卷积、BN、ReLU、3×3卷积的顺序构成
在这里插入图片描述

关于Block,有以下4个细节需要注意:

  • 每一个Bottleneck输出的特征通道数是相同的,例如这里的32。同时可以看到,经过Concatnate操作后的通道数是按32的增长量增加的,因此这个32也被称为GrowthRate
  • 这里1×1卷积的作用是固定输出通道,达到降维的作用。当几十个Bottleneck相连接时,Concatnate后的通道数会增加到上千,如果不增加1×1的卷积来降维,后续3×3卷积所需的参数量会急剧增加。1×1卷积的通道数通常是GrowthRate的4倍
  • 上图中的特征传递方式是直接将前面所有层的特征Concatnate后传到下一层,这种方式与具体代码实现的方式是一致的,而不想第一张图中,前面层都要一个剪头指向后面的所有层
  • Block采用了激活函数在前、卷积层在后的顺序,这与一般的网络是不同的

标签:Dense,卷积,Concatnate,池化,DenseNet,继往开来,Block
来源: https://blog.csdn.net/weixin_42782833/article/details/119114342

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有