学习记录——BiFormer

BiFormer Vision Transformer with Bi-Level Routing Attention

BiFormer:具有双电平路由注意的视觉变压器

  摘要作为视觉转换器的核心组成部分,注意力是捕捉长期依赖关系的有力工具。然而,这样的能力是有代价的:当计算跨所有空间位置的成对令牌交互时,它会产生巨大的计算负担和沉重的内存占用。一系列的作品试图通过引入手工制作和内容不可知的注意力稀疏性来缓解这个问题,例如将注意力操作限制在局部窗口,轴向条纹或扩展窗口内。与这些方法相比,我们提出了一种新的动态稀疏注意,通过双层路由实现更灵活的内容感知计算分配。具体来说,对于查询,首先在粗区域级别过滤掉不相关的键值对,然后在剩余候选区域(即路由区域)的联合中应用细粒度的令牌到令牌注意。我们提供了一个简单而有效的实现所提出的双层路由注意,它利用稀疏性来节省计算和内存,同时只涉及gpu友好的密集矩阵乘法。在此基础上,提出了一种新的通用视觉变压器——BiFormer。由于BiFormer以查询自适应的方式处理一小部分相关令牌,而不会分散其他不相关的令牌,因此它具有良好的性能和较高的计算效率,特别是在密集的预测任务中。多个计算机视觉任务(如图像分类、目标检测和语义分割)的经验结果验证了我们设计的有效性。代码可从https://github.com/rayleizhu/BiFormer获得。

引言

  Transformer有许多适合于构建强大的数据驱动模型的属性。首先,它能够捕获数据中的远程依赖关系[29,42]。第二,它几乎没有诱导偏差,从而使模型更灵活地拟合大量数据[15]。最后但并非最不重要的是,它具有高并行性,这有利于大型模型的训练和推理[13,33,36,42]。因此,transformer不仅彻底改变了自然语言处理,而且在计算机视觉方面也显示出非常有希望的进展。
  在过去的两年里,计算机视觉社区见证了视觉变压器的爆炸式增长[1,14,15,29,44,46]。在这些工作中,一个热门的话题是提高核心构件,即注意力。卷积本质上是一个局部算子,与之相反,注意力的一个关键属性是全局接受场,它使视觉转换器能够捕获远程依赖[42]。然而,这样的属性是有代价的:当注意力跨所有空间位置成对地计算令牌关联时,它具有很高的计算复杂性,并导致大量内存占用。
  为了缓解这个问题,一个有希望的方向是将稀疏关注[6]引入到视觉转换中,这样每个查询只关注一小部分键值对,而不是全部。以这种方式,研究人员探索了几种手工制作的稀疏图案,例如将注意力限制在局部窗口[29]、扩展窗口[41,46]或轴向条纹[46]。另一方面,也有人试图使稀疏度适应数据[5,48]。然而,虽然它们使用不同的策略来合并或选择键/值令牌,但这些令牌是查询无关的,也就是说,它们由所有查询共享。然而,根据预训练的ViT 1[15]和DETR 2[1]的可视化,不同语义区域的查询实际上关注的键值对是完全不同的。因此,强制所有查询处理同一组令牌可能不是最优的。
  在本文中,我们寻求一种具有动态、查询感知稀疏性的注意机制。基本上,我们的目标是让每个查询都关注语义上最相关的键值对的一小部分。第一个问题是如何解决查找要参加的这些键值对。例如,如果我们像[17]中那样以每个查询的方式选择键值对,它仍然需要评估所有查询和键之间的配对亲和力,因此具有相同的香草注意复杂性。另一种可能性是基于每个查询的本地上下文来预测注意力偏移量[10,48],因此可以避免两两关联计算。然而,通过这种方式,对远程依赖关系进行建模是有问题的[48]。
在这里插入图片描述

  为了高效地定位有价值的键值对,我们提出了一种区域到区域路由方法。我们的核心思想是在粗粒度的区域级别过滤掉最不相关的键值对,而不是直接在细粒度的令牌级别。这是通过首先构造一个区域级关联图,然后对其进行修剪,使每个节点只保留top-k连接来实现的。因此,每个区域只需要关注top-k路由区域。确定了参与区域后,下一步是应用令牌到令牌的注意,这是非常重要的,因为现在假定键值对在空间上是分散的。对于这种情况,虽然稀疏矩阵乘法是适用的,但它在现代gpu中是低效的,它依赖于合并内存操作,即一次访问数十个连续字节的块[31]。相反,我们提出一个简单的通过收集键/值令牌来解决,其中只涉及硬件友好的密集矩阵乘法。我们将这种方法称为双级路由注意(BRA),因为它包含一个区域级路由步骤和一个令牌级注意步骤。
  通过使用BRA作为核心构建块,我们提出了BiFormer,这是一个通用的视觉变压器骨干,可用于许多应用,如分类,目标检测和语义分割。由于BRA使BiFormer能够以内容感知的方式为每个查询处理最相关的键/值令牌的一小部分,因此我们的模型实现了更好的计算性能权衡。例如,在4.6G FLOPs的计算下,BiFormer-T在ImageNet-1

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

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

相关文章

如何理解图卷积网络GCN

文章目录 基本概念度矩阵(degree)邻接矩阵(Adjacency) 理解GCN两层GCN网络层数设置 搭建GCN网络定义GCN层定义GCN网络 基本概念 图的一些基本知识:图,邻居,度矩阵,邻接矩阵 度矩阵…

Git - 多账户

不想在不同的托管平台或者不同的账号使用同一个秘钥 使用-f参数创建多个秘钥并添加到对应平台&#xff0c;Git - 秘钥创建修改~/.ssh/config&#xff0c;格式如下新格式仓库地址&#xff1a;<主机名>:<仓库所有者>/<仓库名>.git # ~/.ssh/config # 主机名随…

热门API接口大全分享,含免费次数

热门API接口大全分享&#xff0c;含天气、物流等。。。 天气预报查询&#xff1a;查询全国以及全球多个城市的天气&#xff0c;包含15天天气预报查询。天气预警&#xff1a;可以获取指定城市当前生效中的各类天气预警&#xff0c;如寒潮蓝色预警信号&#xff0c;或一次性拉取全…

【力扣100】22.括号生成 || 为什么搜索几乎都是用深度优先遍历?

添加链接描述 class Solution:def generateParenthesis(self, n: int) -> List[str]:# 思路是根据左右括号剩余数量进行生成# 剩余左括号小于剩余右括号时&#xff0c;可以加左或者加右# 剩余左括号大于剩余右括号时&#xff0c;舍弃def backtrack(cur,left,right,res):if …

.NET DevOps 接入指南 | 1. GitLab 安装

引言 容器、DevOps和微服务被称为驱动云原生快速发展的三架马车。而DevOps是其中非常重要的一环&#xff0c;DevOps 是由Developers&#xff08;Dev&#xff09;和Operations&#xff08;Ops&#xff09;两个单词简称组成&#xff0c;中文直译就是“开发运维一体化”。 DevOps…

Spring-AOP综述

文章迁移自语雀。 今天下雪了, 完成了spring aop的应用学习, 学到了以前很多忽略的知识点,也写完了各种试验. 今天给程程分享了很多了随州下雪的场景,写了一二三, ♡程程, i miss u 等字体,在雪地上写给程程看, 还拍摄了照片和视频给她, 上午的时候,还做了一个雪人, 哈哈哈, 她…

防勒索病毒攻击的关键措施

【作者】朱向东 中原银行 高级工程师 在当今数字化时代&#xff0c;勒索病毒成为了企业和个人面临的一项严峻威胁。勒索病毒攻击可以导致数据丢失、系统瘫痪以及经济损失。为了保护自己和组织的利益&#xff0c;采取一系列的防范措施是至关重要的。下面是一些关键的措施&#…

zlib.decompressFile报错 【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:方案1方案2此Bug解决方案总结寄语项目场景: 最近也是遇到了这个问题,看到网上也有人在询问这个问题,本文总结了自己和其他人的解决经验,解决了zlib.decompressFile报错 的问题。 问题: zlib.decompressFile报错,怎么解…

Find My帽子|苹果Find My技术与帽子结合,智能防丢,全球定位

帽子是戴在头部的服饰&#xff0c;多数可以覆盖头的整个顶部。主要用于保护头部&#xff0c;部分帽子会有突出的边缘&#xff0c;可以遮盖阳光。帽子亦可作打扮之用&#xff0c;也可以用来保护发型、遮盖秃头。可不同种类&#xff0c;例如贝雷帽、鸭舌帽等等。戴帽子在不同的地…

Java 8 中的 Stream 轻松遍历树形结构!

可能平常会遇到一些需求&#xff0c;比如构建菜单&#xff0c;构建树形结构&#xff0c;数据库一般就使用父id来表示&#xff0c;为了降低数据库的查询压力&#xff0c;我们可以使用Java8中的Stream流一次性把数据查出来&#xff0c;然后通过流式处理&#xff0c;我们一起来看看…

visual studio中如何指定查看WPF中某个窗口的运行效果

在 Visual Studio 中查看 WPF 窗口的运行效果通常意味着启动应用程序&#xff0c;并确保该窗口是应用程序启动时显示的第一个窗口。要做到这一点&#xff0c;您需要在应用程序的入口点&#xff08;通常是 App.xaml.cs&#xff09;指定要作为启动窗口的 WPF 窗口。 以下是如何指…

预编译仓库中的 Helm Chart

背景 内网部署项目, 没法直接hlem install , 需要提前看看有哪些镜像, 拉到本地看看 要使用预编译仓库中的 Helm Chart&#xff0c;你可以使用 helm fetch 命令来将 Chart 下载到本地&#xff0c;并使用 helm template 命令来预编译该 Chart。 首先&#xff0c;你可以使用以…

Cypress安装与使用教程(3)—— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

java 赋值运算符、自增自减运算符、关系运算符、逻辑运算符、三元运算符

一、赋值运算符 1.:把左边和右边的数据相加结果赋值给左边。 2.-把左边和右边相减赋值给左边。 3.*把左边和右边相乘赋值给左边。 4./把左边和右边相除赋值给左边。 5.%把左边和右边取余赋值给左边。 注意&#xff1a;扩展运算符包含了强制类型转换。 二、自增自减运算符…

SQL常见面试题

今天刷了一遍牛客里的必知必会题&#xff0c;一共50道题&#xff0c;大部分都比较基础&#xff0c;下面汇总一下易错题。 SQL81 顾客登录名 本题几个关键点&#xff1a; 登录名是其名称和所在城市的组合&#xff0c;因此需要使用substring()和concat()截取和拼接字段。得到登…

FL Studio 21最新版本for mac 21.2.2.3740中文解锁版2024最新图文安装教程

FL Studio 21最新版本for mac 21.2.0.3740中文解锁版是最新强大的音乐制作工具。它可以与所有类型的音乐一起创作出令人惊叹的音乐。它提供了一个非常简单且用户友好的集成开发环境&#xff08;IDE&#xff09;来工作。这个完整的音乐工作站是由比利时公司 Image-Line 开发的。…

若依生产环境中vue去除log

若依生产环境vue去除log 在main.js文件添加 // 测试环境 /dev-api 生产环境 /prod-api if (process.env.VUE_APP_BASE_API /prod-api) {//如果是生产环境 直接将log写没console.log () > {} }

模块测试:确保软件质量的关键步骤

引言&#xff1a; 在软件开发过程中&#xff0c;模块测试是确保软件质量的关键环节。通过模块化的设计和测试方法&#xff0c;可以提高开发效率、降低错误率&#xff0c;并最终提供稳定可靠的软件产品。本文将介绍模块测试的概念、重要性以及实施步骤&#xff0c;帮助读者了解如…

不知道怎么使用IDEA,一篇文章带你快速上手

前言 IDEA 是由 JetBrains 公司开发的软件产品&#xff0c;全称为 IntelliJ IDEA&#xff0c;一个 Java 语言的集成开发环境。它 —— 在业界被公认为是最好的 Java 开发工具之一&#xff0c;尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审…

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现 之前&#xff0c;我们依据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;提出了新的YOLOV1架构&#xff0c;并解决前向推理过程中的两个问题&#xff0c;继续按照此书进行YOLOV1的复现。 经典目标…