混合域注意力机制(空间+通道)
在计算机视觉任务中,空间域注意力通常关注图像中不同位置的重要性,例如突出图像中的关键对象或区域。而通道域注意力则侧重于不同通道(特征图)的重要性,决定哪些特征对于任务更具判别力。混合域注意力机制结合了空间域注意力机制与通道注意力机制。它同时考虑空间和通道维度的重要性,通过学习每个空间位置和通道的权重,动态调整特征图中不同位置和通道的重要性,以增强模型对视觉任务的表达能力和性能。
具体来说,它通常会经过以下步骤实现:
1. 输入:假设输入特征图的尺寸为C×H×W,其中C是通道数,H和W分别是高度和宽度。
2. 计算空间域注意力:空间注意力权重通过对特征图的空间位置进行分析得到。
3.计算通道注意力: 通道注意力权重则通过对特征图的通道进行分析,例如使用全局平均池化或全局最大池化来汇总通道信息,然后经过全连接层等操作生成权重。
4. 特征加权融合:将得到的空间和通道注意力权重与原始特征图相乘,实现对特征的重新加权和聚焦。
下面分享几篇经典的混合域注意力机制论文。
1.CBAM: Convolutional Block Attention Module
论文地址:https://arxiv.org/abs/1807.06521
文章中提出注意力机制不仅能够提示网络应该关注那些区域,还能够增强这些区域的重要性。所以,本文结合注意力机制提出了一个新的网络模块(CBAM),通过关注通道和空间信息,来达到增强有效的特征,抑制不太有效的特征。
如图1所示,CBAM的结构由两部分组成。一是通道注意力模块(Channel attention module),二是空间注意力模块(Spatial attention module)。下面就来看看这两部分的结构。
1.通道注意力模块(Channel attention module)
如图2所示,通道空间注意力模块由三个操作组成。具体来说,首先分别使用全局平均池化和全局最大池化生成两个不同的空间描述符和
,用来代表空间信息。然后,将
和
送入到一个共享的MLP当中去生成不同的通道注意力分数。最后,将MLP输出的两个不同的注意力分数相加,并通过Sigmoid函数激活便得到了最终的通道注意力权重。
2.空间注意力模块(Spatial attention module)
如图3所示,空间空间注意力模块由三个操作组成。与通道注意力模块不同的是,空间注意力模块首先分别使用全局平均池化和全局最大池化沿通道轴生成两个不同的特征图和
。然后,将
和
沿通道拼接在一起,并通过一个
的卷积去生成通空间注意力图。最后,通过Sigmoid函数激活便得到了最终的空间注意力权重。
此外,文章中还在ResBlock(ResNet)中集成了CBAM,结构如下图4所示。
2.Dual Attention Network for Scene Segmentation
论文地址:https://arxiv.org/abs/1809.02983
文章中提出了一种双注意网络(Dual Attention Network, DANet,网络结构如下图5所示)来自适应地整合局部特征及其全局依赖关系。具体来说,它结合了自注意力机制(transformer)设计了两个模块(Position Attention Module和Channel Attention Module),用来捕获空间和通道维度上的特征依赖关系,然后将这两个模块的输出进行融合,进一步增强特征的表达。下面就来看看这两个模块的结构。
1.Position Attention Module(PAM)
PAM的结构如图6所示,它通过以下步骤来实现。
1. 输入特征图,其中C是通道数,H和W分别是高度和宽度。
2. 将A用不同卷积层生成新的特征图B和C,其中B和C都。然后将B和C除通道外拉成一条向量变形成
。
3. 将C和B的转置进行矩阵乘法,再使用softmax操作即得到空间注意力图S。
4.将A用卷积层生成特征图D,并将D拉成一条向量变形成。然后,再将D与上一步得到的空间注意力图S的转置执行矩阵乘法,并将结果重塑成
。
5. 最后,对上一步得到的结果乘以尺度参数,并与原始输入特征执行元素加法,便得到最终的输出特征。输出特征实现了有选择性的聚合上下文信息。
2.Channel Attention Module(CAM)
CAM的结构如图6所示,它通过以下步骤来实现。
1. 输入特征图,其中C是通道数,H和W分别是高度和宽度。
2. 将A变形成,与A的转置执行矩阵乘法,然后通过softmax操作得到通道注意力图X
。
4.将A的转置与上一步得到的通道注意力图X执行矩阵乘法,并将结果重塑成。
5. 最后,对上一步得到的结果乘以尺度参数,并与原始输入特征执行元素加法,便得到最终的输出特征。
混合域注意力机制能够有效地提升模型的性能,增强模型对关键信息的捕捉能力,从而在图像分类、目标检测、语义分割等计算机视觉任务中取得更好的效果。
最后,欢迎关注公众号“AI小家”。
相关文章:
混合域注意力机制(空间+通道)
在计算机视觉任务中,空间域注意力通常关注图像中不同位置的重要性,例如突出图像中的关键对象或区域。而通道域注意力则侧重于不同通道(特征图)的重要性,决定哪些特征对于任务更具判别力。混合域注意力机制结合了空间域…...
springboot长春旅游安全地图平台-计算机毕业设计源码90075
摘 要 本文详细阐述了基于微信小程序前端和Spring Boot后端框架的长春旅游安全地图平台的设计思路与实现过程。该平台旨在为长春游客提供安全、便捷的旅游服务,同时为旅游管理部门提供高效的信息管理和应急响应机制。 在平台设计上,我们充分考虑了用户体…...
apex正则表达式匹配富文本字段内容,如何只匹配文本而忽略富文本符号
在Apex中处理富文本字段时,如果你只想匹配其中的纯文本而忽略富文本符号,可以使用正则表达式来去除HTML标签,然后再进行文本匹配。以下是一个示例代码,展示了如何实现这一点: public class RichTextHandler {// Funct…...
空气净化器对去除宠物毛有效吗?小型猫毛空气净化器使用感受
作为一个养猫多年的猫奴,家里有两只可爱的小猫咪:小白和小花。虽然相处起来很开心,但也给生活带来了一些小麻烦。谁懂啊,我真的受够了,每天都在粘毛。猫窝的猫毛一周不清理就要堆成山,空气中也全是浮毛&…...
vue的nextTick是下一次事件循环吗
如题,nextTick的回调是在下一次事件循环被执行的吗? 是不是下一次事件循环取决于nextTick的实现,如果是用的微任务,那么就是本次事件循环;否则如果用的是宏任务,那么就是下一次事件循环。 我们看下Vue3中…...
5.4.软件工程-系统设计
考试占比不高 概述 系统设计的主要目的就是为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方案。系统设计的主要内容包括新系统总体结构设计、代码设计、输出设计、输…...
Apache Kylin与BI工具集成:数据可视化实战
Apache Kylin与BI工具集成:数据可视化实战 1. 引言 Apache Kylin是一个开源的分布式分析引擎,专注于大数据的OLAP(在线分析处理)。它可以快速地对大量数据进行多维分析,并支持与多种BI(商业智能ÿ…...
通过idea图形化界面就能push到github流程
建好自己要提交的项目 建好github想提交的地址 git initgit remote add origin https://github.com/usernamezhaozhao/github2test/tree/maingit branch maingit checkout main创建一个文件,我起了一个a.txt git pull origin main 好了,可以idea打开了 …...
C语言初阶(10)
1.野指针 野指针就是指向未知空间的指针,有以下几种情况 (1)指针未初始化 int main() {int a0;int*b;return 0; } 上面指针就是没有初始化,形成一种指向一个随机空间的地址的指针,我们可以修改成 int main() {int a0;int*bNU…...
Javaweb用过滤器写防跳墙功能和退出登录
一、什么是防跳墙功能: 防跳墙功能通常指的是防止用户在未完成认证的情况下直接访问受保护资源的功能。在 Web 开发中,这种功能通常被称为“登录拦截”或“身份验证拦截”。 在 Spring MVC 中,实现这种功能通常使用的是“拦截器”(…...
小试牛刀-Telebot区块链游戏机器人(TS升级)
目录 1.编写目的 2.为什么使用TypeScript实现? 3.实现功能 3.1 AI图片生成 3.2 签到 3.3 邀请 3.4 WalletConnect连接 4.功能实现详解 4.1 AI图片生成 4.2 签到 4.3 邀请 4.4 WalletConnect连接 5.功能截图 6.问题整理 Welcome to Code Blocks blog 本篇文章主…...
MySQL:Prepared Statement 预处理语句
预处理语句(Prepared Statement) 是一种在数据库管理系统中使用的编程概念,用于执行对数据库进行操作的 SQL 语句。 使用预处理语句的具体方式和语法依赖于所用的编程语言和数据库管理系统。常见的编程语言如 Java、PHP、Python 和 C# 都提供…...
Java:Thread类以及线程状态
文章目录 Thread类等待一个线程 - join()获取当前线程的引用sleep 线程状态 Thread类 等待一个线程 - join() 操作系统,针对多个线程的执行,是一个"随机调度,抢占式执行“的过程. 线程等待就是在确定两个线程的"结束顺序”. 我们无法确定两个线程调度执行的顺序,但…...
如何通过前端表格控件实现自动化报表?
背景 最近伙伴客户的项目经理遇见一个问题,他们在给甲方做自动化报表工具,项目已经基本做好了,但拿给最终甲方,业务人员不太买账,项目经理为此也是天天抓狂,没有想到合适的应对方案。 现阶段主要面临的问…...
Upload-labs靶场Pass01-Pass21全解
文章目录 Pass-01 前端JSJS绕过上传或者用burp抓包的方式 Pass-02 MIME检测Pass-03 特殊文件后缀黑白名单绕过特殊文件名绕过 Pass-04 .htacess上传Pass-05 user.ini文件上传Pass-06 大小写绕过Pass-07 空格绕过Pass-08 .绕过Pass-09 ::$DATA绕过Pass-10 .空格.绕过Pass-11 双写…...
使用openpyxl库对Excel数据有效性验证
哈喽,大家好,我是木头左! 本文将重点介绍如何使用openpyxl库进行Excel数据验证。 什么是Excel数据验证 Excel数据验证是一种功能,可以限制单元格中输入的数据类型和范围。例如,可以设置一个单元格只能输入日期,或者只能输入大于0的数字。这样,可以确保数据的准确性和一…...
【算法】浅析深度优先搜索算法
深度优先搜索算法:深入探索,穷尽可能 1. 引言 在计算机科学中,深度优先搜索(Depth-First Search,简称DFS)是一种用于遍历或搜索树或图的算法。这种算法会沿着一个分支走到底,直到这个分支结束…...
鸿蒙系统开发【ASN.1密文转换】安全
ASN.1密文转换 介绍 本示例对使用kit.CryptoArchitectureKit加密后的密文格式进行转换。kit.CryptoArchitectureKit加密后的密文格式默认为以base64显示的ASN.1格式问题,通过对密文进行base64变换后得到字符数组,以16进制数字显示,再此基础…...
【期末复习】软件质量保证与测试
考试内容 a卷 前三个部分(就业前景、岗位、发展前景(第一部分最后一个知识点),第四部分缺陷管理不考) 单选 10*2 判断 12*1 简单3*10 四个小题 (7个 pta部分涵盖+ppt) 设计 10+18 简答题(PTA简答题+PPT) 背完80分以上基本没问题 一、什么是软件。 软件是计算…...
CTFHub——XSS——反射型
1、反射型: 发现为表单式,猜测哪个可能存在注入漏洞,分别做测试注入发现name框存在xss漏洞 输入发现有回显但不是对方cookie,参考wp发现要用xss线上平台 将xss平台测试语句注入,将得到的url编码地址填入url框…...
如何打造Koel音乐流的终极插件生态:从开发到分发的完整指南
如何打造Koel音乐流的终极插件生态:从开发到分发的完整指南 【免费下载链接】koel Music streaming solution that works. 项目地址: https://gitcode.com/gh_mirrors/ko/koel Koel是一款功能强大的音乐流媒体解决方案,通过其灵活的扩展机制&…...
Tessera:内核级异构GPU分解技术解析与应用
1. Tessera:内核级异构GPU分解技术解析现代GPU数据中心正变得越来越异构化,不同型号的GPU在计算能力、内存带宽和成本效率上存在显著差异。这种异构性源于GPU发布周期与退役时间表的不匹配,以及高昂的成本和有限的供应。例如,Goog…...
20 - 告别“无限上下文”的幻觉:大模型知识注入的“四层矩阵”与下一场权重战争
本专题系列文章共 21 篇,前 5 篇限时免费阅读 01 - 眩晕时代的定海神针:大模型落地的“第一性原理”与算力丰裕悖论 02 - 95%的AI投资打了水漂:五大错配如何扼杀你的“第二增长曲线” 03 - 从电力到AI:标准化已死,个性化永生——大模型时代的三大商业终局 04 - 你的护城…...
曲轴基于灵敏度的拓扑优化-CAE操作过程
前言 本示例展示了曲轴基于灵敏度的拓扑优化的基本工作流程。 该模型为简化曲轴模型,设计区域采用壳单元建模,轴体部分采用梁单元建模,壳单元与梁单元之间通过 RBE2 多点约束单元 进行耦合连接。 本次优化的目标是通过体积最小化实现曲轴的轻…...
【职业发展】程序员成长路径:从初级到架构师的进阶指南
【职业发展】程序员成长路径:从初级到架构师的进阶指南 引言 程序员的职业发展是一个持续学习和成长的过程。从初级程序员成长为技术架构师,需要经历多个阶段的积累和蜕变。本文将详细分析程序员成长的各个阶段,帮助你规划职业发展路径。 …...
别再死记硬背截止、放大、饱和了!用Arduino+面包板,5分钟直观理解NPN/PNP三极管三种状态
用Arduino点亮三极管:5分钟可视化实验理解电子开关的三种状态 你是否曾被三极管的"截止"、"放大"、"饱和"这些术语困扰?教科书上的电压公式和载流子运动图虽然精确,却难以形成直观认知。今天我们将用Arduino和…...
Vue3 + Vite项目集成vue-particles避坑指南:从安装到性能优化全流程
Vue3 Vite项目集成vue-particles全流程实战:从安装到性能调优 在Vue3和Vite构建的现代前端项目中,集成像vue-particles这样的视觉特效组件往往会遇到意想不到的兼容性问题。不同于传统的Webpack环境,Vite的ES模块系统和Vue3的组合式API带来了…...
从HackRF到USRP B210:我的SDR设备升级之路与真实体验对比
从HackRF到USRP B210:我的SDR设备升级之路与真实体验对比 作为一个长期沉迷于软件定义无线电(SDR)技术的爱好者,设备的选择往往决定了探索的边界。从最初的HackRF One到如今的USRP B210,这段升级旅程不仅是对硬件性能的…...
用PTA题库学C语言:手把手教你拆解‘选择与循环’的嵌套逻辑
用PTA题库学C语言:手把手教你拆解‘选择与循环’的嵌套逻辑 学习C语言时,最让初学者头疼的莫过于那些层层嵌套的选择结构和循环结构。面对一堆if-else和for/while语句,很多人会感到无从下手。本文将通过PTA题库中的典型题目,教你一…...
智能设备语音交互进阶:从‘慢交互’到‘快交互’,详解ONESHOT模式下的音频残留音过滤实战
智能设备语音交互进阶:ONESHOT模式下的音频残留音过滤实战 在智能语音交互领域,ONESHOT模式已经成为提升用户体验的关键技术。这种允许用户在唤醒设备后无需二次唤醒即可直接下达指令的交互方式,正在重塑人机对话的自然流畅度。然而ÿ…...
