论文阅读——Vision Transformer with Deformable Attention
Vision Transformer with Deformable Attention

多头自注意力公式化为:

第l层transformer模块公式化为:

在Transformer模型中简单地实现DCN是一个non-trivial的问题。在DCN中,特征图上的每个元素都单独学习其偏移,其中H×W×C特征图上3×3可变形卷积的空间复杂度为9HW C。如果我们在注意力模块中直接应用相同的机制,空间复杂度将急剧上升到NqNkC,其中Nq,Nk是查询和密钥的数量,通常具有与特征图大小HW相同的比例,带来近似双二次复杂度。尽管Deformable DETR已经通过在每个尺度上设置较低数量的密钥(Nk=4)来减少这种开销,并且作为检测头工作得很好,但由于信息的不可接受的丢失,在骨干网络中处理如此少的密钥是不好的(见附录中的详细比较)。同时,不同的查询在视觉注意力模型中具有相似的注意力图。因此,我们选择了一种更简单的解决方案,为每个查询共享移位的键和值,以实现有效的权衡。
我们提出了可变形注意力,以在特征图中重要区域的指导下有效地对tokens之间的关系进行建模。这些聚焦区域由偏移网络从查询中学习的多组变形采样点确定。采用双线性插值得到采用特征,然后这些采样特征映射为可变形keys and values。然后使用MHSA。可变形点也提供了相对位置偏差。
如图,给一个特征图 ,给一个均匀网格
,给一个均匀网格 作为references,网格大小从输入特征图大小向下采样因子r,
作为references,网格大小从输入特征图大小向下采样因子r,
 ,然后把这个网格的位置值归一化到(-1,-1),(+1,+1)。通过offset网络得到网格每个位置的偏移量,然后,在变形点的位置对特征进行采样,作为关键点和值,再进行映射:
,然后把这个网格的位置值归一化到(-1,-1),(+1,+1)。通过offset网络得到网格每个位置的偏移量,然后,在变形点的位置对特征进行采样,作为关键点和值,再进行映射:

 ,
, ,s是为了训练稳定。
,s是为了训练稳定。 是使用双线性插值的采样函数。
是使用双线性插值的采样函数。

在q,k,v上使用多头注意力和相对位置偏移。
每个参考点覆盖一个局部s×s区域(s是偏移的最大值),偏移生成网络也应该具有对局部特征的感知,以学习合理的偏移。因此,我们将子网络简化为具有非线性激活的两个卷积模块,如图2(b)所示。输入特征首先通过5×5深度卷积来捕获局部特征。然后,采用GELU激活和1×1卷积来获得2D偏移。还值得注意的是,1×1卷积中的偏差被降低,以减轻所有位置的强制偏移。
为了促进变形点的多样性,我们在MHSA中遵循类似的范式,并将特征通道划分为G组。来自每组的特征使用共享子网络来分别生成相应的偏移。在实践中,注意力模块的头数M被设置为偏移组G的大小的倍数,从而确保多个注意力头被分配给一组变形的键和值。



补充资料:
DAT and Deformable DETR区别
首先,我们的可变形注意力充当视觉主干中的特征提取器,而可变形DETR中的可变形注意扮演检测头的角色,它用线性可变形注意取代了DETR中的普通注意。其次,在具有单尺度的可变形DETR中,查询q的第m个头被公式化为:

其中从输入特征中采样K个关键点,通过 进行映射,然后通过注意力权重
进行映射,然后通过注意力权重 进行聚合。与我们的可变形注意力(Eq.(9)在本文中)相比,该注意力权重是通过线性投影从
进行聚合。与我们的可变形注意力(Eq.(9)在本文中)相比,该注意力权重是通过线性投影从 学习的,即
学习的,即 ,其中
,其中 是预测每个头部上每个键的权重的权重矩阵,之后将softmax函数σ应用于K个键的维度以归一化注意力得分。事实上,注意力权重是通过查询直接预测的,而不是测量查询和关键字之间的相似性。如果我们将σ函数更改为sigmoid,这将是调制可变形卷积的变体[53],因此这种可变形注意力更类似于卷积,而不是注意力。
是预测每个头部上每个键的权重的权重矩阵,之后将softmax函数σ应用于K个键的维度以归一化注意力得分。事实上,注意力权重是通过查询直接预测的,而不是测量查询和关键字之间的相似性。如果我们将σ函数更改为sigmoid,这将是调制可变形卷积的变体[53],因此这种可变形注意力更类似于卷积,而不是注意力。
第三,可变形DETR中的可变形注意力与本文第3.2节中提到的点积注意力不兼容,因为它消耗了巨大的内存。因此,使用线性预测注意力来避免计算点积,并且还采用较小数量的密钥K=4来降低存储器成本。
为了通过实验验证我们的说法,我们用[54]中的模块替换了DAT中的可变形注意力模块,以验证初始适应对视觉主干的影响较小。比较结果如表8所示。比较第一行和最后一行,我们可以看到,在较小的内存预算下,可变形DETR模型的密钥数量设置为16,以减少内存老化,并实现1.4%的性能降低。通过比较第三行和最后一行,我们可以看到,与DAT具有相同密钥数量的D-DETR注意力消耗2.6×内存和1.3×FLOP,但性能仍低于DAT。
更多可视化结果

在图6中,采样点被描绘在对象检测框和实例分割掩码的顶部,从中我们可以看到这些点被移动到目标对象。在左列中,变形的点收缩为两个目标长颈鹿,而其他点则保持几乎均匀的网格,偏移较小。在中间列上,变形点在两个阶段都密集分布在人体和冲浪板之间。右栏显示了六个甜甜圈中每个甜甜圈的变形点,这表明我们的模型即使有多个目标,也能够更好地模拟几何形状。上述可视化结果表明,DAT学习有意义的偏移量,以采样更好的关键点,从而提高各种视觉任务的性能。
我们还提供了给定特定查询令牌的注意力图的可视化结果,并与图7中的Swin-Trans-former[26]进行了比较。我们展示具有最高关注值的关键令牌。可以观察到,我们的模型侧重于更相关的部分。作为展示,我们的模型将大部分注意力集中在前景对象上,例如,第一排的两个长颈鹿。另一方面,Swin Transformer中的兴趣区域相当局部,无法区分前景和背景,这在最后一块冲浪板中有所描述。

相关文章:
 
论文阅读——Vision Transformer with Deformable Attention
Vision Transformer with Deformable Attention 多头自注意力公式化为: 第l层transformer模块公式化为: 在Transformer模型中简单地实现DCN是一个non-trivial的问题。在DCN中,特征图上的每个元素都单独学习其偏移,其中HWC特征图上…...
 
AJAX概念和axios使用、URL、请求方法和数据提交、HTTP协议、接口、form-serialize插件
AJAX概念和axios使用 AJAX概念 AJAX就是使用XMLHttpRequest对象与服务器通信,它可以使用JSON、XML、HTML和text文本等格式发送和接收数据,AJAX最吸引人的就是它的异步特性,也就是说它可以在不重新刷新页面的情况下与服务器通信,…...
【R语言基础操作】
🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享 擅长Python、Matlab、R等主流编程软件 累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…...
 
sqlite 常见命令 表结构
在 SQLite 中,将表结构保存为 SQL 具有一定的便捷性和重要性,原因如下 便捷性: 备份和恢复:将表结构保存为 SQL 可以方便地进行备份。如果需要还原或迁移数据库,只需执行保存的 SQL 脚本,就可以重新创建表…...
基于深度学习的车辆检测技术
基于深度学习的车辆检测技术是现代智能交通系统的重要组成部分,它利用计算机视觉和机器学习算法,特别是深度学习模型,来识别和定位图像或视频中的车辆。这项技术广泛应用于自动驾驶、交通监控、违章抓拍等多个领域。 深度学习车辆检测技术的…...
MyBatis 之三:配置文件详解和 Mapper 接口方式
配置文件 MyBatis 的配置文件是 XML 格式的,它定义了 MyBatis 运行时的核心行为和设置。默认的配置文件名称为 mybatis-config.xml,该文件用于配置数据库连接、事务管理器、数据源、类型别名、映射器(mapper 文件)以及其他全局属性…...
 
【PyTorch】基础学习:一文详细介绍 torch.load() 的用法和应用
【PyTorch】基础学习:一文详细介绍 torch.load() 的用法和应用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程ὄ…...
事务、并发、锁机制的实现
配置全局事务 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: mydb,USER:root,PASSWORD:pass,HOST:127.0.0.1,PORT:3306,ATOMIC_REQUESTS: True, # 全局开启事务,绑定的是http请求响应整个过程# (non_atomic_requests可局部实现不让事务控制)} } …...
 
PC-DARTS: PARTIAL CHANNEL CONNECTIONS FOR MEMORY-EFFICIENT ARCHITECTURE SEARCH
PC-DARTS:用于内存高效架构搜索的部分通道连接 论文链接:https://arxiv.org/abs/1907.05737 项目链接:https://github.com/yuhuixu1993/PC-DARTS ABSTRACT 可微分体系结构搜索(DARTS)在寻找有效的网络体系结构方面提供了一种快速的解决方案…...
 
git的下载与安装
下载 首先,打开您的浏览器,并输入Git的官方网站地址 点击图标进行下载 下载页面会列出不同操作系统和平台的Git安装包。根据您的操作系统(Windows、macOS、Linux等)和位数(32位或64位),选择适…...
 
windows文档格式转换的实用工具
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
四级缓存实现
CommandLineRunner接口的run方法 什么是多级缓存? 多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Server端的压力,提升服务性能。 一级缓存:1.CDN:内容分发网络 二级缓存:2.NGINX+Lua脚本+OpenResty服务器 负载均衡反向代理【静态和转发】 三级缓存:J…...
程序员如何规划职业赛道?
在快速发展的信息技术时代,程序员作为数字世界的构建者,面临着前所未有的职业选择和发展机会。选择合适的职业赛道,不仅关乎个人职业发展的高度和速度,更影响着个人职业生涯的满意度和幸福感。本文将从自我评估与兴趣探索、市场需…...
蓝桥杯day3刷题日记--P9240 冶炼金属
P9240 [蓝桥杯 2023 省 B] 冶炼金属 经典二分,先在第一组中找到最小值,在利用最小值限制范围寻找最大值 #include <iostream> #include <algorithm> using namespace std; int n,kk; int m[10001],num[10001]; int maxs,mins;bool check1…...
 
Mybatis-xml映射文件与动态SQL
xml映射文件 动态SQL <where><if test"name!null">name like concat(%,#{name},%)</if><if test"username!null">and username#{username}</if></where> <!-- collection:遍历的集合--> <!-- …...
 
MySQL_数据库图形化界面软件_00000_00001
目录 NavicatSQLyogDBeaverMySQL Workbench可能出现的问题 Navicat 官网地址: 英文:https://www.navicat.com 中文:https://www.navicat.com.cn SQLyog 官网地址: 英文:https://webyog.com DBeaver 官网地址&…...
流媒体学习之路(WebRTC)——FEC逻辑分析(6)
流媒体学习之路(WebRTC)——FEC逻辑分析(6) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实现一个json全…...
 
command failed: npm install --loglevel error --legacy-peer-deps
在使用vue create xxx创建vue3项目的时候报错。 解决方法,之前使用的https://registry.npm.taobao.org 证书过期更换镜像地址即可 操作如下: 1.cd ~2.执行rm .npmrc3. sudo npm install -g cnpm --registryhttp://registry.npmmirror.com…...
 
KubeSphere集群安装-nfs分布式文件共享-对接Harbor-对接阿里云镜像仓库-遇到踩坑记录
KubeSphere安装和使用集群版 官网:https://www.kubesphere.io/zh/ 使用 KubeKey 内置 HAproxy 创建高可用集群:https://www.kubesphere.io/zh/docs/v3.3/installing-on-linux/high-availability-configurations/internal-ha-configuration/ 特别注意 安装前注意必须把当前使…...
 
Epuck2机器人固件更新及IP查询
文章目录 前言一、下载固件更新软件包:二、查询机器人在局域网下的IP 前言 前面进行了多机器人编队仿真包括集中式和分布式,最近打算在实物机器人上跑一跑之前的编队算法。但由于Epuck2机器人长时间没使用,故对其进行固件的更新,…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
 
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
 
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
 
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
 
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
 
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
 
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
