SENet与SKNet详解

转自:https://blog.csdn.net/qixutuo6087/article/details/88822428


文章目录

  • 0.摘要
  • 1.引入
  • 2.SE-Net结构
    • 2.1 Sequeeze:Global Information Embedding
    • 2.2 Excitation: Adaptive Recalibration
    • 2.3 Scale
  • 3.SE模块嵌入实例
  • 4.SENet Experiments
  • 5.Selective Kernel Networks
  • 6.SKNet结构实例与实验结果
  • 7.总结

0.摘要

SENet & SKNet
SENet(Squeeze-and-Excitation Networks)是2017ImageNet分类比赛冠军模型,论文发表于2018年CVPR,目前是CVPR2018引用量最多的论文。SKNet(Selective Kernel Networks)是2019CVPR的一篇文章。二者有一定共通之处,本文将这两个模型放在一起对比分析。
Paper : Sequeeze-and-excitation networks,Selective Kernel Networks
Github: Sequeeze-and-excitation networks,Selective Kernel Networks

1.引入

卷积核通常被看作是在局部感受野上,将空间(spatial)信息和特征维度(channel-wise)信息进行聚合的信息聚合体

SENet与SKNet详解_第1张图片
从卷积核的意义入手,目前很多卷积神经网络的相关工作都是通过改进网络的空间结构来优化模型。
如Inception模块通过引入不同大小的卷积核来获得不同感受野上的信息。
或inside-outside网络参考空间上下文信息,等等。

那么可不可以在网络中加入特征维度信息呢?

基于这一想法,诞生了Squeeze-and-Excitation Networks。

2.SE-Net结构

SENet的作者想通过该模块实现两个功能

(1) 显式地建立模型,定义通道间关系
(2) 实现“特征重标定”。即对于不同channel-wise,加强有用信息并压缩无用信息

接下来看一下SENet结构
SENet与SKNet详解_第2张图片

2.1 Sequeeze:Global Information Embedding

SENet与SKNet详解_第3张图片

2.2 Excitation: Adaptive Recalibration

SENet与SKNet详解_第4张图片

2.3 Scale

SENet与SKNet详解_第5张图片

3.SE模块嵌入实例

SENet与SKNet详解_第6张图片
如上两图是SE模块嵌入到Inception网络和ResNet网络的示例图。可以看到不需要改变原来的网络结构,直接在原来的结构中加入一个SE模块即可。

需要注意的是若将SE嵌入到含有skip-connections的网络(如ResNet)中,需要在Addition前对分支上Residual进行特征重标定操作 。

如果在Addition后的特征进行重标定,由于主干上存在0-1的Scale操作,在网络较深BP优化时,在靠近输入层易出现梯度消失问题,导致模型难以优化。

其他网络关于SE模块嵌入位置的讨论详见论文。

4.SENet Experiments

SENet与SKNet详解_第7张图片
上表中第一列是对应模型作者论文中给出的实验结果,第二列是SENet作者复现结果,第三列是将原网络嵌入SE模块的结果。
可以看到提升还是很明显的,并且该模块对于不同深度和不同结构的模型都是有效的。

作者提到,以ResNet-50为例,嵌入SE模块的SE-ResNet-50其参数约提高2%-10%,理论计算复杂度提升<1%,实际训练时,使用GPU训练时间多出10%(作者分析可能是GPU对类似于SE模块的低量级全连接网络和全局平局池化计算没有针对性优化),使用CPU训练时间多出<2%(这个结果倒是较符合理论计算值)

5.Selective Kernel Networks

SKNet同样是一个轻量级嵌入式的模块,其灵感来源是,我们在看不同尺寸不同远近的物体时,视觉皮层神经元接受域大小是会根据刺激来进行调节的。那么对应于CNN网络,一般来说对于特定任务特定模型,卷积核大小是确定的,那么是否可以构建一种模型,使网络可以根据输入信息的多个尺度自适应的调节接受域大小呢?
基于这种想法,作者提出了Selective Kernel Networks(SKNet)。结构图如下
SENet与SKNet详解_第8张图片
这个网络主要分为Split,Fuse,Select三个操作
SENet与SKNet详解_第9张图片

6.SKNet结构实例与实验结果

SENet与SKNet详解_第10张图片
如上图所示使ResNext-50,SENet-ResNext-50,SKNet-ResNext-50三个网络的结构对比。

可以看到SENet是在(1×1卷积+3×3卷积+1×1卷积)完整卷积操作后直接加入全连接层,学习通道间依赖关系,再将学习到的通道权重加权回原向量。

而SKNet则是替代了ResNext中3*3卷积部分,用两个或多个不同卷积核大小的卷积操作 加学习通道权重全连接层替代。输出向量再继续进行1×1卷积操作。

从参数量来看,由于模块嵌入位置不同,SKNet的参数量与SENet大致持平(或略小于后者)。计算量也略有上升(当然,带来的精度提升远小于增加的计算量成本)。
SENet与SKNet详解_第11张图片
上图给出了SKNet与其他常见模型(包括SENet)的精度比较(使用ImageNet数据集)。

可以看到SKNet取得了最好的结果。

在论文中作者还给出了不同卷积核等参数对精度影响实验结果。

7.总结

SENet和SKNet都是可直接嵌入网络的轻量级模块,虽然SKNet的实验结果表明其略好于SENet,但SKNet使用时涉及到了卷积核数量和大小的选择问题,其作者也只是给出了不同参数选择下的实验结果,并选择了一个最好的结果与其他模型相比较。

但直观来说SKNet相当于给网络融入了soft attention机制,使网络可以获取不同感受野的信息,这或许可以成为一种泛化能力更好的网络结构。

毕竟虽然Inception网络结构精妙,效果也不错,但总觉得有种人工设计特征痕迹过重的感觉。如果有网络可以自适应的调整结构,以获取不同感受野信息,那么或许可以实现CNN模型极限的下一次突破。

SE模块的更多介绍可以看这篇文章 → http://www.sohu.com/a/161633191_465975

你可能感兴趣的:(深度学习,SENet,SKNet,soft,attention)