CNN经典网络:DenseNet、SENet

  • DenseNet
  • SENet

DenseNet

论文:https://arxiv.org/pdf/1608.06993.pdf
代码: Tensorflow/slim

特点

densenet紧接着在resnet之后提出,结合了resnet的思想。网络改进除了像resnet和inception在深度和宽度上做文章外,densenet通过利用feature来减少参数的同时提高效果,对feature进行有效利用并加强feature的传递。

主要思想是将每一层都与后面的层连接起来,如果一个网络中有L层,那么会有L(L+1)/2个连接,具体连接如下图所示:
CNN经典网络:DenseNet、SENet_第1张图片

  • DenseNet的一个优点是网络更窄,参数更少,很大一部分原因得益于这种dense block的设计,后面有提到在dense block中每个卷积层的输出feature map的数量都很小(小于100),而不是像其他网络一样动不动就几百上千的宽度。同时这种连接方式使得特征和梯度的传递更加有效,网络也就更加容易训练。
  • 前面提到过梯度消失问题在网络深度越深的时候越容易出现,原因就是输入信息和梯度信息在很多层之间传递导致的,而现在这种dense connection相当于每一层都直接连接input和loss,因此就可以减轻梯度消失现象,这样更深网络不是问题。
  • 另外作者还观察到这种dense connection有正则化的效果,因此对于过拟合有一定的抑制作用,主要应该也就是参数减少了。

网络结构

CNN经典网络:DenseNet、SENet_第2张图片
CNN经典网络:DenseNet、SENet_第3张图片
可以看出网络结构与ResNet还是比较相似的,只不过ResNet block变成了DenseNet block,除此以外block之前降采样,在ResNet中是通过stride=2卷积直接降采样,而DenseNet增加了Transition Layer:

BN -> Relu -> Conv 1x1 -> Pooling

SENet

论文:https://arxiv.org/pdf/1709.01507.pdf
代码:https://github.com/hujie-frank/SENet

特点

从特征通道之间的关系入手,对特征通道之间的关系进行建模表示,根据重要程度增强有用的特征、抑制没有用的特征。

主要分为两个过程,如下图所示,squeeze挤压和excitation激励。
CNN经典网络:DenseNet、SENet_第4张图片

  • Squeeze

    • 如下图所示,对通道进行了挤压,即通过全局平均池化,将shape为[H, W, C]的feature map变为[1, 1, C]。

    顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。

    在这里插入图片描述

  • Excitation

    • 得到挤压后的feature map后,进行激励,使用sigmoid函数。
      首先通过一个全连接层进行降维,即如下公式中的W1z,然后经过relu激活函数。即δ(W1z),再经过全连接进行升维,即W2(δ(W1z)),然后通过sigmoid进行权重激活。

    它是一个类似于循环神经网络中门的机制。通过参数 w 来为每个特征通道生成权重,其中参数 w 被学习用来显式地建模特征通道间的相关性。

    在这里插入图片描述

  • Reweight

    • 最后通过scale相乘,得到SE block的结果。

    将 Excitation 的输出的权重看做是进过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。

    在这里插入图片描述

网络结构

SE block:
CNN经典网络:DenseNet、SENet_第5张图片
先是一个Global pooling提取全局特征,接着经过2个全连接层加Relu来进行激励,最后经过Sigmoid激活后,作为系数通过Scale层给feature map增加全局特征,增强有用通道的feature,抑制无用通道的feature。
增加了残差结构的SE block:CNN经典网络:DenseNet、SENet_第6张图片
整体网络结构
CNN经典网络:DenseNet、SENet_第7张图片

你可能感兴趣的:(笔记)