DenseNet 简介

深度学习——稠密连接网络(DenseNet)原理讲解+代码(torch) DenseNet(稠密连接网络)是由Cornell大学的Gao Huang等人于2017年提出的深度学习网络架构。它的设计灵感来自于ResNet(残差网络)以及其前身 Highway Networks 的思想。这是作者发表的一篇CVPR顶会上的一篇论文,代码的地址,大家可以自行下载。 阅读详情

个人公众号,欢迎关注

YouChouNoBB

1.首先对深度学习做一个简单的回顾

2.介绍DenseNet

3.参考文献

1.1 DNN回顾

如下图所示是一个基本DNN结构,通过forward传播和backword传播来训练一个模型。包含input层,L个隐藏层和一个output,隐层使用的sigmoid激活函数,一般的优化方法有如下几种:

GD:对所有样本计算完一次梯度然后更新权重

SGD:每个样本计算一次梯度就更新权重

mini-batch-GD:对小部分样本计算梯度,然后更新权重

Momentum:加速度和速度在相同方向的时候,参数的更新得到加速,可以加快收敛速度

1.2 发展

在2012年AlexNet的出现让深度学习重新成为研究热点,在AlexNet中,使用了一些新的优化方法:dropout,relu,gpu+bigdata。之后的发展主要有增加网络深度,增强卷积模块功能,检测任务,新的功能单元等

在ImageNet上,随着误差的降低,网络的深度呈现加深的趋势,在ResNet之前,很少超过20层的网络

1.3 卷积层 convolution

通过使用卷积核对图片提取特征,操作非常简单,对应位置相乘然后求和,然后卷积核根据步长滑动提取整个图片特征。不同的卷积核能提取不同的特征。

1.4 ReLU激活函数

sigmoid有一个非常致命的缺点,当输入非常大或者非常小的时候,这些神经元的梯度是接近于0的.

如果你的初始值很大的话,大部分神经元可能都会处在饱和的状态而把gradientkill掉,这会导致网络变的很难学习。

Sigmoid的output不是0均值. 这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。产生的一个结果就是:如果数据进入神经元的时候是正的,那么w计算出的梯度也会始终都是正的。

使用 ReLU得到的SGD的收敛速度会比sigmoid/tanh快很多,相比于sigmoid/tanh,ReLU只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的运算。Relu能加速训练,导数好求,在反向传播时速度快,激活部分梯度是1,梯度不容易消失,而Sigmoid和tanh在两端梯度消失严重。

1.5 pooling

1.6 dropout

具体过程是,在某个mini-batch的训练中,随机隐藏部分神经元,这样就只能更新其他节点的参数,隐藏的这些没有更新,在下次迭代的时候再随机隐藏部分神经元,只更新剩下的节点参数。训练完成之后,在预测的时候还是使用所有节点来预测。

ensemble的作用: 先回到正常的模型(没有dropout),我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用 “5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。(例如 3个网络判断结果为数字9,那么很有可能真正的结果就是数字9,其它两个网络给出了错误结果)。这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。dropout掉不同的隐藏神经元就类似在训练不同的网络(随机删掉一半隐藏神经元导致网络结构已经不同),整个dropout过程就相当于 对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。
因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。(这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况)。 迫使网络去学习更加鲁棒的特征 (这些特征在其它的神经元的随机子集中也存在)。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的模式(鲁棒性)。这个角度看 dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高,隐藏部分节点之后,强迫剩下的节点学习更重要的特征。

1.7 Batch Normalization

大家都知道在统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如,transfer learning/domain adaptation(迁移学习,领域适应)等。

如果分布改变,网络越深,分布变化越明显,不能学习到很好的参数。在其他资料上有指出Batch Normalization的本质是防止梯度弥散。


 

1.8 Gradient Vanish

我们知道在反向传播的时候,根据链式求导来计算梯度,并更新参数。反向传播时经过该层的梯度是要乘以该层的参数的,从l层传到k层的连乘就是问题所在,同样BN也是为了解决这个问题。

2.1 ResNet

ResNet的出现很好的解决了梯度弥散的问题,使得更深的网络得以更好的训练。第L层的网络是由L-1层的网络经过H(包括conv,BN,ReLU,Pooling)变换得到,在此基础上直接连接到上一层的网络。使得梯度能够得到更好的传播。

举个例子,后面的网络需要排队来领取梯度信息,但是排到越后面的网络领到的梯度很少甚至没有,这个时候直接开辟一条新的道路(skip connection),将梯度信息传递到后面的网络。

其实最先超过100层的网络是Highway Networks,非常形象的把这种结构比喻成高速公路。后来通过随机删掉一些层可以训练到1202层的ResNet。

2.2 DenseNet

DenseNet和ResNet的一个明显区别是,ResNet是求和,而DenseNet是做一个拼接,每一层网络的输入包括前面所有层网络的输出。第L层的输入等于K x (L-1) + k0,其中k是生长率,表示每一层的通道数,比如下图网络的通道数为4。

DenseNet提升了信息和梯度在网络中的传输效率,每层都能直接从损失函数拿到梯度,并且直接得到输入信号,这样就能训练更深的网络,这种网络结构还有正则化的效果。其他网络致力于从深度和宽度来提升网络性能,
DenseNet致力于从特征重用的角度来提升网络性能

上面图中的结构是一个dense block,下图的结构是一个完整的dense net,包括3个dense block。可以发现在block之间没有dense连接,因为在pooling操作之后,改变了feature maps的大小,这时候就没法做dense 连接了。在两个block之间的是transition layer ,包括了conv ,pool,在实验中使用的是BN,(1x1 conv),(2x2 avg pool)。

这种结构的好处是可以缓解梯度消失,省参数省计算,特征重用可以起到抗过拟合的作用。达到相同的精度,dense net只需要res net一半的参数和一半的计算量。

2.3 冗余

在使用密集连接时候的网络显得比较冗余,这样会不会增大参数量呢,DenseNet很好的处理了这个问题。它将每一层都设计的特别窄,在Dense Block中的每一个单元实际上都是一个 bottleneck layer,其中包括一个 1x1 conv和一个3x3 conv。在block之间还有个transition layer,包括一个BN,一个1x1的conv和一个pooling,同样起到了降低冗余的作用,一个block中有m个feature maps,通过一个0-1之间的参数来限制输出的feature maps数量。

这种设计可以很好的降低参数量,GoogleNet也是用这种方式来降低参数的,下图是GoogleNet的一个功能模块,由1x1 64通道(通道可以理解为就是卷积核的数量),3x3 128通道,5x5 32通道的convolution和一个3x3 max pooling构成,输入的是28x28的图片192通道。那么可以分别计算出这3个卷积层的参数数量,为上一个通道数乘上当前卷积核的大小和通道数。可以算出来一个功能模块有38w个参数。

功能模块使用1x1的卷积核来实现降低参数量,方式为在3x3,5x5的卷积核之前分别添加1x1x96,1x1x16的卷积核,在pooling之后添加1x1x32的卷积核。用同样的方式来计算参数量,上一个通道数乘上当前卷积核的大小和通道数。得到当前功能模块的参数量为16w,所以可以使用1x1的卷积核,通过改变通道大小来进行参数降低。

下面的图表示3个block中特征的热力图,颜色越深表示特征越重要,可以看到浅层特征同样会被利用到

下面是DenseNet的主要代码,就不作过多介绍了

2.4内存优化

DenseNet的内存主要耗费在拼接过程,每次拼接都会开辟新的内存空间。那么可以使用共享内存来解决这个问题,另一个是forward和backward的内存依赖,粉红色是forward,深红色是backward。Forward的时候内存不能释放,backward的时候可以,计算完一块红色的就能直接释放,深红依赖粉红,粉红的也可以释放,在计算深红的时候重新计算粉红,这样会多耗费15%的时间,但是能节省70%的空间。

2.5 DPN

 DPN获得了最后一届ImageNet的冠军,主要思想是融合了ResNet和DenseNet,这里就不作过多介绍了。

3 参考文献

• CNN trick
• DPN

个人公众号,欢迎关注

YouChouNoBB

神经网络-DenseNet网络结构 DenseNet(Densely Connected Convolutional Networks)是一种深度卷积神经网络(CNN)架构,首次由 Gao Huang 等人在 2017 年提出。DenseNet 的主要特点是,其在网络的每一层中与前面所有层进行连接,从而形成了一个“紧密连接”的网络结构。与传统的 CNN 架构相比,DenseNet 通过这种 dense connectivity 设计,可以有效地缓解梯度消失的问题,并利用深层网络的优势。 阅读详情

相关推荐

[pytorch] 2D + 3D DenseNet代码实现,改写

2D + 3D DenseNet代码实现 pytorch

qq_38736504的博客 3620

经典网络DenseNet介绍

经典网络DenseNet(Dense Convolutional Network)由Gao Huang等人于2017年提出,论文名为:《Densely Connected Convolutional Networks》,论文见:https://arxiv.org/pdf/1608.06993.pdf DenseNet以前馈的方式(feed-forward fashion)将每个层与其它层连接起来。在传统卷积神经网络中,对于L层的网络具有L个连接,而在DenseNet中,会有L(L+1)/2个连接。每一层的

网络资源是无限的 3万+

DenseNet《Densely Connected Convolutional Networks》

最近的研究表明,如果卷积网络在靠近输入和接近输出的层之间包含更短的连接,那么卷积网络可以更深入、更准确、更有效地训练。在本文中,作者接受了这一观察结果,并引入了密集卷积网络(DenseNet),它以前馈方式将每一层连接到其他每一层。传统的LLL层卷积网络有LLL个连接——每一层和它的后续层之间有一个连接,而作者提出的网络有LL122LL1​个直接连接。这张配图,HHH表示的是由批量归一化(BN)、ReLU激活函数和卷积层(Conv)组成的非线性映射层。

985小菜鸡 1239

DenseNet详解

​ 目录 一、DenseNet网络的背景 二、DenseNet网络结构 四、DenseNet优缺点 五、DenseNet代码实现 一、DenseNet网络的背景 DenseNet模型的基本思路与ResNet一致,但它建立的是前面所有层与后面层的密集连接(即相加变连结),它的名称也是由此而来。 DenseNet的另一大特色是通过特征在通道上的连接来实现特征重用。这些特点让DenseNet的参数量和计算成本都变得更少了(相对ResNet),效果也

tt丫的博客 3万+

DenseNet(密集连接的卷积网络)

DenseNet是指Densely connected convolutional networks(密集卷积网络)。它的优点主要包括有效缓解梯度消失、特征传递更加有效、计算量更小、参数量更小、性能比ResNet更好。它的缺点主要是较大的内存占用。

走在深度学习前沿的小宋 2万+

DenseNet详解与实现

DenseNet 通过使每一层直接访问所有前面层的特征映射,有效缓解了梯度消失问题,并提升了特征重用效率。该网络采用密集块作为核心结构,其中每层输出都与后续层串联。为进一步控制计算复杂度,引入了瓶颈层(使用 1×1 卷积降维)和过渡层(压缩特征通道数并下采样)。本文详细阐述了 DenseNet 的构建原理,并给出基于 tf.keras 的实现代码。

盼小辉丶的博客 2826

DenseNet简介

论文传送门:https://arxiv.org/pdf/1608.06993.pdf CNN模型的发展十分火热,自LeNet提出以来,涌现了一批优秀的CNN模型。 LeNet是CNN的开山之作,标志着CNN真正的提出。2012年AlexNet夺得ILSVRC2012的冠军,深度学习大火。之后又涌现了VGG、GoogleNet、ResNet等,其中ResNet可谓是一个里程碑式的CNN模型。 本文介...

OOFelvis的博客 1421

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3416

DenseNet及相关代码简介

本篇博客主要是在Tensorflow框架下对于DenseNet网络的研究,从代码实现的角度来分析DenseNet网络的优势。

Halon_Q的博客 4289

C#安装OpenCv及打开笔记本默认摄像头方法

C#安装OpenCv及打开笔记本默认摄像头方法

cg1135217680的博客 2572

通讯模块_三菱IQ-R PLC串口通讯模块RJ71C24进行Modbus-RTU通讯

在日常的选型中,很多电气工程师咨询我,三菱iQ-R系列有没有Modbus通讯模块,我在这里可以肯定的回复您,这个肯定是有的;我们共有三种可以选择分别是RJ71C24、RJ71C24-R2、RJ71C24-R4。RJ71C24系列支持MC协议通信、通信协议通信、无顺序协议通信、双向协议通信全、MODBUS通信。当我帮助他们选型之后,他们在使用的时候,又是一头雾水。那么今天我抽一些时间讲解一RJ71...

weixin_39878549的博客 9271

CV之DL之DenseNet:DenseNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

​ CV之DL之DenseNet:DenseNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略 目录 相关论文 DenseNet算法的简介(论文介绍) DenseNet算法的案例应用 相关文章 DL之DenseNet:DenseNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略 DL之DenseNet:DenseNet算法的架构详解 相关论文 《Densely Connected Convolutional Networks》翻译与解读 地址

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 7546

SAP 公司间库存调拨通过IDOC完成自动发票校验

本文仅用于SAP软件的应用与学习,不代表SAP公司。(注:文中所示截图来源SAP ERP软件,软件相应著作权归SAP所有。公司间采购时,通过SAP内部EDI 数据传输功能, 由销售方开的公司间发票自动触发采购方的发票校验。​欢迎扫码加如下微信,我会把大家拉到SAP PP学习群,随时欢迎跟我和其他SAP PP顾问一起交流和学习,如下图库存调拨订单,系统已经完成了发货方发货和收货方收货。

2402_84262664的博客 925

DenseNet神经网络简介与代码实战

DenseNet神经网络简介与代码实战

修行之路 405

别再死记硬背了!用一张时序图彻底搞懂Setup和Hold检查的本质

本文深入解析数字IC设计中的Setup和Hold时序检查原理,通过波形图直观展示数据在触发器间的传递过程。详细讲解Setup检查为何关注前一周期的数据,Hold检查为何关注同一周期的数据,并提供实际设计中的考量因素和修复策略,帮助工程师彻底理解时序检查的本质。

weixin_29927965的博客 364

TMS320F28335调试跟踪的问题:DSP从上电复位,一直到执行main()的第一条语句之间,都干了些什么,以及CCS调试时程序查找的问题

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1213

深度学习基础--CNN经典网络之“DenseNet”简介,源码研究与复现(pytorch)

DenseNet是在ResNet之后发明出来的,从网络结构图来看,他类似采用残差的方式。

羊小猪~~的博客 1557

基于C++和Basler SDK的相机开发详解

Basler相机是德国Basler公司生产的高性能工业相机,具有高分辨率、高帧率和低噪声的特点。Basler相机广泛应用于机器视觉、工业自动化、医疗影像和安防监控等领域。高分辨率和高帧率:能够捕捉清晰、细腻的图像。多种接口:支持USB、GigE、Camera Link等多种接口,方便不同应用场景的需求。丰富的配置选项:支持多种图像格式、分辨率和帧率的配置,适应不同的应用需求。本文详细介绍了如何基于C++和Basler SDK进行相机开发,涵盖了从环境搭建、相机连接、图像采集到图像处理的完整过程。

qq_38334677的博客 2100

DenseNet介绍

在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”(shortcuts,skip connection),这有助于训练过程中梯度的反向传播...

qq_42990803的博客 2748

A2B V1.0协议学习笔记(A2B System Specification V1.0)

A2B全称是 Automotive Audio Bus 汽车音频总线,主要是解决传统音频总线线多、线重、成本贵等问题。本文是以A2B V1.0规范为准,现在ADI又推出了A2B V2.0,物理层不兼容,采用了QPSK编码方式,后续有时间再更新。A2B总线的优点:支持1主多从的架构(最多10个子节点)支持50Mbps(具体是49.152 Mbps)的高带宽传输以及

qflook的博客 4428

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

DenseNet总结

有2个输出通道数为10的(DenseBlock使用通道数为3的输入时,我们会得到通道数为。

qq_63075864的博客 1228

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

DenseNet 浅析

DenseNet 于论文《》中提出,是 CVPR2017 的 oral。论文提出 DenseNet 并与 ResNet 和 Inception 做对较。为提升网络的效果,一般操作是增加网络的深度和宽度,但论文作者另辟蹊径,聚焦于 feature 的极致利用以获得更佳效果和更少参数。对于梯度消失问题,ResNet 等网络使用跳层连接结构加以解决。作者延续该思路,提出 DenseBlock,在保证网络层间最大程度的信息传输的同时,直接将所有层连接起来。........................

晓野豬 5058

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

DenseNet论文阅读

翻译近期的研究表明,如果卷积网络在靠近输入和靠近输出的层之间包含较短的连接,它们可以变得更深、更准确,并且训练更加高效。在本文中,我们基于这一观察,提出了密集卷积网络(DenseNet),它以前馈的方式将每一层与其他所有层相连。而传统的卷积网络有 L 层时,只有 L个连接(每一层与其后一层之间有一个连接),而我们的网络则有个直接连接。对于每一层,所有前面层的特征图都作为输入,同时它自己的特征图也会作为输入传递给所有后续层。

weixin_57648437的博客 1445

DenseNet详述

本文主要介绍近几年效果比较好的DenseNet网络并代码实现。

周先森爱吃素的博客 3810

densenet

DenseNet:比ResNet更优的CNN模型 - 知乎码字不易,欢迎给个赞! 欢迎交流与转载,文章会同步发布在公众号:机器学习算法全栈工程师(Jeemy110) 历史文章:小白将:你必须要知道CNN模型:ResNet前言在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的…https://zhuanlan.zhihu.com/p/37189203Deep Networks with Stochastic Depth - 纯洁的小兄弟 - 博客园随机深度文章是发表于ECCV2016,这篇文章早于Den

liguandong 3678

使用keras导入densenet模型

从keras的keras_applications的文件夹内可以找到内置模型的源代码 Kera的应用模块Application提供了带有预训练权重的Keras模型,这些模型可以用来进行预测、特征提取和finetune 应用于图像分类的模型,权重训练自ImageNet:XceptionVGG16VGG19ResNet50InceptionV3InceptionResNetV2...

anlaiji6783的博客 1617
上一篇: 1x1卷积核如何降低参数量
下一篇: python快速入门
Bryan__
博客等级 码龄12年 2500粉丝 166原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值