Squeeze-and-Excitation Networks

Abstract

卷积神经网络建立在卷积运算之上,该运算通过在局部感受野内融合空间信息和通道信息来提取具有判别力的特征。为了提升网络的表征能力,近年来的多项研究表明,加强空间编码具有显著效果。本文则关注通道之间的关系 ,并提出了一种新的网络结构单元,称为Squeeze-and-Excitation(SE)模块**。该模块通过** 显式建模通道之间的相互依赖关系**,自适应地重新校准各通道的特征响应。我们进一步表明,通过堆叠多个 SE 模块,可以构建出 SENet 架构 ,并且该架构在多个具有挑战性的数据集上展现出了极强的泛化能力。更为重要的是,我们发现,在几乎不增加额外计算开销的前提下,SE 模块能够显著提升现有最先进深度网络的性能。SENet 架构构成了我们在 ILSVRC 2017 图像分类竞赛 中提交方案的基础,并最终获得了第一名,将 Top-5 错误率 显著降低至 2.251% ,相比 2016 年的冠军方案实现了约 25% 的相对性能提升 。相关代码和模型已开源,地址为:
https://github.com/hujie-frank/SENet

1. Introduction

卷积神经网络(CNN)已被证明是在多种视觉任务中行之有效的模型 [21, 27, 33, 45]。在每一层卷积层中,都会学习一组滤波器,用于表达沿输入通道的局部空间连接模式。换言之,卷积滤波器被期望在局部感受野内,通过融合空间信息与通道信息形成具有判别力的特征组合。通过堆叠多层卷积层,并在其间引入非线性操作与下采样,CNN 能够捕获具有全局感受野的层级化模式,从而形成强大的图像表征。近期的研究表明,通过显式地引入有助于建模空间相关性的学习机制,即使不依赖额外监督信息,也能够进一步提升网络的性能。其中一种具有代表性的方法是 Inception 架构 [16, 43],该方法通过在模块中嵌入多尺度处理机制,使网络在保持竞争性精度的同时提升了表示能力。更近期的研究则致力于更精细地建模空间依赖关系 [1, 31],并将空间注意力机制引入到网络结构中 [19]。

在本文中,我们从网络结构设计的另一个维度------通道关系 出发进行研究,并提出了一种新的结构单元,称为 "Squeeze-and-Excitation(SE)模块" 。我们的目标是通过显式建模卷积特征通道之间的相互依赖关系 ,来提升网络的表征能力。为此,我们提出了一种特征重标定(feature recalibration)机制使网络能够利用全局信息,对具有判别力的特征进行选择性增强,同时抑制信息贡献较小的特征。

首先,特征 U、经过 Squeeze(压缩)操作 ,该操作在空间维度 H×W上对特征图进行聚合,从而生成一个通道描述子 。该描述子嵌入了各通道特征响应的全局分布信息,使网络能够将来自全局感受野 的信息引入到其较低层中加以利用。随后进行 Excitation(激励)操作 。在该阶段,通过一种基于通道依赖关系的自门控(self-gating)机制,为每个通道学习得到与样本相关的激活权重,这些权重用于控制各通道的激励程度。最后,对特征图 U按通道进行加权重标定,生成 SE 模块的输出特征,该输出可以直接输入到后续网络层中。

通过简单地堆叠多个 SE 构建模块即可形成一个 SE 网络。此外,SE 模块还可以在网络结构的任意深度,作为原有网络模块的即插即用式替代 。尽管 SE 构建模块的模板本身是通用的,但正如我们在第 6.4 节中所示,其在不同网络深度所发挥的作用会根据网络的需求自适应地发生变化。在网络的浅层,SE 模块主要以类别无关(class-agnostic)的方式学习并增强具有判别力的特征,从而提升共享的低层表示质量;而在网络的深层,SE 模块则变得越来越专门化(specialised),能够以高度类别相关(class-specific)的方式对不同输入作出响应。因此,由 SE 模块所执行的特征重标定所带来的收益,能够在整个网络中逐层累积,从而全面提升网络的性能。

开发新的CNN架构是一项具有挑战性的工程任务,通常涉及许多新的超参数和层配置的选择。相比之下,上述SE模块的设计比较简单,可以直接用于现有的最先进的体系结构,这些体系结构的模块可以通过直接替换它们的SE模块来增强。

Deep architectures. VGG 网络 [39] 和 Inception 模型 [43] 证明了加深网络深度 所带来的性能优势。批量归一化(Batch Normalization,BN) [16] 通过在网络中插入用于调节层输入的单元,改善了梯度传播,从而稳定了训练过程。残差网络(ResNet) [10, 11] 通过引入基于恒等映射的跳跃连接,展示了训练更深网络的有效性。Highway 网络 [40] 则采用门控机制来调节快捷连接。此外,对网络层之间连接方式的重新设计 [5, 14] 也被证明能够进一步提升深层网络的学习能力和表征性能。

另一类研究工作则探索了调整网络模块功能形式 的方法。分组卷积(grouped convolutions) 可用于提升基数(cardinality,即变换集合的规模) [15, 47]。多分支卷积 可以被视为该思想的进一步推广,使算子组合更加灵活 [16, 42, 43, 44]。近期,一些通过自动化方式学习得到的算子组合 [26, 54, 55] 也展现出了具有竞争力的性能。跨通道相关性通常通过构造新的特征组合来建模,这一过程要么独立于空间结构 进行 [6, 20],要么通过结合 1×1 卷积 的标准卷积滤波器进行联合建模 [24]。上述工作大多以降低模型规模和计算复杂度 为主要目标,这在一定程度上反映了一种假设:即通道关系可以被表示为一组与具体实例无关(instance-agnostic) 、具有局部感受野的函数组合。与此不同的是,我们认为,为网络单元提供一种机制,利用全局信息显式建模通道之间动态的非线性依赖关系,不仅能够简化学习过程,还能显著提升网络的表征能力。

Attention and gating mechanisms. 从广义上讲,注意力机制(Attention)可以被视为一种工具,用于将有限的计算资源有偏向性地分配给输入信号中最具信息量的组成部分 [17, 18, 22, 29, 32]。该机制的有效性已在多种任务中得到验证,涵盖从图像中的目标定位与理解 [3, 19] 到序列建模任务 [2, 28] 等多个领域。注意力机制通常与门控函数 (如 softmax 或 sigmoid)以及序列建模技术 相结合实现 [12, 41]。近年来,其在图像描述生成 [4, 48]、唇语识别 [7] 等任务中也展现出了良好的适用性。在这些应用中,注意力机制往往作用于一个或多个表示高层语义抽象的网络层之上,以实现不同模态之间的自适应融合。Wang 等人 [46] 提出了基于 hourglass 模块 [31] 的 trunk-and-mask 注意力机制 ,该高容量注意力单元被插入到深层残差网络的中间阶段。与之相比,我们提出的SE模块 是一种轻量级的门控机制 ,专门用于以计算高效的方式建模通道维度上的关系,并旨在贯穿整个网络,对基础模块的表征能力进行增强。

3. Squeeze-and-Excitation Blocks

由于输出特征是通过对所有输入通道的加权求和得到的,因此通道之间的依赖关系被隐式地编码在卷积核 vc 中 ,但这些依赖关系与滤波器所捕获的空间相关性相互纠缠 。我们的目标是使网络能够增强其对信息量更丰富特征 的敏感性,从而便于后续变换加以利用,同时抑制信息贡献较小的特征。为此,我们提出在特征输入到下一层变换之前,通过 Squeeze(压缩)Excitation(激励) 两个步骤,显式建模通道间的相互依赖关系,对滤波器响应进行重标定。SE 构建模块的结构示意图如图 1 所示。

3.1. Squeeze: Global Information Embedding

为了解决通道依赖关系利用不足 的问题,我们首先关注输出特征中每个通道所接收到的信号 。由于每个学习得到的滤波器仅作用于局部感受野 ,因此变换输出 U 中的每个单元都无法利用该区域之外的上下文信息。这一问题在网络的浅层尤为明显,因为此时的感受野尺寸较小。

**讨论。**变换输出U可以解释为局部描述符的集合,其统计量对整个图像具有表达能力。利用这些信息在特征工程工作[ 35、38、49 ]中非常普遍。我们选择最简单的全局平均池化,同时注意到更复杂的聚合策略也可以在这里使用。

3.2. Excitation: Adaptive Recalibration

为了充分利用在 Squeeze(压缩) 操作中聚合得到的信息,我们在其后引入了第二个操作,旨在全面建模通道之间的依赖关系 。为实现这一目标,该函数需要满足两个条件:首先,函数必须具有足够的灵活性 (尤其是能够学习通道之间的非线性交互关系 );其次,它必须学习一种非互斥(non-mutually-exclusive)的关系 ,因为我们希望允许多个通道同时被强调 ,而不是产生类似 one-hot 的激活形式。基于上述考虑,我们选择采用一种带有 sigmoid 激活函数的简单门控机制来实现该目标:

讨论。激活作为通道权重适应于输入特定的描述符z,在这方面,SE块本质上引入了受输入条件限制的动态,有助于提高特征的可区分性。

3.3. Exemplars: SE-Inception and SE-ResNet

SE 模块 应用于 AlexNet [21] 和 VGGNet [39] 是一项较为直接的工作。由于 SE 模块具有良好的灵活性,它不仅可以用于标准卷积操作,还能够直接应用于更复杂的网络变换结构。为说明这一点,我们将 SE 模块集成到多种设计更为复杂的现代网络架构中,从而构建不同形式的 SENet。

对于非残差网络 (如 Inception 网络),我们将变换 FtrF_{tr}Ftr​ 定义为整个 Inception 模块 ,并在此基础上构建对应的 SE 模块(如图 2 所示)。通过对网络中每一个 Inception 模块进行上述修改,最终得到 SE-Inception 网络

此外,SE 模块同样适用于残差网络结构 。图 3 展示了 SE-ResNet 模块 的结构示意,其中 SE 模块对应的变换 FtrF_{tr}Ftr​ 被设定为残差模块中的非恒等映射分支。Squeeze 和 Excitation 操作均在与恒等映射分支相加之前执行。

按照类似的设计思路,还可以将 SE 模块集成到 ResNeXt [47]、Inception-ResNet [42]、MobileNet [13] 以及 ShuffleNet [52] 等网络结构中。本文在表 1 中详细给出了 SE-ResNet-50SE-ResNeXt-50 的网络结构配置。

4. Model and Computational Complexity

为了使所提出的 SE 模块 在实际应用中具备可行性,它必须在模型复杂度与性能之间取得有效的权衡 ,这一点对于模型的可扩展性尤为重要。除非另有说明,本文在所有实验中均将降维比例 rrr 设置为 16(更多讨论见第 6.4 节)。

为说明该模块所带来的计算开销,我们以 ResNet-50SE-ResNet-50 的对比为例。实验结果表明,SE-ResNet-50 的准确率不仅优于 ResNet-50,且接近更深层的 ResNet-101 (如表 2 所示)。对于输入尺寸为 224×224224 \times 224224×224 的图像,ResNet-50 在单次前向传播中需要约 3.86 GFLOPs 。每个 SE 模块在 Squeeze 阶段 使用一次全局平均池化操作,在 Excitation 阶段 使用两个规模较小的全连接层,随后进行计算代价极低的逐通道缩放操作。综合来看,SE-ResNet-50 的计算量约为 3.87 GFLOPs ,相比原始 ResNet-50 仅增加了约 0.26% 的相对计算开销。

在实际训练中,当 mini-batch 大小为 256 时,ResNet-50 完成一次前向与反向传播需要 190 ms ,而 SE-ResNet-50 需要 209 ms(两者均在配备 8 张 NVIDIA Titan X GPU 的服务器上测试)。我们认为这一额外开销是可以接受的,尤其是考虑到全局池化和小规模内积运算在现有 GPU 库中尚未得到充分优化。

此外,鉴于嵌入式设备应用的重要性,我们还对模型的 CPU 推理时间 进行了评测:在输入尺寸为 224×224的情况下,ResNet-50 的推理时间为 164 ms ,而 SE-ResNet-50 为 167 ms。SE 模块所引入的少量额外计算开销,完全可以由其带来的性能提升所抵消。

接下来,我们分析 SE 模块所引入的额外参数量。这些参数全部来自于门控机制中的两个全连接层,占整个网络参数量的比例较小。更具体地,额外参数的数量可表示为:

其中,r 表示降维比例,S表示网络中的阶段数(每个阶段由一组作用于相同空间分辨率特征图的模块组成),Cs表示第 s 个阶段的输出通道数,Ns 表示该阶段中模块的重复次数。

SE-ResNet-50 相较于原始 ResNet-50 额外引入了约 250 万 个参数,而 ResNet-50 本身约包含 2500 万 个参数,对应约 10% 的参数增长。其中,大部分新增参数来自网络的最后一个阶段,因为该阶段的通道维度最大,Excitation 操作的参数量也随之增加。

然而,我们发现,通过移除网络最后一个阶段中计算开销相对较大的 SE 模块,仅会带来极小的性能损失(在 ImageNet 上 Top-1 错误率增加小于 0.1% ),却可以将相对参数增长降低至约 4%。这一设计在对参数规模敏感的应用场景中可能尤为有价值(更多讨论见第 6.4 节)。

相关推荐
@不误正业1 分钟前
第13章-开源鸿蒙是否适合做端侧AI操作系统
人工智能·开源·harmonyos
冬奇Lab2 分钟前
RAG 系列(六):向量数据库——存储与检索的基础设施
数据库·人工智能·llm
MATLAB代码顾问2 分钟前
混合粒子群-模拟退火算法(HPSO-SA)求解作业车间调度问题——附MATLAB代码
算法·matlab·模拟退火算法
Agent手记3 分钟前
首件检验流程繁琐,耗时久还容易出现合规漏洞怎么办?——基于实在Agent的AI+超自动化全流程闭环实战
网络·人工智能·ai·自动化
eqwaak04 分钟前
PyTorch张量操作全攻略:从入门到精通
开发语言·人工智能·pytorch·python
程序员学习Chat4 分钟前
计算机视觉-异常检测
人工智能·计算机视觉·异常检测
Felven6 分钟前
C. Prefix Min and Suffix Max
算法
加农炮手Jinx7 分钟前
LeetCode 26. Remove Duplicates from Sorted Array 题解
算法·leetcode·力扣
加农炮手Jinx7 分钟前
LeetCode 88. Merge Sorted Array 题解
算法·leetcode·力扣
格林威7 分钟前
线阵工业相机:如何计算线阵相机的行频(Line Rate)?公式+实例
开发语言·人工智能·数码相机·算法·计算机视觉·工业相机·线阵相机