当前位置: 首页 > article >正文

目标检测 RT-DETR(2023)详细解读

文章目录

    • 主干网络:
    • Encoder:
    • 不确定性最小Query选择
    • Decoder网络:

将DETR扩展到实时场景,提高了模型的检测速度。网络架构分为三部分组成:主干网络、混合编码器、带有辅助预测头的变换器编码器。具体来说,先利用主干网络的最后三个阶段的输出特征 {S3, S4,S5} 作为编码器的输入。混合编码器通过内尺度交互(intra-scaleinteraction)和跨尺度融合(cross-scale fusion)将多尺度特征转换成一系列图像特征。随后,采用loU感知查询选择(loU-aware query selection)从编码器输出序列中选择一定数量的图像特征,作为解码器的输入(初始对象查询)。最后,带有辅助预测头的解码器迭代优化对象查询,以生成类别和方框。解码器采用的是DINO的解码器结构,由6层dcoder layer组成,每层decoder layer包含self-attention和cross attention两部分。

主干网络:

对于主干网络,RT-DETR采用CNN网络,如流行的ResNet系列,或者百度自家研发的HGNet。当然也可以采用如Vit系列的主干网络,虽然精度可能更高,但是速度不行CNN架构无疑是快于ViT架构的。因此,从实时性的角度出发,选择CNN架构来做特征提取还是有助于提高DETR系列的实时性,进而提升实用性——毫无疑问,这是阶段性的措施,不难想象,未来一定会有新架构全面——不论是性能还是推理速度——取代CNN架构。

和以往的检测器一样,RT-DETR也是从主干网络中抽取三个尺度的输出,其输出步长分别为8、16和32(输出步长output stride通常指的是网络中特征图的空间尺寸相对于输入图像的缩小比例)

Encoder:

对于颈部网络,RT-DETR采用了一层Transformer的Encoder,只处理主干网络输出的 S5 特征,即AIFI(Attention-based Intra-scale Feature Interaction)模块。

首先,我们将二维的S5 特征拉成向量,然后交给AIFI模块处理,其数学过程就是多头自注意力与FFN,随后,我们再将输出调整回二维,记作 F5 ,以便去完成后续的所谓的“跨尺度特征融合。

之所以RT-DETR的AIFI只处理最后的S5 特征,是出于两点考虑:

  1. 一方面,以往的DETR,如Deformable DETR是将多尺度的特征展平成序列( RB×C×H×W→RB×N×C ),然后拼接到一起,构成一个序列很长的向量,随后再交给核心为self attention技术的Transformer encoder去做多尺度之间的特征交互,但这无疑会造成巨大的计算资源的消耗,毕竟self attention技术的平方计算复杂度一直是其广受诟病的缺陷之一;
  2. 另一方面,RT-DETR认为相较于较浅的S3 特征和S4 特征,S5 特征拥有更深、更高级、更丰富的语义特征,而self attention机制可能更关注特征的语义性,而非空间局部细节等,因此,作者团队认为不必让多尺度特征都放到一个篮子中去。

综上,作者团队认为只需将Encoder作用在空间尺寸不太大,信息语义程度有很高的S5 特征上即可,以此来平衡性能和速度——既可以大幅度地减小计算量、提高计算速度,又不会损伤到模型的性能。作者团队设计了若干对照组验证了这一点。

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

在这里插入图片描述

不确定性最小Query选择

Uncertainty-minimal Query Selection:

关于 Query Selection(查询向量选择),大家应该并不陌生,这个方法可谓在DETR领域大杀四方,如DAB-DETR对查询向量进行重构理解,将其解释为Anchor,DN-DETR通过查询降噪来应对匈牙利匹配的二义性所导致的训练时间长的问题,DINO提出从Encoder中选择Top-k特征进行学习等一系列方法,这都无疑向我们证明,查询向量很重要,选择好的Query能够让我们事半功倍。

在RT-DETR中,Query selection 的作用是从 Encoder 输出的特征序列中选择固定数量的特征作为 object queries ,其经过 Decoder 后由预测头映射为置信度和边界框。

DETR中的对象查询是一组可学习的嵌入,由解码器优化并由预测头映射到分类分数和边界框。然而,这些对象查询难以解释和优化,因为它们没有明确的物理含义。后续工作改进了对象查询的初始化,并将其扩展到内容查询和位置查询(锚点)。其中,提出了查询选择方案,它们共同的特点是利用分类分数从编码器中选择排名靠前的K个特征来初始化对象查询(或仅位置查询)。然而,由于分类分数和位置置信度的分布不一致,一些预测框虽有高分类分数,但与真实框(GT)不接近,这导致选择了分类分数高但loU分数低的框,而丢弃了分类分数低但loU分数高的框。这降低了检测器的性能。为了解决这个问题,我们提出了loU感知查询选择,通过在训练期间对模型施加约束,使其对loU分数高的特征产生高分类分数,对loU分数低的特征产生低分类分数。因此,模型根据分类分数选择的排名靠前的K个编码器特征的预测框,既有高分类分数又有高loU分数。我们重新制定了检测器的优化目标如下:

在这里插入图片描述

之所以使用IoU软标签,是因为按照以往的one-hot方式,完全有可能出现“当定位还不够准确的时候,类别就已经先学好了”的“未对齐”的情况,毕竟类别的标签非0即1。但如果将IoU作为类别的标签,那么类别的学习就要受到回归的调制,只有当回归学得也足够好的时候,类别才会学得足够好,否则,类别不会过快地先学得比回归好,因此后者显式地制约着前者。在使用了这个技巧后,显然训练过程中,类别的标签不再是此前的0和1离散值,而是0~1的连续值。

Decoder网络:

RT-DETR选择了基于cross attention的Transformer decoder,并连接若干MLP作为检测头,因此,RT-DETR无疑是DETR架构。具体来说,RT-DETR选择DINO的decoder,使用了具体线性复杂度的deformable attention,同时,在训练阶段,使用到了DINO的“去噪思想”来提升双边匹配的样本质量,加快训练的收敛速度。整体来看,RT-DETR的检测头几乎就是把DINO的照搬了过来,当然,其中的一些边边角角的操作给抹掉了,尽可能达到“精简”的目的。

部分图片截取自b站 Enzo_Mi

相关文章:

目标检测 RT-DETR(2023)详细解读

文章目录 主干网络:Encoder:不确定性最小Query选择Decoder网络: 将DETR扩展到实时场景,提高了模型的检测速度。网络架构分为三部分组成:主干网络、混合编码器、带有辅助预测头的变换器编码器。具体来说,先利…...

微信小程序 隐私协议弹窗授权

开发微信小程序的第一步往往是隐私协议授权,尤其是在涉及用户隐私数据时,必须确保用户明确知晓并同意相关隐私政策。我们才可以开发后续的小程序内容。友友们在按照文档开发时可能会遇到一些问题,我把所有的授权方法和可能遇到的问题都整理出…...

题目 3325: 蓝桥杯2025年第十六届省赛真题-2025 图形

题目 3325: 蓝桥杯2025年第十六届省赛真题-2025 图形 时间限制: 2s 内存限制: 192MB 提交: 494 解决: 206 题目描述 小蓝要画一个 2025 图形。图形的形状为一个 h w 的矩形,其中 h 表示图形的高,w 表示图形的宽。当 h 5,w 10 时,图形如下所…...

金众诚业财一体化解决方案如何提升项目盈利能力?

在工程项目管理领域,复杂的全生命周期管理、成本控制的精准性以及业务与财务的高效协同,是决定项目盈利能力的核心要素。随着数字化转型的深入,传统的项目管理方式已难以满足企业对效率、透明度和盈利能力的需求。基于金蝶云星空平台打造的金…...

bitbar环境搭建(ruby 2.4 + rails 5.0.2)

此博客为武汉大学WA学院网络安全课程,理论课大作业Web环境搭建。 博主搭了2天!!!血泪教训是还是不能太相信ppt上的教程。 一开始尝试了ppt上的教程,然后又转而寻找网络资源 cs155源代码和docker配置,做到…...

从零起步搭建基于华为云构建碳排放设备管理系统的产品设计

目录 🌿 华为云 IoT:轻松上手碳排放设备管理系统搭建 🌍 逐步搭建搭建规划 🚀 一、系统蓝图:5大核心模块,循序渐进 1️⃣ 设备管理与数据采集层 2️⃣ 数据传输与协议转换层 3️⃣ 数据处理与分析层…...

LabVIEW中EtherCAT从站拓扑离线创建及信息查询

该 VI 主要用于演示如何离线创建 EtherCAT 从站拓扑结构,并查询从站相关信息。EtherCAT(以太网控制自动化技术)是基于以太网的实时工业通信协议,凭借其高速、高效的特性在自动化领域广泛应用。与其他常见工业通讯协议相比&#xf…...

SpringBoot-11-基于注解和XML方式的SpringBoot应用场景对比

文章目录 1 基于注解的方式1.1 @Mapper1.2 @select1.3 @insert1.4 @update1.5 @delete2 基于XML的方式2.1 namespace2.2 resultMap2.3 select2.4 insert2.5 update2.6 delete3 service和controller3.1 service3.2 controller4 注解和xml的选择如果SQL简单且项目规模较小,推荐使…...

Flutter 3.32 新特性

2天前,Flutter发布了最新版本3.32,我们来一起看下29到32有哪些变化。 简介 欢迎来到Flutter 3.32!此版本包含了旨在加速开发和增强应用程序的功能。准备好在网络上进行热加载,令人惊叹的原生保真Cupertino,以及与Fir…...

前端面试热门知识点总结

URL从输入到页面展示的过程 版本1 1.用户在浏览器的地址栏输入访问的URL地址。浏览器会先根据这个URL查看浏览器缓存-系统缓存-路由器缓存,若缓存中有,直接跳到第6步操作,若没有,则按照下面的步骤进行操作。 2.浏览器根据输入的UR…...

windows和mac安装虚拟机-详细教程

简介 虚拟机:Virtual Machine,虚拟化技术的一种,通过软件模拟的、具有完整硬件功能的、运行在一个完全隔离的环境中的计算机。 在学习linux系统的时候,需要安装虚拟机,在虚拟机上来运行操作系统,因为我使…...

【Hive 开发进阶】窗口函数深度解析:OVER/NTILE/RANK 实战案例与行转列高级技巧

一、窗口函数 OVER 详解 窗口函数用于在分组内进行数据排名、聚合计算等操作,语法格式: 函数名() over([partition by 分组字段] [order by 排序字段] [window子句])案例:员工信息与部门平均工资 create table emp (id int,dept string,sa…...

在STM32上配置图像处理库

在STM32上配置并使用简单的图像滤波库(以实现均值滤波为例,不依赖复杂的大型图像处理库,方便理解和在资源有限的STM32上运行)为例,给出代码示例,使用STM32CubeIDE开发环境和HAL库,假设已经初始化好了相关GPIO和DMA(如果有图像数据传输需求),并且图像数据存储在一个二…...

【C++】vector容器实现

目录 一、vector的成员变量 二、vector手动实现 (1)构造 (2)析构 (3)尾插 (4)扩容 (5)[ ]运算符重载 5.1 迭代器的实现: (6&…...

RocketMQ 深度解析:消息中间件核心原理与实践指南

一、RocketMQ 概述 1.1 什么是 RocketMQ RocketMQ 是阿里巴巴开源的一款分布式消息中间件,后捐赠给 Apache 基金会成为顶级项目。它具有低延迟、高并发、高可用、高可靠等特点,广泛应用于订单交易、消息推送、流计算、IoT 等场景。 1.2 核心特性 高吞…...

使用Docker Compose部署Dify

目录 1. 克隆项目代码2. 准备配置文件3. 配置环境变量4. 启动服务5. 验证部署6. 访问服务注意事项 1. 克隆项目代码 首先,克隆Dify项目的1.4.0版本: git clone https://github.com/langgenius/dify.git --branch 1.4.02. 准备配置文件 进入docker目录…...

基于 Vue3 与 exceljs 实现自定义导出 Excel 模板

在开发中,我们需要常常为用户提供更多的数据录入方式,Excel 模板导出与导入是一个常见的功能点。本文将介绍如何使用 Vue3、exceljs 和 file-saver 实现一个自定义导出 Excel 模板,并在特定列添加下拉框选择的数据验证功能。 技术选型 excelj…...

杰发科技AC7840——CSE硬件加密模块使用(1)

1. 简介 2. 功能概述 3. 简单的代码分析 测试第二个代码例程 初始化随机数 这里的CSE_CMD_RND在FuncID中体现了 CSE_SECRET_KEY在17个用户KEY中体现 最后的读取RNG值,可以看出计算结果在PRAM中。 总的来看 和示例说明一样,CSE 初次使用,添加…...

前端地图数据格式标准及应用

前端地图数据格式标准及应用 坐标系EPSGgeojson标准格式基于OGC标准的地图服务shapefile文件3D模型数据常见地图框架 坐标系EPSG EPSG(European Petroleum Survey Group)是一个国际组织,负责维护和管理地理坐标系统和投影系统的标准化编码 E…...

threejs几何体BufferGeometry顶点

1. 几何体顶点位置数据和点模型 本章节主要目的是给大家讲解几何体geometry的顶点概念,相对偏底层一些,不过掌握以后,你更容易深入理解Threejs的几何体和模型对象。 缓冲类型几何体BufferGeometry threejs的长方体BoxGeometry、球体SphereGeometry等几…...

向量数据库选型实战指南:Milvus架构深度解析与技术对比

导读:随着大语言模型和AI应用的快速普及,传统数据库在处理高维向量数据时面临的性能瓶颈日益凸显。当文档经过嵌入模型处理生成768到1536维的向量后,传统B-Tree索引的检索效率会出现显著下降,而现代应用对毫秒级响应的严苛要求使得…...

java方法重写学习笔记

方法重写介绍 子类和父类有两个返回值,参数,名称都一样的方法, 子类的方法会覆盖父类的方法。 调用 public class Overide01 {public static void main(String[] args) {Dog dog new Dog();dog.cry();} }Animal类 public class Animal {…...

解决WPF短暂的白色闪烁(白色闪屏)

在 WPF 应用程序启动时出现 短暂的白色闪烁(白色闪屏),通常是由于以下原因导致的: 主要原因 WPF 默认窗口背景是白色,在加载 UI 之前会短暂显示白色背景。 解决方案 设置窗口背景为透明或黑色(推荐&…...

如何在Java中处理PDF文档(教程)

在开发文档管理系统、自动化工具或商业应用程序时,Java开发者常需处理PDF文档的编辑需求。无论是添加页面、调整内容尺寸、插入水印还是添加注释,选择一套可靠易用的Java PDF开发工具包至关重要。 JPedal(Java PDF开发工具包)的新…...

TensorBoard安装与基本操作指南(PyTorch)

文章目录 什么是TensorBoard?TensorBoardX与TensorBoard的依赖关系易混关系辨析Pytorch安装TensorBoard并验证1. TensorBoard安装和访问2. TensorBoard主要界面介绍实用技巧 什么是TensorBoard? TensorBoard是TensorFlow生态系统中的一款强大的可视化工…...

基于PyTorch的残差网络图像分类实现指南

以下是一份超过6000字的详细技术文档,介绍如何在Python环境下使用PyTorch框架实现ResNet进行图像分类任务,并部署在服务器环境运行。内容包含完整代码实现、原理分析和工程实践细节。 基于PyTorch的残差网络图像分类实现指南 目录 残差网络理论基础服务…...

2025/5/25 学习日记 linux进阶命令学习

tree:以树状结构显示目录下的文件和子目录,方便直观查看文件系统结构。 -d:仅显示目录,不显示文件。-L [层数]:限制显示的目录层级(如 -L 2 表示显示当前目录下 2 层子目录)。-h:以人类可读的格…...

【MPC控制 - 从ACC到自动驾驶】4 MPC的“实战演练”:ACC Simulink仿真与结果深度解读

【MPC控制 - 从ACC到自动驾驶】MPC的“实战演练”:ACC Simulink仿真与结果深度解读 在过去的几天里,我们一起: Day 1: 认识了ACC这位聪明的“跟车小能手”和MPC这位“深谋远虑的棋手”。Day 2: 给汽车“画了像”,建立了它的纵向…...

【时时三省】Python 语言----牛客网刷题笔记

目录 1,常用函数 1,input() 2,map() 3,split() 4,range() 5, 切片 6,列表推导式 山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 1,常用函数 1,input() 该函数遇到 换行停止接收,返回类型为字符串 2,map() 该函数出镜率较高,目的是将一个可迭…...

OPENEULER搭建私有云存储服务器

一、关闭防火墙和selinux 二、下载相关软件 下载nginx,mariadb、php、nextcloud 下载nextcloud: sudo wget https://download.nextcloud.com/server/releases/nextcloud-30.0.1.zip sudo unzip nextcloud-30.0.1.zip -d /var/www/html/ sudo chown -R…...