SimAM注意力机制

news/2025/10/12 19:11:08/文章来源:https://www.cnblogs.com/1764782550-rzs/p/19134346

🧠 一、SimAM 的基本思想

SimAM(Simple Attention Module) 是一种无参数的注意力机制(即不增加可学习参数),发表于

📝 SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Networks
(IEEE/CVF CVPR 2021)

它的核心思想是:

通过能量函数(Energy Function)来衡量每个神经元的重要性。

与常见的 SE、CBAM、ECA 等注意力不同,SimAM 不使用卷积或全连接层,而是**通过计算每个神经元与其邻域之间的差异性(信息独特性)**来决定注意力权重。

 

⚙️ 二、SimAM 的核心原理

SimAM 的核心来自于一个“神经元能量”模型。
对于卷积特征图中任意一个通道内的某个神经元 xix_ixi,SimAM 通过一个能量函数来衡量其“信息量”:

image

SimAM 假设:

神经元越“独特”(与均值差异越大),则其能量越低、重要性越高。

image

即能量越低的神经元(信息更突出的区域)被赋予更高的注意力权重。


🧩 三、SimAM 的结构特点

特征 说明
🪶 无参数 不使用卷积或全连接层,不增加模型参数
轻量高效 几乎不增加计算量,适合嵌入到轻量化模型
🔍 全局通道内注意力 对每个通道独立计算,不混合通道信息
🧮 基于能量函数 理论基础清晰,计算简洁

💻 四、SimAM 的简单实现(PyTorch版)

import torch
import torch.nn as nnclass SimAM(nn.Module):"""Simple Attention Module (SimAM)Reference: CVPR 2021 - "SimAM: A Simple, Parameter-Free Attention Module""""def __init__(self, lambda_c=1e-4):super(SimAM, self).__init__()self.lambda_c = lambda_c  # 能量平衡系数def forward(self, x):# x: [B, C, H, W]b, c, h, w = x.size()n = h * w# 每个通道的均值与方差mean = x.mean(dim=[2, 3], keepdim=True)var = ((x - mean) ** 2).sum(dim=[2, 3], keepdim=True) / n# 计算能量函数并得到注意力权重e_inv = (x - mean) ** 2 / (4 * (var + self.lambda_c)) + 0.5attention = 1 / (1 + e_inv)# 应用注意力return x * attention
 

🔬 五、与其他注意力机制的对比

模块 参数量 计算复杂度 特点
SE (Squeeze-Excitation) 有参数 通过全连接建模通道关系
CBAM 有参数 较高 通道+空间双重注意力
ECA 少量参数 1D卷积近似通道关系
SimAM ✅ 无参数 ✅ 极低 基于能量模型的轻量注意力

🧭 六、在YOLO中的应用场景

在 YOLOv5 / YOLOv8 / YOLOv11 等模型中,SimAM 常用于:

  • 替换 SE 或 CBAM 模块,实现轻量化;

  • 加入到 C3 / ELAN / CSP 模块 的 Bottleneck 内部;

  • 用于提升特征提取层的判别能力,尤其对小目标检测效果较好。

例如,在 yolo11.yaml 中添加:

 
# 在 backbone 中添加- [SimAM, 1, 512] # 在特征融合前加入 SimAM 注意力

📈 七、总结

项目 内容
模块名称 SimAM(Simple Attention Module)
核心思想 通过能量函数计算神经元重要性
参数量 0(完全无参数)
优点 轻量、高效、易嵌入、适合小模型
适用场景 YOLO、ResNet、MobileNet等轻量网络结构中

是否希望我帮你画一个 SimAM 的结构示意图(展示输入特征 → 能量计算 → 权重生成 → 输出)

image

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python容器-字符串

一、容器类型 1.1 容器介绍 容器就是存储多个数据的东西, 同时Python为了方便我们对容器中的数据进行增加删除修改查询专门提供了相应的方法便于我们操作 1.2 容器类型 Python中常见容器有如下几种:字符串 列表 元组 字…

氛围编程陷阱:为什么AI生成代码正在制造大量伪开发者

这是一篇再国外讨论非常火的帖子,我觉得不错所以把它翻译成了中文。 大语言模型和ai只能提的发展衍生出了一个东西叫"vibe coding"(氛围编程)——用自然语言描述需求,让AI生成代码,看起来不用写代码就能…

记一次的AI Agent开发的思维误区

写在前面 无论博客还是公号,我都很久不写东西了,去年、今年两年发生了太多的事,我没法梳理,也不想梳理了,本能的想着用时间来冲淡一切的一切,但是现实就是无法如愿。 自然文章、博客也就停滞了,相应的阅读量和粉…

3_Linux 文件管理三部曲:操作、结构与权限控制

Linux 文件管理三部曲:操作、结构与权限控制 对 Linux 新手来说,“管好文件” 是入门的核心 —— 既要会复制、查找文件,也要懂文件存放在哪,更要清楚 “谁能操作文件”。今天这篇文章,带你打通 “文件管理基础→…

2_终端入门:从 “不敢点” 到 “离不开” 的 5 个核心命令(附高频命令补充)

终端入门:从 “不敢点” 到 “离不开” 的 5 个核心命令(附高频命令补充) 很多新手看到 Linux 终端的 “黑窗口” 就发怵 —— 担心输错命令搞坏系统,害怕记不住复杂语法。但其实终端是 Linux 的 “效率神器”:学…

1_从 0 到 1 入门 Linux:认知、选型、安装

从 0 到 1 入门 Linux:认知、选型、安装 不少新手刚听说 Linux 时,总觉得它是 “程序员专属工具”—— 满屏命令行、操作复杂、离日常使用很远。但 2024 年 Linux 桌面份额已突破 5%,从办公电脑到云服务器,它早已融…

02020509 EF Core高级09-生成静态表达式树、动态创建表达式树、简化表达式树

02020509 EF Core高级09-生成静态表达式树、动态创建表达式树、简化表达式树 1. 更简单的创建表达式树(视频3-44) 1.1 动态创建表达式树 1、通过代码来动态构造表达式树要求开发者精通表达式树的结构,甚至还需要了解…

决胜职场:以准备为刃,破局而出

决胜职场:以准备为刃,破局而出 在当代职场的激烈角逐中,"准备"二字,实乃破局之钥,决胜之要。它不仅是方法论,更是一种生存哲学——当他人还在迷雾中摸索时,准备充分者早已拨云见日,稳操胜券。 一、准…

python的流程控制

一、判断语句 1.1 if语句 if语句是最常用的流程控制语句,通常由条件加子句(代码块)组成,条件求值为True时执行子句,如果条件为False时跳过。 if语句包含以下部分:点击查看代码 if 关键字 条件(表达式) 冒号: …

卖萌求 AccessKey

总之是将 luogu 的 uid 和 luogu.me 的 AccessKey luogu 私信发给我。 绘制冬日绘版用。本文来自博客园,作者:xrlong,转载请注明原文链接:https://www.cnblogs.com/xrlong/p/19137022 版权声明:本作品采用 「署名…

详细介绍:【Linux】线程控制

详细介绍:【Linux】线程控制pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

初识pytorch:关于数据展示的组件tensorboard

目录tensorboardtensorboard的介绍tensorboard的使用流程tensorboard的使用技巧关于tensorboard的总结 tensorboard tensorboard的介绍 tensorboard的作用就是让训练的过程可视化,例如大家伙在写代码的时候会在每一轮…

win11家庭版升级到专业版教程,专业版改为家庭版教程

win11家庭版升级到专业版教程 写这篇文章的原因 因为工作原因,一直在外地出差用的是公司办公电脑,节后放假后就开始公司远程办公了,倒也没什么问题,突然有一天下班在家里,21点后叫我加班(程序都懂的,加班是常态…

计网思维导图总结

计网思维导图总结 内容较多,浏览器建议使用大纲查看。 processon

如何下载不同版本的像素地牢

根据实际需要,像素地牢的制作者们在开发时,会基于不同的破碎像素地牢(SPD)版本进行开发。 本文主要目的在于记录:“如何GITHUB上找到不同版本的破碎像素地牢” 1、在GITHUB上搜索shattered-pixel-dungeon 2、进入…

一生一芯学习:多道程序 yield-os.c

一生一芯学习:多道程序 yield-os.c随着处理器主频的越来越高,每次读写一次磁盘要耗费很多个时钟周期来等待磁盘操作的完成,与其傻傻等待,在这等待的过程中我们可以做更多有意义的事情,如当第一个程序需要等待输入…

速通ACM省铜第十六天 赋源码(Sigma Cubes和Find Permutation 2和Rotate and Sum Query) - 教程

速通ACM省铜第十六天 赋源码(Sigma Cubes和Find Permutation 2和Rotate and Sum Query) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…

Linux操作系统扫盲汇总

linux 基本概念概括VFS 树链接:虚拟文件系统就是一个树,树的根部就是 / , 树上不同的节点,都会指向不同的物理地址(文件系统的目录树的不同节点其实是来自不同的分区),可以是具体的文件系统,或者网络节点,或者…

ABC round 427

ABC round 427T3注意到 \(n\) 非常小,那么枚举染色方式然后判断二分图即可。 #include <bits/stdc++.h> #define int long long #define rep(i, a, b) for(int i = a; i <= b; ++i) #define rep_(i, a, b) f…

卸载驱动模块,内核崩溃排查调试记录

问题 在学习串口子系统,在卸载串口模块的时候,引起内核崩溃。具体的崩溃日志如下: /mnt/uartdeep # rmmod virtual_uart.ko [ 23.208560] /home/book/bsp/mcu/uartdeep/virtual_uart_ok/virtual_uart.c virtual_u…