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

混合域注意力机制(空间+通道)

在计算机视觉任务中,空间域注意力通常关注图像中不同位置的重要性,例如突出图像中的关键对象或区域。而通道域注意力则侧重于不同通道(特征图)的重要性,决定哪些特征对于任务更具判别力。混合域注意力机制结合了空间域注意力机制与通道注意力机制。它同时考虑空间和通道维度的重要性,通过学习每个空间位置和通道的权重,动态调整特征图中不同位置和通道的重要性,以增强模型对视觉任务的表达能力和性能。
具体来说,它通常会经过以下步骤实现:
1. 输入:假设输入特征图的尺寸为C×H×W,其中C是通道数,H和W分别是高度和宽度。
2. 计算空间域注意力:空间注意力权重通过对特征图的空间位置进行分析得到。
3.计算通道注意力: 通道注意力权重则通过对特征图的通道进行分析,例如使用全局平均池化或全局最大池化来汇总通道信息,然后经过全连接层等操作生成权重。
4. 特征加权融合:将得到的空间和通道注意力权重与原始特征图相乘,实现对特征的重新加权和聚焦。


下面分享几篇经典的混合域注意力机制论文。

1.CBAM: Convolutional Block Attention Module

论文地址:https://arxiv.org/abs/1807.06521

文章中提出注意力机制不仅能够提示网络应该关注那些区域,还能够增强这些区域的重要性。所以,本文结合注意力机制提出了一个新的网络模块(CBAM),通过关注通道和空间信息,来达到增强有效的特征,抑制不太有效的特征。

图1

如图1所示,CBAM的结构由两部分组成。一是通道注意力模块(Channel attention module),二是空间注意力模块(Spatial attention module)。下面就来看看这两部分的结构。

1.通道注意力模块(Channel attention module)

图2

如图2所示,通道空间注意力模块由三个操作组成。具体来说,首先分别使用全局平均池化和全局最大池化生成两个不同的空间描述符F_{avg}^CF_{max}^C,用来代表空间信息。然后,将F_{avg}^CF_{max}^C送入到一个共享的MLP当中去生成不同的通道注意力分数。最后,将MLP输出的两个不同的注意力分数相加,并通过Sigmoid函数激活便得到了最终的通道注意力权重。

2.空间注意力模块(Spatial attention module)

图3

如图3所示,空间空间注意力模块由三个操作组成。与通道注意力模块不同的是,空间注意力模块首先分别使用全局平均池化和全局最大池化沿通道轴生成两个不同的特征图F_{avg}^s \in R^{1 \times H \times W}F_{max}^s \in R^{1 \times H \times W}。然后,将F_{avg}^sF_{max}^s沿通道拼接在一起,并通过一个7 \times 7的卷积去生成通空间注意力图。最后,通过Sigmoid函数激活便得到了最终的空间注意力权重。

此外,文章中还在ResBlock(ResNet)中集成了CBAM,结构如下图4所示。

图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),用来捕获空间和通道维度上的特征依赖关系,然后将这两个模块的输出进行融合,进一步增强特征的表达。下面就来看看这两个模块的结构。

图5

1.Position Attention Module(PAM)

图6

PAM的结构如图6所示,它通过以下步骤来实现。

1. 输入特征图A \in R^{C \times H \times W},其中C是通道数,H和W分别是高度和宽度。

2. 将A用不同卷积层生成新的特征图B和C,其中B和C都\in R^{C \times H \times W}。然后将B和C除通道外拉成一条向量变形成R^{C \times HW}

3. 将C和B的转置进行矩阵乘法,再使用softmax操作即得到空间注意力图S\in R^{HW \times HW}

4.将A用卷积层生成特征图D,并将D拉成一条向量变形成R^{C \times HW}。然后,再将D与上一步得到的空间注意力图S的转置执行矩阵乘法,并将结果重塑成R^{C \times H \times W}

5. 最后,对上一步得到的结果乘以尺度参数\alpha,并与原始输入特征执行元素加法,便得到最终的输出特征。输出特征实现了有选择性的聚合上下文信息。

2.Channel Attention Module(CAM)

图7

CAM的结构如图6所示,它通过以下步骤来实现。

1. 输入特征图A \in R^{C \times H \times W},其中C是通道数,H和W分别是高度和宽度。

2. 将A变形成R^{C \times HW},与A的转置执行矩阵乘法,然后通过softmax操作得到通道注意力图X\in R^{C \times C}

4.将A的转置与上一步得到的通道注意力图X执行矩阵乘法,并将结果重塑成R^{C \times H \times W}

5. 最后,对上一步得到的结果乘以尺度参数\beta,并与原始输入特征执行元素加法,便得到最终的输出特征。


混合域注意力机制能够有效地提升模型的性能,增强模型对关键信息的捕捉能力,从而在图像分类、目标检测、语义分割等计算机视觉任务中取得更好的效果。

最后,欢迎关注公众号“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(商业智能&#xff…...

通过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 中,实现这种功能通常使用的是“拦截器”&#xff08…...

小试牛刀-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框&#xf…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...