学习记录——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.hqwc.cn/news/309215.html

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

相关文章

Spring的Bean你了解吗

Bean的配置 Spring容器支持XML(常用)和Properties两种格式的配置文件 Spring中XML配置文件的根元素是,中包含了多个子元素,每个子元素定义了一个Bean,并描述了该Bean如何装配到Spring容器中 元素包含了多个属性以及子元素,常用属性及子元素如下所示 i…

金三银四-JAVA核心知识高频面试题

又要快到一年一度的金三银四,开始复习啦~! 每天一点点。。 目录 一、内存模型设计 二、synchronized和ReentrantLock的区别 三、垃圾回收机制 四、优化垃圾回收机制 4.1 了解应用需求 4.2. 调整堆大小 4.3. 减少对象分配 4.4. 使用合…

RestClient操作索引库_创建索引库(二)

ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句, 通过http请求发送给ES。 官方文档地址: https://www.elastic.co/quide/en/elasticsearch/client/index.html 目录 一、初始化JavaRestClient 1.1.依赖引入 1.2.初始化…

推荐几个开源HTTP服务接口快速生成工具

在现在流行微服务、前后端分离软件开发架构下,基于标准RESTful/JSON的HTTP接口已经成为主流。在实际业务中有很多需要快速开发调用数据服务接口的需求,但团队中缺乏专业的后端开发人员,比如: (1)数据库表已…

BFC 2023年度星光之夜即将开启,打造梦幻跨年盛典

跨年钟声即将敲响,星光繁花璀璨绽放。2023年12月31日,BFC外滩金融中心(下称BFC)年度星光之夜拉开帷幕,在热酒派对和星光音乐会的热烈节日氛围中,幸运气球将在全场传递节日祝福,更有惊喜好礼抽奖…

从物联网到 3D 打印:硬件相关的开源项目概览 | 开源专题 No.52

arendst/Tasmota Stars: 20.4k License: GPL-3.0 Tasmota 是一款为 ESP8266 和 ESP32 设备提供的替代固件,具有易于配置的 webUI、OTA 更新、定时器或规则驱动的自动化功能以及通过 MQTT、HTTP、串口或 KNX 进行完全本地控制。该项目主要特点包括: 支持…

超简单实用,推荐的深度学习科研必备网站(轻松找论文,代码项目,写论文综述)

一个非常有用的深度学习必备网站 网址推荐 接触新方向需要了解的内容1.在某一个研究方向下,有哪些算法模型可以用?不同算法之间效果对比如何?2.在某一个研究方向下,到底有哪些论文,模型是可以用的?3.在某一…

在线电路仿真分析 : CircuitJS + EveryCircuit + 嘉立创EDA

CircuitJS CircuitJS是一款免费的在线电路仿真工具。绿色:正电压,红色:负电压,黄色:电流。 EveryCircuit EveryCircuit 是一个易于使用、高度交互的电路模拟器和 原理图捕获工具。其用户社区创建了数百万个电路设计。动…

(2023,提示分布学习,重参数化,正交损失)DreamDistribution:文本到图像扩散模型的提示分布学习

DreamDistribution: Prompt Distribution Learning for Text-to-Image Diffusion Models 公众:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 方法 1.1 文本到图像扩散 1.2 提示…

Jenkins 自动设置镜像版本号

使用Jenkins环境变量当作镜像版本号 这样version变量就是版本号,在镜像构建的过程中可以使用 docker build 之后,如果有自己的镜像库,肯定要docker push 一下 至于部署的步骤,一般需要stop并删除原有的容器.我这里用的是docker-compose。同样…

需求分析 :不得不重新去面对的一关。

软件需求分析 背景 深入需求产生的背景明确项目目标了解用户群体 需求优先级 需求的分类与整理明确需求优先级让团队成员都参与到需求分析中来,增加团队合作能力与效率 编写需求文档 整理好的需求编写成详细的需求文档包括需求的描述、输入/输出格式、功能流程…

MySQL 执行过程

MySQL 的执行流程也确实是一个复杂的过程,它涉及多个组件的协同工作,故而在面试或者工作的过程中很容易陷入迷惑和误区。 MySQL 执行过程 本篇将以 MySQL 常见的 InnoDB 存储引擎为例,为大家详细介绍 SQL 语句的执行流程。从连接器开始&…