SeNet论文笔记

SEBlock是一种由Momenta团队提出的结构单元,旨在增强卷积神经网络(CNN)的特征提取能力,通过全局信息有选择地加强有意义的特征并压制无用特征。该结构在2017年的ImageNet竞赛中帮助团队夺得冠军,显著降低了top-5错误率。SEBlock的核心在于其Squeeze和Excitation机制,能够动态调整通道权重,提高网络对特征的分辨力。

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

  1. 大致背景及思路
    a. 由Momenta团队完成,2017年ImageNet大赛的冠军结构,top-5 error降到了只有2.25%,相比于2016年冠军,有接近25%的提高。
    b. 为了提高网络提取特征的能力,很多方法都致力于在空间上做出一些加强。而这篇文章,从通道之间的关系入手,提出了一个新的结构单元“SE Block”。

  2. 具体结构及思路
    a. 首先从CNN说起,CNN通过在局部感受野上,通过将空间上的信息和基于通道的信息融合,得到大量信息的结合。很多的工作都将关注点放在了空间上,所以自然的我们也可以从通道上进行考虑。
    b. 这个结构的核心在于它能通过使用全局的信息,有选择的加强有意义的特征,压制无用特征,使得网络重新适应特征。
    c. 结构如下图:
    在这里插入图片描述

    1.首先,输入X通过一个普通的卷积层,得到特征层U。
    2.将U通过全局池化,得到11c的Z,这一步被称作Squeeze。原本的每个卷积只是对应在自己的感受野 上,而无法利用区域外的上下文信息,在较低层时,这个问题显得更加明显。而这个转化,可以被看作时在各个通道上的全局信息的集合,也就是说具有了全局的感受野,那么在后续就可以利用全局信息了。
    3.然后将Z通过两个全连接层,和两激活函数,其中第一次时Relu,第二次为Sigmoid。这一步被称为 Excitation。这步使得通道的权重适应与输入的Z,也就是可以动态的去适应输入,提高对于特征的分辨力。
    4.然后就是将得到的各个通道的权重和原本的U结合,得到最终的输出。
    5.整个SE Block其实很像RNN中的门结构,Excitation决定了通过的特征的权重。

    d. 由于引入的结构中包含两个全连接层,使得整体的模型参数由一些增长,大约在百分之10左右。d. 由于引入的结构中包含两个全连接层,使得整体的模型参数由一些增长,大约在百分之10左右。

  3. 实验结果

    a. 可以看到,在加入了SE Block后,错误率相比原版本都有一定的下降。论文后续还比较了在多个数据集,包括检测任务的数据集上的效果,都得到了优于传统结构的结论。

SENet(Squeeze-and-Excitation Networks)的概念首次被提出是在2017年的论文《Squeeze-and-Excitation Networks》中,这篇论文由Jie Hu等人撰写,并在CVPR 2018上发表[^1]。该论文详细介绍了如何通过引入通道注意力机制来改进卷积神经网络的表现。 以下是获取SENet相关论文的一些方法: ### 方法一:访问官方出版平台 论文最初发布于IEEE Xplore Digital Library以及arXiv预印本服务器。可以通过以下链接下载: - IEEE Xplore: [https://ieeexplore.ieee.org/document/8578913](https://ieeexplore.ieee.org/document/8578913) - arXiv: [https://arxiv.org/abs/1709.01507](https://arxiv.org/abs/1709.01507)[^2] ### 方法二:学术搜索引擎 除了直接从上述网站下载外,还可以利用Google Scholar等学术搜索引擎输入关键词"Squeeze-and-Excitation Networks Jie Hu"进行检索。这通常会提供多种免费或付费的下载选项[^3]。 ### PyTorch 实现示例 对于希望快速验证SENet效果的研究者来说,下面是一个简单的SE Block实现代码片段供参考: ```python import torch.nn as nn 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() y = self.avg_pool(x).view(b, c) y = self.fc(y).view(b, c, 1, 1) return x * y.expand_as(x) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值