yolo检测核心组件1:SE注意力机制 (Squeeze-and-Excitation)

yolo检测核心组件1:SE注意力机制 (Squeeze-and-Excitation)

!abstract 论文信息

  • 标题: Squeeze-and-Excitation Networks
  • 作者: Jie Hu, Li Shen, Gang Sun
  • 年份: 2018
  • 会议: CVPR 2018
  • 核心贡献: 通道注意力机制,动态调整通道权重

一、核心思想

复制代码
SE注意力的核心: 学习每个通道的重要性

传统卷积:
┌─────────────────────────────────────┐
│  所有通道同等重要                      │
│  输出 = 卷积(输入)                    │
└─────────────────────────────────────┘

SE注意力:
┌─────────────────────────────────────┐
│  学习每个通道的权重                    │
│  输出 = 卷积(输入) × 通道权重          │
└─────────────────────────────────────┘

直觉理解:
- 不同通道提取不同的特征(边缘、纹理、形状等)
- 对于不同任务,不同通道的重要性不同
- SE模块让网络自动学习通道的重要性

二、SE模块结构

复制代码
SE模块结构:

输入特征图 (C×H×W)
    │
    ▼
┌─────────────────────────────────────┐
│  Squeeze (压缩)                      │
│  全局平均池化                         │
│  C×H×W → C×1×1                      │
│                                     │
│  将每个通道压缩为一个值               │
│  代表该通道的全局信息                  │
└─────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────┐
│  Excitation (激励)                   │
│  全连接层 → ReLU → 全连接层 → Sigmoid │
│  C×1×1 → C/r×1×1 → C×1×1           │
│                                     │
│  r是缩放因子,通常r=16                │
│  学习通道间的非线性关系                │
│  输出0~1的通道权重                    │
└─────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────┐
│  Scale (缩放)                        │
│  输入特征图 × 通道权重                │
│  C×H×W × C×1×1 → C×H×W             │
│                                     │
│  对每个通道加权                       │
│  重要通道权重接近1                    │
│  不重要通道权重接近0                  │
└─────────────────────────────────────┘
    │
    ▼
输出特征图 (C×H×W)

三、数学公式

复制代码
SE模块的数学表达:

1. Squeeze (全局平均池化):
   z_c = (1/H×W) × Σ(i,j) u_c(i,j)
   
   其中:
   - u_c: 第c个通道的特征图
   - z_c: 第c个通道的全局描述符
   - H, W: 特征图的高和宽

2. Excitation (门控机制):
   s = σ(W₂ × ReLU(W₁ × z))
   
   其中:
   - z: 全局描述符向量 (C×1)
   - W₁: 第一个全连接层 (C/r × C)
   - W₂: 第二个全连接层 (C × C/r)
   - σ: Sigmoid函数
   - r: 缩放因子 (通常r=16)

3. Scale (加权):
   x̃_c = s_c × u_c
   
   其中:
   - s_c: 第c个通道的权重
   - u_c: 第c个通道的特征图
   - x̃_c: 加权后的特征图

四、代码实现

python 复制代码
import torch
import torch.nn as nn

class SEBlock(nn.Module):
    """SE注意力模块"""
    def __init__(self, channels, reduction=16):
        super(SEBlock, self).__init__()
        
        # Squeeze: 全局平均池化
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        
        # Excitation: 门控机制
        self.fc = nn.Sequential(
            nn.Linear(channels, channels // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channels // reduction, channels, bias=False),
            nn.Sigmoid()
        )
    
    def forward(self, x):
        b, c, _, _ = x.size()
        
        # Squeeze
        y = self.avg_pool(x).view(b, c)
        
        # Excitation
        y = self.fc(y).view(b, c, 1, 1)
        
        # Scale
        return x * y.expand_as(x)

五、在YOLO中的应用

复制代码
SE模块在YOLO中的应用:

1. YOLOv5:
   - 在C3模块中可选使用SE
   - 通过配置文件启用

2. YOLOv8:
   - 在某些变体中使用SE
   - 作为注意力机制的选项

3. 改进YOLO:
   - 可以在骨干网络中添加SE模块
   - 提升特征表达能力

SE模块的插入位置

不要只关注SE模块能否加入YOLO,更应通过实验比较不同插入位置的效果:

  1. Backbone(骨干网络)

    • 增强高层语义特征的通道表达能力
    • 可能带来额外的推理延迟
  2. Neck(特征融合网络)

    • 对多尺度特征融合通常更有意义
    • 适合重点关注不同尺度目标的检测任务
  3. Head前(检测头之前)

    • 可能有助于分类特征的筛选
    • 对边界框定位的提升未必稳定,需要通过消融实验验证

建议在相同数据集和训练配置下,分别比较上述插入位置,并记录mAP、参数量、FLOPs和FPS,综合评估精度与部署成本。


六、优缺点

优点

复制代码
✅ 简单有效: 结构简单,易于实现
✅ 通道建模: 有效建模通道间关系
✅ 即插即用: 可以添加到任何网络
✅ 计算量小: 增加的计算量很小

缺点

复制代码
❌ 只关注通道: 没有考虑空间信息
❌ 全局池化: 可能丢失空间细节
❌ 缩放因子: 需要手动设置r

参考

相关推荐
qq_25294131681 天前
航拍羊群目标检测数据集 | 航拍羊群 智慧畜牧业 动物检测 无人机巡检5010期
人工智能·yolo·目标检测·计算机视觉·无人机·羊群识别·羊群
java1234_小锋1 天前
YOLO26 计算机视觉 - 训练自己的 YOLO26 模型
人工智能·yolo·机器学习·计算机视觉·yolo26
向哆哆1 天前
打击罂粟种植检测数据集分享(适用于YOLO系列深度学习分类检测任务)
深度学习·yolo·目标检测·分类
jay神3 天前
一文讲清楚YOLOv26模型
人工智能·深度学习·yolo·机器学习·计算机视觉
qq_25294131683 天前
无人机目标检测数据集(UAV Detection Dataset)| 无人机检测 反无人机 低空安防5001期
人工智能·yolo·目标检测·计算机视觉·视觉检测·无人机·反无人机
YOLO数据集集合3 天前
蚊子视觉验证数据集 | 蚊虫识别 疟疾防控 病媒生物 细粒度分类 YOLO格式 深度学习数据集
深度学习·yolo·分类·数据集·蚊子分类·蚊虫分类·蚊虫识别
java1234_小锋3 天前
YOLO26 计算机视觉 - YOLO26图片与视频推理 & 摄像头与实时检测
人工智能·yolo·计算机视觉·机器视觉·yolo26
YOLO数据集集合4 天前
蚊子目标检测数据集 | 蚊虫检测 病媒生物 智能硬件 轻量化模型 目标检测 YOLO格式 深度学习数据集9015期
深度学习·yolo·目标检测·计算机视觉·分类·智能硬件·蚊子识别
YOLO数据集集合4 天前
煤炭质量目标检测数据集 、| 煤炭检测 工业视觉 质量分级 异物检测 煤炭异物8005期
人工智能·yolo·目标检测·计算机视觉·分类·煤炭检测数据集·异物数据集
qq_25294131684 天前
窗户清洁检测数据集 | 窗户清洁检测 建筑运维 二分类任务 YOLO格式 深度学习数据集9019期
运维·人工智能·深度学习·yolo·目标检测·分类·窗户清晰度