(SENet)Squeeze-and-Excitation Networks论文阅读笔记

SENet是一种卷积神经网络结构,通过Squeeze-and-Excitation blocks动态地对通道间关系进行建模,提升网络表示能力。SE block包括全局信息嵌入(squeeze)和自适应特征重校准(excitation)两步,能够增强模型对关键特征的敏感度。实验证明,SE block在ImageNet、CIFAR、COCO等多个数据集和任务上提高了模型性能,且仅引入少量额外计算成本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(SENet)Squeeze-and-Excitation Networks论文阅读笔记2018

Abstract

CNN的核心building block是卷积操作,它通过融合感受野内的空间以及通道之间的信息,产生了有信息的特征。之前的许多研究已经探索了这种关系的空间成分,试图通过在整个特征层次上提高空间编码的质量来提升网络的表达能力。在本文中,相反,我们聚焦在通道维度的关系上,提出一个全新的结构单元,**我们叫做“Squeeze-and-Excitation”(SE)block,它可以通过对不同通道之间的关系进行建模,自适应地重新校准按通道的特征相应。**我们可以将SEblock堆叠,构成SENet结构,可以在不同的数据集上都非常有效。**我们进一步验证,SE blocks对SOTA的CNN结构可以带来很大的提升,而值引入了一点额外计算花费。**以SENet作为基础网络,我们在ILSVRC2017分类任务上取得了第一名,取得2.251%的top-5错误率,将2016的冠军相对提升25%。

1. Introduction

CNN已经证明在处理一系列视觉任务上都是有效的。在网络的每个卷积层,使用一些卷积核来表示空间邻域中的连通性,**即将感受野范围内空间和不同通道之间的信息融合起来。**通过使用一系列带有非线性激活函数的卷积层以及下采样操作,CNN可以产生具有分层次特征的图像表示,理论上可以获得全局感受野。计算机视觉研究的一个中心策略就是寻找更有表达能力的特征,这些特征对于给定任务有着最好的效果,可以提升任务表现。作为视觉任务中广泛应用的模型,新的神经网络设计已经成为了该领域的新研究热点。最近的研究表明,**CNN产生的表示可以被增强,通过将学习机制集成到网络中来帮助捕获特征之间的空间关系。**Inception就是一种这样的方法,将多种尺度的处理处理集成到模块中,来获得表现提升。之后的工作聚焦于更好地建模空间依赖性,将空间注意力引入到网络结构。

本文中,我们研究网络设计中的一个不同的方向——通道之间的关系。我们引入了一种新的结构单元,叫做Squeeze-and-Excitation (SE) block,**通过对卷积特征通道之间的关系进行建模,来提升表示的质量。**为此,我们提出了一种机制,可以使网络完成特征重新对准,通过这个过程它可以学习使用全局信息来有选择地强调informative的特征,忽视较没用的特征。

SEblock的结构如图1所示:

对于任意变换Ftr,将输入x变成特征图U,U的尺寸为H×W×C,比如卷积操作。**然后对于U,我们首先通过一个挤压操作(squeeze),对每个通道产生一个通道描述子(直接对该通道的H * W进行累加)。**这个描述子函数的作用是,产生一个有着该通道全局信息响应的embedding,**可以将网络全局感受野的信息用到每一层中。这个累加操作是excitation(激励)操作,该激励操作采用简单的自选通机制(self-gating)的形式,将embedding作为输入,输出对每个通道有修正权重的结果。这些权重应用到U上,来生成SEblock的输出,**输出可以直接用到网络的后续层。

可以通过简单的将SE block堆叠来构建SENet。而且,这些blcok可以用作原来网络中某些block替代品。虽然构建模块的模板是通用的,但它在整个网络中在不同深度执行的角色是不同的。在早期卷积层上,它以类无关的方式提取特征,可以增强共享的低等级表示;在后期层中,SEblock可以以class-specific的方式,来增强某一类的表示。

新的CNN结构的设计和发展是一个困难的任务,需要选择很多新的超参数和层的配置。相反,SE block的结构非常简单,可以直接应用到现存的SOTA结构中,直接取代对应的block,网络表现会得到有效提升。SEblock的计算量同样是轻量级的,只会导致网络的复杂度少量增加,计算负担也只增加一点。

为了证明,我们使用几个SENet在ImageNet上进行了实验。我们同样做了实验表示我们方法的优点不只限于特定的任务和数据集。使用SENets,我们在ILSVRC 2017分类竞赛上取得第一名,我们最好的网络达到2.251%的top错误率,比之前的优胜者相对提升了25%。

2. Related Work

Deeper architectures.

VGG和Inception模型展示出,提升网络的深度可以有效提升网络学习到的表示的质量。通过对每一层输入进行正则化,BN对学习过程增加了稳定性,产生了更加平滑的优化曲面。基于这些网络,ResNets证明通过使用identity-mapping跳跃连接可以构建更深更强的网络。Highway网络引入了一个gating机制来regulate信息在shortcut之间的传递。以这些网络为基础,逐渐有了许多不同connnection形式的网络,取得了表现的提升。

另一种方法关注于提升网络中包含的计算形式。分组卷积是一种有效的形式,可以增加学习变换的基数。更加灵活的一些操作有多分支卷积,可以看做是分组操作的一种扩展。在之前的工作中,跨通道的相关性通常被映射为特征的新组合,无论是独立的空间结构还是使用标准1 * 1卷积联合。许多研究更多关注降低模型和计算复杂度上,它们假设通道之间的联系可以当做与实例无关的,在局部感受野上的组合。相反,我们假设,这个单元有一种机制,来显式使用全局信息对通道之间的关系进行动态、非线性建模,这样可以使得学习过程更加容易,极大增强了网络的表示能力。

Algorithmic Architecture Search.

除了上面介绍的工作,还有许多有着悠久历史的工作,旨在放弃手工结构设计,而是试图自动地学习网络结构。该领域的许多早期工作是在神经进化社区中进行的,该社区建立了使用进化方法搜索网络拓扑的方法。尽管通常需要很大的计算量,进化搜索取得了很大的成功,包括为序列模型找到好的memory cell,为大尺度图像分类学习复杂结构。为了减少这些方法的计算量,已经提出了一些有效率的替代方法。

通过将搜索最佳结构当作对超参数进行优化,随机搜索以及其他更复杂的基于模型的优化技术可以用来处理这个问题。拓扑搜索以及直接的结构预测被提出,可以当做额外的结构搜索工具。使用强化学习技术可以取得非常好的结果。SE block就可以用作这些搜索算法的building block,并被证明在并发工作中非常有效。

Attention and gating mechanisms.

可以将注意力理解为将可用计算资源的分配偏向信号中最有用的组件的一种方式。注意力机制已经证明在许多任务中都有效,比如序列学习、定位已经图像理解、图像字幕和唇语阅读。在这些应用中,它可以作为操作符并入一个或多个层,这些层代表用于模式之间的适应的高层抽象。一些工作对空间和通道注意力进行了研究。

我们的SE block使用一个简单的gating机制,致力于通过以计算有效的方式对通道之间的关系进行建模来增强网络的表示能力。

3. Squeeze-and

### 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、付费专栏及课程。

余额充值