论文学习:RT-DETR

RT-DETR

摘要

  • DETR取得显著性能,但高成本计算使其无法发挥无NMS的优势,无法实际应用。
  • 本文分析了NMS对准确性和速度的负面影响,并建立端到端的速度基准。
  • 第一个实时端到端检测器,高效处理多尺度特征,并提出IoU-aware query selection,向解码器提供了更高质量的初始object queries
  • 可以灵活调整解码器层数来调整推理速度,不需要重新训练。
  • 速度和精度都优于相同规模最先进的YOLO检测器。

介绍

  • 尽管多尺度特征的引入有利于加速训练收敛和提高性能[49],但它也会导致编码器中序列长度的显著增加。
  • 设计了高效的混合编码器来取代原来的transformer编码器。解耦了多尺度特征的尺度内交互和尺度间融合。
  • 解码器的object queries初始化方案对检测性能至关重要,提出了IoU-aware query selection,通过在训练期间提供IOU约束来向解码器提供高质量的初始object queries
  • 可以灵活调整解码器层数来调整推理速度,不需要重新训练。
  • 文章贡献:1.第一个实时端到端对象检测器,速度精度达到SOTA。2.分析了NMS的影响。3.通过调整解码器层数,灵活调整推理速度不需要重新训练。

在这里插入图片描述

相关工作

  • 实时对象检测:YOLO系列为标杆,锚框不再制约YOLO速度,而是NMS。
  • 端到端目标检测:DETR,(收敛慢,查询难优化);deformableDETR,通过提高注意力机制的效率,加速了多尺度特征的训练收敛;Conditional DETR、Anchor DETR 降低了查询的优化难度;DAB-DETR引入4D参考点,并逐层优化预测框;DN-DETR通过引入查询去噪来加速训练收敛。Group-DETR通过引入分组一对多任务来加速训练。DINO建立在以前的工作基础上,取得了最先进的成果。
  • 目标检测的多尺度特征:多尺度特征可以提高性能,尤其对于小物体,FPN在对象检测中广泛使用,引入DETR后提高了性能,但计算成本显著增加;Efficient DETR通过使用密集先验初始化对象查询来减少编码器和解码器层的数量。Sparse DETR选择性地更新期望由解码器引用的编码器令牌,从而减少计算开销。Lite DETR通过以交错方式降低低级别特征的更新频率来提高编码器的效率。这些工作减少了计算成本,但并没有使DETR成为实时检测器

检测器的端到端速度

  • NMS的分析:NMS的执行时间取决于预测框的数量和两个超参数(得分阈值,IOU阈值);文章实验了有锚和无锚,的不同得分阈值下的锚框数量,不同得分阈值和IOU阈值下的AP和NMS耗时。证明了NMS对超参数的敏感性
  • 在这里插入图片描述
  • 建立了统一的推理速度基准后,测试了不同检测器的推理速度,结论为无锚在同等精度上优于基于锚的(会产生更多的预测框),后处理时间名明显减少。
  • 在这里插入图片描述

RT-DETR模型

  • 模型概述:由主干、混合编码器和带辅助预测头的变换解码器组成。

  • 利用骨干{S3,S4,S5}的最后三个阶段的输出特征作为编码器的输入。混合编码器通过尺度内交互(AIFI)和跨尺度融合(CCFM)将多尺度特征转换为一系列图像特征。随后,采用IoU感知查询选择从编码器输出序列中选择固定数量的图像特征,作为解码器的初始对象查询。最后,具有辅助预测头的解码器迭代地优化对象查询以生成框和置信度得分。

  • 在这里插入图片描述

  • 高效混合编码器:优化了Deformable-DETR中多尺度transformer编码器中的计算冗余,连接的多尺度之间进行特征交互是多余的,并设计了ABCDE一系列的编码器变体进行实验验证;证明多尺度特征交互解耦为尺度内交互和跨尺度融合后提高了模型准确性并显著降低了计算成本

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 混合编码器结构: 基于注意力的AIFI和基于CNN的CCFM;AIFI仅在S5上执行尺度交互;CCFM在融合路径中插入了几个由卷积层组成的融合块,融合块将相邻特征合并为一个新特征;

  • 在这里插入图片描述

  • RepBlock是什么?

  • IoU-aware Query Selection:DETR中的object queries ,难以解释和优化;后续工作对其初始化进行改进,增加了内容查询和位置查询。查询选择方案:利用分类得分从编码器中选择前K个特征来初始化object queries,但由于分类分数和位置置信度分布不一致,导致了高分类分数和低IOU分数的框;本文提出的IoU-aware Query Selection,在训练过程中约束模型为具有高IOU分数的特征产生高分类分数,为具有低IOU得分的特征产生低分类分数。因此选出的前K个预测框具有高分类得分和高IOU得分。将IOU分数引入分类分支的目标函数中

  • 有效性分析:通过可视化普通选择(红)和IoU-aware Query Selection(蓝),可以发现蓝的更多且质量更好(靠右上)

  • 在这里插入图片描述

实验

  • 在COCO上进行实验,对比YOLO,SOTA和其他端到端检测器,都有显著提升
  • 混合编码器的消融实验,见ABCDE的对照表,证明了尺度内特征交互,跨尺度特征融合,解耦两者和只对最高S5进行编码的正确性。
  • IoU-aware Query Selection的消融实验:根据分类得分选择前K个编码器特征作为内容查询,并将这些所选特征对应的边界框用作初始位置查询,结果证明可以显著提升高分类和IOU分数的比例
  • 在这里插入图片描述
  • 解码器消融实验:实验了不同层数的RT-DETR的每个解码层的准确率和速度,精度的提升率逐层减少而时间消耗每层不变。
  • 在这里插入图片描述

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

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

相关文章

【云备份】

文章目录 [toc] 1 :peach:云备份的认识:peach:1.1 :apple:功能了解:apple:1.2 :apple:实现目标:apple:1.3 :apple:服务端程序负责功能:apple:1.4 :apple:服务端功能模块划分:apple:1.5 :apple:客户端程序负责功能:apple:1.6 :apple:客户端功能模块划分:apple: 2 :peach:环境搭建…

mac电脑任务管理器 Things3 for Mac中文

Things 3是一款效率软件,可以帮助用户规划一天行程、管理项目,并使使用者按部就班地朝目标迈进。以下是Things 3的主要特点和功能: 待办事项:以“待办事项”为基本组成部分,每一则待办事项都是迈向大成就的一小步。用…

scala入门

视频 scala学习配套视频 资料目录 网盘地址:https://pan.baidu.com/s/1vJzjHhaC1NCcAGry6SLIpg&pwd1706 文档资料下载 第一章Scala的相关概述 第二章变量 第三章运算符 第四章循环 第五章方法 第七章继承、抽象类、匿名类 第八章特质 第九章包、样例…

Redis-双写一致性

双写一致性 双写一致性解决方案延迟双删(有脏数据的风险)分布式锁(强一致性,性能比较低)异步通知(保证数据的最终一致性,高并发情况下会出现短暂的不一致情况) 双写一致性 当修改了数…

Docker镜像管理

Docker 基本管理 Docker 概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。 Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、…

Go 语言内置类型全解析:从布尔到字符串的全维度探究

目录 一、布尔类型定义基础用法声明与初始化逻辑运算 进阶用法条件语句循环结构函数返回值 常见错误与陷阱 二、整数类型定义基础用法声明与初始化运算符位运算 进阶用法数据溢出类型转换类型推断 特殊整数类型runebyte 常见问题和陷阱 三、浮点数类型定义基础用法声明与初始化…

云原生边缘计算KubeEdge安装配置

1. K8S集群部署,可以参考如下博客 请安装k8s集群,centos安装k8s集群 请安装k8s集群,ubuntu安装k8s集群 2.安装kubEedge 2.1 编辑kube-proxy使用ipvs代理 kubectl edit configmaps kube-proxy -n kube-system #修改kube-proxy#大约在40多行…

通过BeanFactotyPostProcessor动态修改@FeignClient的path

最近项目有个需求,要在启动后,动态修改FeignClient的请求路径,网上找到的基本都是在FeignClient里使用${…},通过配置文件来定义Feign的接口路径,这并不能满足我们的需求 由于某些特殊原因,我们的每个接口…

Spring bean定义Spring Bean 的作用域

Spring bean定义 目录 Spring bean定义 Spring配置元数据 Spring Bean 的作用域 singleton作用域: 原型作用域: 示例: 形成应用程序的骨干是由Spring IoC容器所管理的对象称为bean。bean被实例化,组装,并通过Sprin…

运行pytorch时出现version `CXXABI_1.3.9‘ not found

发现问题:运行bert预测代码时出现如下错误 /envs/py38/lib/python3.8/site-packages/transformers/utils/import_utils.py", line 1184, in _get_module RuntimeError: Failed to import transformers.onnx.config because of the following error (look up …

华为OD机试真题【不含 101 的数】

1、题目描述 【不含 101 的数】 【题目描述】 小明在学习二进制时,发现了一类不含 101的数,也就是: 将数字用二进制表示,不能出现 101 。 现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个不含 101 的数&#…

互联网金融理财知识点简单总结

互联网金融理财知识点总结 互联网金融理财是指通过互联网平台进行资产管理和投资的一种金融方式。它结合了金融、科技和互联网,为投资者提供了更多选择和便捷性。本文将介绍互联网金融理财的关键知识点,包括理财基础、投资产品、风险管理和未来趋势等方…

Spring 体系架构模块和三大核心组件介绍

Spring架构图 模块介绍 1. Spring Core(核心容器):提供了IOC,DI,Bean配置装载创建的核心实现。 spring-core :IOC和DI的基本实现 spring-beans:BeanFactory和Bean的装配管理(BeanFactory) spring-context&#xff1…

Python数据攻略-高级文件操作与Json序列化

当我们谈论数据分析时,第一个想到的可能是CSV或Excel文件,这些都是我们平时最常接触的数据格式。然而,在实际工作中,数据来源可能更加多样,比如网页上的表格、SQL数据库,甚至各种API返回的Json数据。因此,本篇文章的目标是让你掌握如何使用Pandas进行更高级的文件操作。…

【计算机网络】HTTPS协议详解

文章目录 一、HTTPS协议 介绍 1、1 HTTP协议不安全的体现 1、2 什么是 HTTPS协议 二、加密的一些概念 2、1 怎么理解加密 2、2 为什么要加密 2、3 常见的加密方式 2、2、1 对称加密 2、2、2 非对称加密 三、HTTPS协议探究加密过程 3、1 只使用对称加密 3、2 只是用非对称加密 3…

css3实现页面元素抖动效果

html <div id"shake" class"shape">horizontal shake</div>js&#xff08;vue3&#xff09; function shake(elemId) {const elem document.getElementById(elemId)console.log(获取el, elem)if (elem) {elem.classList.add(shake)setTimeou…

【应用层协议】HTTPS的加密流程

文章目录 1. 认识HTTPS2. 密文3. HTTPS加密流程3.1 对称加密3.2 非对称加密3.3 证书 1. 认识HTTPS HTTPS&#xff08;超文本传输协议安全&#xff09;也是一个应用层协议&#xff0c;它是在HTTP协议的基础上引入了一个加密层。 也就是HTTP协议传输文本的方式是明文&#xff0c;…

LeetCode:买卖股票的最佳时机 系列Ⅰ、Ⅱ、Ⅲ、Ⅳ(C++)

目录 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机 II 123. 买卖股票的最佳时机 III 188. 买卖股票的最佳时机 IV 121. 买卖股票的最佳时机 题目描述&#xff1a; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只…

flink选择slot

flink选择slot 在这个类里修改 package org.apache.flink.runtime.resourcemanager.slotmanager.SlotManagerImpl; findMatchingSlot(resourceProfile)&#xff1a;找到满足要求的slot&#xff08;负责从哪个taskmanager中获取slot&#xff09;对应上图第8&#xff0c;9&…

国庆中秋特辑(八)Spring Boot项目如何使用JPA

目录 一、Spring Boot 项目使用 JPA 的步骤二、Spring Boot 项目使用 JPA 注意事项三、Spring Boot 项目使用 JPA 常用语法 Spring Boot项目如何使用JPA&#xff0c;具体如下 一、Spring Boot 项目使用 JPA 的步骤 添加依赖 在项目的 pom.xml 文件中添加 Spring Boot JPA 和数…