RTDETR阅读笔记

news2024/11/14 3:32:30

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.coloradmin.cn/o/1272567.html

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

相关文章

计算机组成原理期中题库

计算机组成原理题目集 2.1 下面是关于计算机中存储器容量单位的叙述,其中错误的是 A. 最基本的计量单位是字节(Byte),一个字节等于8bit B. 一台计算机的编址单位、指令字长和数据字长都一样,且是字节的整数倍 C. 最小…

在gazebo里搭建一个livox mid360 + 惯导仿真平台测试 FAST-LIO2

在gazebo里搭建一个livox mid360 惯导仿真平台测试 FAST-LIO2 前言立方体平台加入 livox mid360 激光雷达加入IMU模块调整底盘大小 并设计调用接口测试 Fast-Lio2 前言 livox mid360 在官网一直没有货,在gazebo里可以仿真该雷达形式的点云。 但是其只发布雷达的数…

mysql中删除数据后,新增数据时id会跳跃,主键自增id不连续

引言: 在使用MySQL数据库时,有时候我们需要删除某些记录,但是删除记录后可能会导致表中的id不再连续排序。 如何实现删除记录后让id重新排序的功能。 如图: 删除数据后,中间的id不会自动连续。 下面有两种方法进行重…

基于SpringBoot房产销售系统

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了房产销售系统,它彻底改变了过去传统的…

3dsMax插件Datasmith Exporter安装使用方法

3dsMax插件Datasmith Exporter安装使用方法 某些文件格式无法用Datasmith直接导入虚幻引擎,这些数据必须先被转换为Datasmith能够识别的文件格式。Datasmith Exporter插件就可以帮助您的软件导出可以被Datasmith导入虚幻引擎的.udatasmith格式文件。 在开始使用虚幻…

Openai通用特定领域的智能语音小助手

无穷尽的Q&A 钉钉...钉钉... 双双同学刚到工位,报销答疑群的消息就万马纷沓而来。她只能咧嘴无奈的摇摇头。水都还没有喝一口就开始“人工智能”的去回复。原本很阳光心情开始蒙上一层薄薄阴影。在这无休无止的Q&A中,就算你对工作有磐石一般强硬&#xff0…

概念理论类-k8s :架构篇

转载:新手通俗易懂 k8s :架构篇 Kubernetes,读音是[kubə’netis],翻译成中文就是“库伯奈踢死”。当然了,也可以直接读它的简称:k8s。为什么把Kubernetes读作k8s,因为Kubernetes中间有8个字母…

代理模式 1、静态代理 2、动态代理 jdk自带动态代理 3、Cglib代理

文章目录 代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cglib代理 来和大家聊聊代理模式 代理模式 代理模式:即通过代理对象访问目标对象,实现目标对象的方法。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操…

采购流程的简要概述

外部采购流程 一般来讲,企业的采购业务一般是对外采购活动,一个比较典型采购业务循环通常包括:需求提报、货源确定和供应商选择、采购订单处理、采购订单状态跟踪监控、到厂收货、发票校验、付款。 以下对几个节点进行详细的解释&#xff…

指针数组以及利用函数指针来实现简易计算器及typedef关键字(指针终篇)

文章目录 🚀前言🚀两段有趣的代码✈️typedef关键字 🚀指针数组🚀简易计算器的实现 🚀前言 基于阿辉前两篇博客指针的基础篇和进阶篇对于指针的了解,那么今天阿辉将为大家介绍C语言的指针剩下的部分&#…

算法通关村第十八关青铜挑战——透析回溯的模板

大家好,我是怒码少年小码。 回溯是最重要的算法思想之一,主要解决一些暴力枚举也搞不定的问题(组合、子集、分割、排列、棋盘等等)。性能并不高,但是哪些暴力枚举都无法ko的问题能解出来就可以了🤣。 这一…

ESP32-Web-Server编程- 通过 Highcharts 创建图表(Chart)实时显示设备信息

ESP32-Web-Server编程- 通过 Highcharts 创建图表(Chart)实时显示设备信息 概述 上节讲述了通过 Server-Sent Events(以下简称 SSE) 实现在网页实时更新 ESP32 Web 服务器的传感器数据,并通过表格显示传感器的数据。…

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-BiLSTM-Multihead-…

MySQL之JDBC

💕"我像离家的孤儿,回到了母亲的怀抱,恢复了青春。"💕 作者:Mylvzi 文章主要内容:MySQL之JDBC 一.什么是JDBC? JDBC编程就是通过Java 代码来操纵数据库 数据库编程, 需要数据库服务器提供一些API供程序…

C语言每日一题(42)删除链表的倒数第N个结点

力扣网 19 删除链表的倒数第N个结点 题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head …

Linux下查看目录大小

查看目录大小 Linux下查看当前目录大小,可用一下命令: du -h --max-depth1它会从下到大的显示文件的大小。

Python字符串大小写转换的函数及用法

Python字符串由内建的str类代表,那么str 类包含哪些方法呢?Python 非常方便,它甚至不需要用户查询文档,Python 是“自带文档”的。 这里需要读者简单掌握两个帮助函数: dir():列出指定类或模块包含的全部…

深入解析 Python 中 Parsel 的两种数据提取方式

更多资料获取 📚 个人网站:ipengtao.com 在网络爬虫的世界中,数据提取是至关重要的一环。Python 提供了许多强大的工具,其中之一就是 parsel 库,专门用于解析和提取 HTML 或 XML 数据。本篇博客将深入探讨 parsel 中两…

8. 队列

队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断加入队列的尾部,而位于队列头部的人逐个离开。 如下图所示,我们将队列的头部称为“队首”,尾部称为“队尾”&#xff…

聚硫醇固化剂Capure3-800含巯基-SH环氧固化剂TDS说明书

聚硫醇固化剂Capure3-800含巯基-SH环氧固化剂TDS说明书