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…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...