【论文阅读】—RTDETR

news2024/10/1 3:32:58

《DETRs Beat YOLOs on Real-time Object Detection》

最近,基于端到端DETR取得了显著的性能。然而,DETR的高计算成本限制了它们的实际应用,并阻碍了它们充分利用无后处理(如非最大抑制(NMS))的优势。本文首先分析了NMS对现有实时目标检测器的准确性和速度的负面影响,并建立了一个端到端的速度基准。为了解决上述问题,我们提出了一种实时检测转换器(RT-DETR),这是我们所知的第一个实时端到端目标检测器。

具体来说,我们设计了一种高效的混合编码器,通过解耦尺度内交互和跨尺度融合来有效地处理多尺度特征,并提出了IoU感知的查询选择,通过向解编码器提供更高质量的初始object queries来进一步提高性能。
在这里插入图片描述

1. Introduction

问题:DETR的高计算成本问题尚未得到有效解决,这限制了DETR的实际应用,导致无法充分利用其优势。

为了实现上述目标,我们重新思考了DETR,并对其关键组成部分进行了详细的分析和实验,以减少不必要的计算冗余。我们发现,尽管引入多尺度特征有利于加速训练收敛和提高性能[49],但它也会导致输入编码器的序列长度显著增加。 因此,由于计算成本高,transformer encoder成为模型的计算瓶颈。为了实现实时目标检测,我们设计了一种高效的混合编码器来代替原始的编码器。通过解耦多尺度特征的尺度内交互和尺度间融合,编码器可以有效地处理不同尺度的特征。

此外,之前的工作[40,24]表明,解码器的object query初始化方案对检测性能至关重要。为了进一步提高性能,我们提出了IoU感知查询选择,通过在训练过程中提供IoU约束,为解码器提供更高质量的初始对象查询。 此外,我们提出的检测器支持通过使用不同的解码器层来灵活调整推断速度,而不需要重新训练,这得益于DETR架构中解码器的设计,并促进了实时检测器的实际应用。

2.2. End-to-end Object Detectors.

DETR存在两个主要问题:训练收敛缓慢和查询难以优化。Deformable DETR[49]通过提高注意力机制的效率,加速了多尺度特征的训练收敛。DAB-DETR[24]引入了4D参考点,并逐层迭代优化预测框。DN-DETR[20]通过引入查询去噪来加速训练收敛。Group-DETR[6]通过引入小组一对多分配来加速训练。DINO[46]建立在先前的工作基础上,取得了最先进的成果。

2.3. Multi-scale Features for Object Detection.

现代目标检测器已经证明了利用多尺度特征来提高性能的重要性,特别是对于小物体。FPN[22]引入了一种特征金字塔网络,该网络融合了来自相邻尺度的特征。Efficient-DETR[43]通过使用密集先验初始化对象查询来减少编码器和解码器层的数量。Sparse-DETR[32]选择性地更新预期由解码器引用的编码器令牌,从而减少计算开销。Lite DETR[19]通过以交错方式降低低级特征的更新频率来提高编码器的效率。尽管这些研究降低了DETR的计算成本,但这些工作的目标不是将DETR推广为实时检测器。

4. The Real-time DETR

具体来说,我们利用骨干网{S3、S4、S5}最后三个阶段的输出特征作为编码器的输入。混合编码器通过尺度内交互和跨尺度融合将多尺度特征转换为图像特征序列(如第4.2节所述)。

随后,采用IoU感知查询选择从编码器输出序列中选择固定数量的图像特征,作为解编码器的初始对象查询(如第4.3节所述)。最后,带有辅助预测头的解码器迭代优化对象查询以生成框和置信度得分。

4.2. Efficient Hybrid Encoder

如[21]所述,编码器占GFLOPs的49%,但在可变形DETR中仅贡献了11%的AP。从包含图像中对象丰富语义信息的低级特征中提取高级特征。直观地说,对concat的多尺度特征进行特征交互是多余的。

基于上述分析,我们重新思考了编码器的结构,并提出了一种新型的高效混合编码器。如图3所示,所提出的编码器由两个模块组成,基于注意力的尺度内特征交互(AIFI)模块和基于CNN的跨尺度特征融合模块(CCFM)。AIFI进一步减少了基于变量D的计算冗余,变量D仅在S5上执行尺度内交互。

我们认为,将self-attention操作应用于具有更丰富语义概念的高级特征可以捕捉图像中概念实体之间的联系,这有助于后续模块对图像中对象的检测和识别。 同时,由于缺乏语义概念,以及与高级特征的交互存在重复和混淆的风险,低级特征的尺度内交互是不必要的。 实验证明了该想法!

4.3. IoU-aware Query Selection

DETR中的object query是一组可学习的嵌入,由解码器优化,并由预测头映射到分类分数和边界框。然而,这些对象查询很难解释和优化,因为它们没有明确的物理意义。后续工作[40,24,49,43,46]改进了对象查询的初始化,并将其扩展到内容查询和位置查询(锚点)。其中[49,43,46]都提出了查询选择方案,它们的共同点是利用分类分数来选择编码器中前K个特征初始化对象查询(或仅初始化位置查询[46])。

然而,由于分类分数和位置置信度的分布不一致,一些预测的框具有较高的分类分数,但与GT框并不接近,这导致选择分类分数高、IoU分数低的框,而丢弃分类分数低、IoU评分高的框。这会损害检测器的性能。为了解决这个问题,我们提出了IoU感知的查询选择,通过约束模型在训练过程中为IoU得分高的特征产生高分类得分,为IoU分数低的特征产生低分类得分。 因此,与模型根据分类分数选择的前K个编码器特征对应的预测框具有高分类分数和高IoU分数。

5. Experiments

在这里插入图片描述

我们对IoU感知查询选择进行了消融研究,定量实验结果如4所示。我们采用的查询选择根据分类分数选择前K个(K=300)编码器特征作为内容查询,并采用与这些选定特征对应的边界框作为初始位置查询。

我们还分析了每个解码器层对推理速度的影响,并得出结论,每个解码器层消耗约0.5毫秒。此外,我们发现,随着解码器层索引的增加,解码器相邻层之间的精度差异逐渐减小。

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

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

相关文章

Windows下如何像linux一样查看GPU使用情况

在linux下,只要使用 nvidia-smi即可看到服务器中每块卡的使用情况 但是在windows下该如何查看显卡的使用情况呢 通过网上学习发现,windows下有一个叫nvidia-smi.exe的程序 找到它所在的路径,然后在命令行中进入到这个路径,然后…

文件上传漏洞-HackBar使用

介绍 HackBar 是一个用于浏览器的扩展插件,主要用于进行网络渗透测试和安全评估。它提供了一系列方便的工具和功能,可以帮助用户执行各种网络攻击和测试,包括 XSS、SQL 注入、CSRF、路径穿越等 下载地址 可以到github上面去下载&#xff0…

傅里叶级数的C语言验证

目录 概述 1 收敛性 1.1 收敛定理 1.2 理解收敛定理 2 傅里叶级数的应用 2.1 问题描述 2.2 实现方法 3 方波函数的傅里叶验证(C语言实现) 3.1 方波函数 3.1.1 编写方波函数 3.1.2 程序函数验证 3.2 傅里叶级数函数实现 3.2.1 编写傅里叶级…

Android 实现左侧导航栏:NavigationView是什么?NavigationView和Navigation搭配使用

目录 1)左侧导航栏效果图 2)NavigationView是什么? 3)NavigationView和Navigation搭配使用 4)NavigationView的其他方法 一、实现左侧导航栏 由于Android这边没有直接提供左侧导航栏的控件,所以我尝试了…

Frida Hook String构造函数

前言 在实际Android应用开发中,无论是使用多么复杂的算法对字符串进行加密,然而开发者常常会构造出字符串的实例。因此,我们可以通过使用Frida hook String类的构造函数来追踪这些实例的构造位置,然后可以通过构造实例的地方栈回…

Java GUI制作双人对打游戏源码以及应用程序分享

文章目录 前言一、可执行程序二、源码以及图片资源总结 前言 在之前的文章展示了如何构建一款双人对打游戏,博文链接如下: https://blog.csdn.net/qq_43646281/article/details/137748943?spm1001.2014.3001.5501 感兴趣的小伙伴可以再去回顾一下: 原文…

一分钟了解请求转发与重定向

目录 请求转发 重定向 请求转发 为了更好的了解请求转发,我们可以画出关系图: 请求转发的特征: 地址栏的地址不发生改变, 是请求的资源的url请求转发中, 是一次请求request域有效请求转发是在服务器端转发的, 请求转发资源只能是服务器内部资源 重定…

Pointnet++改进即插即用系列:全网首发FMB自调制特征聚合|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入FMB,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理论介…

DS18B20数字温度传感器操作解析

文章目录 引言特点工作原理引脚说明配置寄存器温度寄存器时序初始化时序写时序读时序 引言 DS18B20 是一种广泛使用的数字温度传感器,具有高精度和易用性。是Dallas Semiconductor公司(现为Maxim Integrated公司)生产的单总线数字温度传感器…

Typora+PicGo-Core(command line)+Gitee 实现上传图片到图床(看这一文就够)

前言 ​ 对于喜欢写Markdown文档的人来说,Typora无疑是一个写作利器,它有别于其他的Markdown软件,不是一边编辑一边渲染,而是即写即渲染,这样对于浏览md文件也非常友好。此外Typora还支持更换主题,在其官网…

机器学习 第10章-降维与度量学习

机器学习 第10章-降维与度量学习 10.1 k近邻学习 k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。通…

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计) 本文介绍论文原理介绍网络代码多种yaml设置网络测试及实验结果 本文介绍 YOLOv5(You Only Look Once)以其高效、准确的实时目标检测性能被广泛应用。然而,随着视觉…

【保姆级讲解C语言中的运算符的优先级!】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【Material-UI】使用指南:快速入门与核心功能解析

文章目录 一、快速入门1.1 安装和导入1.2 组件的独立性 二、全局设置2.1 响应式元标签2.2 CssBaseline2.3 默认字体 三、响应式设计3.1 Grid系统 四、最佳实践4.1 组件的一致性4.2 性能优化4.3 可访问性 五、总结 Material-UI是一个功能强大且灵活的React UI框架,为…

数学建模--二分法

目录 二分法的基本原理 应用实例 求解方程根 查找有序数组中的元素 注意事项 Python代码示例 ​编辑 延伸 二分法在数学建模中的具体应用案例有哪些? 如何选择二分法的初始区间以确保收敛速度和精度? 在使用二分法求解方程时,如何…

通过 ACM 论文模版学习 LaTeX 语法 【四、图】

文章目录 一、LaTeX 简介二、ACM 论文模版三、格式四、图和表4.1 图4.1.1. 导言区设置4.1.2. 插入图片的基本语法4.1.3. 设置图片的尺寸和位置4.1.4. 图片浮动体4.1.4.1. figure 环境4.1.4.2. 位置参数4.1.4.3. \centering4.1.4.4. \includegraphics4.1.4.5. \caption4.1.4.6. …

19061 简单加法

这个问题可以通过使用字符串处理和简单的数学运算来解决。我们可以首先将输入的字符串按照""字符进行分割&#xff0c;然后将分割后的每个字符串转换为整数并求和。 以下是使用C的代码实现&#xff1a; #include <iostream> #include <sstream> #inclu…

LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 这是一道银行的面试题&#xff0c;就是简单&#xff1f;&#xff01; LeetCode链接&#xff1a;3. 无重复字符的最长子串 1.题目描述 给定一个字符串 s &#xff0c…

live2d C++ sdk 分析

工具函数 首先会加载各种配置文件如model3.json&#xff0c;以字节流的方式读取(fstream) 读取过程中若报错 Stat failed. errno:2 path&#xff0c;很有可能是路径中出现了中文。因为官方用的stat函数判断文件合法性&#xff0c;stat函数貌似无法处理中文名 MatrixManager:…

PS学习笔记(二、换背景图片)

一、如何将人物抠出来 打开照片——选择——主体 CtrlJ复制图层&#xff0c;即可将任务单独拿出 将照片中的人物分层出来 另存为即可实现人物抠图。 二、背景抠图分离 ①选择——主体 编辑——内容识别填充&#xff08;填充——内容识别&#xff09; 图章工具修复 ②选…