Deformable Transformer论文笔记

news2024/11/25 4:20:32

原文链接

[2010.04159] Deformable DETR: Deformable Transformers for End-to-End Object Detection (arxiv.org)icon-default.png?t=O83Ahttps://arxiv.org/abs/2010.04159

原文笔记

What

作者结合了可变形卷积的稀疏空间采样和 Transformer 的关系建模能力的优点。提出了Deformable Detr

Deformable Detr具有快速收敛,高计算效率、高内存效率的优点

Why

1、Detr收敛速度慢(注意力的初始化问题,初始的时候Q和所有K算出的softmax值都很接近;以及注意力的计算特性所造成的,2,3也是原因之一)

2、Detr的计算量大(Q要和每个K计算attention,3也是原因之一)

3、Detr参数量多(这是结构问题造成的 backbone+6enclayer+6declayer)

4、Detr特征空间的分辨率有限无法处理小物体(注意力计算的复杂度限制了使用大尺度的特征图或原图,高分辨率的特征图导致DETR不可接受的复杂性(一次注意力计算就是token^2的计算量,而如果要求特征图的尺寸小的话就对检测小物体非常不利;DETR中也没有多尺度的特征,不能同时的高效检测大物体和小物体)

Challenge

Idea

deformable detr与detr的不同之处:

deformable detr与detr的总体流程基本相同,都是用backbone提取特征再输入transformer的encoder和decoder处理再经过分类头和回归头得到预测类别和预测框

deformable detr相较于detr有三个改进优化点

1、deformable detr采用多尺度特征来解决同时检测大尺度物体和小尺度物体的问题(大尺度特征对检测小物体有帮助,小尺度特征对检测大物体有帮助)

提取resnet50提取的特征的后三层并且将最后一层再进行一个3*3卷积,一共是有四层特征,将他们的通道数统一为256以便拼接,在每层特征后面接一个参数为32(32个组每个组是8)的GroupNorm(因为使用的是八个头的多头注意力),之后沿着通道维度拼接起来。

2、deformable detr将detr中encoder的的multiheadselfattention改成了multiscaledeformableattention(MSDrformAtten) (K是Q自己学习到的,降低了计算量,提高了收敛速度)

3、deformable detr将detr中decoder的multiheadcrossattention改成了multiscaledeformableattention(MSDrformAtten)(K是Q自己学习到的,降低了计算量,提高了收敛速度)(但是decoder中的multiheadcrossattention并没有改动)

总结就是deformable attention解决了attention的计算复杂度问题

多尺度deformable attention解决了多尺度特征图问题

参考点的提出为query初始化提出了新的思路(但本工作中仍然采取的是随机初始化)

原文翻译

Abstract

DETR最近被提出以消除对目标检测中许多手工设计的组件的需求,同时表现出良好的性能。然而,由于Transformer注意模块在处理图像特征映射方面的局限性,它收敛速度慢,特征空间分辨率有限。为了缓解这些问题,我们提出了 Deformable DETR,其注意力模块只关注参考点周围的一小部分的关键采样点。可变形 DETR 可以比 DETR(尤其是在小物体上)获得更好的性能,训练时间减少了 10 倍。在 COCO 基准上的广泛实验证明了我们方法的有效性。代码发布在 https://github.com/fundamentalvision/Deformable-DETR。

1 Introduction

尽管 DETR 具有有趣的设计和良好的性能,但 DETR 有自己的问题:(1)它需要更长的训练时期才能收敛到现有的对象检测器。例如,在 COCO (Lin et al., 2014) 基准测试中,DETR 需要 500 个 epoch 才能收敛,这比 Faster R-CNN 慢大约 10 到 20 倍 (Ren et al., 2015)。(2) DETR在检测小物体时性能相对较低。现代目标检测器通常利用多尺度特征,从高分辨率特征图中检测小物体。同时,高分辨率特征图导致 DETR 的不可接受的复杂性。上述问题主要归因于 Transformer 组件在处理图像特征图方面的不足。在初始化时,注意力模块将几乎均匀的注意力权重转换为特征图中的所有像素。学习注意力权重以专注于稀疏有意义的位置,需要长时间的训练 epoch。另一方面,Transformer 编码器中的注意力权重计算是关于像素数的二次计算。因此,处理高分辨率特征图具有非常高的计算和内存复杂性。

在图像域,可变形卷积 (Dai et al., 2017) 是一种强大且高效的机制来关注稀疏的空间位置。它自然避免了上述问题。然而它缺乏元素关系建模机制,这是 DETR 成功的关键。

在本文中,我们提出了可变形DETR,它缓解了DETR收敛速度慢复杂度高的问题。它结合了可变形卷积的稀疏空间采样和 Transformer 的关系建模能力的优点。我们提出了可变形注意模块,该模块将一小组采样位置作为从所有特征图像素中突出关键元素预过滤器。该模块可以自然地扩展到聚合多尺度特征,而无需 FPN (Lin et al., 2017a) 的帮助。在可变形DETR中,我们利用(多尺度)可变形注意模块来代替处理特征映射的Transformer注意模块,如图1所示。

可变形DETR为我们利用端到端对象检测器的变体开辟了可能性,这要归功于其快速收敛和计算与内存效率。我们探索了一种简单有效的迭代边界框细化机制来提高检测性能。我们还尝试了两阶段可变形DETR,其中区域建议也是由可变形DETR的Vaiant生成的,进一步馈送到解码器进行迭代包围盒细化。

在 COCO (Lin et al., 2014) 基准上的广泛实验证明了我们方法的有效性。与 DETR 相比,可变形 DETR 可以在训练 epoch 少 10 倍的情况下获得更好的性能(尤其是在小物体上)。提出的两阶段可变形DETR变体可以进一步提高性能。代码在 https://github 发布。com/fundamentalvision/Deformable-DETR。

2 Related Work

Efficient Attention Mechanism.Transformers (Vaswani et al., 2017) 包含自注意力机制和交叉注意机制。Transformers 最著名的痛点之一是大量关键元素数字的高时间和内存复杂性,这在许多情况下阻碍了模型的可扩展性。最近,已经做出了许多努力来解决这个问题(Tay 等人,2020b),这在实践中可以大致分为三类

第一类是在键上使用预定义的稀疏注意力模式。最直接的范例是将注意力模式限制为固定的局部窗口。大多数作品(Liu et al., 2018a; Parmar et al., 2018; Child et al., 2019; Huang et al., 2019; Ho et al., 2019; Wang et al., 2020a; Hu et al., 2019; Ramachandran et al., 2019; Qiu et al., 2019; Beltagy et al., 2020; Ainslie et al., 2020; Zaheer et al., 2020)遵循这种范式。尽管将注意力模式限制在局部邻域可以降低复杂性,但它会丢失全局信息。为了弥补这一点,Child等人(2019);Huang等人(2019);Ho等人(2019);Wang等人(2020a)以固定间隔关注关键元素,以显著增加键的接受域。Beltagy等人(2020);Ainslie等人(2020);Zaheer等人(2020)允许少量可以访问所有关键元素的特殊令牌。Zaheer等人(2020);邱等人(2019)还添加了一些预先固定的稀疏注意模式来直接关注遥远的关键元素。

第二类是学习与数据相关的稀疏注意力。Kitaev等人(2020)提出了一种基于局部敏感哈希(LSH)的注意,它将查询和键散列到不同的箱子中。Roy等人(2020)提出了一种类似的想法,其中k-means找出最相关的键。Tay等人(2020a)学习块排列进行块稀疏注意。

第三类是探索自注意力中的低秩属性。Wang等人(2020b)通过对大小维度而不是通道维度的线性投影来减少关键元素的数量。Katharopoulos等人(2020);Choromanski等人(2020)通过核化近似重写自我注意的计算。

在图像域,高效注意机制的设计(例如,Parmar等人(2018);Child等人(2019);黄等人(2019);Ho等人(2019);Wang等人(2020a);Hu等人(2019);Ramachandran等人(2019))仍然局限于第一类。尽管理论上降低了复杂性,Ramachandran等人(2019);Hu等人(2019)承认,由于内存访问模式的内在限制,这种方法的实现速度比具有相同FLOPs的传统卷积慢得多(至少慢3倍)。

(慢的原因大概是因为这个稀疏注意力他读取的输入在内存中不是连续的,所以需要大量的读写时间)

另一方面,如Zhu等人(2019a)中所讨论的,有卷积的变体,如可变形卷积(Dai等人,2017;Zhu等人,2019b)和动态卷积(Wu等人,2019),也可以被视为自我注意机制。特别是,可变形卷积在图像识别方面比 Transformer self-attention 更有效和高效。同时,它缺乏元素关系建模机制。

我们提出的可变形注意模块受到可变形卷积的启发,属于第二类。它只关注从查询元素的特征预测的一小组固定采样点。与Ramachandran等人(2019)不同;Hu等人(2019),在相同的FLOPs下,可变形注意比传统卷积略慢。

用于目标检测的多尺度特征表示。对象检测的主要困难之一是有效地表示不同尺度的对象。现代目标检测器通常利用多尺度特征来适应这一点。作为开创性的工作之一,FPN (Lin et al., 2017a) 提出了一种自上而下的路径来组合多尺度特征。PANet (Liu et al., 2018b) 在 FPN 之上进一步添加了一个自下而上的路径。Kong等人(2018)通过全局注意操作将所有尺度的特征结合起来。Zhao等人(2019)提出了一种u型模块来融合多尺度特征。最近,NAS-FPN (Ghiasi et al., 2019) 和 Auto-FPN (Xu et al., 2019) 被提议通过神经架构搜索自动设计跨尺度连接。Tan等人(2020)提出了BiFPN,它是PANet的重复简化版本。我们提出的多尺度可变形注意模块可以自然地通过注意力机制聚合多尺度特征图,而无需借助这些特征金字塔网络。

3 REVISITING TRANSFORMERS AND DETR

Transformers 中的多头注意力。Transformers (Vaswani et al., 2017) 是一种基于机器翻译注意力机制的网络架构。给定一个查询元素(例如,输出句子中的目标词)和一组关键元素(例如输入句子中的源词),多头注意力模块根据衡量查询键对兼容性的注意力权重自适应地聚合关键内容。为了允许模型关注来自不同表示子空间和不同位置的内容,不同注意力头的输出与可学习的权重线性聚合。设q∈Ωq索引一个表示特征为zq∈RC的查询元素,k∈Ωk索引一个表示特征为featurexk∈RC的键元素,其中C为特征维度,Ωq和Ωk分别表示查询元素和键元素的集合。然后计算多头注意力特征

Transformers 有两个已知的问题。一种是 Transformer 在收敛之前需要很长的训练计划。假设查询和关键元素的数量分别为 Nq 和 Nk。通常,在适当的参数初始化下,Umzq 和 Vmxk 遵循均值为 0 的分布,方差为 1,当 Nk 很大时,注意力权重 Amqk ≈ 1/Nk 。这将导致输入特征的模糊梯度。因此,需要长时间的训练计划,以便注意力权重可以专注于特定的键。在关键元素通常是图像像素的图像域中,Nk可能非常大,收敛繁琐。

另一方面,随着查询和关键元素众多,多头注意力的计算和内存复杂度可能非常高。式1的计算复杂度为O(Nq C2 + NkC2 + Nq NkC)。在图像域,其中查询和关键元素都是像素 Nq = Nk >> C,复杂度由第三项主导,如 O(Nq NkC)。因此,多头注意力模块随着特征图大小的二次复杂度增长而受到影响。

DETR.DETR (Carion et al., 2020) 建立在 Transformer 编码器-解码器架构之上,并结合基于集合的匈牙利损失,通过二分匹配强制每个真实边界框的唯一预测。我们简要回顾网络架构如下。

给定由CNN主干(例如ResNet (He et al., 2016))提取的输入特征映射x∈RC×H×W, DETR利用标准Transformer编码器-解码器架构将输入特征映射转换为一组对象查询的特征。一个3层前馈神经网络(FFN)和一个线性投影被添加到对象查询特征(由解码器产生)的顶部作为检测头。FFN作为回归分支预测边界框坐标esb∈[0,1]4,其中b = {bx, by, bw, bh}编码归一化的框中心坐标、框高和框宽(相对于图像大小)。线性投影作为分类分支产生分类结果。

对于DETR中的Transformer编码器,查询元素和键元素都是特征映射中的像素。输入是ResNet特征映射(带有编码的位置嵌入)。设H和W分别表示特征映射的高度和宽度。自关注的计算复杂度为ofO(h2w2c),随空间大小呈二次增长。

对于DETR中的Transformer解码器,输入既包括来自编码器的特征映射,也包括由可学习的位置嵌入(例如,N = 100)表示的N个对象查询。解码器中的注意模块有两种类型,即交叉注意模块和自注意模块。在交叉关注模块中,对象查询从特征映射中提取特征。查询元素是对象查询,关键元素是来自编码器的输出特征映射。其中,Nq = N, Nk = H × W,交叉关注复杂度为0 (HW C2 + N HW C),复杂度随特征映射的空间大小线性增长。在自关注模块中,对象查询之间相互作用,从而捕获它们之间的关系。query和key元素都是对象查询。其中,Nq = Nk = N,自注意模块的复杂度为0 (2nc2 + n2c)。对于中等数量的对象查询,复杂性是可以接受的。

DETR是目标检测的一个有吸引力的设计,它消除了对许多手工设计的组件的需求。但是,它也有自己的问题。这些问题主要归因于 Transformer 注意力在处理图像特征图作为关键元素方面的缺陷:(1)DETR 在检测小物体方面的性能相对较低。现代目标检测器使用高分辨率特征图来更好地检测小物体。然而,高分辨率特征图会导致 DETR 的 Transformer 编码器中的自注意力模块的不可接受的复杂性,这与输入特征图的空间大小具有二次复杂度。(2) 与现代目标检测器相比,DETR 需要更多的训练时期才能收敛。这主要是因为处理图像特征的注意力模块很难训练。例如,在初始化时,交叉注意模块在整个特征图上几乎是平均注意力。虽然,在训练结束时,注意力图被学习非常稀疏,只关注对象的边界,DETR似乎需要很长时间的训练日程来学习注意力图的这种显著变化

4 METHOD

4.1 DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION

Deformable Attention Module.将Transformer的Attention应用到图像特征的核心问题是它将同样注意所有可能的空间位置,为了解决这个问题,我们提出了一个可变形注意模块(a deformable attention module)受可变形卷积的启发,可变形注意力模块只关注参考点周围的一小组关键采样点,不考虑特征图的空间大小,如图二所示,通过为每个查询只分配少量固定数量的键,可以缓解收敛性和特征空间分辨率的问题。 

给定一个输入特征图 x ∈ R^C×H×W ,令 q 索引具有内容特征 zq 和 2d 参考点 pq 的查询元素,可变形注意力特征由下式计算  

这里强烈建议去看enzo大神的讲解视频,这个有点不太好理解

Deformable DETR| 3、Deformable Attention、MSDeformAttention、流程讲解_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1Uj411z7QU/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=ae3f1ec4d3d413e8531d6bbc07cd4394

多尺度可变性卷积公式

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

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

相关文章

算法笔记(十三)——BFS 解决最短路问题

文章目录 迷宫中离入口最近的出口最小基因变化单词接龙为高尔夫比赛砍树 BFS 解决最短路问题 BFS(广度优先搜索) 是解决最短路径问题的一种常见算法。在这种情况下,我们通常使用BFS来查找从一个起始点到目标点的最短路径。 迷宫中离入口最近的出口 题目:…

can 总线入门———can简介硬件电路

文章目录 0. 前言1. CAN简介2. 主流通讯协议对比3. CAN 硬件电路4. CAN 电平标准5. CAN 收发器 0. 前言 博客内容来自B站上CAN总线入门教程视频讲解,博客中的插图和内容均为视频中的内容。视频链接 CAN总线入门教程 1. CAN简介 先来看看一它名字的意思&#xff0c…

Redis 缓存策略详解:提升性能的四种常见模式

在现代分布式系统中,缓存是提升性能和减轻数据库负载的关键组件。Redis 作为一种高性能的内存数据库,被广泛应用于缓存层。本文将深入探讨几种常用的 Redis 缓存策略,包括旁路缓存模式(Cache-Aside Pattern)、读穿透模…

强化学习入门到不想放弃-4

上回的地址:强化学习入门到不想放弃-3 (qq.com) 上上回地址:强化学习入门到不想放弃-2 (qq.com) 上上上回地址:强化学习入门到不想放弃-1 (qq.com) 好久没更新了,也是不知道写啥啊,(有些文章刚写了就被有些…

鸽笼原理与递归 - 离散数学系列(四)

目录 1. 鸽笼原理 鸽笼原理的定义 鸽笼原理的示例 鸽笼原理的应用 2. 递归的定义与应用 什么是递归? 递归的示例 递归与迭代的对比 3. 实际应用 鸽笼原理的实际应用 递归的实际应用 4. 例题与练习 例题1:鸽笼原理应用 例题2:递归…

三、Python基础语法(注释、三种波浪线、变量)

一、注释 注释是对代码进行解释说明的文字,不会被解释器执行,可以更方便阅读代码和了解代码的作用。 1.单行注释 使用#开头的文字就是注释,可以使用快捷键Ctrl / 2.多行注释 多行注释就是注释的内容,可以换行书写&#xff0c…

集智书童 | 用于时态动作检测的预测反馈 DETR !

本文来源公众号“集智书童”,仅用于学术分享,侵权删,干货满满。 原文链接:用于时态动作检测的预测反馈 DETR ! 视频中的时间动作检测(TAD)是现实世界中的一个基本且具有挑战性的任务。得益于 Transformer …

提升 CI/CD 稳定性:Jenkins 开机自检与推送通知

简介:Jenkins 是一个广泛使用的开源自动化服务器,常用于持续集成和持续交付。在某些情况下,服务器重启可能导致 Jenkins 构建任务中断或失败。为了解决这个问题,可以使用一个自检服务,定期检查系统的启动时间&#xff…

3559 pcie配置流程

目录 EP配置 uboot配置 uboot代码修改 内核代码修改 带宽配置 带宽查看 硬件管脚配置 EP配置 uboot配置 1)make CROSS_COMPILE=aarch64-himix100-linux- hi3559av100_emmc_defconfig 2) make menuconfig CROSS_COMPILE=aarch64-himix100-linux- 修改配置: 3) 合入…

一种将RAG、KG、VS、TF结合增强领域LLM性能的框架

SMART-SLIC框架:旨在将RAG结合向量存储(Vector Stores)、知识图谱(Knowledge Graphs)和张量分解(Tensor Factorization)来增强特定领域的大型语言模型(LLMs)的性能。 SM…

codetop标签动态规划大全C++讲解(二)!!动态规划刷穿地心!!学吐了家人们o(╥﹏╥)o

一篇只有十题左右,写少一点好复习 1.目标和2.分割等和子集3.完全平方数4.比特位计数5.石子游戏6.预测赢家7.不同的二叉搜索树8.解码方法9.鸡蛋掉落10.正则表达式匹配11.通配符匹配12.交错字符串 1.目标和 给你一个非负整数数组 nums 和一个整数 target 。 向数组中…

01-python+selenium自动化测试-基础学习

前言 基于python3和selenium3做自动化测试,俗话说:工欲善其事必先利其器;没有金刚钻就不揽那瓷器活,磨刀不误砍柴工,因此你必须会搭建基本的开发环境,掌握python基本的语法和一个IDE来进行开发&#xff0c…

短剧系统源码短剧平台开发(H5+抖小+微小)部署介绍流程

有想法加入国内短剧赛道的请停下脚步,耐心看完此篇文章,相信一定会对您有所帮助的,下面将排序划分每一个步骤,短剧源码、申请资料、服务器选择、部署上架到正常运行等几个方面,整理了一些资料,来为大家举例…

中广核CGN25届校招网申SHL测评题库、面试流程、招聘对象,内附人才测评认知能力真题

​中国广核集团校园招聘在线测评攻略🚀 🎓 校园招聘对象 2024届、2025届海内外全日制应届毕业生,大专、本科、硕士、博士,广核集团等你来! 📈 招聘流程 投递简历 简历筛选 在线测评(重点来啦…

C++ 算法学习——1.6 前缀和与二维前缀和算法

前缀和算法(Prefix Sum Algorithm): 概念:前缀和算法通过在遍历数组时计算前缀和(从数组的第一个元素开始累加到当前元素的和),可以在O(1)时间内得到任意区间的子数组和,而不需要重复…

告别音乐小白!字节跳动AI音乐创作工具,让你一键变作曲家!

还在羡慕别人能创作动听的音乐?五音不全的你,也梦想着谱写属于自己的乐章?现在,机会来了!字节跳动推出了一款AI音乐创作工具——抖音推出的海绵音乐,它能让你轻松一键创作音乐,即使是“音乐小白…

海外科技新闻媒体与商业媒体:垂直网站的魅力与软文分发

海外科技新闻媒体与商业媒体:垂直网站的魅力与软文分发 在信息爆炸的时代,如何有效地传递品牌信息并提高知名度成为了许多企业的重要课题。在这个过程中,海外科技新闻媒体与商业媒体的垂直网站扮演了重要角色,而软文分发则因其独特…

笔试题总结

1.对于线性表的描述:存储空间不一定是连续,且各元素的存储顺序是任意的 2.虚函数的定义:函数的返回值参数不定, 声明: 类型,返回这类型 名字(); 例如声明一个虚函数&a…

计算机毕业设计 基于Python的豆果美食推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

JavaScript(JS)基础(一)

1、JavaScript(JS)简介 JavaScript 是一门跨平台、面向对象的脚本语言,它能使网页可交互(例如拥有复杂的动画,可点击的按钮,通俗的菜单等)。另外还有高级的服务端 Javascript 版本,例…