【论文阅读笔记3】DenseNet和分类网络汇总

 可参考:DenseNet 简介

 论文:Densely Connected Convolutional Networks

一、介绍

       这篇论文是CVPR2017 的best paper,主要探讨了如何改进网络结构提升网络性能的方法,提出了dense block,密集连接的概念。

       DenseNet具有以下一些优点:

  • 减轻梯度消失问题
  • 增强特征的传播
  • 促进特征复用,具有抗过拟合的效果
  • 大大减少参数数量

二、网络结构探索的相关工作

     作者提到关于网络结构的改进主要有两个方向,一是更深的网络,另一个是更宽的网络。

     更深的网络作者主要提到了以下三个:

  •  Highway Networks(论文 Training Very Deep Networks)  

     这篇论文主要探讨如何训练很深的网络,主要思想可以看下面的公式。

   【论文阅读笔记3】DenseNet和分类网络汇总_第1张图片

    可以看到该网络是通过添加两个非线性变换T和C来改变层与层之间的连接方式,增强了网络的稀疏性。如果T=C=1,就是残差网络。

  • ResNets

       HighWay Networks中的思想在残差网络中得到了进一步的验证。

【论文阅读笔记3】DenseNet和分类网络汇总_第2张图片

        这里的F(x)对应着上面的H(x)。这个网络也是解决如何训练更深网络的问题,大家讲得很多,这里就不赘述了。

  • stochastic depth(论文:Deep Networks with Stochastic Depth)

      这篇论文的第一作者和本文是同一个人,该论文提出了随机深度,是在ResNets的基础上进行改进的。具体原理看下面的公式。

      残差块可以用公式表达成:

                                 

    本文通过增加一个可训练参数b来实现随机丢弃一些层:

 【论文阅读笔记3】DenseNet和分类网络汇总_第3张图片

       顺便一提,作者之所以想到密集连接这一连接方式也是基于上面的思想:通过对前面的层到后面的层建立short connections来提升网络性能。

       更宽的网络作者提到了GoogLet,ResNets in ResNet,FractalNets。

      下图是GoogLeNet的残差块,采用了NIN的概念,改变层的内部结构,拓展网络的宽度。Inception block和Dense block的共同之处是都选用的concat来拼接特征图,而不是resNet的求和。另外提到的两个网络我没有看相关文献。

【论文阅读笔记3】DenseNet和分类网络汇总_第4张图片

    作者说Dense Networks不是从深度和宽度来改善网络架构的,而是通过特征复用(feature reuse),来生成一种容易训练的,十分紧凑的并且参数效率很高的模型。(这里的几个形容词论文中都有详细介绍,甚至图表描述)

    此外,作者还提到了其它的一些网络结构创新的论文,包括NIN论文。没有一一阅读,太多了……

三、DenseNets

 1、密集块和密集连接(dense block and dense connectivity)

      【论文阅读笔记3】DenseNet和分类网络汇总_第5张图片

     先说密集连接。所谓密集连接就是密集块内的每一层都会接收到前面所有层输出的特征图,换种说法也就是,每一层输出的特征图都会传到后面的所有层,可以看Figure 1中的连接。然后,层与层之间具体是如何连接的呢?看下面的公式(2)和H函数的说明:先将前面所有层的feature map concat起来形成一个tensor,然后送入BN层进行批正则化操作,然后接一个ReLu激活函数进行非线性激活,最后接一个3*3的卷积

    再说生长率(grouth rate)的概念,也就是Figure 1中的k,指的是每一层输出的特征图的个数,也就是我们常说的channels。对于一个dense block,它的H是固定的,所以每一层输出的特征图个数也都是一样的。对于第l层,它就会接收到k0+(l-1)*k个特征图。

 

【论文阅读笔记3】DenseNet和分类网络汇总_第6张图片

   2、denseNets的结构

 

【论文阅读笔记3】DenseNet和分类网络汇总_第7张图片

       由于一个dense block内部的特征图尺寸始终是不变的,为了采用下采样层来缩小特征图尺寸,本文将一个Dense Networks划分成了多个连接在一起的Dense Block,各个dense block之间用过渡层连接。过渡层就是用来缩小特征图尺寸的,通过一个BN层接一个1*1卷积最后接一个2*2平均池化层实现尺寸减半。其中1*1conv作为瓶颈层(bottleneck layer)来减少特征图的数量。

      具体的网络结构看下图:

【论文阅读笔记3】DenseNet和分类网络汇总_第8张图片

   四、讨论

     在讨论部分,作者探讨了为什么dense networks能有效提升性能的原因。这部分看小标题和相应的图表就能看懂,不写了。

 

 

——————————————————————————————————————————————————————

                                         分割线

——————————————————————————————————————————————————————

    下面是对我目前了解到的分类网络的汇总

1、经典的分类网络:

  • AlexNet:开山之作,2012年提出,奠定了基本的网络结构,卷积层接pool层
  • VGG16和VGG19:2014年提出,探讨了更深的网络。
  • GoogLetNet:2014年提出,提出了Inception block,拓展网络宽度的代表之作。
  • ResNet::2015年何凯明提出,提出了残差块的概念,运用短路连接来拓展网络深度。
  • denseNet:2017年,提出了密集块的概念。

2、相关的演变

  • Inception_Res_V2:2016年,inception block 和res block的融合。(以上都是我读过的论文,下面的都是没读过论文只简单了解过的分类网络)
  • ResNeXt: 从残差网络演变而来,提出了另一种维度 cardinality,涉及group操作。(未阅读)
  • Xception:从Inception V3演变而来。
  • MobileNets,MobileNets V2:从Xception演变而来,主要解决效率问题。
  • shuffleNets:从mobileNets演变而来,涉及shuffle和group操作
  • DPN:融合了ResNeXt和Dense Net
  • SENET:ImageNet最后一届的冠军模型
  • NasNet:目前最佳识别模型

下表是keras的application版块目前实现的各个模型比较,可以看到NasNet准确率是最高的,但是模型很大,预测很慢。

【论文阅读笔记3】DenseNet和分类网络汇总_第9张图片

你可能感兴趣的:(论文阅读)