目录
Squeeze-and-Excitation Networks
1 Introduction
最基本的卷积操作开始说起。近些年来,卷积神经网络在很多领域上都取得了巨大的突破。而卷积核作为卷积神经网络的核心,通常被看做是在局部感受野上,将空间上(spatial)的信息和特征维度上(channel-wise)的信息进行聚合的信息聚合体。卷积神经网络由一系列卷积层、非线性层和下采样层构成,这样它们能够从全局感受野上去捕获图像的特征来进行图像的描述。
然而去学到一个性能非常强劲的网络是相当困难的,其难点来自于很多方面。最近很多工作被提出来从空间维度层面来提升网络的性能,如 Inception 结构中嵌入了多尺度信息,聚合多种不同感受野上的特征来获得性能增益;在 Inside-Outside 网络中考虑了空间中的上下文信息;还有将 Attention 机制引入到空间维度上。这些工作都获得了相当不错的成果。
我们可以看到,已经有很多工作在空间维度上来提升网络的性能。那么很自然想到,网络是否可以从其他层面来考虑去提升性能,比如考虑特征通道之间的关系?我们的工作就是基于这一点并提出了 Squeeze-and-Excitation Networks(简称 SENet)。Squeeze 和 Excitation 是两个非常关键的操作,所以我们以此来命名。动机是希望显式地建模特征通道之间的相互依赖关系。另外,我们并不打算引入一个新的空间维度来进行特征通道间的融合,而是采用了一种全新的「特征重标定」策略。具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。
2 SQUEEZE-AND-EXCITATION BLOCKS
上图是我们提出的 SE 模块的示意图。给定一个输入 x,其特征通道数为 c_1,通过一系列卷积等一般变换后得到一个特征通道数为 c_2 的特征。与传统的 CNN 不一样的是,接下来我们通过三个操作来重标定前面得到的特征。
首先是 Squeeze 操作,我们顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。
其次是 Excitation 操作,它是一个类似于循环神经网络中门的机制。通过参数 w 来为每个特征通道生成权重,其中参数 w 被学习用来显式地建模特征通道间的相关性。
最后是一个 Reweight 的操作,我们将 Excitation 的输出的权重看做是经过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。
SE网络可以通过简单地堆叠SE构件块的集合来生成。SE块也可以用作体系结构中任何深度的原始块的直接替换。但是,虽然构建模块的模板是通用的,它在不同深度处的角色适应网络的需求。在早期层中,它学会以类不可知的方式激发信息特性,支持共享的底层表示的质量。在后面的层次中,SE块变得越来越专业化,并以 highly class-specific的方式响应不同的输入。因此,SE块进行特征重新校准的好处可以通过整个网络进行累加。SE块的设计很简单,可以直接与现有最先进的体系结构一起使用,这些体系结构的模块可以通过直接替换SE模块来加强。
首先 F t r {F_{tr}} Ftr这一步是转换操作,把input X映射到feature map U(严格讲并不属于SENet,而是属于原网络,可以看后面SENet和Inception及ResNet网络的结合),在文中就是一个标准的卷积操作而已,输入输出的定义如下表示:
F t r : X → U , X ∈ R H ′ × W ′ × C ′ , U ∈ R H × W × C {F_{tr}}:X \to U,X \in {
{\rm{R}}^{H' \times W' \times C'}},U \in {
{\rm{R}}^{H \times W \times C}} Ftr:X→U,X∈RH′×W′×C′,U∈RH×W×C
那么这个 F t r {F_{tr}} Ftr的公式就是下面的公式(卷积操作, v c {v_c} vc表示第c个卷积核的参数, x s {x_s} xs表示第s个输入, V = [ v 1 , v 2 , . . . , v C ] V = [{v_1},{v_2},...,{v_C}] V