当前位置: 首页 > news >正文

深度学习篇---SENet

要理解 SENet(Squeeze-and-Excitation Networks),我们可以先给它贴个 “身份标签”:靠 “特征注意力” 精准筛选有用信息的 “智能特征管家”。2017 年由中国团队(胡杰等人)提出,凭借 “给特征通道加‘权重’” 的创新,一举拿下 ImageNet 竞赛冠军(Top-5 错误率仅 2.251%)。

它的设计思路像 “给 CNN 装了一个‘智能过滤器’”:传统 CNN 提取特征时,会平等对待所有通道的特征(比如 “猫的毛发纹理” 和 “背景噪音” 通道权重相同),而 SENet 通过 “压缩(Squeeze)→激励(Excitation)” 两步,给有用的特征通道赋高权重,给无用的通道赋低权重,让模型 “聚焦关键信息,忽略噪音”,用极小的计算量提升精度。

一、先搞懂:SENet 为什么会出现?

传统 CNN(如 ResNet、InceptionNet)的核心是 “设计更复杂的特征提取结构”(如残差连接、多分支卷积),但存在一个痛点:对特征通道的 “重要性区分不足”

举个例子:当模型识别 “猫” 时,“猫的轮廓、眼睛” 等通道的特征对分类至关重要,而 “背景的墙壁纹理、无关杂物” 等通道的特征是冗余甚至干扰的。但传统 CNN 会把这些通道的特征 “一视同仁” 地传入下一层,导致有用信息被稀释,模型效率降低。

SENet 的目标就是 “让模型学会‘关注有用特征,忽略无用特征’”:它不改变原有的特征提取结构(可以嵌入任何 CNN),只在每个特征块后增加一个 “注意力模块”(SE 模块),通过学习通道权重,动态增强有用特征、抑制无用特征,实现 “用小成本换高精度”。

二、SENet 的核心:SE 模块(Squeeze-and-Excitation Module)

SE 模块是 SENet 的灵魂,本质是一个 “通道注意力模块”,通过 “压缩→激励→重标定” 三步,给每个特征通道分配一个权重。整个过程可以理解为 “先总结特征全局信息,再判断通道重要性,最后强化关键通道”。

1. 第一步:压缩(Squeeze)—— 总结全局信息

作用:将每个通道的 “局部特征” 压缩成一个 “全局特征值”,捕捉通道的全局信息(避免只看局部导致的判断偏差)。
操作:对输入的特征图(形状为H×W×CH=高度,W=宽度,C=通道数)做全局平均池化(Global Average Pooling, GAP),将每个通道的H×W个像素值平均成一个 scalar(标量)。

  • 输入:H×W×C(比如 14×14×256,256 个通道,每个通道是 14×14 的特征图);
  • 输出:1×1×C(256 个标量,每个标量代表对应通道的 “全局信息强度”)。

通俗理解:就像给每个通道 “打一个总分”—— 比如 “猫眼睛” 通道的特征在全局都很明显,它的平均分就高;“背景噪音” 通道的特征只在局部有,平均分就低。

2. 第二步:激励(Excitation)—— 学习通道权重

作用:根据压缩得到的全局信息,学习每个通道的 “重要性权重”(让模型判断 “哪个通道有用,哪个没用”)。
操作:用两个全连接层(FC)构建一个 “门控机制”,先降维再升维,最终输出与通道数相同的权重值。

具体流程:
1×1×C → 全连接层 1(降维到1×1×C/rr是降维系数,论文中r=16) → ReLU 激活(增加非线性) → 全连接层 2(升维回1×1×C) → Sigmoid 激活(将权重压缩到 0~1 之间)

  • 降维的目的:减少计算量(比如 C=256,r=16 时,全连接层参数从 256×256=65536 减少到 256×16 + 16×256=8192,仅为原来的 12.5%);
  • Sigmoid 的作用:确保权重在 0~1 之间,方便后续 “按权重调整特征”。

通俗理解:就像一个 “评委团”—— 先对 256 个通道的 “总分” 做简化分析(降维),再根据分析结果给每个通道打一个 “重要性分数”(0~1 分),比如 “猫眼睛” 通道得 0.9 分(非常重要),“背景噪音” 通道得 0.1 分(几乎无用)。

3. 第三步:重标定(Scale)—— 强化关键特征

作用:用学习到的通道权重,对原特征图的每个通道进行 “加权调整”,增强有用通道,抑制无用通道。
操作:将激励得到的1×1×C权重,与原输入特征图H×W×C进行 “通道级乘法”(每个通道的所有像素值都乘以该通道的权重)。

  • 公式表达:F_scaled = F × W,其中F是原特征图(H×W×C),W是学习到的权重(1×1×C),×是通道级广播乘法;
  • 结果:有用通道的特征被放大(乘以接近 1 的权重),无用通道的特征被削弱(乘以接近 0 的权重)。

通俗理解:就像 “按重要性调整音量”—— 把 “猫眼睛” 通道的 “音量” 调到最大,把 “背景噪音” 通道的 “音量” 调到最小,让下一层只关注清晰的关键特征。

4. SE 模块的完整流程(可视化)

输入特征图 (H×W×C)↓
Squeeze(全局平均池化) → 全局特征 (1×1×C)↓
Excitation(全连接+ReLU+全连接+Sigmoid) → 通道权重 (1×1×C)↓
Scale(通道级乘法) → 输出加权特征图 (H×W×C)

三、SENet 的核心优势:“轻量化 + 高兼容性”

SENet 之所以能成为竞赛冠军,关键在于它的 “低代价高收益” 特性:

  1. 计算量极小:SE 模块的计算量主要来自两个全连接层,对于一个 C=256 的特征块,r=16 时仅增加约 8k 个参数,相比 ResNet-50 的 2500 万参数,额外参数占比仅 0.03%;
  2. 兼容性极强:SE 模块可以嵌入任何 CNN 结构(ResNet、InceptionNet、MobileNet 等),只需在每个特征块(如 ResNet 的残差块、Inception 的分支块)后添加 SE 操作,无需改变原网络的主体结构;
  3. 精度提升明显:在 ImageNet 上,SE-ResNet-50 比普通 ResNet-50 的 Top-1 错误率降低 1.6%,SE-ResNeXt-101 比普通 ResNeXt-101 降低 2.0%,且在目标检测、分割等任务上同样有效。

四、SE 模块的典型嵌入方式(以 SE-ResNet 为例)

SE 模块最常用的嵌入场景是 ResNet(形成 SE-ResNet),我们以 ResNet 的 “瓶颈残差块”(Bottleneck Block)为例,看 SE 模块如何嵌入:

普通 ResNet 瓶颈块结构

输入 → 1×1 Conv(降维)→ BN → ReLU → 3×3 Conv(特征提取)→ BN → ReLU → 1×1 Conv(升维)→ 残差连接 → ReLU → 输出

SE-ResNet 瓶颈块结构(嵌入 SE 模块)

输入 → 1×1 Conv → BN → ReLU → 3×3 Conv → BN → ReLU → 1×1 Conv → 【SE模块】→ 残差连接 → ReLU → 输出

关键位置:在残差块的 “特征提取完成后、残差连接前” 嵌入 SE 模块 —— 先让 SE 模块对提取到的特征做权重调整,再与 shortcut 分支的特征相加,确保后续层接收的是 “加权后的优质特征”。

五、SENet 的应用场景和历史意义

1. 核心应用场景

  • 图像分类:作为基础模型(如 SE-ResNet、SE-ResNeXt),在 ImageNet、CIFAR 等数据集上实现高精度分类;
  • 目标检测与分割:作为 “特征提取 backbone”,嵌入 Faster R-CNN、Mask R-CNN 等模型,通过增强关键特征(如物体轮廓、纹理)提升检测 / 分割精度;
  • 移动端场景:SE 模块计算量小,可嵌入 MobileNet、EfficientNet 等轻量化模型,在手机等资源受限设备上实现 “高精度 + 快速度”;
  • 医学图像分析:在 X 光片、CT 图像的病灶识别中,SE 模块能增强病灶区域特征,抑制背景组织干扰,提升诊断准确率。

2. 历史意义

SENet 的出现,推动了 CNN 从 “单纯优化特征提取结构” 向 “优化特征利用效率” 的转变:

  • 开创通道注意力先河:SE 模块是首个被大规模验证有效的 “通道注意力” 模块,后续的 ECA-Net(高效通道注意力)、CBAM(卷积块注意力模块)等都基于 SE 的思路改进;
  • 证明 “注意力” 的价值:首次用实践证明,即使不改变特征提取结构,仅通过 “动态调整特征权重”,就能用极小代价大幅提升模型性能,为后续注意力机制在 CV 领域的普及奠定基础;
  • 国产模型的里程碑:SENet 是首个由中国团队提出并获得 ImageNet 冠军的模型,标志着中国在 CV 领域的研究进入世界顶尖水平。

六、一句话总结 SENet

SENet 就像 CNN 的 “智能特征管家”—— 它通过 “压缩→激励→重标定” 的 SE 模块,给每个特征通道学习一个 “重要性权重”,动态增强有用特征、抑制无用特征,用几乎可以忽略的计算量,让任何 CNN 的精度都能 “再上一个台阶”,是深度学习中 “注意力机制” 的经典应用。

http://www.xdnf.cn/news/1455769.html

相关文章:

  • AI安全必修课:模型偏见检测与缓解实战
  • 使用 Sentry 为 PHP 和 Web 移动小程序提供多平台错误监控
  • 温湿度监控的科技之处是能够将样本的运行数据以数字化的方式展现在管理者面前吗?
  • UE5 UAT
  • iSCSI IP-SAN 部署实战
  • SMARTGRAPHQA —— 基于多模态大模型的PDF 转 Markdown方法和基于大模型格式校正方法
  • 滑动窗口题目:水果成篮
  • C 盘清理技巧分享:释放磁盘空间,提升系统性能
  • ArcGIS学习-15 实战-建设用地适宜性评价
  • 适应新环境:Trae编辑器下的IDEA快捷键定制
  • 解密大语言模型推理:Prompt Processing 的内存管理与计算优化
  • C++语言编程规范-常量
  • 既“强悍”又“灵活”,部署在用户身边,将直播延迟压缩至毫秒级
  • Kafka 学习教程:从基础概念到实践操作
  • 分析流程自动优化!Fabarta个人专属智能体「数据分析」新功能介绍
  • 打工人日报#20250904
  • docker中的mysql变更宿主机映射端口
  • 以StarRocks为例讲解MPP架构和列式存储
  • vscode launch.json 中使用 cmake tools 扩展的命令获取可执行文件目标文件名
  • 设计师的私有化远程协作解决方案,是OpenUI与cpolar组合的标配功能
  • 目标检测系列-Yolov5下载及运行
  • 深度学习下的单阶段通用目标检测算法研究综述2.0
  • Java全栈工程师的实战面试:从Vue到Spring Boot的技术旅程
  • PSU电源原理
  • 双指针扫描使用简述
  • 【AI论文】面向大语言模型(LLMs)的具身强化学习全景图:一项调研综述
  • 新闻稿的发布平台有哪些?选对渠道让发稿效果事半功倍!
  • 移远EC200A OpenCPU笔记
  • 一文吃透同态滤波算法!从原理到 MATLAB 实战,小白也能懂
  • 解析PE文件的导入表和导出表