SEBlock

SEBlock(Squeeze-and-Excitation Block)即压缩和激励模块,在深度学习中尤其是计算机视觉任务中被广泛应用。

一、结构和原理

  1. Squeeze(压缩)操作

    • 通常是对输入特征图进行全局平均池化(Global Average Pooling),将每个通道的二维特征图压缩为一个实数,这个实数具有全局感受野,代表了该通道的全局特征。
    • 假设输入特征图的尺寸为 C × H × W C\times H\times W C×H×W(其中 C C C 是通道数, H H H W W W 分别是特征图的高度和宽度),经过全局平均池化后得到一个 C × 1 × 1 C\times 1\times 1 C×1×1 的张量。
  2. Excitation(激励)操作

    • 由两个全连接层(Fully Connected layer)和一个激活函数组成。
    • 第一个全连接层将压缩后的特征进行降维,通常使用一个比例系数 r r r(例如 r = 16 r = 16 r=16)来减少参数数量。假设输入特征维度为 C C C,经过第一个全连接层后维度变为 C / r C/r C/r
    • 接着使用一个激活函数(如 ReLU)来增加非线性。
    • 然后再通过第二个全连接层将维度恢复到原来的通道数 C C C
    • 最后使用一个 Sigmoid 函数将输出值归一化到 [ 0 , 1 ] [0, 1] [0,1] 的范围。
  3. Reweight(重加权)操作

    • 将激励操作得到的权重与输入特征图逐通道相乘,即对每个通道进行加权。这样可以让网络根据全局信息有选择地增强或抑制不同的通道特征,从而提高模型对重要特征的关注度。

二、作用和优势

  1. 自适应特征重校准

    • SEBlock 能够自动学习每个通道的重要性权重,使得模型可以根据输入数据的特点动态地调整不同通道的特征响应。
    • 这有助于模型更加关注信息量较大的通道特征,抑制不太重要的通道特征,从而提高模型的表示能力和性能。
  2. 轻量级且易于集成

    • SEBlock 是一个相对轻量级的模块,可以很容易地集成到现有的深度学习架构中,如卷积神经网络(Convolutional Neural Networks,CNN)。
    • 可以在不显著增加模型复杂度的情况下,提升模型的性能。
  3. 通用性

    • 适用于各种计算机视觉任务,如图像分类、目标检测、语义分割等。
    • 在不同的任务和数据集上都表现出了良好的性能提升效果。

三、示例代码(以 PyTorch 为例)

import torch
import torch.nn as nn

class SEBlock(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SEBlock, 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

这段代码定义了一个 SEBlock 类,其中 __init__ 方法初始化了模块的各个部分,包括全局平均池化和全连接层。forward 方法实现了 SEBlock 的前向传播过程,包括压缩、激励和重加权操作。

在实际使用中,可以将 SEBlock 插入到现有的神经网络架构中,例如在卷积层之后,以提高模型的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值