深度学习入门笔记之DenseNet网络
目录
- 设计理念
- DenseNet优势
- DenseNet的网络基本结构图
- Dense Block模块
- 参考资料
论文:Densely Connected Convolutional Networks
论文链接:https://arxiv.org/pdf/1608.06993.pdf
代码的github链接:https://github.com/liuzhuang13/DenseNet
MXNet版本代码(有ImageNet预训练模型): https://github.com/miraclewkf/DenseNet
设计理念
相比ResNet,DenseNet提出了一个更激进的密集连接机制:即互相连接所有的层,具体来说就是每个层都会接受其前面所有层作为其额外的输入。图1为ResNet网络的短路连接机制(其中+代表的是元素级相加操作),作为对比,图2为DenseNet网络的密集连接机制(其中c代表的是channel级连接操作)。可以看到,ResNet是每个层与前面的某层(一般是2~3层)短路连接在一起,连接方式是通过元素级相加。而在DenseNet中,每个层都会与前面所有层在channel维度上连接(concat)在一起(这里各个层的特征图大小是相同的,后面会有说明),并作为下一层的输入。对于一个LLL层的网络,DenseNet共包含L(L+1)2\frac{L(L+1)}{2}2L(L+1)个连接,相比ResNet,这是一种密集连接。而且DenseNet是直接concat来自不同层的特征图,这可以实现特征重用,提升效率,这一特点是DenseNet与ResNet最主要的区别。
如果用公式表示的话,传统的网络在lll层的输出为:
xl=Hl(xl−1)x_{l}=H_{l}(x_{l-1})xl=Hl(xl−1)
而对于ResNet,增加了来自上一层输入的identity函数:
xl=Hl(xl−1)+xl−1x_{l}=H_{l}(x_{l-1})+x_{l-1}xl=Hl(xl−1)+xl−1
在DenseNet中,会连接前面所有层作为输入:
xl=Hl([x0,x1,...,xl−1])x_{l}=H_{l}([x_{0},x_{1},...,x_{l-1}])xl=Hl([x0,x1,...,xl−1])
其中,上面的Hl(⋅)H_l(\cdot)Hl(⋅)代表是非线性转化函数(non-linear transformation),它是一个组合操作,其可能包括一系列的BN(Batch Normalization),ReLU,Pooling及Conv操作。注意这里lll层与l−1l-1l−1层之间可能实际上包含多个卷积层。
DenseNet的前向过程如图3所示,可以更直观地理解其密集连接方式,比如h3h_3h3 的输入不仅包括来自h2h_2h2 的x2x_2x2 ,还包括前面两层的x1x_1x1 和$x_2 ,它们是在channel维度上连接在一起的。
CNN网络一般要经过Pooling或者stride>1的Conv来降低特征图的大小,而DenseNet的密集连接方式需要特征图大小保持一致。为了解决这个问题,DenseNet网络中使用DenseBlock+Transition的结构,其中DenseBlock是包含很多层的模块,每个层的特征图大小相同,层与层之间采用密集连接方式。而Transition模块是连接两个相邻的DenseBlock,并且通过Pooling使特征图大小降低。图4给出了DenseNet的网路结构,它共包含4个DenseBlock,各个DenseBlock之间通过Transition连接在一起。
DenseNet优势
(1)解决了深层网络的梯度消失问题;
(2)加强了特征的传播 ;
(3)鼓励特征重用;
(4)减少了模型参数。
DenseNet的网络基本结构图
主要包含DenseBlock和transition layer两个组成模块。其中Dense Block为稠密连接的highway的模块,transition layer为相邻2个Dense Block中的那部分。
Dense Block模块
参考资料
DenseNet:比ResNet更优的CNN模型
DenseNet算法详解
深度学习入门笔记之DenseNet网络相关推荐
- 深度学习入门笔记之ALexNet网络
Alex提出的alexnet网络结构模型,在imagenet2012图像分类challenge上赢得了冠军.作者训练alexnet网络时大致将120万张图像的训练集循环了90次,在两个NVIDIA G ...
- 深度学习入门笔记之GoogLeNet网络
目录 一.简介 二.Inception网络结构各版本的演化 1 Inception单元结构 2 Inception V1 3 Inception V2--卷积核替换 4 Inception V3--卷 ...
- 深度学习入门笔记之VggNet网络
VGGNet是由牛津大学的视觉几何组(Visual Geometry Group)和谷歌旗下DeepMind团队的研究员共同研发提出的,获得了ILSVRC 2014( 2014年ImageNet图像分 ...
- 深度学习入门笔记(八):深层网络的原理
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记系列(三)——感知器模型和 tensorboard 的使用方法
本系列将分为 8 篇 .今天是第三篇 .主要讲讲感知器模型和 tensorboard 的基本使用方法 . 1. 感知器模型 因为小詹之前写过一篇感知器模型的介绍 ,这里就不赘述了 .有需要巩固的点击如 ...
- 深度学习入门笔记系列 ( 二 )——基于 tensorflow 的一些深度学习基础知识
本系列将分为 8 篇 .今天是第二篇 .主要讲讲 TensorFlow 框架的特点和此系列笔记中涉及到的入门概念 . 1.Tensor .Flow .Session .Graphs TensorFlo ...
- 深度学习入门笔记(六):误差反向传播算法
专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...
- 深度学习入门笔记(五):神经网络的学习
专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...
- 深度学习入门笔记(四):神经网络
专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...
最新文章
- 集成支付宝钱包支付iOS SDK的方法与经验
- 各类木材强度_层状磷酸锆/ 聚磷酸铵复合阻燃剂对木材的阻燃抑烟性能研究
- Oracle创建用户、表空间、导入导出、...命令
- 【BZOJ-2668】交换棋子 最小费用最大流
- mysql 5.0 5.1_mysql从5.0升级到5.1
- 贷款用途有什么限制?非法用途有什么后果?
- 我最喜欢的IntelliJ IDEA功能
- Struts2中s:iterator/s:iterator标签的使用:
- 微课|中学生可以这样学Python(例5.3):报数游戏
- 用bitbucket积累代码
- OpenCV-Python实战(18)——深度学习简介与入门示例
- ActiveX控件注册的几种方法
- Redis下载与安装(Linux版)
- java旅游网站毕业论文_旅游网站的设计与实现
- 计算机休眠唤醒原理,电脑休眠和睡眠区别以及怎么唤醒
- IMGUI_DX11显示自定义图片
- 我国会计计算机的发展历程,会计的发展历程是什么
- JixiPix Portrait Painter for mac(照片转油画工具)
- 不能不知道的分布式基础理论
- Android笔记总结
热门文章
- conceptdraw office(专业办公套件) v6.0.0附安装教程
- String中与获取相关的几个方法
- 商场三十六计——第32计 “空城计”
- 华为鸿蒙手机什么时候出售,南财快评:鸿蒙出世,现在明白任正非为什么会说“宁可卖5G,也不会卖终端”了...
- 最好的android智能手表,安卓智能手表推荐?十款好用的安卓智能手表排行榜
- echarts画出特殊形状的柱状图
- python换零钱_LeetCode-python 322.零钱兑换
- 硅谷一万清华人,为何打不过印度人
- 如何用好MindMapper中的便签
- 函数模板和普通函数区别