经典网络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个连接。每一层的输入来自前面所有层的输出。

DenseNet网络:

(1).减轻梯度消失(vanishing-gradient)。

(2).加强feature传递。

(3).鼓励特征重用(encourage feature reuse)。

(4).较少的参数数量。

Dense Block:像GoogLeNet网络由Inception模块组成、ResNet网络由残差块(Residual Building Block)组成一样,DenseNet网络由Dense Block组成,论文截图如下所示:每个层从前面的所有层获得额外的输入,并将自己的特征映射传递到后续的所有层,使用级联(Concatenation)方式,每一层都在接受来自前几层的”集体知识(collective knowledge)”。增长率(growth rate)是每个层的额外通道数。

Growth rate:如果每个函数产生个feature-maps,那么第层产生个feature-maps。是输入层的通道数。将超参数称为网络的增长率。

DenseNet Basic Composition Layer:BatchNorm(BN)-ReLu-3*3 Conv

DenseNet-B(Bottleneck Layers):在BN-ReLu-3*3 Conv之前进行BN-ReLU-1*1 Conv操作,减少feature maps size。

Transition Layer(过渡层):采用1*1 Conv和2*2平均池化作为相邻Dense Block之间的转换层,减少feature map数和缩小feature map size,size指width*height。在相邻Dense Block中输出的feature map size是相同的,以便它们能够很容易的连接在一起。

DenseNet-BC:如果Dense Block包含个feature-maps,则Transition Layer生成输出feature maps,其中称为压缩因子。当时,通过Transition Layers的feature-maps数保持不变。当时,称为DenseNet-C,在实验中。当同时使用Bottleneck和的Transition Layers时,称为DenseNet-BC。

下图是一个DenseNet结构图,来自于论文:使用了3个Dense Blocks。DenseNet由多个Desne Block组成。每个Dense Block中的feature-map size相同。两个相邻Dense Block之间的层称为Transition Layers。通过卷积和池化来更改feature-map size。

论文中给出了4种层数的DenseNet,论文截图如下所示:所有网络的增长率是32,表示每个Dense Block中每层输出的feature map个数。

DenseNet-121、DenseNet-169等中的数字121、169是如何计算出来的:以121为例,1个卷积(Convolution)+6个Dense Block*2个卷积(1*1、3*3)+1个Transition Layer(1*1 conv)+12个Dense Block*2个卷积(1*1、3*3)+ 1个Transition Layer(1*1 conv)+24个Dense Block*2个卷积(1*1、3*3)+ 1个Transition Layer(1*1 conv)+ 16个Dense Block*2个卷积(1*1、3*3)+最后的1个全连接层=121。这里的层仅指卷积层和全连接层,其它类型的层并没有计算在内

公式表示:其中表示非线性转换函数

(1).传统的网络在层的输出为:

(2).ResNet在l层的输出为:

(3).DenseNet在l层的输出为:

假如输入图像大小为n*n,过滤器(filter)为f*f,padding为p,步长(stride)为s,则输出大小为:计算卷积层大小,如果商不是整数,向下取整,即floor函数;计算池化层大小,如果商不是整数,向上取整,即ceil函数。参考:https://blog.csdn.net/fengbingchun/article/details/80262495

在https://github.com/fengbingchun/Caffe_Test/tree/master/test_data/Net/DenseNet 上整理了DenseNet prototxt文件。

这里描述下DenseNet-121架构:k=32,与上表中"DenseNet-121"有所差异

(1).输入层(Input):图像大小为224*224*3。

(2).卷积层Convolution+BatchNorm+Scale+ReLU:使用64个7*7的filter,stride为2,padding为3,输出为112*112*64,64个feature maps。

(3).Pooling:最大池化,filter为3*3,stride为2,padding为1,输出为57*57*64,64个feature maps。

(4).Dense Block1:输出为57*57*(64+32*6)=57*57*256,256个feature maps。

连续6个Dense Block,每个Dense Block包含2层卷积,卷积kernel大小依次为1*1、3*3,在卷积前进行BatchNorm+Scale+ReLU操作,第1、2个卷积输出feature maps分别为128、32。因为k=32,所以每个Dense Block输出feature maps数会比上一个Dense Block多32。每个Dense Block后做Concat操作。

(5).Transition Layer1:输出为29*29*128,128个feature maps。

A.BatchNorm+Scale+ReLU+1*1 conv,输出57*57*128。

B.平均池化,filter为2*2,stride为2,输出29*29*128。

(6).Dense Block2:输出为29*29*(128+32*12)=29*29*512,512个feature maps。

连续12个Dense Block,每个Dense Block包含2层卷积,卷积kernel大小依次为1*1、3*3,在卷积前进行BatchNorm+Scale+ReLU操作,第1、2个卷积输出feature maps分别为128、32。因为k=32,所以每个Dense Block输出feature maps数会比上一个Dense Block多32。每个Dense Block后做Concat操作。

(7).Transition Layer2:输出为15*15*256,256个feature maps。

A.BatchNorm+Scale+ReLU+1*1 conv,输出29*29*256。

B.平均池化,filter为2*2,stride为2,输出15*15*256。

(8).Dense Block3:输出为15*15*(256+32*24)=15*15*1024,1024个feature maps。

连续24个Dense Block,每个Dense Block包含2层卷积,卷积kernel大小依次为1*1、3*3,在卷积前进行BatchNorm+Scale+ReLU操作,第1、2个卷积输出feature maps分别为128、32。因为k=32,所以每个Dense Block输出feature maps数会比上一个Dense Block多32。每个Dense Block后做Concat操作。

(9).Transition Layer3:输出为8*8*512,512个feature maps。

A.BatchNorm+Scale+ReLU+1*1 conv,输出15*15*512。

B.平均池化,filter为2*2,stride为2,输出8*8*512。

(10).Dense Block4:输出为8*8*(512+32*16)=8*8*1024,1024个feature maps。

连续16个Dense Block,每个Dense Block包含2层卷积,卷积kernel大小依次为1*1、3*3,在卷积前进行BatchNorm+Scale+ReLU操作,第1、2个卷积输出feature maps分别为128、32。因为k=32,所以每个Dense Block输出feature maps数会比上一个Dense Block多32。每个Dense Block后做Concat操作。

(11).Classification Layer:

A.平均池化:filter为8*8,stride为1,padding为0,输出为1*1*1024,1024个feature maps。

B.卷积:kernel大小为1*1,输出1000个feature maps。

C.输出层(Softmax):输出分类结果,看它究竟是1000个可能类别中的哪一个。

可视化结果如下图所示:

GitHub:https://github.com/fengbingchun/NN_Test

经典网络DenseNet介绍相关推荐

  1. 经典网络GoogLeNet介绍

    经典网络GoogLeNet由Christian Szegedy等于2014年提出,论文名为<Going deeper with convolutions>,论文见:https://arxi ...

  2. 经典网络AlexNet介绍

    AlexNet经典网络由Alex Krizhevsky.Hinton等人在2012年提出,发表在NIPS,论文名为<ImageNet Classification with Deep Convo ...

  3. 经典网络VGGNet介绍

    经典网络VGGNet(其中VGG为Visual Geometry Group)由Karen Simonyan等于2014年提出,论文名为<Very Deep Convolutional Netw ...

  4. 经典网络ResNet介绍

    经典网络ResNet(Residual Networks)由Kaiming He等人于2015年提出,论文名为<Deep Residual Learning for Image Recognit ...

  5. 经典网络LeNet-5介绍及代码测试(Caffe, MNIST, C++)

    LeNet-5:包含7个层(layer),如下图所示:输入层没有计算在内,输入图像大小为32*32*1,是针对灰度图进行训练和预测的.论文名字为" Gradient-Based Learni ...

  6. 综述 | 语义分割经典网络及轻量化模型盘点

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于图像的语义分割又被理解为密集的像素预测,即将每个像素进行分类, ...

  7. 「图像分类」从数据集和经典网络开始

    https://www.toutiao.com/i6715367170378826248/ 欢迎大家来到图像分类专栏,本篇简单介绍数据集和图像分类中的经典网络的进展. 作者 | 郭冰洋 编辑 言有三 ...

  8. 2.2 经典网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.1 为什么要进行实例探究? 回到目录 2.3 残差网络 经典网络 (Classic Networks) 这节课,我们来学习几个经典的神经网络结构,分别是LeNet-5.A ...

  9. 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    看过的最全最通俗易懂的卷积神经网络的经典网络总结,在此分享,供更多人学习. 一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/articl ...

  10. 【图像分类】从数据集和经典网络开始

    欢迎大家来到图像分类专栏,本篇简单介绍数据集和图像分类中的经典网络的进展. 作者 | 郭冰洋 编辑  言有三 1 简介 一场完美的交响乐演出,指挥家需要充分结合每位演奏者和乐器的特点,根据演奏曲目把控 ...

最新文章

  1. 如何安装体验 Ubuntu on Windows
  2. socket编程之addrinfo结构体与getaddrinfo函数
  3. 【PAT乙级】1044 火星数字 (20 分)
  4. CSS 设计指南(第3版) 初读笔记
  5. 计算机中职生毕业鉴定评语,中职学生毕业鉴定评语
  6. ibm服务器做系统视频,智慧运算 IBM x3650 M4服务器拆机(视频)
  7. qwidget show 是否有信号_c++笔记(信号集处理函数)
  8. jdk8下载要先有Oracle账号吗,【转载】linux安装jdk8--附带oracle账号
  9. vue实现php传数据,vue+props传递数据怎样实现
  10. 月薪30K的软件测试简历怎么包装,软件测试项目经验怎么写?软件测试简历编写,赠软件测试简历模板
  11. SAP_ABAP 采购价格条件报表(改进版1)
  12. Markdown数学公式语法、常用符号与字体
  13. 开机后黑屏看不到桌面_电脑开机后黑屏不显示桌面,但可以用管理器运行程序,怎么解决...
  14. python代码情话_程序员的土味情话~(内含表白代码)
  15. MongoDB 索引(一)
  16. 使用git命令打补丁
  17. ubuntu 8000端口被占用
  18. spring data mongodb 大数据量查询性能差的原因(20s 优化到2s)
  19. setsockopt 设置socket
  20. c语言中变量r存放当前n值,C语言课件(王曙燕)chp3 算法和基本程序设计.ppt

热门文章

  1. java 密码生成器_[Java小白]WIFI纯数字密码字典生成器
  2. Windows下jmeter安装
  3. Mysql最常用的十大函数
  4. JavaWeb网络考试系统
  5. jupyter notebook 软件安装及使用
  6. msdev.exe 应用程序错误的解决方法
  7. Pycharm设置一种好看的皮肤/主题
  8. DateUtils(一个日期工具类)
  9. 深信服智安全 SCSA---1
  10. ibm服务器如何安装linux,IBM服务器安装步骤