论文研读笔记(六)—SENet

论文研读系列汇总:

1.AlexNet论文研读

2.VGG论文研读

3.GoogLeNet论文研读

4.Faster RCNN论文研读

5.ResNet 论文研读

6.SENet 论文研读

7.CTPN 论文研读

8.CRNN 论文研读

 

论文基本信息

题目:

Squeeze-and-Excitation Networks

(直译:挤压和激励网络

这两个是paper最大的创新操作)

作者:

Jie Hu  Li Shen   Samuel Albanie  Gang Sun  Enhua Wu

原文地址:

https://arxiv.org/pdf/1709.01507.pdf

 

 

 

研读内容:

摘要:

卷积神经网络建立在卷积运算的基础上,通过融合局部感受野内的空间信息和通道信息提取信息特征。现在有很多的工作建立在研究增强空间编码的好处。本paper在通道信息上进行了研究,并提出了SE模块,该模块可适用于各个模块,有良好的泛化行,能通过少量的计算成本获得显著的性能提升。

 

介绍:

它是如何实现的呢。具体来说作者给了两个操作,一个是Squeeze,另一个是Excitation。

Squeeze采用全局pooling操作,先将w*h*c的3D压缩到1*1*c的1D,这样就能获得全局感受野的信息。之后是一个Excitation,类似于应用了门的机制,给每个部分一个相关性的权重值(学习得),类似于注意力机制。

这个SE block可直接替换传统架构里的卷积层,并拥有更好的性能提升。

注意力机制:是一种将将更大的权重值分配给输入相关性更强的组成部分。就像人们看东西一样,一眼看过去,最吸引你的东西,这就是注意力机制通俗的理解,至于什么是相关性最强的部分,是程序通过loss学习到的。(个人理解)

 

SE blocks

论文研读笔记(六)—SENet

Squeeze全局信息嵌入:

因为普通的卷积,只能取局部的感受野大小,特别是在较低层次上,感受野很小,容易出误差。为了解决这个问题,有了Squeeze顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。

 

squeeze的公式表达:(个人觉得公式表达更清晰一些)

论文研读笔记(六)—SENet

上图为普通的卷积公式,vc是第c个卷积核

论文研读笔记(六)—SENet

通过squeeze操作,就是将w,h两个通道数变成1,1(特征压缩)

 

Excitation自适应重新校正:

为了在特征通道上做文章,作者并没有引入一个新的空间维度来进行特征通道间的融合,而是采用了一种全新的「特征重标定」策略(就是自适应重新校正一个意思)。具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征(这个就是一个特征重标定的过程),类似于注意力机制。通俗的说就是,让网络利用全局信息有选择的增强有益feature通道并抑制无用feature通道,从而能实现feature通道自适应校准

论文研读笔记(六)—SENet

通过excitation操作,Fex是这个激励函数,即自适应重新校正的函数,(δ作者给的是ReLU)这里w1是降维层的参数,w2是升维层的参数。为什么有这两个参数,见下面的实现细节图。通过FC层将维度降到1/r(作者这里取的是16,实验做出来的,图中标定的也是1/16)

论文研读笔记(六)—SENet

所以w1,w2的取值范围如上面的公式。(c是它的通道数,可以结合最后的那张图和这个公式进行理解

 

激励作用的一些实验讨论:作者通过实验,发现

  1. 在较低的层上,不同类别的图像,提取的特征是几乎相同的(换句话说,网络的初级阶段特征通道很可能是不同类别共享的)。
  2. 更大的深度上,不同类别的图像,不同通道上的值出现了识别相对特定特征的趋势(即网络的中级阶段,特征通道出现了对不同类别图像的偏好性,有点像分工合作识别
  3. 最高层上,出现了饱和的趋势,大部分**接近于1,其余为0,出现了特别具体的分辨趋势(**值为1的变成了标准函数块。)

 

Reweight 的操作:

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

 

 

实现的细节:

论文研读笔记(六)—SENet

这个是模型构建中的直接替换模式细节,图中为inceptionResNet替换。inceptionResNet解读见(博主厚颜无耻的链接推荐)。

这里作者使用 global average pooling 作为 Squeeze 操作。紧接着两个 Fully Connected 层组成一个 Bottleneck 结构去建模通道间的相关性,并输出和输入特征同样数目的权重。我们首先将特征维度降低到输入的 1/16,然后经过 ReLu **后再通过一个 Fully Connected 层升回到原来的维度。这样做比直接用一个 Fully Connected 层的好处在于:1)具有更多的非线性,可以更好地拟合通道间复杂的相关性;2)极大地减少了参数量和计算量。然后通过一个 Sigmoid 的门获得 0~1 之间归一化的权重,最后通过一个 Scale 的操作来将归一化后的权重加权到每个通道的特征上。(进行重标定操作)

 

 

 

 

 

 

参考链接:

https://blog.csdn.net/wangkun1340378/article/details/79092001

https://blog.csdn.net/xjz18298268521/article/details/79078551