Squeeze-and-Excitation Networks(论文翻译)

摘要

卷积神经网络建立在卷积操作的基础上,它通过在局部感受野中将空间和通道信息融合在一起来提取信息特征。为了提高网络的表示能力,最近的几种方法已经显示出增强空间编码的好处。在这项工作中,我们专注于通道关系并提出了一个新的架构单元,我们称之为“Squeezeand-Excitation”(SE)块,它通过显式建模通道之间的相互依赖关系来自适应地重新校准通道特征响应。我们证明,通过将这些块堆叠在一起,我们可以构建 SENet 架构,该架构在具有挑战性的数据集上泛化得非常好。至关重要的是,我们发现 SE 块以最小的额外计算成本为现有的最先进的深度架构带来了显着的性能改进。 SENets 为我们的 ILSVRC 2017 分类提交奠定了基础,该分类获得了第一名,并将 top-5 错误显着降低至 2.251%,相对于 2016 年的获胜条目实现了 ∼25% 的相对改进。代码和模型可在 https:// github.com/hujie-frank/SENet。

1.引言

卷积神经网络 (CNN) 已被证明是处理各种视觉任务的有效模型 [21、27、33、45]。对于每个卷积层,学习一组滤波器来表示沿输入通道的局部空间连接模式。换句话说,通过在局部感受野内将空间和通道信息融合在一起,卷积滤波器有望成为信息组合。通过堆叠一系列与非线性和下采样交错的卷积层,CNN 能够捕获具有全局感受野的分层模式作为强大的图像描述。最近的工作表明,通过显式嵌入学习机制可以提高网络的性能帮助捕获空间相关性,而无需额外的监督。Inception 架构 [16, 43] 推广了一种这样的方法,这表明网络可以通过在其模块中嵌入多尺度过程来实现具有竞争力的准确性。最近的工作试图更好地模拟空间依赖性 [1, 31] 并结合空间注意力 [19]。

        在本文中,我们通过引入一个新的架构单元,我们将其称为“挤压和激励”(SE)块,来研究架构设计的不同方面 - 通道关系。我们的目标是通过显式建模其卷积特征的通道之间的相互依赖关系来提高网络的表示能力。为了实现这一点,我们提出了一种允许网络执行特征重新校准的机制,通过它可以学习使用全局信息来选择性地强调信息特征并抑制不太有用的特征。

        SE构建块的基本结构如图1所示。对于任何给定的变换 Ftr : X → U, X ∈ RH′×W ′×C′, U ∈ RH×W ×C,(例如一个卷积或一组卷积),我们可以构造一个对应的 SE 块来执行特征重新校准如下。特征 U 首先通过挤压操作,该操作聚合跨空间维度 H × W 的特征图以生成通道描述符。该描述符嵌入了通道特征响应的全局分布,使来自网络全局感受野的信息能够被其较低层利用。随后是激发操作,其中通过基于通道依赖性的自门控机制为每个通道学习的特定于样本的激活控制每个通道的激发。然后对特征图 U 进行重新加权以生成 SE 块的输出,然后可以将其直接馈送到后续层。

         SE 网络可以通过简单地堆叠 SE 构建块的集合来生成。 SE 块也可以用作架构中任何深度的原始块的直接替代品。然而,虽然构建块的模板是通用的,但正如我们在第 6.4

### Squeeze-and-Excitation Networks (SENet) 的实现细节与算法原理 #### 算法原理 Squeeze-and-Excitation Networks 是一种用于增强卷积神经网络性能的技术,其核心思想在于通过学习通道之间的关系来重新校准特征的重要性。具体来说,它通过对不同通道的特征进行全局池化操作(squeeze),然后基于这些统计信息生成权重向量(excitation),最后将这些权重应用于原始特征图上以突出重要特征并抑制不重要的部分[^4]。 以下是 SE的主要组成部分及其作用: 1. **Squeeze**: 对于输入的特征图 \( X \in \mathbb{R}^{C \times H \times W} \),其中 \( C \) 表示通道数,\( H \) 和 \( W \) 分别表示高度和宽度,SE会对每个通道执行全局平均池化操作,得到一个描述全局空间分布的一维向量 \( z_c \in \mathbb{R}^C \)[^4]。 2. **Excitation**: 使用两个全连接层构建一个小规模的子网络,第一个全连接层会减少维度至 \( r \)-th 倍 (\( r \geq 1 \)),第二个全连接层恢复到原来的维度,并通过激活函数(如 ReLU 或 sigmoid)调整权重值范围。最终输出的是一个归一化的权重视图 \( s \in [0, 1]^C \)[^4]。 3. **Reweight**: 将上述计算所得的权重加权应用回原特征图上的每一个对应位置处,形成新的特征表达形式\[ Y_{ijc}=X_{ijc}\cdot s_c\][^4]。 这种机制允许模型自适应地关注更有意义的部分而忽略其他无关紧要的内容,从而提升整体表现效果。 #### 实现细节 下面展示了一个简单的 PyTorch 版本的 SEBlock 定义方式: ```python import torch.nn as nn import torch class SELayer(nn.Module): def __init__(self, channel, reduction=16): super(SELayer, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.fc = nn.Sequential( nn.Linear(channel, channel // reduction, bias=False), nn.ReLU(inplace=True), nn.Linear(channel // reduction, channel, bias=False), nn.Sigmoid() ) def forward(self, x): b, c, _, _ = x.size() # 获取batch size以及channel数量 y = self.avg_pool(x).view(b, c) y = self.fc(y).view(b, c, 1, 1) return x * y.expand_as(x) # Example usage within Residual Block or any other architecture component. ``` 此代码片段定义了一种标准型态下的 SE 层结构,可以嵌入到现有的 CNN 架构之中作为附加组件使用。 #### 论文下载链接 关于 SENet 更详细的理论阐述可参阅原文献《Squeeze-and-Excitation Networks》,该文章发表于 CVPR 2018 年会上。可以通过以下地址访问 PDF 文件版本: https://arxiv.org/abs/1709.01507 另外值得注意的是,在实际工程实践中也可以考虑直接调用预训练好的模型库比如 torchvision.models 中已经包含了支持 SE 结构的各种经典分类器变体供快速部署测试之需。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值