Deformable DETR 论文学习

1. 解决了什么问题?

DETR 去除了目标检测算法中的人为设计,取得了不错的表现。但是其收敛速度很慢,对低分辨率特征识别效果差:

  • 模型初始化时,注意力模块给特征图上所有的像素点分配的权重是均匀的,就需要较长的训练 epochs 使注意力权重学习关注到稀疏的、有意义的像素位置。
  • Transformer encoder 中的注意力权重的计算量关于像素的个数是 quadratic,因此计算量和内存占用就非常高。
  • 缺少多尺度特征来检测小目标。

2. 提出了什么方法?

Deformable DETR 将 deformable conv 的稀疏空间采样和 transformer 的关系建模能力结合,缓解了收敛慢和高复杂度的问题,提出了 deformable attention 模块,只关注于特征图上每个像素少量的采样位置。
在这里插入图片描述

2.1 Multi-head Attention

给定一个 query element 以及一个 key elements 的集合,multi-head attention 模块根据注意力权重聚合 key 对应的 values,该注意力权重表示 query-key pairs 之间的匹配程度。为了让模型关注于不同表征子空间和位置的内容,我们将不同的 attention heads 的输出用可学习的权重线性聚合起来。 q ∈ Ω q q\in\Omega_q qΩq是 query,其对应的表征是 z q ∈ R C z_q\in\mathbb{R}^C zqRC k ∈ Ω k k\in \Omega_k kΩk是 key,对应表征是 x k ∈ R C x_k\in\mathbb{R}^C xkRC C C C是特征维度。Multi-head attention 特征计算过程如下:

MultiHeadAttn ( z q , x ) = ∑ m = 1 M W m [ ∑ k ∈ Ω k A m q k ⋅ W m ′ x k ] \text{MultiHeadAttn}(z_q,x)=\sum_{m=1}^M W_m \left[ \sum_{k\in\Omega_k} A_{mqk}\cdot W'_m x_k \right] MultiHeadAttn(zq,x)=m=1MWm[kΩkAmqkWmxk]

其中 m m m是 attention head 索引, W m ′ ∈ R C v × C , W m ∈ R C × C v W'_m\in \mathbb{R}^{C_v\times C}, W_m\in \mathbb{R}^{C\times C_v} WmRCv×C,WmRC×Cv是可学习权重( C v = C / M C_v=C/M Cv=C/M)。注意力权重 A m q k ∝ exp ⁡ { z q T U m T V m x k C v } A_{mqk}\propto \exp\lbrace \frac{z_q^T U_m^T V_m x_k}{\sqrt{C_v}} \rbrace Amqkexp{Cv zqTUmTVmxk},并且 ∑ k ∈ Ω k A m q k = 1 \sum_{k\in \Omega_k}A_{mqk}=1 kΩkAmqk=1,其中 U m , V m ∈ R C v × C U_m, V_m\in \mathbb{R}^{C_v\times C} Um,VmRCv×C是 query 和 key 的映射矩阵,也是可学习权重。为了区分不同空间位置, z q z_q zq x k x_k xk会加上 positional encodings。在图像里面,query 和 key 元素都是像素点,因此 MultiHeadAttn 的复杂度是 O ( N q C 2 + N k C 2 + N q N k C ) , N q = N k ≫ C \mathcal{O}(N_q C^2 + N_k C^2 + N_qN_kC), N_q=N_k \gg C O(NqC2+NkC2+NqNkC),Nq=NkC,复杂度由第三项决定,因此 multi-head attn 的复杂度与特征图大小呈 quadratic。

2.2 Deformable Attention Module

在图像特征上使用 transformer attention,它会查看所有可能的空间位置。于是,作者提出了 deformable attention,它只会关注于 reference point 附近的 key sampling points,不管特征图有多大。这样,就缓解了收敛速度慢和空间分辨率的问题。
给定特征图 x ∈ R C × H × W x\in\mathbb{R}^{C\times H\times W} xRC×H×W q q q是 query 的索引,对应的特征是 z q z_q zq p q p_q pq是 2D reference point,deformable attention 特征计算过程如下:
DeformAttn ( z q , p q , x ) = ∑ m = 1 M W m [ ∑ k = 1 K A m q k ⋅ W m ′ ⋅ x ( p q + Δ p m q k ) ] \text{DeformAttn}(z_q,p_q,x)=\sum_{m=1}^M W_m \left[ \sum_{k=1}^K A_{mqk}\cdot W'_m \cdot x(p_q+\Delta p_{mqk}) \right] DeformAttn(zq,pq,x)=m=1MWm[k=1KAmqkWmx(pq+Δpmqk)]

m m m是注意力 head 的索引, k k k是采样 keys 的索引, K K K是所有采样点的个数( K ≪ H W K\ll HW KHW)。 Δ p m q k \Delta p_{mqk} Δpmqk A m q k A_{mqk} Amqk分别表示第 m m m个注意力 head 里面第 k k k个采样点的偏移量和注意力权重。 A m q k ∈ [ 0 , 1 ] , ∑ k = 1 K A m q k = 1 , Δ p m q k ∈ R 2 A_{mqk}\in[0,1],\sum_{k=1}^K A_{mqk}=1,\Delta p_{mqk}\in\mathbb{R}^2 Amqk[0,1],k=1KAmqk=1,ΔpmqkR2。通过双线性插值计算出 x ( p q + Δ p m q k ) x(p_q + \Delta p_{mqk}) x(pq+Δpmqk),对 z q z_q zq做 linear projection 得到 Δ p m q k , A m q k \Delta p_{mqk}, A_{mqk} Δpmqk,Amqk。将 z q z_q zq输入进一个 3 M K 3MK 3MK通道的 linear projection ,前 2 M K 2MK 2MK个通道编码了采样点偏移量 Δ p m q k \Delta p_{mqk} Δpmqk,后 M K MK MK个通道输入进 softmax 得到注意力权重 A m q k A_{mqk} Amqk

2.2.1 计算复杂度

N q N_q Nq是 query 个数, M K MK MK相对较小,deformable attention 模块的复杂度就是 O ( 2 N q C 2 + min ⁡ ( H W C 2 , N q K C 2 ) ) \mathcal{O}(2N_qC^2+\min(HWC^2, N_qKC^2)) O(2NqC2+min(HWC2,NqKC2)),过程如下:

  • 计算采样坐标偏移量 Δ p m q k \Delta p_{mqk} Δpmqk和注意力权重 A m q k A_{mqk} Amqk的复杂度是 O ( N q C ⋅ 3 M K ) \mathcal{O}(N_qC\cdot 3MK) O(NqC3MK)
  • 在 decoder 中,有了坐标偏移量和注意力权重,DeformAttn 的复杂度就是 O ( N q C 2 + N q K C 2 + 5 N q K C ) \mathcal{O}(N_qC^2 + N_qKC^2+5N_qKC) O(NqC2+NqKC2+5NqKC),其中 5 N q K C 5N_qKC 5NqKC是因为注意力的双线性插值和加权和操作。
  • 在 encoder 中, N q = H W N_q=HW Nq=HW,我们可以在采样前计算 W m ′ x W'_mx Wmx,DeformAttn 的复杂度就是 O ( N q C 2 + H W C 2 + 5 N q K C ) \mathcal{O}(N_qC^2 + HWC^2+5N_qKC) O(NqC2+HWC2+5NqKC)
  • 总的复杂度就是 O ( N q C 2 + min ⁡ ( N q K C 2 , H W C 2 ) + 5 N q K C + 3 N q C M K ) \mathcal{O}(N_qC^2 + \min(N_qKC^2,HWC^2)+5N_qKC+3N_qCMK) O(NqC2+min(NqKC2,HWC2)+5NqKC+3NqCMK),在实验中 M = 8 , K ≤ 4 , C = 256 M=8,K\leq 4,C=256 M=8,K4,C=256,因此 5 K + 3 M K < C 5K+3MK < C 5K+3MK<C,因此复杂度为 O ( 2 N q C 2 + min ⁡ ( H W C 2 , N q K C 2 ) ) \mathcal{O}(2N_qC^2 + \min(HWC^2,N_qKC^2)) O(2NqC2+min(HWC2,NqKC2))

2.3 多尺度 Deformable Attention 模块

{ x l } l = 1 L \lbrace x^l \rbrace^L_{l=1} {xl}l=1L是多尺度特征图,其中 x l ∈ R C × H l × W l x^l\in \mathbb{R}^{C\times H_l\times W_l} xlRC×Hl×Wl。$\hat{p}_q\in \left[ 0,1\right]^2 $是每个 query q q q的 reference point 归一化后的坐标,多尺度 deformable attention 模块计算过程为:

MSDeformAttn ( z q , p ^ q , { x l } l = 1 L ) = ∑ m = 1 M W m [ ∑ l = 1 L ∑ k = 1 K A m l q k ⋅ W m ′ ⋅ x l ( ϕ l ( p ^ q ) + Δ p m l q k ) ] \text{MSDeformAttn}(z_q,\hat{p}_q,\lbrace x^l \rbrace_{l=1}^L)=\sum_{m=1}^M W_m \left[ \sum_{l=1}^L \sum_{k=1}^K A_{mlqk} \cdot W'_m \cdot x^l (\phi_l(\hat{p}_q) + \Delta p_{mlqk}) \right] MSDeformAttn(zq,p^q,{xl}l=1L)=m=1MWm[l=1Lk=1KAmlqkWmxl(ϕl(p^q)+Δpmlqk)]

其中 m m m是 attention head 的索引, l l l是输入特征层级的索引, k k k是采样点的索引。 Δ p m l q k \Delta p_{mlqk} Δpmlqk A m l q k A_{mlqk} Amlqk表示第 l l l个特征层级、第 m m m个注意力 head 上第 k k k个采样点的采样位置偏移量和注意力权重, ∑ l = 1 L ∑ k = 1 K A m l q k = 1 \sum_{l=1}^L \sum_{k=1}^K A_{mlqk}=1 l=1Lk=1KAmlqk=1。函数 ϕ l ( p ^ q ) \phi_l(\hat{p}_q) ϕl(p^q)将归一化的坐标 p ^ q \hat{p}_q p^q重新缩放到第 l l l层级的特征图上。

2.4 Deformable Transformer Encoder

Encoder 的输入和输出是分辨率相同的多尺度特征图。从 ResNet 中提取 C 3 C_3 C3 C 5 C_5 C5阶段的输出特征图 { x l } l = 1 L − 1 , ( L = 4 ) \lbrace x^l \rbrace_{l=1}^{L-1},(L=4) {xl}l=1L1(L=4)。其中 C l C_l Cl的分辨率要比输入图片小 2 l 2^l 2l。最低的分辨率是 C 6 C_6 C6,通过对 C 5 C_5 C5输出的特征图使用 3 × 3 3\times 3 3×3且步长为 2 的卷积操作得到。所有的特征图通道数都是 256。
多尺度特征图的输出的分辨率与输入相同。Key 和 query 元素都是多尺度特征图上的像素点。对于 query 像素点,reference point 就是其本身。为了鉴别 query 像素所在的特征层级,作者在特征表征中加入了一个尺度层级 embedding,即 e l e_l el。尺度层级 embedding { e l } l = 1 L \lbrace e_l \rbrace_{l=1}^L {el}l=1L随机初始化,与网络协同训练。

2.5 Deformable Transformer Decoder

Decoder 包括 cross attention 和 self attention。这两种 attention 模块的 query 元素都是 object queries。在 cross attention 中,object queries 从特征图上提取特征,key 元素来自于 encoder 输出的特征图。在 self attention 中,object queries 互相交流,key 元素就是 object queries。作者只将 cross attention 替换为了 multi-scale deformable attention,而保留了 self attention。对于每个 object query,使用 linear projection 以及一个 sigmoid 函数,预测一个reference point p ^ q \hat{p}_q p^q的 2D 归一化坐标。然后,检测 head 关于这个reference point 预测边框的坐标,降低优化难度。这个reference point 就可以看作为边框中心点的 initial guess。

2.6 实验

在 MS COCO 2017 数据集进行的实验。在主干网络中使用了 ImageNet 上预训练的 ResNet-50 权重,没有用 FPN 提取多尺度特征图。在 deformable attention 中, M = 8 , K = 4 M=8,K=4 M=8,K=4。Deformable transformer encoder 中不同特征层级的参数共享权重。Focal Loss 中边框分类损失的权重设为 2。Object queries 个数设为了 300。所有的模型训练了 50 个 epochs,学习率在第 40 个 epoch 时乘以 0.1 衰减。模型训练采用了 Adam 优化器,初始学习率为 2 × 1 0 − 4 , β 1 = 0.9 , β 2 = 0.999 2\times 10^{-4},\beta_1=0.9,\beta_2=0.999 2×104,β1=0.9,β2=0.999,weight decay 为 1 0 − 4 10^{-4} 104。用于预测 object query reference point 和采样偏移量的 linear projection,它的学习率会乘以系数 0.1。
在这里插入图片描述

从上图可以看出,Deformable DETR 的收敛速度和表现明显优于 DETR。

3. 有什么优点?

  • 将 deformable conv 和 transformer attention 结合,只关注reference point 附近少量的采样点,大幅提高了收敛速度,并保证了准确性。
  • 通过 multi-scale 方式,提高了对小目标的检测效果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

元宇宙应用领域-工业

元宇宙是指虚拟空间的总称&#xff0c;在这个虚拟空间中&#xff0c;用户可以像在现实世界一样&#xff0c;通过虚拟现实技术进行交互和体验。元宇宙应用领域非常广泛&#xff0c;如工业、游戏、娱乐、教育、医疗、房地产等。 工业领域中&#xff0c;元宇宙可用于在设计阶段帮…

物联网应用普及正在改变我们的生活

物联网&#xff08;Internet of Things&#xff0c;IoT&#xff09;指的是通过互联网连接各种物品、设备和传感器&#xff0c;实现物品之间的互联互通&#xff0c;形成智能化、自动化的数据交互和服务体系。简单来说&#xff0c;就是将各类物品通过互联网连接&#xff0c;实现互…

新榜 | “淄博”现象专项观察报告

在过去的一个月中&#xff0c;淄博烧烤的相关话题霸屏网络&#xff0c;这些媒介话题里承载了多少受众的向往与想象&#xff1f; 根据2022年淄博市文旅局公开年报&#xff0c;去年&#xff0c;淄博官方就着力融媒体&#xff0c;在抖音、快手等平台创新使用“淄博到底有多牛”主题…

智能图像处理技术:开启未来视觉时代

写在前面技术论坛■ 智能文档图像处理技术■ 大模型时代的文档识别与理解■ 篡改文本图像的生成与检测 圆桌讨论未来愿景 写在前面 文档 是人们在日常生活、工作中产生的信息的重要载体&#xff0c;各领域从业者几乎每天都要与金融票据、商业规划、财务报表、会议记录、合同、…

react类组件生命周期基础总结

组件的生命周期是指组件从被创建到挂载到页面中运行起来&#xff0c;再到组件不用时卸载的过程&#xff0c;只有类组件才有生命周期&#xff08;类组件 实例化 函数组件 不需要实例化&#xff09; 生命周期新版本和旧版本的对比图如下&#xff1a; 生命周期&#xff08;constr…

GPT专业应用:撰写工作简报

●图片由Lexica 生成&#xff0c;输入&#xff1a;Workers working overtime 工作简报&#xff0c;作为一种了解情况、沟通信息的有效手段&#xff0c;能使上级机关和领导及时了解、掌握所属部门的政治学习、军事训练、行政管理等方面的最新情况&#xff1b;同时&#xff0c;能…

非暴力沟通模型

非暴力沟通模型 非暴力沟通的创始人是马歇尔.卢森堡&#xff0c;师从人本主义心理学之父卡尔.罗杰斯。《非暴力沟通》一书入选香港大学推荐的50本必读书籍之列。 模型介绍 非暴力沟通&#xff08;英文名称&#xff1a;NonviolentCommunication&#xff0c;简称NVC&#xff09;…

运行时栈帧结构与方法调用

1 运行时栈帧结构 Java虚拟机以方法作为最基本执行单元&#xff0c;“栈帧”则是用于支持虚拟机进行方法调用和方法执行背后的数据结构。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 1.1 局部变量表 局部变量表的容量以变量槽为最小单位。 Java…

JSDoc 拥抱 Javascript

JSDoc 在 vs code 已经内置了. 可以在 js 文件的开头添加 // ts-check 即可. 在注释中标注来实现一些 ts 的功能. JSDoc 支持以下注解. Types typeparam (or arg or argument)returns (or return)typedefcallbacktemplate Classes Property Modifiers public, private, p…

Windows Server 2016 中文版、英文版下载 (updated May 2023)

Windows Server 2016 中文版、英文版下载 (updated May 2023) Windows Server 2016 Version 1607&#xff0c;2023 年 5 月更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2016/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者…

ChatGPT + MindShow 制作PPT

&#x1f34f;&#x1f350;&#x1f34a;&#x1f351;&#x1f352;&#x1f353;&#x1fad0;&#x1f951;&#x1f34b;&#x1f349;&#x1f95d; ChatGPT MindShow 制作PPT 文章目录 &#x1f350;具体操作&#x1f433;结语 &#x1f350;具体操作 ChatGP…

2023—Unity打包Pico4(3)全流程(Pico插件)

一、项目选择了2021.3.0版本的URP&#xff0c;把项目Build成Android 二、打开Project Setting→ 安装最下面的XR Plugin Management 安装完成后的界面&#xff0c;此时还没有Pico选项出现 三、我们需要在该网站下载Pico的SDK包 picoxr/VRTK-Support (github.com) 解压该文件到…

python + windQuant:挑选公司

给定一些k线选股指标&#xff0c;如何挑选符合条件的公司&#xff0c;以python windquant为例&#xff1f; 【申明&#xff1a;本例只用来作为python学习交流之用&#xff0c;切勿以此作为投资的选股条件】 0、用以下条件挑选公司&#xff1a; 仅作示例用&#xff1a; 【1】…

qiankun + Vite + React + Vue + Angular 快速构建前端微服务

文章目录 一、主应用 vite二、微应用 react三、微应用 vue四、微应用 angular五、项目地址 一、主应用 vite npm npm create vitelatestyarn yarn create vite选择是否继续 Need to install the following packages:create-vite3.2.1 Ok to proceed? (y) y项目名称 Project…

nodejs进阶(3)—路由处理

1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回。 url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) 接收参数&#xff1a; urlStr url字符串 parseQueryString 为true时将使用查询模…

四月成功上岸阿里,年后准备了两个月,要个21k应该不过分吧~

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;阿里的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

github copilot chat申请,安装,及常见问题解决

申请 首先申请&#xff0c;并开通copilot, 地址为&#xff1a;https://github.com/features/copilot&#xff0c;copilot 一个月10美金&#xff0c;第一个月免费&#xff0c;支持国内的信用卡。 开通copilot之后&#xff0c;可以申请 copilot chat 的预览版功能&#xff0c;网…

DistilPose: Tokenized Pose Regression with Heatmap Distillation

论文名字&#xff1a;DistilPose&#xff1a;使用热图蒸馏的令牌化姿势回归 论文地址&#xff1a;2303.02455.pdf (arxiv.org)https://arxiv.org/pdf/2303.02455.pdf项目地址&#xff1a;yshMars/DistilPose: Implementation for: DistilPose: Tokenized Pose Regression with…

五、c++学习(加餐1:汇编基础学习)

经过前面几节课的学习&#xff0c;我们在一些地方都会使用汇编来分析&#xff0c;我们学习汇编&#xff0c;只是学习一些基础&#xff0c;主要是在我们需要深入分析语法的时候&#xff0c;使用汇编分析&#xff0c;这样会让我们更熟悉c编译器和语法。 从这节课开始&#xff0c…
最新文章