论文笔记——BiFormer

Title: BiFormer: Vision Transformer with Bi-Level Routing Attention
Paper: https://arxiv.org/pdf/2303.08810.pdf
Code:  https://github.com/rayleizhu/BiFormer

一、前言

众所周知,Transformer相比于CNNs的一大核心优势便是借助自注意力机制的优势捕捉长距离上下文依赖。正所谓物极必反,在原始的 Transformer 架构设计中,这种结构虽然在一定程度上带来了性能上的提升,但却会引起两个老生常态的问题:

  1. 内存占用大

  2. 计算代价高

因此,有许多研究也在致力于做一些这方面的优化工作,包括但不仅限于将注意力操作限制在:

  • inside local windows, e.g., Swin transformer and Crossformer;

  • axial stripes, e.g., Cswin transformer;

  • dilated windows, e.g., Maxvit and Crossformer;

图片

Figure 1. Vanilla attention and its sparse variants.

让我们先简单的看下上图:其中图(a)是原始的注意力实现,其直接在全局范围内操作,导致高计算复杂性和大量内存占用;而对于图(b)-(d),这些方法通过引入具有不同手工模式的稀疏注意力来减轻复杂性,例如局部窗口、轴向条纹和扩张窗口等;而图(e)则是基于可变形注意力通过不规则网格来实现图像自适应稀疏性;

总的来说,作者认为以上这些方法大都是通过将 手工制作 和 与内容无关 的稀疏性引入到注意力机制来试图缓解这个问题。因此,本文通过双层路由(bi-level routing)提出了一种新颖的动态稀疏注意力(dynamic sparse attention ),以实现更灵活的计算分配内容感知,使其具备动态的查询感知稀疏性,如图(f)所示。

此外,基于该基础模块,本文构建了一个名为BiFormer的新型通用视觉网络架构。由于 BiFormer 以查询自适应的方式关注一小部分相关标记,而不会分散其他不相关标记的注意力,因此它具有良好的性能和高计算效率。最后,通过在图像分类、目标检测和语义分割等多项计算机视觉任务的实证结果充分验证了所提方法的有效性。

二、方法

Bi-Level Routing Attention

为了缓解多头自注意力(Multi-Head Self-Attention, MHSA)的可扩展性问题,先前的一些方法提出了不同的稀疏注意力机制,其中每个查询只关注少量的键值对,而非全部。然而,这些方法有两个共性问题:

  1. 要么使用手工制作的静态模式(无法自适应);

  2. 要么在所有查询中共享键值对的采样子集(无法做到互不干扰);

为此,作者探索了一种动态的、查询感知的稀疏注意力机制,其关键思想是在粗糙区域级别过滤掉大部分不相关的键值对,以便只保留一小部分路由区域(这不就把冗余的信息干掉了吗老铁们)。其次,作者在这些路由区域的联合中应用细粒度的token-to-token注意力。

整个算法的伪代码流程如下所示:

图片

可以看到,整个模块主要包含三个组件,即:

  • Region partition and input projection

  • Region-to-region routing with directed graph

  • Token-to-token attention

简单梳理下。假设我们输入一张特征图,通过线性映射获得QKV;其次,我们通过领接矩阵构建有向图找到不同键值对对应的参与关系,可以理解为每个给定区域应该参与的区域;最后,有了区域到区域路由索引矩阵 ,我们便可以应用细粒度的token-to-token注意力了。

具体的实现还是有些复杂,可以参考代码慢慢理解,这里看的也是云里雾里的。

图片

Bi-Level Routing Attention

上面是 BRA 模块的示意图。从图中可以看出,该方法是通过收集前 k 个相关窗口中的键值对,并利用稀疏性操作直接跳过最不相关区域的计算来节省参数量和计算量。值得一提的是,以上操作涉及 GPU 友好的密集矩阵乘法,利于服务器端做推理加速。

BiFormer

图片

基于BRA模块,本文构建了一种新颖的通用视觉转换器BiFormer。如上图所示,其遵循大多数的vision transformer架构设计,也是采用四级金字塔结构,即下采样32倍。

具体来说,BiFormer在第一阶段使用重叠块嵌入,在第二到第四阶段使用块合并模块来降低输入空间分辨率,同时增加通道数,然后是采用连续的BiFormer块做特征变换。需要注意的是,在每个块的开始均是使用  的深度卷积来隐式编码相对位置信息。随后依次应用BRA模块和扩展率为  的 2 层 多层感知机(Multi-Layer Perceptron, MLP)模块,分别用于交叉位置关系建模和每个位置嵌入。

图片

上表展示了不同模型变体的网络宽度和深度。其中FLOP是基于  输入计算的。

三、实验

图片

Table 2. Comparison of different backbones on ImageNet-1K.

所有模型都在分辨率为  的图像上进行训练和评估。其中星号表示该模型是使用标记标签进行训练的。据笔者所知,这是在没有额外训练数据或训练技巧所能取得的最佳结果。此外,使用基于标记的蒸馏技术,BiFormer-S的准确率可以进一步提高到 !

图片

可以看到,本文方法貌似对小目标检测效果比较好。这可能是因为BRA模块是基于稀疏采样而不是下采样,一来可以保留细粒度的细节信息,二来同样可以达到节省计算量的目的。

图片

为了进一步了解双层路由注意力的工作原理,作者将路由区域和注意力响应进行可视化。从图中我们可以清楚地观察到语义相关区域已被成功定位。例如,在第一个场景中的街景所示,如果查询位置在建筑物或树上,则对应的路由区域覆盖相同或相似的实体。而在第二个室内场景中,当我们将查询位置放在鼠标上时,路由区域包含主机、键盘和显示器的一部分,即使这些区域彼此不相邻。这意味着双层路由注意力可以捕获远距离对上下文依赖。

四、总结

本文提出了一种双层路由注意力模块,以动态、查询感知的方式实现计算的有效分配。其中,BRA模块的核心思想是在粗区域级别过滤掉最不相关的键值对。它是通过首先构建和修剪区域级有向图,然后在路由区域的联合中应用细粒度的token-to-token注意力来实现的。值得一提的是,该模块的计算复杂度可压缩至 !最后,基于该模块本文构建了一个金字塔结构的视觉Transformer——BiFormer,它在四种流行的视觉任务、图像分类、目标检测、实例分割和语义分割方面均表现出卓越的性能。

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

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

相关文章

如何选择合适的数据库管理工具?Navicat Or DBeaver

写在前面 在阅读本文之前,糖糖给大家准备了Navicat和DBeaver安装包,在公众号内回复“Navicat”或“DBeaver”或"数据库管理工具"来下载。 引言 对于测试而言,在实际工作中往往会用到数据库,那么选择使用哪种类型的数…

Linux---(七)Makefile写进度条(三个版本)

文章目录 一、前提引入🎗️下面的代码什么现象?🎗️下面的代码什么现象? 二、缓冲区三、回车换行🎗️注意🎗️图解🎗️老式回车键造型(意思是充当两个动作)🎗…

Linux基本指令及周边(第一弹)

文章目录 前言mkdir指令(重要):tree指令rmdir指令 && rm 指令(重要):touch指令ls指令pwd指令cd 指令用户家目录man指令(重要):mv指令(重要)cat指令绝…

【华为OD机试高分必刷题目】神奇的卡片(C++等差数列实现)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,高分通过! 文章目录 【华为OD机试高分必刷题目】神奇的卡片(C等差数列实现&a…

卡方检验-python代码

故事背景 问题 卡方检验的结果怎么计算? 方法 python代码 import numpy as np from scipy.stats import chi2_contingency# 观察频数矩阵 observed np.array([[47, 21, 17],[63, 29, 15],[11, 2, 4]])# 进行卡方检验 chi2, p, dof, expected chi2_contingency(o…

【413.等差数列划分】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int numberOfArithmeticSlices(vector<int>& nums) {int nnums.size();if(n<3) return 0;vector<int> dp(n);dp[2]dp[1]dp[0]0;if(nums[2]-nu…

视频制作技巧:添加srt字幕,批量剪辑,省时省力

随着社交媒体的兴起&#xff0c;视频制作越来越成为人们表达自我、分享经验的重要方式。然而&#xff0c;视频制作需要耗费大量的时间和精力。在视频制作中&#xff0c;字幕是非常重要的元素&#xff0c;可以帮助观众更好地理解视频内容。而SRT字幕则是一种更为先进的字幕技术&…

React经典初级错误

文章 前言错误场景问题分析解决方案后言 前言 ✨✨ 他们是天生勇敢的开发者&#xff0c;我们创造bug&#xff0c;传播bug&#xff0c;毫不留情地消灭bug&#xff0c;在这个过程中我们创造了很多bug以供娱乐。 前端bug这里是博主总结的一些前端的bug以及解决方案&#xff0c;感兴…

【开源】基于Vue.js的快递管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快递区域模块2.4 快递货架模块2.5 快递档案模块 三、界面展示3.1 登录注册3.2 快递类型3.3 快递区域3.4 快递货架3.5 快递档案3.6 系统基础模块 四、免责说明 一、摘要 1.1 项目介绍 …

整理MLAI学习路径图

干货分享&#xff1a; 下面给出一个笔者自己整理的GitHub仓库&#xff1a;https://github.com/isLinXu/awesome-road-map&#xff0c;里面包含了一些可供参考的学习路径和思维导图&#xff0c;并整理微软、meta、谷歌、Kaggle以及华为、百度、阿里、腾讯、讯飞等相关的学习资源…

syncthing 多设备同步

【精选】linux间文件实时同步(syncthing) ---带历史版本“后悔药”_syncthing linux_井底蛙-jdw的博客-CSDN博客https://blog.csdn.net/qq_41355314/article/details/116694273 wget https://gh-proxy.com/https://github.com/syncthing/syncthing/releases/download/v1.26.1/…

02-3解析BeautifulSoup

一、基本简介 BeautifulSoup简称&#xff1a;bs4什么是BeatifulSoup&#xff1f;  BeautifulSoup&#xff0c;和lxml一样&#xff0c;是一个html的解析器&#xff0c;主要功能也是解析和提取数据优缺点&#xff1f;  缺点&#xff1a;效率没有lxml的效率高  优点&#xff1…

C#winform门诊医生系统+sqlserver

C#winform门诊医生系统sqlserver说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a;基于C#winform架构和sql server数据库 功能模块&#xff1a; 个人中心&#xff1a;修改个人信息、打开照片并进行修改 预约挂号&#xff1a;二级…

el-table中el-popover失效问题

场景&#xff1a;先有一个数据表格&#xff0c;右侧操作栏为固定列&#xff0c;另外有一个字段使用了el-popover来点击弹出框来修改值&#xff0c;发现不好用&#xff0c;点击后无法显示弹出框&#xff0c;但当没有操作栏权限时却意外的生效了。 这种问题真是不常见&#xff0…

23111705[含文档+PPT+源码等]计算机毕业设计SSM框架美妆商城全套电商购物

文章目录 **软件开发环境及开发工具&#xff1a;****项目功能介绍&#xff1a;****论文截图&#xff1a;****实现&#xff1a;****代码片段&#xff1a;** 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 软件开发环境及开发工具&#xff…

Web前端—小兔鲜儿电商网站底部设计及网站中间过渡部分设计

版本说明 当前版本号[20231117]。 版本修改说明20231116初版20231117补充完后面未发布的内容 目录 文章目录 版本说明目录底部&#xff08;footer&#xff09;服务帮助中心版权 banner侧边栏圆点 新鲜好物&#xff08;goods&#xff09;标题内容 人气推荐热门品牌生鲜 生鲜内…

Resolume Arena 7.15.0(VJ音视频软件)

Resolume Arena 7是一款专业的实时视觉效果软件&#xff0c;用于创造引人入胜的视频演出和灯光秀。它提供了丰富多样的功能和工具&#xff0c;可以将音频、视频和图像合成在一起&#xff0c;创造出令人惊叹的视觉效果。 Resolume Arena 7支持多种媒体格式&#xff0c;包括视频文…

B031-网络编程 Socket Http TomCat

目录 计算机网络网络编程相关术语IP地址ip的概念InerAdress的了解与测试 端口URLTCP、UDP和7层架构TCPUDPTCP与UDP的区别和联系TCP的3次握手七层架构 Socket编程服务端代码客户端代码 http协议概念Http报文 Tomcat模拟 计算机网络 见文档 网络编程相关术语 见文档 IP地址 …

【C++】数组中出现次数超过一半的数字

代码&#xff1a; class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param numbers int整型vector * return int整型*/int MoreThanHalfNum_Solution(vector<int>& numbers) {int …

一键免费去除视频水印和字幕的AI工具

最近有学员经常让我分享好用的智能抹除视频水印字幕AI工具&#xff0c;今天就给大家分享一个我经常用到的这款工具——腾讯智影&#xff0c;这个平台提供的智能抹除功能&#xff0c;借助这个工具我们可以将视频中不需要的字幕或者水印删除掉。 不过这款工具每天有三次免费次数…