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

参考

相关推荐
前网易架构师-高司机11 小时前
带标注的成熟棉花识别数据集,识别率83.9%数据集,505张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·数据集·成熟·棉花·棉铃·发育·闭合
殷忆枫1 天前
AI笔记三十七:AI边缘端道桥安全监测系统:YOLOv8n推理与Web监控全解析
笔记·yolo
꧁执笔小白꧂2 天前
详细pyenv+venv+pip安装ultralytics
yolo·venv·pyenv·ultralytics
前网易架构师-高司机2 天前
带标注的细胞有丝分裂数据集数据集,识别率95.9%,304张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·细胞·显微镜·生物·有丝分裂·显微
前网易架构师-高司机3 天前
带标注的移动通信基站信号塔,可识别塔架和塔身数据集,识别率93.5%,1008张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·数据集·通信基站·信号塔·塔架·塔身
AI棒棒牛3 天前
第11讲 | 目标检测任务:边界框、IoU、类别与置信度
人工智能·yolo·目标检测·yolo26
深度研习笔记3 天前
OpenCV工业视觉实战06|ROI区域截取+局部精细化检测,锁定作业区域、屏蔽无效背景,大幅提升YOLO检测准确率
人工智能·opencv·yolo
皓悦编程记4 天前
【免费数据集010期】Grape Leaf Diseases 葡萄叶病害检测数据集(4类):面向智慧农业的叶片病害识别基准
yolo·目标检测·视觉检测·数据集·yolo26
Python图像识别-15 天前
基于yolov8的钢铁缺陷检测系统-2027毕业版(UI界面+Python项目源码+模型+标注好的数据集)
开发语言·python·yolo