Less is More: Focus Attention for Efficient DETR

摘要
类似detr的模型显著提高了探测器的性能,甚至优于经典的卷积模型。然而,在传统的编码器结构中,所有的标记都带来了冗余的计算负担。最近的稀疏化策略利用了信息标记的一个子集,通过稀疏编码器来降低注意力的复杂性,从而保持性能。但这些方法往往依赖于不可靠的模型统计数据。此外,简单地减少标记填充在很大程度上阻碍了检测性能,限制了这些稀疏模型的应用。我们提出了Focus-DETR,它将注意力集中在信息更丰富的标记上,以便更好地在计算效率和模型准确性之间进行权衡。具体地说,我们重构了具有双重注意的编码器,其中包括一个标记评分机制,该机制同时考虑了多尺度特征映射中对象的定位和类别语义信息。我们有效地放弃了背景查询,并基于分数增强了细粒度对象查询的语义交互。与在相同设置下最先进的稀疏detr类探测器相比,我们的Focus-DETR在COCO上实现50.4AP(+2.2)的同时,获得了相当的复杂性。
介绍
目标检测是计算机视觉中的一项基本任务,其目的是预测图像中目标的边界框和类别,如图1 (a)所示,在现实应用中具有重要意义。

Carion等人提出的DETR使用可学习查询从变压器编码器的输出中探测图像特征,二部图匹配来执行基于集的盒预测。类detr模型取得了显著的进展,并逐渐与基于卷积神经网络的检测器缩小了差距。DETR中的全局关注提高了检测性能,但由于没有明确识别所有标记的冗余计算,造成了计算负担和效率低下。为了解决这个问题,可变形的DETR 通过密钥稀疏化将二次复杂度降低为线性复杂度,由于利用多尺度特性的优势,它已经发展成为一个主流范式。在此,我们进一步分析了这些模型中组件的计算负担和延迟(图2)。如图2所示,我们观察到编码器的计算成本为可变形DETR中解码器的8.8×,在DINO 中为7.0×。此外,在可变形的DETR和DINO中,编码器的延迟约为解码器的4∼8倍,这强调了提高编码器模块的效率的必要性。与此同时,以往的工作已经普遍讨论了在变压器编码器中压缩令牌的可行性。例如,PnP-DETR 将整个特征抽象为精细的前景对象特征向量和少量粗糙的背景上下文特征向量。IMFA [34]基于解码器层的预测来搜索关键点,对多尺度特征进行采样,并以单尺度特征聚合采样特征。稀疏的DETR [26]提出通过查询稀疏性来保持令牌的二维空间结构,这使其适用于可变形的DETR [37],利用多尺度特征。通过利用解码器中的交叉注意映射作为令牌重要性得分,稀疏DETR仅使用编码器中30%的查询就实现了与可变形DETR相媲美的性能。

尽管取得了种种进展,但目前的模型仍然受到次最优标记选择策略的挑战。如图1 (b)所示,所选的标记包含大量的噪声,一些必要的对象标记明显被忽略了。特别是,稀疏DETR对前景预测器的监督很大程度上依赖于解码器的交叉注意图(DAM),它是基于解码器完全从编码器先验的查询计算出来的。初步实验表明,当稀疏DETR嵌入模型时,由于DAM和保留的前景令牌之间的弱相关性,严重的性能衰减。然而,最先进的DETR类模型,如DINO ,已经证明了所选的特征是初步的内容特征,没有进一步的细化,可能会对解码器产生模糊和误导。在这种情况下,DAM的监督效率低下。此外,在这个单调稀疏编码器中,保留的前景令牌的数量仍然众多,并且由于计算成本的限制,在没有更细粒度选择的情况下执行查询交互是不可行的。
为了解决这些问题,我们提出了Focus-DETR方法,通过叠加定位和类别语义信息,将注意力分配到信息更多的标记上。首先,我们设计了一个评分机制来确定标记的语义级别。前景令牌选择器(FTS)旨在放弃基于跨多尺度特征的自上而下的分数调制的背景令牌。我们根据地面真相从主干上分配{1,0}标签,并预测前景概率。来自多尺度特征图的高级标记的得分可以调节低层次标记的得分,以提高选择的有效性。为了将语义信息引入到标记选择过程中,我们设计了一个多类别得分预测器。前景和类别得分将共同决定具有较强类别语义的更细粒度的标记,如图1 (d).所示。基于不同语义层次的可靠分数和选择,我们将前景标记和更细粒度的对象标记提供给具有双重关注的编码器。因此,弥补了远距离信息混合中可变形注意的局限性,并通过细粒度的标记更新增强了前景查询的语义信息。综上所述,Focus-DETR基于获取更准确的前景信息,通过逐步引入语义信息,关注细粒度标记,双重重构了编码器的计算过程,并以最小的计算代价进一步增强细粒度标记。大量的实验验证了FocusDETR的性能。此外,Focus-DETR对于使用不同查询构造策略的类似detr的模型是通用的。例如,我们的方法在相同的设置下,与具有相似的计算成本相比,可以在COCO上实现50.4AP(+2.2)。
相关工作
Transformer-based detectors
Lightweight Vision Transformers
方法
我们首先描述了FocusDETR的总体架构。然后,我们详细阐述了我们的核心贡献: (a)构建了一个评分机制,它同时考虑了来自多尺度特征的本地化和类别语义信息。因此,我们获得了对前景和细粒度对象标记的两级显式识别;(b)基于评分机制,我们将不同语义级别的标记引入双重注意编码器,提高了查询的语义信息,平衡了模型性能和计算成本。并对其计算复杂度进行了详细的分析。
Model Architecture

如图3所示,Focus-DETR由主干、双注意编码器和解码器组成。骨干网可配备ResNet [10]或SwinTrans[20]。为了利用主干的多尺度特征 { f l } l = 1 L ( L = 4 ) \{f_l\}^L_{l=1}(L = 4) {fl}l=1L(L=4),其中 f l ∈ R C × H l × W l f_l∈R^{C×H_l×W_l} fl∈RC×Hl×Wl,我们从三个不同尺度(即1/8、1/16、16、1/16、32)和下样本 f 3 f_3 f3得到 f 4 f_4 f4(即1/64)。在输入双注意编码器之前,多尺度特征映射 { f l } l = 1 L \{f_l\}^L_{ l=1} {fl}l=1L首先通过前景令牌选择器(第3.2节),使用一系列自上向下分数调制来指示令牌是否属于前景。然后,每一层所选择的前景令牌将通过多类别得分预测器,利用前景和语义信息,选择目标得分较高的令牌(第3.2节)。这些对象令牌将进一步相互交互,并通过所提出的双重关注来补充前景查询的语义限制(第3.3节)。
Scoring mechanism
Foreground Token Selector
稀疏DETR[26]已经证明,只涉及编码器的标记子集才能实现类似的性能。然而,如图4所示,稀疏DETR [26]提供的令牌选择有很多缺点。特别是,许多保存下来的令牌与前景对象并不对齐。

我们认为稀疏DETR的挑战在于它对令牌选择的监督依赖于DAM。DAM和保留的前景令牌之间的相关性将由于可学习查询而减少,这在训练过程中带来错误。我们没有预测伪地面真实[26],而是利用地面真实框和标签来监督受[17]启发的前景选择。为了正确地为每个标记提供一个二进制标签,决定它是否出现在前景,我们设计了一个标签分配协议,以利用不同尺度的对象的多尺度特性。
特别地,我们首先为不同特征映射的边界框设置一个大小范围,并将相邻区间的重叠增加50%,以增强边界附近的预测。形式上,对于每个具有步幅 s l s_l sl的标记 t l ( i , j ) t^{(i,j)}_l tl(i,j),其中l是尺度水平的指数,(i,j)是特征图中的位置,我们将原始图像中对应的坐标(x,y)表示为

考虑到相邻的特征图,我们的协议根据以下规则确定标签 l l ( x , y ) l_l^{(x,y)} ll(x,y),即:

其中 D B b o x ( x 、 y 、 w 、 h ) D_{Bbox} (x、y、w、h) DBbox(x、y、w、h)表示地面真相框, d l ( i , j ) = m a x ( h / 2 , w / 2 ) ∈ [ r b l , r e l ] d^{(i,j)}_l =max(h/2,w/2)∈[r^ l_ b,r^l_ e ] dl(i,j)=max(h/2,w/2)∈[rbl,rel],表示(x、y)与边界框中心之间的最大棋盘格距离, [ r b l , r e l ] [r^ l_ b,r^l_ e ] [rbl,rel]表示对象的间隔预测l层特性和 r b l < r b l + 1 < r e l < r e l + 1 r^l_b<r^{l+1}_b<r^l_e<r^{l+1}_e rbl<rbl+1<rel<rel+1和 r b l + 1 = ( r b l + r e l ) / 2 , l = { 0 , 1 , 2 , 3 } r^{l+1}_b=(r^l_b+r^l_e)/2,l=\{0,1,2,3\} rbl+1=(rbl+rel)/2,l={0,1,2,3}, r b 0 = 0 r_b^0=0 rb0=0和 r e 3 = ∞ r_e^ 3 =∞ re3=∞。DETR稀疏方法的另一个缺点是对多尺度特征的利用不足。特别是忽略了不同尺度之间的语义关联和标记选择决策的差异。为了填补这一差距,我们构建了具有自上而下的分数调制的FTS模块。我们首先设计了一个基于多层感知器(MLP)的评分模块来预测每个特征图中的前景得分。考虑到高级特征映射比具有更高分辨率的低级特征包含更丰富的语义,我们利用高级语义的前景分数作为补充信息来调制相邻的低级语义的特征映射。如图5所示,我们的自上而下的分数调制只通过上采样逐层传输前景分数。形式上,给定特征图 f l , l ∈ { 2 , 3 , 4 } f_l,l∈\{2,3,4\} fl,l∈{2,3,4},

S l S_l Sl表示前景得分的特征地图,UP(·)是使用上采样函数双线性插值, M L P F ( ⋅ ) MLP_F(·) MLPF(⋅)是一个全球得分预测标记在所有特征地图, { α l } l = 1 L − 1 \{αl\}^{L−1}_{l=1} {αl}l=1L−1是一组可学习的调制系数,和L表示多尺度的层特征地图。不同特征图的定位信息以这种方式相互关联。
Multi-category score predictor
在选择具有高前景下降概率的标记后,我们然后寻求一个有效的操作来确定更细粒度的标记,以最小的计算代价进行查询增强。直观地说,在这种情况下,引入更细粒度的类别信息将是有益的。基于此动机,我们提出了一种新的更细粒度的标记选择机制,并与前景标记选择相结合,以更好地利用标记特征。如图3所示,为了避免对背景令牌的无意义计算,我们采用了一种同时考虑定位信息和类别语义信息的堆叠策略。
具体来说,由预测器 M L P C ( ⋅ ) MLP_C(·) MLPC(⋅)计算出的前景得分和类别得分的乘积将被用来作为我们确定注意力计算中涉及的细粒度标记的最终标准 p j p_j pj,即:

其中, s j s_j sj和 c j c_j cj分别代表 T f j T_f^ j Tfj的前景得分和类别概率。与来自编码器输出的两阶段可变形DETR [37]的查询选择策略不同,我们的多类别概率不包括背景类别(∅)。我们将根据 p j p_j pj来确定用于增强计算的令牌。
Calculation Process of Dual Attention
所提出的可靠的令牌评分机制将使我们能够执行更细粒度和歧视性的计算。在根据评分机制逐步选择前景和细粒度对象标记后,首先通过增强自注意,利用细粒度对象标记的交互信息和相应的位置编码。然后,增强的对象令牌将被分散到原来的前景令牌中。通过这种方式,Focus-DETR可以利用具有增强的语义信息的前景查询。此外,由于可靠的细粒度标记评分,与简单的查询稀疏策略相比,编码器中的双重注意有效地提高了性能,而计算成本的增加可以忽略不计。我们利用算法1来说明编码器中的细粒度特征选择和增强过程。

Complexity Analysis
证明复杂度没有因为模块而上升。
Optimization
与类似于detr的检测器一样,我们的模型以端到端方式进行训练,损失函数定义为:

Loss for feature scoring mechanism
Focus-DETR通过FTS模块获得前景令牌。Focal损失应用于FTS训练如下:

其中 p f p_f pf表示前景概率, α f = 0.25 α_f = 0.25 αf=0.25和γ = 2为经验超参数。
实验

可视化

消融
作者做的很充分,有需要,看原文比较好。
Limitation and Future Directions
虽然Focus-DETR设计了一种微妙的令牌评分机制和细粒度的特征增强方法,但更分层的语义分级策略,如对象边界或中心,仍然值得探索。此外,我们未来的工作将是构建一个统一的特征语义评分机制和细粒度的特征增强算法。
总结
本文提出了Focus-DETR来关注信息更丰富的标记,以更好地在计算效率和模型精度之间进行权衡。Focus-DETR的核心组件是一种用于特征语义的多层次识别策略,它利用了一种同时考虑位置和语义信息的评分机制。Focus-DETR通过精确选择前景和细粒度标记进行增强,实现了计算效率和模型精度之间更好的权衡。实验结果表明,Focus-DETR已成为类detr模型标记剪枝的SOTA方法。我们的工作对基于变压器的探测器的设计具有指导意义。
相关文章:
Less is More: Focus Attention for Efficient DETR
摘要 类似detr的模型显著提高了探测器的性能,甚至优于经典的卷积模型。然而,在传统的编码器结构中,所有的标记都带来了冗余的计算负担。最近的稀疏化策略利用了信息标记的一个子集,通过稀疏编码器来降低注意力的复杂性࿰…...
2023 8-5
430. 扁平化多级双向链表 前序遍历(递归) 脖子左歪45度,多级链表变成了二叉树,输出先序即可。 前序遍历再将结果存放在双向链表中,通过将链表存入节点来改变原来的节点 /* // Definition for a Node. class Node { public:int val;Node* prev;Node* next;Node* child; }; *…...
数据结构 | 线性数据结构——双端队列
目录 一、何谓双端队列 二、双端队列抽象数据类型 三、用Python实现双端队列 四、回文检测器 一、何谓双端队列 双端队列是与队列类似的有序集合。它有一前、一后两端,元素在其中保持自己的位置。与队列不同的是,双端队列对在哪一端添加和移除元素没…...
使用 Docker Compose 部署单机版 Redis:简单高效的数据缓存与存储
家人们啦!今天我们来介绍如何使用 docker-compose 部署单机版 Redis,这是一个简单高效的数据缓存与存储解决方案,广泛应用于Web应用、移动应用以及各类数据处理场景。我们过后几篇文章了将会介绍cluster和sentinel集群的部署。通过本文的指导…...
第三章 图论 No.4最小生成树的简单应用
文章目录 裸题:1140. 最短网络裸题:1141. 局域网裸题:1142. 繁忙的都市裸题:1143. 联络员有些麻烦的裸题:1144. 连接格点 存在边权为负的情况下,无法求最小生成树 裸题:1140. 最短网络 1140. 最…...
微服务-nacos配置管理
Nacos配置管理 统一配置管理:一次配置更改并支持热更新。将核心配置存储到配置管理服务,当微服务启动时会自动读取配置管理服务中的配置信息并结合本地配置启动。当配置改动时,配置管理服务会自动通知微服务,微服务读取新配置并自…...
【开发问题】flink的sql任务,用命令行执行
flink-sql 命令行flink-sql的客户端sql文件地址sql的内容 命令行 /mnt/flink/flink-1.17.1/bin/sql-client.sh embedded -f /mnt/flink/flink-1.17.1/examples/sql/oracle2Oracle flink-sql的客户端 /mnt/flink/flink-1.17.1/bin/sql-client.shsql文件地址 /mnt/flink/flink-1…...
Git常见问题
git clone 提示OpenSSL SSL_read git clone 时提示Connection was reset, errno 10054类错误 fatal: unable to acce ss https://github.com/fex-team/ueditor.git/: OpenSSL SSL_read: Connection was reset, errno 10054 备注:以下方法只是归纳整理,…...
Android如何实现开机自启
开机自启有很多种办法,下面用广播的方式实现。 1、首先先创建广播,开机代码 /*** Created by Forrest.* User: Administrator* Date: 2023/3/6* Description:*/ public class BootCompleteReceiver extends BroadcastReceiver {Overridepublic void on…...
Java数组实现的简单点名器
Java数组实现的简单点名器 需求分析代码实现小结Time 需求分析 Java数组实现的简单点名器 用数组将名单存储,然后调用Random函数取随机数实现随机点名。 代码实现 import java.util.Random;public class DianMingDemo {public static void main(String[] args) {//…...
百度UEditor编辑器如何关闭抓取远程图片功能
百度UEditor编辑器如何关闭抓取远程图片功能 这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发&a…...
网站无法访问的常见原因
有多种问题可能会阻止用户访问您的网站。本文将解决无法访问网站,且没有错误消息指示确切问题的情况,希望对您有所帮助。 无法访问网站的常见原因有: (1)DNS 设置不正确。 (2)域名已过期。 (3)空白或没有索引文件。 (4)网络连接问题。 DNS 设…...
(树) 剑指 Offer 34. 二叉树中和为某一值的路径 ——【Leetcode每日一题】
❓ 剑指 Offer 34. 二叉树中和为某一值的路径 难度:中等 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:…...
HDFS集群滚动升级以及回滚相关
HDFS集群滚动升级以及回滚相关 介绍不停机滚动升级非联邦HA集群联邦HA集群 停机升级--非HA集群HDFS集群降级和回滚异同点共同点不同点 HA集群降级(downgrade)注意事项 集群回滚操作 介绍 在hadoop v2中,HDFS支持namenode高可用(H…...
【LeetCode】094. 分割回文串II
文章目录 1. 解题思路1.1 创建dp表1.2 状态转移方程1.3 提前求出所有子串是否是回文串 2. 整体代码 1. 解题思路 1.1 创建dp表 这道题我们使用动态规划的方法来解,首先创建一个大小为字符串长度的dp表。dp[i] 表示 s[0, i] 的字符串最小划分多少次可以全划分为回文…...
CBCGPRibbon 添加背景图片
resource.h中声明资源的ID:ID_RIBBON_BACKIMAGE rc文件中添加png图片路径: ID_RIBBON_BACKIMAGE PNG DISCARDABLE "res\\bkribbon.png" 代码中添加下测: //添加背景图片 m_wndRibbonBar.SetBackgroundImage(ID_RIB…...
无涯教程-Perl - last 语句函数
当在循环内遇到 last 语句时,循环立即终止,程序控制在循环后的下一条语句处恢复。您可以为LABEL提供最后一个语句,其中LABEL是循环的标签。 last 语句可以在嵌套循环内使用,如果未指定LABEL,则该语句将适用于最近的循环…...
网络安全 Day13-Linux三剑客awk知识
Linux三剑客awk知识 1. awk 介绍2. awk 语法3. 练习 1. awk 介绍 awk 是一门语言, 也是一个命令,Linux 有三剑客命令: grep/sed/awk三剑客的特长 grep 过滤内容sed 取行awk 取列 2. awk 语法 取列 取第一列文件($1): awk {print $1} 文件指定分隔符为文件: awk -F "指…...
java讲解Spring Boot配置文件级别 相互覆盖关系 解决一方不愿意给数据库密码 一方不愿意给源码时 数据库配置问题
前面 我们讲过Spring Boot 修改临时变量的方式 但另一个场景 就是 我们 在本地开发环境 用的是一个配置 但如果项目经理上线 他想改这些配置 怎么弄呢 特别是数据库之类的配置 很多线上是不太一样的 那么 我们先看一个比较基本的方法 在配置文件的同目录下创建一个目录 叫 con…...
点击表格行高亮
css中三元表达式 :class"[activeIndex index ? color : , item]"点击行高亮 <div click"actvied(index)" :class"[activeIndex index ? color : , item]"v-for"(item, index) in tableData" :key"index">{{ item…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
