Squeeze-and-Excitation Networks 论文笔记

Squeeze-and-Excitation Networks

论文链接: https://arxiv.org/abs/1709.01507

一、 Problem Statement

本论文关注channel之间的关系,提出了一个新的结构单元,SE block。 这个SE block可以自适应地重新校准通道特征响应, 这样就网络就可以学习使用全局信息来选择性地强调信息性特征,并抑制不太有用的特征。

二、 Direction

提出了一个新的结构单元: SE block。其分为两个部分,squeeze operation和excitation operation。

三、 Method

先来看一下这个结构:

从上图可以看到,一个输入 X ∈ R H ′ × W ′ × C ′ X \in \R^{H' \times W' \times C'} XRH×W×C 通过一个卷积变换 F t r F_{tr} Ftr,输出了 U ∈ R H × W × C U \in \R^{H \times W \times C} URH×W×C。 转换为数学公式为:

u c = v c ∗ X = ∑ s = 1 C ′ v c s ∗ x s u_c = v_c * X = \sum_{s=1}^{C'}v_c^s * x^s uc=vcX=s=1Cvcsxs
其中 ∗ * 表示卷积操作, v c v_c vc是卷积核。可以看到输出 u c u_c uc是通过所有通道数相加的结果,它们通道数之间的关系没有很好的被利用。

因此,我们期望通过显式建模channel interdependencies来增强卷积特征的学习,从而使网络能够提高其对信息特征的敏感性,这些信息特征可通过后续转换加以利用。 因此我们想提供一个访问global infomation的途径,并且重新校准filters的响应。

1. Squeeze: Global Information Embedding

每个学习到的kernel filters都是作用在局部感受野上,因此输出 U U U的每个单元就不能利用该区域之外的信息。为了解决这个问题,作者提出了squeeze操作,将全局空间信息压缩到信道描述符(channel descriptor)中。 也就是通过global average pooling操作,生成一个channel-wise statistics

z c = F s q ( u c ) = 1 H × W ∑ i = 1 H ∑ j = 1 W u c ( i , j ) z_c = F_{sq}(u_c) = \frac{1}{H \times W} \sum_{i=1}^H \sum_{j=1}^W u_c(i,j) zc=Fsq(uc)=H×W1i=1Hj=1Wuc(i,j)

其中 z c ∈ R C z_c \in \R ^C zcRC就是statistic

2. Excitation: Adaptive Recalibration

把压缩好的信息利用起来,就到了第二步: Excitation Operation,这个步骤需要获取channel-wise dependencies。为了实现这个目标,需要满足两个标准:

  1. flexible, 它必须能够学习通道之间的非线性相互作用
  2. 学习到的是non-mutually-exclusive relationship。也就是说,它必须学习一种非互斥关系,因为我们希望确保允许强调多个渠道(而不是强制实施一个one-hot activation)。

因此,选择使用一个简单的gating mechanism和sigmoid激活:
s = F e x ( z , W ) = σ ( g ( z , W ) ) = σ ( W 2 δ ( W 1 z ) ) s = F_{ex}(z, W) = \sigma(g(z, W)) = \sigma(W_2 \delta(W_1z)) s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))

这里的 δ \delta δ是ReLU 激活函数, W 1 ∈ R C r × C W_1 \in \R^{\frac{C}{r} \times C} W1RrC×C W 2 ∈ R C × C r W_2 \in \R^{C \times \frac{C}{r}} W2RC×rC r r r是reduction ratio。

为了限制模型复杂度和泛化性,这个gating mechanism使用两个full-connected(FC) layer和两个激活函数来实现

所以最后block的输出为:
x ~ c = F s c a l e ( u c , s c ) = s c u c \tilde{x}_c = F_{scale}(u_c, s_c) = s_c u_c x~c=Fscale(uc,sc)=scuc

也就是得出来的 s c s_c sc与输出 u c u_c uc进行一个channel-wise multiplication,最后得出结果。

SE block 本质上,引入了以输入为条件的动态,可以被视为引入了通道上的自我注意力。

也来看一下引入的额外的参数量:
2 r ∑ s = 1 S N s ⋅ C s 2 \frac{2}{r} \sum_{s=1}^S N_s \cdot C_s^2 r2s=1SNsCs2
其中, r r r是reduction ratio, S S S是stage的个数, N s N_s Ns是每个stage重复block的个数。

3. 如何引入模块

上图演示了如何插入到Inception 和 ResNet网络中。SE block可以放在其他位置,作者做实验表明,SE block对于放置的位置是robust的。

四、 Conclusion

引入了通道的注意力机制,一个即插即用提升精度的模块。

Reference

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值