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.mfbz.cn/a/207895.html

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

相关文章

temu货不对板哪里修改图片

在Temu这个跨境电商平台上,如果您需要修改商品图片,通常需要在卖家中心进行操作。下面是一般的步骤,但请注意,不同平台的操作可能略有不同,具体请参考Temu官方的帮助文档或联系客服。 先给大家推荐一款拼多多/temu运营…

OpenCV快速入门:彩蛋——小游戏制作

文章目录 前言一、游戏玩法1.1 核心玩法1.2 特殊事件 二、功能模块划分2.1 主游戏文件 (main.py)2.2 游戏对象 (game_objects.py)2.3 游戏逻辑 (game_logic.py)2.4 事件和奖励 (events_and_rewards.py)2.5. 游戏界面 (game_ui.py) 三、完整代码3.1 主游戏文件 (main.py)3.1.1 游…

计算机网络(超详解!) 第二节 物理层(下)

1.信道复用技术 复用 (multiplexing) 是通信技术中的基本概念。 它允许用户使用一个共享信道进行通信,降低成本,提高利用率。 1.频分复用 FDM(Frequency Division Multiplexing) 将整个带宽分为多份,用户在分配到一定的频带后,…

20、LED点阵屏

LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等 LED点阵屏分类 按颜色:单色、双色、全彩 按像素…

企业营销管理能够实现自动化吗?怎么做?

当今企业面临着越来越多的营销难题:如何有效培育潜在客户、如何提高营销活动的效果、如何优化营销资源的分配......企业的营销管理怎么做?或许CRM系统营销自动化会起到作用。 客户细分: 企业可以通过CRM的客户细分功能,根据客户…

【libGDX】立方体手动旋转

1 前言 本文主要介绍使用 libGDX 绘制立方体,并实现手动触摸事件控制立方体旋转。 为方便控制触摸旋转,并提高渲染性能,我们通过改变相机的位置和姿态实现立方体旋转效果。 读者如果对 libGDX 不太熟悉,请回顾以下内容。 使用Me…

11.31链表,之前的数据结构(未完,饼)

根据输入序列建立二叉树 链表 回顾一下二分面积最小 一些性质题回顾 哈夫曼树构建 第十一周——哈夫曼树 5 1 2 2 5 9 37 桶排序 #include <iostream> #include <vector> #include <algorithm> #include<stack> #include<queue> #includ…

docker部署kerberos,群晖nas中nfs开启kerberos校验

背景 nas开启nfs存储共享&#xff0c;默认情况下只能给IP/24做限制, 达不到安全效果 需要增加kerberos策略校验&#xff0c;并且持久化kerberos数据&#xff0c;避免容器重启丢失数据 环境描述 宿主机系统&#xff1a;CentOS Linux release 7.9.2009 (Core) Docker版本&#xf…

ESP32-Web-Server编程- 实现 Web 登录网页

ESP32-Web-Server编程- 实现 Web 登录网页 概述 是时候实现更加安全的网页了。登录机制是最简单的控制网页访问权限的方法。 需求及功能解析 本节演示如何在 ESP32 上部署一个 Web 服务器&#xff0c;并建立登录页面的机制&#xff0c;用户可以实现登录、登出的功能&#x…

【Python表白限定】李峋同款可写字版跳动的爱心(完整代码)

文章目录 跳动的爱心环境需求完整代码详细分析系列文章 跳动的爱心 环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0&#xff08;可选&#xff0c;这个库用于打包&#xff0c;使程序没有python环境也可以运行&#xff0c;如果想发给好朋友的话需要这…

nginx配置反向代理及负载均衡

目录 1.前端发送的请求&#xff0c;是如何请求到后端服务的1.nginx 反向代理的好处&#xff1a;2.nginx 反向代理的配置方式&#xff1a;3. nginx 负载均衡的配置方式 1.前端发送的请求&#xff0c;是如何请求到后端服务的 1.nginx 反向代理的好处&#xff1a; 提高访问速度 因…

一文解决msxml3.dll文件缺失问题,快速修复msxml3.dll

在了解问题之前&#xff0c;我们必须首先清楚msxml3.dll到底是什么。DLL&#xff08;Dynamic Link Libraries&#xff09;文件是Windows操作系统使用的一个重要组成部分&#xff0c;用于存储执行特定操作或任务的代码和数据。msxml3.dll为Windows系统提供处理XML文档的功能。如…

小米摄像头拆机教程

今天拆解一下好久不用的小米摄像头&#xff0c;记录下拆机过程&#xff0c;有需要的小伙伴可以自行查看 一、拆底座 首先拿出底座的四个橡皮塞、把对应的螺丝拧下来就可以了&#xff0c;这一步还是比较简单的 二、拆下底部排线 三、拆下底部电机和底座 按下方的红圈拆掉电机上的…

全网最新最全的Jmeter接口测试:jmeter组件元件介绍

JMeter 的主要测试组件总结如下&#xff1a; 1. 测试计划是使用 JMeter 进行测试的起点&#xff0c;它是其它 JMeter 测试元件的容器 2. 线程组代表一定数量的并发用户&#xff0c;它可以用来模拟并发用户发送请求。实际的 请求内容在Sampler中定义&#xff0c;它被线程组包含…

Redis主从复制实现RCE

文章目录 前置知识概念redis module 利用条件利用工具思路例题 [网鼎杯 2020 玄武组]SSRFMe 前置知识 概念 背景是多台服务器要保存同一份数据&#xff0c;如何实现其一致性呢&#xff1f;数据的读写操作是否每台服务器都可以处理&#xff1f;这里Redis就提供了主从复制的模式…

c++ pcl出现LNK2019 宏定义 PCL_NO_PRECOMPILE

问题&#xff1a;c pcl使用拟合圆柱时出现LNK2019问题&#xff1b; 说明&#xff1a;lib等配置没有问题&#xff1b; 解决方案 在上述代码中添加如下代码即可 #define PCL_NO_PRECOMPILE 是 C 中的预处理器指令&#xff0c;用于在代码中定义一个宏。而 #undef PCL_NO_PRECOM…

汽车行驶不同工况数据

1、内容简介 略 28-可以交流、咨询、答疑 2、内容说明 汽车行驶不同工况数据 汽车行驶不同工况数据 ECE、EUDC、FTP75、NEDC、自定义 3、仿真分析 4、参考论文 略 链接&#xff1a;https://pan.baidu.com/s/1AAJ_SlHseYpa5HAwMJlk1w 提取码&#xff1a;rvol

Unittest自动化测试之unittestunittest_生成测试报告

unittest_生成测试报告 测试报告为测试结果的统计即展示&#xff0c;是自动化测试不可或缺的一部分&#xff0c;利用unittest 可以生成测试报告 方式一、使用第三方 HTMLTestRunner 执行测试用例集&#xff0c;生成网页版测试报告&#xff08;推荐&#xff09; HTMLTestRunn…

进程与线程的区别

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构,mysql,javaee等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 进程与线程的区别 进程线程进程与线…

Java流处理之序列化和打印流

文章目录 序列化概述ObjectOutputStream类构造方法序列化操作 ObjectInputStream类构造方法反序列化操作1**反序列化操作2** 案例&#xff1a;序列化集合案例分析案例实现 打印流概述PrintStream类构造方法改变打印流向 序列化 概述 Java 提供了一种对象序列化的机制。用一个…
最新文章