论文泛读: DETRs Beat YOLOs on Real-time Object Detection

embedded/2024/9/22 19:58:08/

[toc[

DETRs_Beat_YOLOs_on_Realtime_Object_Detection_1">DETRs Beat YOLOs on Real-time Object Detection

论文地址: https://openaccess.thecvf.com/content/CVPR2024/html/Zhao_DETRs_Beat_YOLOs_on_Real-time_Object_Detection_CVPR_2024_paper.html
代码地址: https://zhao-yian.github.io/RTDETR

动机

现状

  • YOLO系列因其在速度和准确性之间的合理权衡而成为最流行的实时目标检测框架。
  • 基于端到端Transformer的检测器(DETR)由于其检测方法而受到学术界的广泛关注。

问题

  • YOLO的速度和准确性受到非极大值抑制(NMS)的负面影响。基于Transformer的端到端检测器(DETR)提供了消除NMS的替代方案,但是高昂的计算成本限制了它们的实用性,并阻碍它们充分利用排除NMS的优势。
  • YOLO需要NMS进行后处理,这不仅减慢了推理速度,而且引入了超参数,导致速度和精度不稳定。而且考虑到不同的场景对召回率和准确率的重视程度不同,需要仔细选择合适的NMS阈值,这阻碍了实时检测器的发展。
  • DTER的高计算成本使其无法满足实时检测要求,因此无NMS架构并未表现出推理速度优势。这启发我们探索DTER是否可以扩展到实时场景,并在速度和精度上超越先进的YOLO检测器,消除NMS带来的实时物体检测延迟。

贡献

  • 提出了Real-Time DEtection TRansformer(RT-DETR),第一个实时端到端对象检测器可以解决上述困境。它不仅在速度和精度上优于之前先进的YOLO检测器,而且消除了NMS后处理对实时目标造成的负面影响检测。
  • 定量分析了NMS对YOLO检测器的速度和准确性的影响,并建立了端到端的速度基准来测试实时检测器的端到端推理速度。
  • RT-DETR支持通过解码器层数来灵活调整速度以适应各种场景而无需重新训练。

方法

  • 对于减少不必要的计算冗余问题,作者观察到虽然引入多尺度特征有利于加速训练收敛,但它导致输入编码器的序列长度显著增加。多尺度特征交互造成的高计算成本似的Transformer编码器成为计算瓶颈。因此需要重新设计编码器
  • 之前的工作表明难以优化的对象query阻碍了DETR的性能,并提出了query选择方案来用编码器替换普通的可学习嵌入特征。然而,作者观察到当前的query选择直接采用分类分数进行选择,忽略了检测器需要同时对对象的类别和位置进行建模的事实。这不可避免地会导致选择具有低定位信度的编码器特征作为初始query, 从而导致相当大的不确定性并损害DETR的性能。
  • RT-DTER借鉴先进的DETER, 分两步构建RT-DETR: 首先专注于提高速度的同时保持精度,其实在提高精度的同时保持速度。具体地说,设计了一种高效的混合编码器,通过解耦尺度内交互和跨尺度融合来快速处理多尺度特征,以提高速度。然后,提出不确定性最小query选择,为解码器提供高质量的初始query, 从而提高精度。此外,RT-DETR支持灵活的速度调整,通过调整解码器层数来适应各种场景,无需重新训练。

不同变体的编码器结构:

SSE表示单尺度Transformer编码器。MSE表示多尺度Transformer编码器。CSF表示跨尺度融合。AIFI和CCFF是在RT-DETR的混合编码器中设计的两个模块。
在这里插入图片描述

RT-DETR的结构:
在这里插入图片描述

CCFF的结构:
在这里插入图片描述


http://www.ppmy.cn/embedded/105004.html

相关文章

数字图像处理---【一】

图像数据的表示与基本运算 数字图像与数字图像处理 模拟图像:可以理解为直接观测到的图像,例如生物或机械成像系统中直接获取的图像,没有经过采样和量化数字图像:将模拟图像进行离散化、数字化得到的图像,可以方便计算…

LINUX网络编程:Tcpsocket封装

目录 1.使用Tcp套接字的流程 2.模板方法设计模式 3.socket.hpp 1.搭建抽象类的算法框架 2.具体类算法实现 2.1创建套接字 2.2绑定 2.3套接字设为监听 2.4接收链接 2.5客户端连接服务器 在使用Tcp套接字时,很多的流程都是固定的,将这些固定的流…

ubuntu设置为自己需要的屏幕分辨率

先说一下我处理该问题的大体背景:我是学习Linux的新手,刚学完嵌入式Linux驱动开发相关课程。现在想接着学习一下QT开发。我是在电脑上装了虚拟机之后安装的ubuntu系统。因为换了电脑,所以重新装了ubuntu系统。但是,装完ubuntu系统…

OmniGraffle Pro for Mac 思维导图软件安装

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试安装完成!!! 效果 一、下载软件 下载软件…

ElasticSearch-基础操作

基本概念索引操作 创建索引修改索引配置查询索引删除索引 文档操作 添加(索引)文档:POST和PUT修改文档 全量更新增量修改 使用_update部分更新使用_update_by_query 更新文档 并发场景下修改文档 查询文档 根据id查询文档条件查询 _search RE…

WPF在ListBox内嵌入panel然后数据绑定中加入CheckBox

界面操作为&#xff1a; <ListBox Name"ListBoxMain" Grid.ColumnSpan"2" Grid.Row"1" Grid.Column"1" ><ListBox.ItemsPanel><ItemsPanelTemplate><WrapPanel HorizontalAlignment"Left" /> <!…

8.29 C++

作业 #ifndef CLASS_H #define CLASS_H #include <iostream> using namespace std; class Rect { private:int width;int height; public:void init(int w,int h);void set_w(int w);void set_h(int h);void show(); }; #endif // CLASS_H#include "class.h"v…

C++枚举类(强类型枚举、强枚举)(枚举类与switch语句)

文章目录 C枚举类及其应用深入解析引言枚举类的基本使用传统枚举的限制- 类型安全不足- 作用域污染 枚举类的优势- 强类型- 作用域限定- 指定底层类型 声明和使用枚举类- 基本语法- 示例代码 枚举类的高级应用- 明确指定枚举值- 底层类型的指定- 枚举类与switch语句 枚举类在现…