《SG-Former: Self-guided Transformer with Evolving Token Reallocation》ICCV2023

news2024/11/19 0:47:54

摘要

SG-Former(Self-guided Transformer)是一种新型的视觉Transformer模型,旨在解决传统Transformer在处理大型特征图时面临的计算成本高的问题。该模型通过一种自适应细粒度的全局自注意力机制,实现了有效的计算成本降低。它利用重要性地图(significance map)来重新分配令牌(tokens),根据每个区域的重要性进行调整。实验结果显示,SG-Former在ImageNet-1K、CoCo和ADE20K等数据集上的性能超过了现有的最先进模型,同时具有更低的计算成本和更少的参数。

概述

拟解决的问题:现有的视觉Transformer模型在处理大型特征图时面临计算成本高的问题,这限制了它们在大规模输入上的适用性。为了降低计算成本,先前的工作要么依赖于局部小区域的细粒度自注意力,要么依赖于全局粗粒度的自注意力,但这会牺牲全局信息的建模能力。

创新之处

  1. 自适应细粒度的全局自注意力:通过重要性地图来重新分配令牌,为显著区域分配更多令牌,为次要区域分配较少令牌。
  2. 重要性地图的自我进化:重要性地图是通过混合尺度自注意力估计的,并在训练过程中自我进化。
  3. 混合尺度自注意力:在单个自注意力层中提取细粒度局部和全局粗粒度信息。
我们核心思想的可视化。(右)来自 Transformer 本身的显着性图用作指导。给定一个输入序列,SG-Former 在显着区域(如狗的脸)重新分配更多的标记,用于细粒度信息,在背景(如墙壁)上分配更少的标记,以实现具有计算效率的全局感受野。(左)PVT 采用预定义的统一图来聚合标记,而不管它们的语义如何。

方法

SG-Former与之前的CNN和Transformer模型共享相同的补丁嵌入层和四级金字塔结构。除了最后一个阶段,每个阶段都有 Ni 个 Transformer 块,由两种类型的块重复组成:(i)混合尺度 Transformer 块和(ii)自引导 Transformer 块。混合尺度自注意提取混合尺度对象和多粒度信息,指导区域显著性。自引导自注意根据混合尺度变压器块的显著性信息对全局信息进行建模,同时保持显著区域的细粒度。

3.1 Hybrid-scale Attention

混合尺度关注有两个目的:(1)在不超过Swin Transformer中的窗口关注的计算成本的情况下,提取混合尺度的全局细粒度信息;(2)为自引导关注提供意义。

局部全局信息和混合尺度的比较。(A) ViT 中的自注意力是单尺度的,计算成本巨大,因此仅适用于小特征图。(B) Swin Transformer 中的自注意力是单尺度的,并且在小窗口内受到限制,这降低了计算成本并保留细粒度信息;然而,注意力是局部的。 (C) PVT 中的自注意力是单尺度的。它将令牌与计算成本一起减少,并保留全局感受野;然而,它只捕获粗略的信息。(D) 我们的自注意力是混合尺度的,并从局部区域到全局区域执行注意力。它降低了计算成本,保留了全局感受野,并捕获了细粒度的混合尺度信息。

ViT:将图像分割成多个patch,然后将这些patch作为序列输入到Transformer模型中。ViT使用全局自注意力机制,可以捕捉图像中任意两个patch之间的关系,但计算复杂度随着序列长度的平方增长。

Swin Transformer:引入了层次化结构,它采用分窗口的局部自注意力,每个窗口内部进行细粒度的计算,而不同窗口间通过层次结构实现信息流动。

PVT:采用了金字塔结构,通过逐层降低特征图分辨率的方式,实现了多尺度的特征融合。通过在不同层级上应用不同大小的卷积核来聚合特征,从而降低全局自注意力的计算成本。

Hybrid-scale Attention:SG-Former通过引入重要性地图来动态调整令牌的分配,实现了自适应细粒度的全局自注意力。这种方法旨在结合局部和全局信息,同时降低计算成本。

如图所示,输入特征X被投影到Query(Q)、Key(K)和Values(V)中。然后多头自注意力采用 H 个独立的头。通常,这些 H 独立的头部在相同的局部区域内执行,因此缺乏头部多样性。相比之下,我们将 H 个头均匀地剥离为 h 个组,并将这些 h 个组注入混合尺度和多感受野注意力,其中每组有 H/h 个头。在第 i 个属于第 j 个组的头中,尺度 s_{j}(其中 j = 1, · · · , h),{K,V } 中的每个s_{j}\times s_{j} 标记合并为一个标记。接下来,我们将 {Q, K,V } 拆分为窗口。{K,V } 的窗口大小设置为 M,并且在所有组中保持不变。为了将 {Q} 和 {K,V } 的窗口大小与 {K,V } 中的令牌合并对齐,选择 {Q} 的窗口大小为s_{j}M\times s_{j}M,s_{j}大于 {K,V } 的窗口大小。注意力的感受野显着扩大了s_{j}次:

其中 Merge\left ( X,s_{j} \right ) 表示将 X 中的每个s_{j}\times s_{j}令牌合并为一个令牌,该令牌使用步幅s_{j}的卷积实现。特殊情况是当s_{j}等于 1 时,其中没有令牌合并,{Q, K,V } 具有相同大小的窗口。 

计算注意力图:

其中P\left ( X,s_{j}M \right )表示窗口大小为s_{j}M\times s_{j}M的窗口分区。Atten_{i}是注意力权重。有一个特殊情况:s_{j}M\times s_{j}M等于 h × w,其中不需要窗口分区,{K,V } 中的所有标记都由 {Q} 参与,导致全局信息提取。 

s_{i}是第i个头的重要性分数,通过对注意力分数进行累加来完成的,这个求和是在所有位置 m 上进行的,意味着我们对每个头的注意力分数进行全局累加。

Atten_{i}^{m,n}表示第 i 个头中第 m,n 个位置的注意力分数。

最终的全局重要性图 S 是通过对所有自注意力头的重要性图s_{i}进行累加得到的,它综合了所有头的信息,得到了一个反映整个特征图全局重要性分布的图。这个全局重要性图用于在整个特征图上指导token的重新分配。

3.2 Self-Guided Attention

为了降低Transformer的计算量,最近的工作建议通过将几个标记合并为一个,将序列长度与令牌聚合减少。然而,这种聚合平等地对待每个令牌并忽略不同令牌的固有显着性差异。这种聚合面临两个问题:(i)信息可能会丢失或与显着区域的不相关信息混合,以及(ii)在一个小区域或背景区域,许多标记(更高的序列比例)对于简单语义是多余的,同时需要大量的计算。

论文提出了自引导注意力,它使用显着性作为聚合标记的指导。也就是说,在显着区域中,为细粒度信息保留了更多的标记,而在次要区域中,保持较少的标记以保持自注意力的全局视图并同时降低计算成本。

融合比较。(A) PVT 将所有标记/区域视为相等,表明它们在整个地图中的显着性是均匀的。所有输入图像共享相同的聚合策略。(B) Focal Transformer 试图在中心区域保留更多的标记和背景区域的标记更少,这表明中心区域的显着性更大,背景区域较小。所有输入图像共享相同的聚合策略。(C) 我们的方法将模型预测的显着性图作为聚合的指导,并在显着区域保留更多的标记(蓝色),在次要区域(绿色区域)中保留更少的标记(蓝色)。显着性取决于输入图像和模型。

首先将输入特征映射X投影到Query(Q)、Key(K)和Value(V)。接下来,H 独立的自注意力头并行计算自注意力。为了减少计算成本,同时保持特征图的大小在注意力后不变,我们固定 Q 的长度,但使用重要性引导聚合模块 (IAM) 聚合 K 和 V 的标记。

IAM的目标是在显著区域将更少的令牌聚合为一个(即保留更多),在背景区域将更多令牌聚合为一个(即保留更少)。显著性图S包含了多粒度的区域显著性信息(见3.1节)。我们将显著性图的值按升序排序,并将S平均划分为n个子区域S1,···,Sn。因此,Sn和S1分别是最重要和次要的区域。同时,将X中的所有令牌按照S1,···,Sn分为X1,···,Xn。在式(1)中,r表示每r个令牌聚合为一个令牌的聚合速率。我们设置不同的聚合率r1,···,rnt不同重要度的区域,使每个子区域有一个聚合率,子区域越重要,聚合率越小。不同阶段的具体值如表所示。因此,IAM对分组输入特征X1、···、Xn进行分组聚合,每组具有不同聚合率的分组通过将每组的token串接重新分配token。

其中 F(X, r) 是聚合函数,我们通过输入维度为 r 的全连接层实现它,输出维度为 1。 \widehat{X}^{i}中的令牌数等于X^{i}中的令牌数除以r_{i}

 

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

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

相关文章

VmWare安装虚拟机教程(centos7)

VMWare下载: 下载 VMware Workstation Pro - VMware Customer Connect 安装包:(16的版本)免费!(一个赞就行) 一直点下一步即可,注意修改一下安装位置就好 二、安装虚拟机 安装虚…

鸭脖变“刺客”,啃不起了

撰文|ANGELICA 编辑|ANGELICA 审核|烨 Lydia 声明|图片来源网络。日晞研究所原创文章,如需转载请留言申请开白。 你有多久没吃卤味了? 2020年之后,人们对于几大卤味巨头的关注度正在下降。 …

视频字幕生成:分享6款专业易操作的工具,让创作更简单!

​视频字幕如何添加?日常剪辑Vlog视频时,就需要给视频添加上字幕了。字幕是一个比较重要的元素,它不仅可以帮助听力受损或语言障碍的人士理解内容,还可以让你的视频更加易于理解和吸引观众。 那么如何实现视频字幕生成&#xff0c…

【LLaMa2入门】从零开始训练LLaMa2

目录 1 背景2 搭建环境2.1 硬件配置2.2 搭建虚拟环境2.2.1 创建虚拟环境2.2.2 安装所需的库 3 准备工作3.1 下载GitHub代码3.2 下载模型3.3 数据处理3.3.1 下载数据3.3.2 数据集tokenize预处理 4 训练4.1 修改配置4.2 开始训练4.3 多机多卡训练 5 模型推理5.1 编译5.1.1 安装gc…

ResNet18模型扑克牌图片预测

加入会员社群,免费获取本项目数据集和代码:点击进入>> 1. 项目简介 该项目旨在通过深度学习技术,使用ResNet18模型对扑克牌图像进行预测与分类。扑克牌图片分类任务属于图像识别中的一个应用场景,要求模型能够准确识别扑克…

【python篇】python pickle模块一篇就能明白,快速理解

持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象。通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识。另外,还会让您更深一步地了解Python 的对象…

音视频入门基础:FLV专题(5)——FFmpeg源码中,判断某文件是否为FLV文件的实现

一、引言 通过FFmpeg命令: ./ffmpeg -i XXX.flv 可以判断出某个文件是否为FLV文件: 所以FFmpeg是怎样判断出某个文件是否为FLV文件呢?它内部其实是通过flv_probe函数来判断的。从《FFmpeg源码:av_probe_input_format3函数和AVI…

Serilog文档翻译系列(五) - 编写日志事件

日志事件通过 Log 静态类或 ILogger 接口上的方法写入接收器。下面的示例将使用 Log 以便语法简洁,但下面显示的方法同样可用于接口。 Log.Warning("Disk quota {Quota} MB exceeded by {User}", quota, user); 通过此日志方法创建的警告事件将具有两个相…

mes系统在中小企业智能制造作用

MES系统(制造执行系统)在中小企业智能制造中扮演着至关重要的角色,其作用主要体现在以下几个方面: 1. 提升生产效率与质量 实时监控与数据采集:MES系统能够实时采集生产现场的各项数据,如设备状态、生产进…

nmap 命令:网络扫描

一、命令简介 ​nmap​(Network Mapper)是一个开放源代码的网络探测和安全审核的工具。它最初由Fyodor Vaskovich开发,用于快速地扫描大型网络,尽管它同样适用于单个主机。 ​nmap​的功能包括: 发现主机上的开放端…

电信、移动、联调等运营商都有那些国产化自研软件

国产化自研软件方面有着积极的探索和实践,包括操作系统、数据库和中间件等,电信运营商在国产化软件方面取得了显著进展: 操作系统: 中国电信推出了基于华为欧拉openEuler开源系统的天翼云操作系统CTyunOS,已上线部署5万…

【2024W38】肖恩技术周刊(第 16 期):白嫖AI的最佳时段

周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率,每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

asp.net core日志与异常处理小结

asp.net core的webApplicationBuilder中自带了一个日志组件,无需手动注册服务就能直接在控制器中构造注入,本文主要介绍了net core日志与异常处理小结,需要的朋友可以参考下 ILogger简单使用 asp.net core的webApplicationBuilder中自带了一个日志组件…

Elasticsearch可视化工具ElasticHD

目录 介绍 ElasticHD应用程序页面 安装 基本用法 独立可执行文件 ES版本支持 SQL特性支持: 超越SQL功能支持: SQL的用法 Docker快速入门: 下载地址 介绍 ElasticHD是ElasticSearch可视化管理工具。它不需要任何软件。它在您的Web浏览器中工作,允许您随时随地管理…

unshare -p时提示Cannot allocate memory如何解决

当使用unshare -p命令时,出现如下报错: unshare -p /bin/bash bash: fork: Cannot allocate memory 如果想要正常使用,只需要添加–fork选项就行 unshare -p --fork /bin/bash 在使用 unshare -p 创建新的 PID 命名空间时,存在一…

aws s3 存储桶 前端组件上传简单案例

写一个vue3 上传aws oss存储的案例 使用到的插件 npm install aws-sdk/client-s3 注意事项 : 1. 本地调试 , 需要设置在官网设置跨域 必须!!! 否则调试不了 ,前端代理是不起作用的 ,因为是插…

如何通过蜂巢(容器安全)管理内部部署数据安全产品与云数据安全产品?

本文将探讨内部部署和云数据安全产品之间的主要区别。在思考这个问题之前,首先了解内部部署和云数据安全产品之间的主要区别。 内部部署数据安全产品意味着管理控制台位于企业客户的内部部署,而德迅云安全则在云中托管云数据安全产品。德迅云安全供应商通…

TAPD_保密需求介绍

功能指引 本文档将介绍:保密需求的基本介绍、如何配置保密需求和保密需求相关的常见问题。 一、基本介绍 伴随业务的拓展,团队成员们在工作中不免要遇到跨团队协作和外包人员管理等需要 权限控制和信息保密 的场景。 此情况下,项目数据的权…

Python接口自动化测试输出日志到控制台和文件

一、日志的作用 一般程序日志出自下面几个方面的需求: 1. 记录用户操作的审计日志,甚至有的时候就是监管部门的要求。 2. 快速定位问题的根源 3. 追踪程序执行的过程。 4. 追踪数据的变化 5. 数据统计和性能分析 6. 采集运行环境数据 一般在程序上线之后…

图文组合商标部分驳回后优化后初审通过!

这几天以前有个企业的商标初审下来了,以前是加了图形个别部分没有通过初审,后面是把图形去掉重新用文字申请下来初审。 图形与文字同时申请,会分别审查有一个元素过不了,整体就会过不了,所以平常就会建议分开申请注册商…