SENet

版权声明:本文为博主原创文章,未经博主允许不得转载

 

论文:Squeeze-and-Excitation Networks

链接:

代码:https://arxiv.org/abs/1709.01507

第三方代码:

Momenta公司发于2017CVPR


1.概述

卷积核作为CNN的核心,通常都是在局部感受野上将空间(spatial)信息和特征维度(channel-wise)的信息进行聚合最后获取全局信息。卷积神经网络由一系列卷积层、非线性层和下采样层构成,这样它们能够从全局感受野上去捕获图像的特征来进行图像的描述,然而去学到一个性能非常强劲的网络是相当困难的。

原文是这么说的,The central building block of convolutional neural networks (CNNs) is the convolution operator, which enables networks to construct informative features by fusing both spatial and channel-wise information within local receptive fields at each layer.

By interleaving a series of convolutionallayers with non-linear activation functions and downsam-pling operators, CNNs are able to produce robust represen-tations that capture hierarchical patterns and attain global theoretical receptive fields.

最近很多工作被提出来从空间维度层面来提升网络的性能,如 Inception 结构中嵌入了多尺度信息,聚合多种不同感受野上的特征来获得性能增益;在 Inside-Outside 网络中考虑了空间中的上下文信息;还有将 Attention 机制引入到空间维度上,等等。

论文的核心是从特征通道之间的关系入手,显式地建模特征通道之间的相互依赖关系。具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去增强有用的特征并抑制对当前任务用处不大的特征,通俗来讲,就是让网络利用全局信息有选择的增强有益feature通道并抑制无用feature通道,从而能实现feature通道自适应校准。


2.论文详解

Figure1表示一个SE block,包含Squeeze和Excitation两部分,接下来结合公式来讲解Figure1。

首先Ftr这一步在文中就是一个标准的卷积操作,如公示1所示:

接下来就是Squeeze操作,公式非常简单,就是一个global average pooling,如公示2所示:

原文有这么一句话,Each of the learned filters operates witha local receptive field and consequently each unit of the transformation output U is unable to exploit contextual information outside of this region.意思就是感受野是局部的。

squeeze将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,它表征着在特征通道上响应的全局分布。

再接下来就是Excitation操作,如公式3所示:

这里先用W1乘以z,就是一个全连接层操作,W1的维度是C/r * C,这个r是一个缩放参数,在文中取的是16,这个参数的目的是为了减少channel个数从而降低计算量。然后再经过一个ReLU层;然后再和W2相乘,和W2相乘也是一个全连接层的过程,W2的维度是C*C/r,因此输出的维度就是11C;最后再经过sigmoid函数,得到s。

最后是一个 Reweight 的操作,我们将 Excitation 的输出的权重看做是每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定,如公示4所示:

Figure2是在Inception中加入SE block:

Figure3是在ResNet中添加SE block:

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

MODEL AND COMPUTATIONAL COMPLEXITY,这里就直接转载专栏的内容了

从上面的介绍中可以发现,SENet 构造非常简单,而且很容易被部署,不需要引入新的函数或者层。除此之外,它还在模型和计算复杂度上具有良好的特性。拿 ResNet-50 和 SE-ResNet-50 对比举例来说,SE-ResNet-50 相对于 ResNet-50 有着 10% 模型参数的增长。额外的模型参数都存在于 Bottleneck 设计的两个 Fully Connected 中,由于 ResNet 结构中最后一个 stage 的特征通道数目为 2048,导致模型参数有着较大的增长,实验发现移除掉最后一个 stage 中 3 个 build block 上的 SE 设定,可以将 10% 参数量的增长减少到 2%。此时模型的精度几乎无损失。

另外,由于在现有的 GPU 实现中,都没有对 global pooling 和较小计算量的 Fully Connected 进行优化,这导致了在 GPU 上的运行时间 SE-ResNet-50 相对于 ResNet-50 有着约 10% 的增长。尽管如此,其理论增长的额外计算量仅仅不到 1%,这与其在 CPU 运行时间上的增长相匹配(~2%)。可以看出,在现有网络架构中嵌入 SE 模块而导致额外的参数和计算量的增长微乎其微。

从上面的介绍中可以发现,SENet 构造非常简单,而且很容易被部署,不需要引入新的函数或者层。除此之外,它还在模型和计算复杂度上具有良好的特性。拿 ResNet-50 和 SE-ResNet-50 对比举例来说,SE-ResNet-50 相对于 ResNet-50 有着 10% 模型参数的增长。额外的模型参数都存在于 Bottleneck 设计的两个 Fully Connected 中,由于 ResNet 结构中最后一个 stage 的特征通道数目为 2048,导致模型参数有着较大的增长,实验发现移除掉最后一个 stage 中 3 个 build block 上的 SE 设定,可以将 10% 参数量的增长减少到 2%。此时模型的精度几乎无损失。

以ResNet为例,假设ResNet一共包含S个stage,每个Stage包含N个重复的residual block,增加的参数量如公示5所示:


实验结果:

从上表可以看出,SE 模块都能够给网络带来性能上的增益。值得一提的是,SE-ResNet-50 可以达到和 ResNet-101 一样的精度;SE-ResNet-101 远远地超过了更深的 ResNet-152。


文章中提到了Role of Excitation,对此很模糊,就直接转载他人的解释了:

论文比较有趣的地方在论文后面,作者对比不同类之间做了一些实验,阐述了Excitation在网络中不同层中的作用是不同的。

è¿éåå¾çæè¿°

     首先,不同类别的分布在较低层中几乎相同,例如,SE_2_3表明在网络的最初阶段特征通道的重要性很可能由不同的类别共享。 
  当网络层数较深时,每个通道的值变得更具类别特定性,因为不同类别对特征的判别性值具有不同的偏好,例如,SE_4_6和SE_5_1这两个观察结果与以前的研究结果一致,即低层特征通常更普遍(即分类中不可知的类别),而高层特征具有更高的特异性。因此,表示特征学习从SE block的重新校准中受益,其自适应地促进特征提取和专业化。 
        最后,论文在网络的最后阶段观察到一个有些不同的现象,例如,SE_5_2呈现出朝向饱和状态的有趣趋势,其中大部分激活接近于1,其余激活接近于0,在所有激活值取1的点处,该块将成为标准残差块。 
        在网络的末端SE_5_3中(在分类器之前紧接着是全局池化),不同的类出现了尺度上只有轻微的变化的相似模式(可以通过分类器来调整)。这表明,SE_5_2和SE_5_3在为网络提供重新校准方面比前面的块更不重要,这一发现与第四节实证研究的结果是一致的。这表明,通过删除最后一个阶段的SE块,网络总体参数数量可以显著减少,而性能只有一点损失(<0.1%的top-1错误率)。


参考:

SENet(Squeeze-and-Excitation Networks)算法笔记_AI之路-CSDN博客_senet公式

专栏 | Momenta详解ImageNet 2017夺冠架构SENet

SENet学习笔记_xjz18298268521的博客-CSDN博客_senet论文

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值