《BiFormer: Vision Transformer with Bi-Level Routing Attention》CVPR2023

摘要

这篇论文提出了一种新型的视觉Transformer,名为BiFormer,它采用了双层路由注意力(Bi-Level Routing Attention, BRA)机制。注意力机制是视觉变换器的核心构建模块,能够捕获数据中的长期依赖性。然而,这种能力的代价是计算量大和内存占用高。为了解决这个问题,作者提出了一种动态稀疏注意力机制,通过双层路由来实现计算的灵活分配,并具有内容意识。具体来说,对于一个查询(query),首先在粗粒度区域级别过滤掉不相关的键值对,然后在剩余候选区域的联合上应用细粒度的令牌到令牌的注意力。BiFormer在多项计算机视觉任务上验证了其有效性,包括图像分类、目标检测和语义分割。

拟解决的问题

  • 传统注意力机制在计算所有空间位置的成对令牌亲和性时,具有高计算复杂度和内存占用。
  • 现有方法通过引入手工设计的稀疏性来缓解这个问题,但这些方法要么使用静态模式,要么在所有查询之间共享采样的键/值子集,可能不是最优的。

创新之处

  • 提出了一种新颖的动态稀疏注意力机制,即双层路由注意力(BRA),它通过粗粒度区域级别来过滤不相关的键值对,然后对剩余的路由区域应用细粒度的注意力。
  • BRA利用稀疏性节省计算和内存,同时只涉及对GPU友好的密集矩阵乘法。
  • 通过BRA作为构建模块,提出了一种新的通用视觉变换器BiFormer,它在查询适应性方面关注一小部分相关令牌,从而在不牺牲性能的情况下提高计算效率。

从传统的全注意力(Vanilla Attention)到所提出的双层路由注意力(Bi-level Routing Attention)的几种变体:

(a) Vanilla Attention(传统全注意力):这是最基本的注意力机制,它在全局范围内操作,计算所有空间位置的成对令牌亲和性,导致高计算复杂度和重内存占用。

(b) Local Attention(局部注意力):局部注意力限制了注意力操作仅在局部窗口内进行,减少了计算量,但可能牺牲了一些全局上下文信息。

(c) Axial Attention(轴向注意力):轴向注意力是一种沿特定轴(通常是x轴或y轴)的稀疏注意力模式,它减少了一些计算量,但仍然保持了一定程度的全局感知能力。

(d) Dilated Attention(扩张注意力):扩张注意力通过在局部区域内使用扩张的窗口模式来计算注意力,这种模式可以捕获更广泛的上下文信息,同时保持计算效率。

(e) Deformable Attention(可变形注意力):可变形注意力允许根据图像内容自适应地调整注意力窗口,通过变形规则网格来实现稀疏注意力,从而更灵活地捕获图像特征。

(f) Bi-level Routing Attention(双层路由注意力):这是本文提出的核心机制,它首先在粗粒度的区域级别上搜索top-k个相关区域,然后在这些区域的联合上应用细粒度的令牌到令牌注意力。这种机制实现了动态的、查询感知的稀疏性,有效平衡了计算效率和性能。

方法论

  • 采用四阶段金字塔结构,每个阶段使用不同的BiFormer块数和通道数。
  • 在每个BiFormer块中,首先使用3×3深度卷积来隐式编码相对位置信息,然后顺序应用BRA模块和两层MLP模块,分别用于跨位置关系建模和每个位置的嵌入。

Bi-Level Routing Attention (BRA)

1.区域划分和输入投影:将输入特征图 𝑋 划分为 𝑆×𝑆 个非重叠区域,每个区域包含\frac{HW}{S^{2}}的特征向量,通过线性变换得到查询 𝑄,键 𝐾,和值 𝑉 张量:

 2.区域到区域路由:构建一个区域级别的有向图来确定每个区域应该关注的其他区域。首先,通过区域平均得到区域级别的查询和键:

通过Q和K计算区域间的亲和矩阵的邻接矩阵:即是计算两两区域之间的相关性

 其中A^{r}\in R^{s^{2}\times s^{2}},接着,通过top-k操作保留和每个区域最重要的 𝑘 个连接(最相关的k个),形成路由索引矩阵:

其中I^{r}\in \mathbb{N}^{S^{2}\times k}I^{r}的第 i 行包含第 i 个区域最相关的 k 个索引。 

3.令牌到令牌注意力

利用路由索引矩阵 I^{r}​ 来应用细粒度的注意力。对于区域 𝑖 中的每个查询令牌,它将关注由I_{\left ( i,1 \right )}^{r},I_{\left ( i,2 \right )}^{r},...,I_{\left ( i,k \right )}^{r}索引的 𝑘 个路由区域中的所有键/值对。首先聚集键和值张量:

然后应用注意力机制: 

其中,LCE(𝑉) 是一个局部上下文增强项,通常由深度卷积实现。 

复杂度比较

复杂度为:O\left ( \left ( HW \right )^{4/3} \right )

其他方法:

  • Vanilla Attention:传统的全注意力机制,计算复杂度为 O\left ( \left ( HW \right )^{2} \right ),因为它需要对所有空间位置计算成对的令牌亲和性。
  • Quasi-Global Axial Attention:一种近似全局的轴向注意力机制,计算复杂度为 O\left ( \left ( HW \right )^{3/2} \right ),它通过限制注意力范围来减少计算量,但仍高于BRA。

结论

作者提出的BiFormer通过双层路由注意力机制实现了高效的计算分配,具有动态、查询感知的稀疏模式。在图像分类、目标检测、实例分割和语义分割等多个流行视觉任务上,BiFormer展现出了卓越的性能。尽管BiFormer由于额外的GPU内核启动和内存事务而具有较低的吞吐量,但作者指出,通过工程努力,如GPU内核融合,可以减轻这个问题,并在未来的工作中探索具有硬件意识的高效稀疏注意力和视觉变换器。

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

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

相关文章

java远程调试

java远程调试 idea2024创一个Spring Web项目springdemo1 使用maven-assembly-plugin插件打包成JAR文件 pom.xml参考如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi&quo…

离线安装MeterSphere遇到的问题

1.安装步骤&#xff0c;参考官方文档 在线安装 - MeterSphere 文档 2.安装完成以后&#xff0c;docker ps查看有很多服务一直处于重启状态&#xff0c;查看容器日志docker logs ID,发现所有一直处于重启状态的容器都是因为服务无法创建日志目录和文件。一直处于重启的服务如…

NAND行业回归盈利:AI与云存储需求驱动

市场概览 根据Yole Group于2024年6月25日发布的市场报告&#xff0c;经过五个季度的亏损之后&#xff0c;NAND闪存行业在2024年第一季度&#xff08;1Q24&#xff09;实现了盈利回归。这一转变主要得益于企业级固态硬盘&#xff08;SSD&#xff09;领域的强劲需求增长&#xf…

画图像解方程系列-FPI

不是所有方程都能求出精确解。 解方程 sinx(x) cos(x)&#xff0c;求x&#xff0c;在区间&#xff08;0&#xff0c;1&#xff09;范围内。 正常解法&#xff1a; 两边除以cosx得到tanx 1 解的x Π/4&#xff0c;使用计算机计算得到&#xff1a;0.7853981633974483096156…

CSP-J 复赛 模拟题

1.生产计划&#xff1a; 样例 #1 样例输入 #1 2 4 5 6 12 1 3 6 15 8 1 3 100 3 200 4 300 6 100 样例输出 #1 YES NO 2.分组和为3&#xff1a; 样 例 # 1 样 例 输 入 # 1 5 1 1 1 2 1 样 例 输 出 # 1 2 样 例 # 2 样 例 输 入 # 2 7 2 2 1 1 2 1 1 样 例 输 出 # …

Jenkins保姆笔记(1)——基于Java8的Jenkins安装部署

前言 记录分享下Jenkins的相关干货知识。分2-3篇来介绍Jenkins的安装部署以及使用。还是和以前一样&#xff0c;文章不介绍较多概念和细节&#xff0c;多介绍实践过程&#xff0c;以战代练&#xff0c;来供大家学习和理解Jenkins 概念 Jenkins是一个开源的自动化服务器&…

【过题记录】 8.2 hddx

飞行棋 关于这一题 我在考场上手莫了n2和n3的情况 发现一点规律&#xff0c;大力猜想蒙了一个结论 结果蒙对了… 关于正确做法&#xff0c;发现零号点和其他几个点是不一样的。 因为对于0而言&#xff0c;他没有赠送的情况(只要摇到n就直接胜利) 因此0和其他点要分开讨论 对于…

【中项】系统集成项目管理工程师-第7章 软硬件系统集成-7.2基础设施集成

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

【xss-labs-master】靶场通关详解!-----持续更新

XSS基础概念&#xff1a; 跨站脚本攻击XSS(Cross Site Scripting)&#xff0c;为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其…

《技术人求职之道》之面试准备篇:不打无准备之仗,优秀技术人的面试前准备

摘要 本文为求职者提供面试前的全面准备策略,旨在提升面试成功几率并减轻面试前的焦虑和不自信。文章首先强调准备求职资料的重要性,包括简历、寸照、学历证明等,并建议提前准备以避免入职时的尴尬。接着,讨论对应聘公司进行调研的必要性,包括了解公司业务和技术需求,以…

《从U-Net到Transformer:深度模型在医学图像分割中的应用综述》论文阅读

网络首发地址&#xff1a;https://link.cnki.net/urlid/51.1307.tp.20231026.1648.002 摘要&#xff1a; U-Net以卷积神经网络&#xff08;CNN&#xff09;为主干&#xff0c;其易于优化促使在医学图像分割领域的发展&#xff0c; 但只擅长获取局部特征&#xff0c;缺乏长期相…

华为认证题库:HCIA-Datacom易错题(15)(含答案解析)

华为认证HCIA-Datacom易错题举例和答案分析。 需要更多题库资料&#xff0c;可以在文末领取 1. MPLS头部包括以下哪些字段? A.Label B.TTL C.EXP D.Tos Answer:A&#xff0c;B&#xff0c;C * 答案解析.MPLS头部包括&#xff0c;Label&#xff0c;EXP&#xff0c;S&…

六、5 TIM输入捕获介绍

1、基本知识介绍 &#xff08;1&#xff09; 注意&#xff1a; ①4个输入捕获和输出比较通道&#xff0c;共用4个CCR寄存器 ②CH1到CH4&#xff0c;四个通道的引脚也是共用的 ③同一个定时器输入捕获和输出比较&#xff0c;不能同时使用 &#xff08;2&#xff09;输入捕获…

JDFrame 一款比 Java 8 Stream 更灵活的数据处理工具

一、JDFrame 介绍 在大数据处理领域&#xff0c;Apache Spark以其强大的分布式计算能力和丰富的数据处理API而广受好评。然而&#xff0c;在许多日常的软件开发场景中&#xff0c;我们面临的数据量可能并不需要Spark这样的分布式系统来处理。相反&#xff0c;我们更希望有一种…

openeuler的mariadb数据库安装

下载数据库 yum install mariadb-server 如果出现文件冲突如下删除即可 yum remove selinux-policy-targeted --nobest --nobest 无视需求关系 systemctl enable --now mariadb.service #自启动 mysql_secure_installation 初始化Mysql根据自己需求填y|n 第一次进…

vue echarts 横向柱状图,交错正负轴标签

横向柱状图&#xff1a; 同一个页面展示多个相同横向柱状图&#xff1b; 代码如下&#xff1a; <template><div style"display: flex;justify-content: space-around;"><div v-for"(chart,index) in barChartList" :key"index"…

finalshell连接kali-Linux失败问题略谈

如果你正在使用fianlshell或者xshell等终端软件远程连接Linux进行工作&#xff0c;但是突然有一天&#xff0c;你死活连不上了&#xff0c;报错提示如下&#xff1a; java.net.ConnectException: Connection refused: connect 就像这样&#xff1a; 哪怕是重装虚拟机&#xff0…

易境通散货集拼系统是如何让散拼效率提高80%的?

散货集拼为什么必须要有靠谱的系统才行&#xff1f;因为散拼很容易出现各种问题&#xff0c;而且会连带着影响不同的环节。货物整箱利用空间不充足&#xff0c;会导致集装箱数量增加&#xff0c;运费成本激增&#xff0c;返工整理会耽误发货&#xff0c;延长送货时间&#xff0…

U盘文件或目录损坏无法读取?详解两大恢复策略

在日常的数字生活中&#xff0c;U盘作为便携的数据存储工具&#xff0c;承载着我们的重要文件与回忆。然而&#xff0c;当U盘中的文件或目录突然变得无法读取时&#xff0c;这份便捷瞬间转化为困扰。U盘文件或目录的损坏&#xff0c;往往是由于多种因素共同作用的结果&#xff…

使用 SpringBoot + 虚拟线程将服务性能提升几百倍

虚拟线程简介 虚拟线程是 Java 平台的一项创新特性。虚拟线程是一种轻量级的线程实现,它在操作系统层面并不对应真实的内核线程,而是由 JVM 进行管理和调度。这使得可以在不消耗大量系统资源的情况下创建大量的线程,从而能够更高效地处理并发任务。 虚拟线程与普通线程的区…