densenet详解_densenet包

densenet详解_densenet包DenselyConnectedConvolutionalNetworks,作者清华姚班的刘壮,获得cvpr2017bestpaper。非常值得阅读。DenseNet优势:(1)解决了深层网络的梯度消失问题(2)加强了特征的传播(3)鼓励特征重用(4)减少了模型参数DenseNet的网络基本结构如上图所示,主要包含DenseBlock和transitionlaye…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Densely Connected Convolutional Networks ,作者清华姚班的刘壮,获得cvpr 2017 best paper。非常值得阅读。

DenseNet优势:
(1)解决了深层网络的梯度消失问题
(2)加强了特征的传播
(3)鼓励特征重用
(4)减少了模型参数

DenseNet的网络基本结构如上图所示,主要包含DenseBlock和transition layer两个组成模块。其中Dense Block为稠密连接的highway的模块,transition layer为相邻2个Dense Block中的那部分。

上图是一个详细的Dense Block模块,其中层数为5,即具有5个BN+Relu+Conv(3*3)这样的layer,网络增长率为4,简单的说就是每一个layer输出的feature map的维度为4。
这里,由于DenseNet的每一个Dense Block模块都利用到了该模块中前面所有层的信息,即每一个layer都和前面的layer有highway的稠密连接。假设一个具有L层的网络,那么highway稠密连接数目为L*(L+1)/2。
和Resnet不同的是,这里的连接方式得到的feature map做的是concat操作,而resnet中做的是elementwise操作。
其中ResNet的非线性变换方程如下:

DensNet的非线性变换方程如下:

highway的稠密连接方式具有诸多的优势,增加了梯度的传递,特征得到了重用,甚至减少了在小样本数据上的过拟合。但是随之产生2个缺点。

(1)   这里假设第L层输出K个feature map,即网络增长率为K,那么第L层的输入为K0+K*(L-1),其中K0为输入层的维度。也就是说,对于Dense Block模块中每一层layer的输入feature map时随着层数递增的,每次递增为K,即网络增长率。那么这样随着Dense Block模块深度的加深,后面的输入feature map的维度是很大的。为了解决这个问题,在Dense Block模块中加入了Bottleneck 单元,即1*1卷积进行降维,输出维度都被降到4K维(K为增长率)。

(2)   每一个DenseBlock模块的输出维度是很大的,假设一个L层的Dense Block模块,假设其中已经加入了Bottleneck 单元,那么输出的维度为,第1层的维度+第2层的维度+第3层的维度+******第L层的维度,加了Bottleneck单元后每层的输出维度为4K,那么最终Dense Block模块的输出维度为4K*L。随着层数L的增加,最终输出的feature map的维度也是一个很大的数。为了解决这个问题,在transition layer模块中加入了1*1卷积做降维。

 

 

文章同时提出了DenseNet,DenseNet-B,DenseNet-BC,三种结构,具体区别如下:

原始DenseNet:

Dense Block模块:BN+Relu+Conv(3*3)+dropout

transition layer模块:BN+Relu+Conv(1*1)(filternum:m)+dropout+Pooling(2*2)

DenseNet-B:

Dense Block模块:BN+Relu+Conv(1*1)(filternum:4K)+dropout+BN+Relu+Conv(3*3)+dropout

transition layer模块:BN+Relu+Conv(1*1)(filternum:m)+dropout+Pooling(2*2)

DenseNet-BC:

Dense Block模块:BN+Relu+Conv(1*1)(filternum:4K)+dropout+BN+Relu+Conv(3*3)+dropout

transition layer模块:BN+Relu+Conv(1*1)(filternum:θm,其中0<θ<1,文章取θ=0.5)+dropout+Pooling(2*2)

其中,DenseNet-B在原始DenseNet的基础上,在Dense Block模块中加入了1*1卷积,使得将每一个layer输入的feature map都降为到4k的维度,大大的减少了计算量。

DenseNet-BC在DenseNet-B的基础上,在transitionlayer模块中加入了压缩率θ参数,论文中将θ设置为0.5,这样通过1*1卷积,将上一个Dense Block模块的输出feature map维度减少一半。

 

DenseNet-BC的网络结构参数如下,其中网络增长率K=32,conv 代表BN-ReLU-Conv

在ImageNet上DenseNet-BC和ResNet对比如下

可以看出,DenseNet-BC比ResNet参数量要少,运算量也少,准确性高。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188374.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 高通 linux_linux驱动开发教程

    高通 linux_linux驱动开发教程笔记:调试步骤:1.BLSPcheck:主要确认GPIO功能和BLSP通道2.pinctrl文件配置3.平台设备树文件配置4.时钟文件修改5.添加从设备:1 设备树注册方法2 设备数节点创建一、I2C配置1.根据原理图,查找相关的i2c引脚对应的GPIO值,以GPIO10作为I2C_SDA,GPIO11作为I2C_SCL为例。2.根据MSM8937DEV

    2022年10月8日
    2
  • LabelImg教程[通俗易懂]

    LabelImg教程[通俗易懂]目标检测中,原始图片的标注过程是非常重要的,它的作用是在原始图像中标注目标物体位置并对每张图片生成相应的xml文件表示目标标准框的位置。本文介绍一款使用方便且能够标注多类别并能直接生成xml文件的标注工具——labelImg工具,并对其使用方法做一个介绍。本文仅针对ubuntu系统做使用介绍。1、下载LabelImg方式1:网址:https://github.com/tzu…

    2022年6月20日
    57
  • 使用postman发送http请求

    使用postman发送http请求

    2021年9月17日
    64
  • 二进制与十进制的转换教案「建议收藏」

    二进制与十进制的转换教案「建议收藏」【教学目的与要求】1、熟悉数制的概念;2、掌握位权表示法; 3、熟练掌握二进制与十进制之间的转换方法。【课时安排】1课时。【教学重点与难点】1、难点:位权表示法 十进制转化为二进制   2、重点:二、十进制间相互转换【教学过程】(以下教师的语言、活动简称“师”,学生的活动简称“生”)新课导入师:猜一猜:简单的数字:10,这是几?     我认为这是2…

    2022年10月17日
    2
  • idea打开工程无法运行java程序_如何运行一个java程序

    idea打开工程无法运行java程序_如何运行一个java程序有时候想运行别人的项目,但是别人的项目并非IDEA项目(甚至只有源码),当我们打开项目时候,并不能运行,我们却不知道怎么办。经过多次查找和尝试,最终终于能够运行起来了。记一下解决的方法。这是源码打开的项目首先,查看sdk是否设置了。可以在File=》ProjectStructure=》Project里面查看并设置。但是,设置后还是不可以运行。如下图:设置SDK…

    2022年9月29日
    5
  • epoll使用具体解释(精髓)

    epoll使用具体解释(精髓)

    2021年11月16日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号