RTDETR阅读笔记

RTDETR阅读笔记

摘要

  • DETR的高计算成本限制了它们的实际应用,并阻碍了它们充分利用无需后处理(例如非最大抑制NMS)的优势。
  • 文中首先分析了NMS对实施目标检测的精度和速度的负面影响。(RTDETR是第一个实时端到端的目标检测器。具体来说,我们设计了一个高效的混合编码器,通过解耦内部尺度交互和跨尺度融合来有效处理多尺度特征,并提出了IoU感知查询选择,通过向解码器提供更高质量的初始对象查询来进一步提高性能。此外,我们提出的检测器支持通过使用不同的解码器层来灵活调整推理速度,而无需重新训练,这有助于在各种实时场景中的实际应用。)

Introduction

  • 基于变换器的对象检测器(DETR)自提出以来就受到了学术界的广泛关注,原因在于它消除了各种手工制作的组件,例如非最大抑制(NMS)

  • 一般实时检测通常都需要NMS做后续处理,且NMS难以优化,并且鲁棒性不够,还导致推理时间的浪费

  • DETR有不需要NMS的优势,但是其具有高计算成本问题,限制了DETR的实际应用,并导致无法充分利用它们的优势。

  • 为了实现实时对象检测,我们设计了一个高效的混合编码器来替代原始的变换器编码器。通过解耦多尺度特征的内部尺度交互和跨尺度融合,编码器能够有效处理不同尺度的特征。

  • 此外,之前的研究[40、24]表明,解码器的对象查询初始化方案对检测性能至关重要。为了进一步提高性能,我们提出了IoU感知查询选择,通过在训练期间提供IoU约束,向解码器提供更高质量的初始对象查询。

[40] Yingming Wang, Xiangyu Zhang, Tong Yang, and Jian Sun. Anchor detr: Query design for transformer-based detector. In Proceedings of the AAAI conference on artificial intelligence, volume 36, pages 2567–2575, 2022. 1, 2, 3, 6, 7

[24] Shilong Liu, Feng Li, Hao Zhang, Xiao Yang, Xianbiao Qi, Hang Su, Jun Zhu, and Lei Zhang. Dab-detr: Dynamic anchor boxes are better queries for detr. arXiv preprint arXiv:2201.12329, 2022. 1, 2, 3, 6, 7

本文的主要贡献总结如下:(i)我们提出了第一个实时端到端对象检测器,不仅在速度和精度上超越了当前最先进的实时检测器,而且不需要后处理,因此其推理速度没有延迟并保持稳定;(ii)我们详细分析了NMS对实时检测器的影响,并从后处理的角度得出关于当前实时检测器的结论;(iii)我们的工作为当前端到端检测器的实时实现提供了一种可行的解决方案,所提出的检测器可以通过使用不同的解码器层灵活调整推理速度,无需重新训练,这在现有的实时检测器中很难实现。

相关工作

2.1实时目标检测

YOLO的瓶颈目前是NMS,NMS的超参数和对检测器精度、速度有显著影响,所以NMS或许并不适合存在于实时检测的网络模型当中。

2.2 End-to-End目标检测

尽管DETR有明显的优势,但它仍存在两个主要问题:训练收敛慢和查询优化难。已经提出了许多DETR变体来解决这些问题。具体来说,Deformable-DETR[49]通过增强注意力机制的效率,使用多尺度特征加速训练收敛。Conditional DETR[27]和Anchor DETR[40]减少了查询的优化难度。DAB-DETR[24]引入了4D参考点,并逐层迭代优化预测框。DN-DETR[20]通过引入查询去噪来加速训练收敛。Group-DETR[6]通过引入分组式一对多分配来加速训练。DINO[46]在前人工作的基础上取得了最先进的结果。尽管我们在不断改进DETR的组件,但我们的目标不仅是进一步提高性能,还要创建一个实时的端到端对象检测器。

2.3. 多尺度特征在对象检测中的应用。 现代对象检测器已经展示了利用多尺度特征来提高性能的重要性,特别是对于小型对象。FPN[22]引入了一个特征金字塔网络,融合了相邻尺度的特征。随后的工作[25、11、35、13、18、38、14]扩展并增强了这一结构,并被广泛应用于实时对象检测器中。朱等人[49]首次将多尺度特征引入DETR,提高了性能和收敛速度,但这也导致了DETR的计算成本显著增加。尽管变形注意力机制在一定程度上缓解了计算成本,但多尺度特征的融合仍然导致高计算负担。为了解决这个问题,一些工作尝试设计计算效率高的DETR。Efficient DETR[43]通过用密集先验初始化对象查询,减少了编码器和解码器层的数量。Sparse DETR[32]选择性地更新预计会被解码器引用的编码器标记,从而减少计算开销。Lite DETR[19]通过以交错方式减少低层特征的更新频率,提高了编码器的效率。尽管这些研究降低了DETR的计算成本,但这些工作的目标并不是将DETR推广为实时检测器。

End-to-end Speed of Detectors

3.1 Analysis of NMS

NMS算法需要俩个超参数:score threshold and IOU threshold

NMS所消耗的时间绝对多数取决于俩个超参数的设置以及预测boxes的数量

NMS算法非常容易收到Score threshold的影响
在这里插入图片描述

3.2. End-to-end Speed Benchmark

  • Anchor free在相当精度的情况下比基于锚点的检测器性能更好,因为前者的后处理时间比后者少得多。因为Anchor-based产生的框更多,NMS处理的时间更多。

为了公平比较各种实时检测器的端到端推理速度,我们建立了一个端到端速度测试基准。考虑到NMS的执行时间可能受输入图像的影响,选择一个基准数据集并计算多个图像的平均执行时间是必要的。这个基准采用COCO val2017作为默认数据集,并为需要后处理的实时检测器附加TensorRT的NMS后处理插件。具体来说,我们根据在基准数据集上取得的相应精度的超参数测试检测器的平均推理时间,并排除IO和内存复制操作。我们利用这个基准测试了基于锚点的检测器YOLOv5[13]和YOLOv7[38]以及无锚点的检测器PP-YOLOE[41]、YOLOv6[18]和YOLOv8[14]在T4 GPU上的端到端速度。测试结果显示在表2中。根据结果,我们得出结论,对于需要NMS后处理的实时检测器,无锚点检测器在具有相当精度的情况下比基于锚点的检测器性能更好,因为前者的后处理时间比后者少得多,这在之前的工作中被忽略了。这种现象的原因是基于锚点的检测器比无锚点检测器产生更多的预测框(在我们测试的检测器中多出三倍)。

在这里插入图片描述

4.The Real-time DETR

4.1. Model Overview

  • RT-DETR consists of Backbone, a hybrid encoder, a transformer decoder with auxiliary prediction heads。
    在这里插入图片描述

使用Backbone的S3, S4, S5最后三层作为encoder的输入。

hybrid encoder通过内部尺度交互和跨尺度融合将多尺度特征转换为a sequence of image features。

IOU-aware query从编码器输出序列中选择固定数量的图像特征,作为解码器的初始对象查询

最后,带有辅助预测头的解码器迭代优化对象查询,生成框和置信度分数。

4.2. Efficient Hybrid Encoder

Computational bottleneck analysis.

  • 高级特征都是从包含丰富语义信息的低级特征中提出得到的。直观上,对连接的多尺度特征进行特征交互是多余的。

为了验证这个观点,我们重新思考了编码器结构,并设计了一系列具有不同编码器的变体,如图5所示。这组变体通过将多尺度特征交互解耦为内部尺度交互和跨尺度融合的两步操作,逐渐提高模型精度的同时显著降低了计算成本(详细指标参见表3)。我们首先移除DINO-R50[46]中的多尺度变换器编码器作为基线A。接下来,插入不同形式的编码器以产生一系列基于基线A的变体,具体如下:

  • A → B:变体B插入了单尺度变换器编码器,它使用一层变换器块(One layer of transformer block.)。每个尺度的特征共享编码器进行内部尺度特征交互,然后将输出的多尺度特征进行连接。
  • B → C:变体C在B的基础上引入了跨尺度特征融合,并将连接的多尺度特征输入编码器进行特征交互。
  • C → D:变体D将多尺度特征的内部尺度交互和跨尺度融合解耦。首先,使用单尺度变换器编码器进行内部尺度交互,然后利用类似PANet[25]的结构进行跨尺度融合。
  • D → E:变体E在D的基础上进一步优化了多尺度特征的内部尺度交互和跨尺度融合,采用了我们设计的高效混合编码器(详见下文)。

在这里插入图片描述
在这里插入图片描述

Hybrid design:

the Attention-based Intra-scale Feature Interaction (AIFI) module and the CNN-based Cross-scale Feature-fusion Module (CCFM).

AIFI further reduces computational redundancy based on variant D, which only performs intra-scale interaction on S5.(变体D,如果只在S5进行intra-scale,还可以减少计算冗余)

我们认为,将自注意力操作应用于含有丰富语义概念的高层特征可以捕获图像中概念实体之间的联系,这有助于后续模块检测和识别图像中的对象。同时,由于缺乏语义概念以及与高层特征交互的重复和混淆风险,低层特征的内部尺度交互是不必要的。

为了验证这一观点,我们在变体D中只在S5上执行内部尺度交互,实验结果报告在表3中,参见DS5行。与普通变体D相比,DS5显著减少了延迟(快了35%),但提高了精度(AP提高了0.4%)。这个结论对于实时检测器的设计至关重要。

4.3.IOU-aware Query Selection

  • 在DETR中,object query十一组可学习的embeding。通过解码器优化,并通过预测投影射到分类分数和边界框。然而,这些对象查询难以解释和优化,因为它们没有明确的物理含义。

  • 后续都是提出了对object query初始化的改进,们的共同点是利用分类分数从编码器中选择前K个特征来初始化对象查询(或仅位置查询[46])。然而,由于分类分数和位置置信度的分布不一致,一些预测框具有高分类分数但与GT(Ground Truth,真实框)框不接近,导致选择了具有高分类分数但低IoU分数的框,而丢弃了具有低分类分数但高IoU分数的框。这损害了检测器的性能。

  • 本文提出了IoU感知查询选择(IoU-aware Query Selection),在训练过程中通过约束模型对具有高IoU分数的特征产生高分类分数,对具有低IoU分数的特征产生低分类分数。

  • 根据分类分数由模型选择的前K个编码器特征对应的预测框既具有高分类分数又具有高IoU分数。

Effectiveness analysis

在这里插入图片描述

为了分析所提出的IoU感知查询选择的有效性,我们可视化了在val2017数据集上通过查询选择选出的编码器特征的分类分数和IoU分数,如图6所示。具体来说,我们首先根据分类分数选择前K个(我们实验中K=300)编码器特征,然后可视化分类分数大于0.5的散点图。红色和蓝色点分别是通过应用普通查询选择和IoU感知查询选择训练的模型计算出的。点越接近图形的右上方,对应特征的质量越高,即分类标签和边界框更有可能描述图像中的真实对象。根据可视化结果,我们发现最显著的特征是大量蓝点集中在图形的右上方,而红点集中在右下方。这表明使用IoU感知查询选择训练的模型可以产生更多高质量的编码器特征。

此外,我们定量分析了这两种点的分布特征。图中蓝点比红点多138%,即更多的红点分类分数小于或等于0.5,可以被认为是低质量特征。然后我们分析了分类分数大于0.5的特征的IoU分数,发现IoU分数大于0.5的蓝点比红点多120%。定量结果进一步表明,IoU感知查询选择可以为对象查询提供更多具有准确分类(高分类分数)和精确位置(高IoU分数)的编码器特征,从而提高检测器的准确性。详细的定量结果将在第5.4节中呈现。

4.4. Scaled RT-DETR

为了提供可扩展版本的RT-DETR,我们用HGNetv2替换了ResNet[16]主干网络。我们使用深度乘数和宽度乘数共同缩放主干网络和混合编码器。因此,我们得到了两个版本的RT-DETR,它们在参数数量和FPS上有所不同。对于我们的混合编码器,我们通过调整CCFM中的RepBlocks数量和编码器的嵌入维数来控制深度乘数和宽度乘数。值得注意的是,我们提出的不同规模的RT-DETR维持了一个同质的解码器,这有助于使用高精度大型DETR模型[7、31、46、50、3、42]对轻量级检测器进行蒸馏。这将是一个可探索的未来方向。

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

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

相关文章

Word 小知识之 docx 和 doc 的区别

下面我们从4个方面为大家总结了有关于docx和doc的区别,一起来看一看: 1. 文件格式 doc和docx的区别中较大的区别就是文件格式不同,一个是二进制一个为XML格式。doc:是早期的Word文档格式,采用二进制文件格式。这种…

ipa应用测试平台怎么开开具发票

控制台-个人中心-发票管理 ●点击申请发票可以开具发票 ●申请发票-填写资料-勾选订单 ●个人发票开具以及公司发票开具 ●提交发票申请 ●等待申请成功开具发票 ●发票开具成功,我们可以开具或者查看发票

二分查找与搜索树高频问题

关卡名 逢试必考的二分查找 我会了✔️ 内容 1.山脉数组的峰顶索引 ✔️ 2.旋转数字的最小数字 ✔️ 3.寻找缺失数字 ✔️ 4.优化求平方根 ✔️ 5.中序与搜索树原理 ✔️ 6.二叉搜索树中搜索特定值 ✔️ 7.验证二叉搜索树 ✔️ 基于二分查找思想,可以拓展出很…

conda 安装指定Version的指定Build

入下图,我想装cudnn的7.6.5的指定Build版本cuda10.0_0 应该使用如下命令: mamba install cudnn7.6.5cuda10.0_0 没有mamba用conda install也可以

04 # 第一个 TypeScript 程序

初始化项目以及安装依赖 新建 ts_in_action 文件夾 npm init -y安装好 typescript,就可以执行下面命令查看帮助信息 npm i typescript -g tsc -h创建配置文件,执行下面命令就会生成一个 tsconfig.json 文件 tsc --init使用 tsc 编译一个 js 文件 新…

daima8资源网整站数据打包完整代码(集成了ripro9.1主题,开箱即用)

基于ripro9.1完全明文无加密后门版本定制开发,无需独立服务器,虚拟主机也可以完美运营,只要主机支持php和mysql即可。整合了微信登录和几款第三方的主题文件,看起来更美观一些。站长本人就是程序员,所以本站的代码资源…

PyCharm关闭很慢的解决办法

使用PyCharm2023.2.5的时候碰到了一个问题,每次关闭项目的时候都很慢很慢,在网上查了,有可能是因为缓存的问题,于是试着清除缓存,发现还是没有用,关闭的时候还是很慢,后面看到一种解决办法&…

算法:笛卡尔平面坐标系上,若干连接点形成线,剔除距离小于阈值的点,Kotlin

算法&#xff1a;笛卡尔平面坐标系上&#xff0c;若干连接点形成线&#xff0c;剔除距离小于阈值的点&#xff0c;Kotlin const val THRESHOLD 0.6f //距离小于这个点将被剔除。data class Point(val x: Float, val y: Float)fun removeNearbyPoint(points: List<Point>…

指针概念及应用

指针的相关概念 1.指针是什么&#xff1f; 指针是内存中的一个最小单元的编号&#xff0c;其实就是指地址&#xff0c;对于我们平时口中所讲述的指针&#xff0c;通常指的是指针变量&#xff0c;指针变量是用来存放内存地址的变量。 2.地址与指针 一个32位机器在一个进程中…

多线程原理和常用方法以及Thread和Runnable的区别

文章目录 &#x1f366;多线程原理&#x1f367;随机性打印&#x1f368;多线程内存图解 &#x1f369;Thread类的常用方法&#x1f36a;获取线程名称 getName()&#x1f382;设置线程名称 setName() 或者 new Thread("线程名字")&#x1f370;使当前正在执行的线程以…

python 交互模式和命令行模式的问题

python 模式的冲突 unexpected character after line continuation character 理论上 ide里&#xff0c;输入 python 文件路径\文件.py 就可以执行 但是有时候却报错 unexpected character after line continuation character 出现上述错误的原因是没有退出解释器&#x…

JMeter从入门到精通

1、 jmeter的介绍 jmeter也是一款接口测试工具&#xff0c;由java语言开发的&#xff0c;主要进行性能测试。 2、jmeter安装 jmeter官网下载链接&#xff1a; https://jmeter.apache.org/download_jmeter.cgi &#xff0c;查看是否安装成功【jmeter -v】 下载 java jdk1.8&…

计算一个4+4+1的队形变换问题

2 2 1 1 2 2 2 2 1 1 2 2 3 3 A A 3 3 4 4 A 12 4 4 4 4 12 A 4 4 2 2 1 1 2 2 操场上有4个人以4a1的结构在6*6的平面上运动&#xff0c;行分布是0&#xff0c;0&#xff0c;0&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;列分布…

[Android] c++ 通过 JNI 调用 JAVA函数

如何使用&#xff1a; Calling Java from C with JNI - CodeProject c里的 JNI 类型 和 JAVA 类型的映射关系&#xff1a; JNI Types and Data Structures Primitive Types and Native Equivalents Java TypeNative TypeDescriptionbooleanjbooleanunsigned 8 bitsbytejbyt…

局域网协议:以太网(Ethernet)详解

文章目录 Ethernet的组成以太网和 Wi-Fi以太网应用场景以太网的发展历程以太网数据链路层CSMA/CD (载波侦听多路访问/冲突检测)推荐阅读 以太网&#xff08;Ethernet&#xff09;是一种局域网&#xff08;LAN&#xff09;技术&#xff0c;用于在局域网范围内传输数据。它是最常…

【深度学习】gan网络原理生成对抗网络

【深度学习】gan网络原理生成对抗网络 GAN的基本思想源自博弈论你的二人零和博弈&#xff0c;由一个生成器和一个判别器构成&#xff0c;通过对抗学习的方式训练&#xff0c;目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…

《ChatGPT实操应用大全》探索无限可能

&#x1f5e3;️探索ChatGPT&#xff0c;开启无限可能&#x1f680; 文末有免费送书福利&#xff01;&#xff01;&#xff01; ChatGPT是人类有史以来最伟大的发明。他能写作、绘画、翻译、看病、做菜、编程、数据分析、制作视频、解高等数学题…&#xff0c;他会的技能…

《2023开发者生态系统现状》:ChatGPT 是最常用的 AI 工具,60%开发者使用代码生成工具辅助编程

在前有编程语言历经 80 年的迭代&#xff0c;后有 GitHub Copilot、ChatGPT 等 AI 辅助编程工具的层出不穷&#xff0c;开发者的开发方式发生了什么样的变化&#xff1f;行业中领头的 Java IDE IntelliJ IDEA、Kotlin 编程语言背后的软件工具开发公司 JetBrains 基于全球 26,34…

【Java 基础】09 封装 继承 多态

我们都知道 Java 是以面向对象而著称&#xff0c;最著名的当然就是面向对象的三大特性啦&#xff0c;接下来就逐一举例说明一下。 1. 封装 封装指的是将类的内部细节隐藏起来&#xff0c;只对外提供必要的访问方式。 例如&#xff1a; 我们使用的计算器做一个乘法运算&#x…

[原创]Delphi的SizeOf(), Length(), 动态数组, 静态数组的关系.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…