超越DFINE最新目标检测SOTA模型DEIM

代码地址:https://github.com/ShihuaHuang95/DEIM

论文地址:DEIM: DETR with Improved Matching for Fast Convergence

论文中文版:DEIM: 改进匹配的 DETR 以实现快速收敛

以下是文章的主要贡献和发现:

DEIM框架:提出了DEIM,这是一个简单且灵活的训练框架,用于加速实时目标检测模型的收敛。

Dense O2O匹配:通过在训练图像中增加目标数量,DEIM在保持一对一匹配结构的同时,增加了正样本的数量,从而提供了更密集的监督信号,加速了模型的学习。

Matchability-Aware Loss(MAL):提出了一种新的损失函数MAL,它根据匹配质量对损失进行缩放,优化了不同质量水平上的匹配,特别是在低质量匹配上,提高了有限正样本的效用。

实验验证:在COCO数据集上进行的广泛实验验证了DEIM的有效性。与RT-DETR和D-FINE集成时,DEIM在减少训练时间的同时提高了性能。特别是与RT-DETRv2集成时,DEIM在NVIDIA 4090 GPU上单天训练就达到了53.2%的平均精度(AP)。

性能提升:DEIM训练的实时模型在没有额外数据的情况下,超越了领先的实时目标检测器。例如,DEIM-D-FINE-L和DEIM-D-FINE-X在NVIDIA T4 GPU上分别以124 FPS和78 FPS的速度达到了54.7%和56.5%的AP。

在这里插入图片描述

摘要

DEIM 通过采用密集的一对一(Dense O2O)匹配策略和提出一种新颖的损失函数 Matchability-Aware Loss (MAL),来增加每张图片中的正样本数量,优化不同质量水平的匹配效果。
在 COCO 数据集上的广泛实验验证了 DEIM 的有效性。与 RT-DETR 和 D-FINE 集成时,DEIM 能显著提升性能并减少50%的训练时间。
搭配 RT-DETRv2 使用时,DEIM 在 NVIDIA 4090 GPU 上仅用一天训练就达到了 53.2% AP。此外,DEIM 训练的实时模型在 NVIDIA T4 GPU 上达到了 54.7% 和 56.5% AP,性能超过了现有的实时目标检测器。

相关工作

目标检测与Transformer(DETR)

DETR基础:DETR(Detection Transformer)是一种基于Transformer的端到端目标检测框架,它通过使用匈牙利算法进行一对一(O2O)匹配,消除了对手工设计的非极大值抑制(NMS)的需求。DETR利用多头注意力机制捕捉全局上下文信息,从而提高定位和分类的准确性。

DETR的挑战:尽管DETR在目标检测领域显示出潜力,但它面临的主要挑战之一是收敛速度慢。这主要是因为O2O匹配机制限制了每个目标只有一个正样本,导致正样本稀疏,影响了模型的学习效率。

增加正样本数量

O2O与O2M:传统的目标检测方法,如YOLO系列,采用一对多(O2M)分配策略,为每个目标分配多个锚点,从而提供密集的监督信号,加速了模型的收敛并提高了性能。然而,这会导致每个目标产生多个重叠的边界框,需要NMS来移除冗余,引入了延迟和不稳定性。

在O2O框架内增加监督:一些研究探索了在O2O框架内增加监督的方法。例如,Group DETR使用多个查询组,每组独立进行O2O匹配,从而为每个目标分配多个正样本。Co-DETR提出了一种协作混合分配方案,通过辅助头与O2M标签分配结合,增强了编码器表示。

优化低质量匹配

查询初始化:DETR使用少量(100或300)随机初始化的查询,这些查询缺乏与目标的空间对齐,导致训练中存在大量低质量匹配。为了解决这个问题,一些方法引入了先验知识到查询初始化中,例如anchor queries、DAB-DETR、DN-DETR等。

损失函数的改进:现有的损失函数,如Varifocal Loss(VFL),主要针对高IoU的匹配进行优化,对低IoU的匹配关注不足。VFL主要针对高IoU匹配进行惩罚,对低IoU匹配的优化不足,因为它们的损失值很小。

减少计算成本

高效的注意力机制:为了提高效率和促进与多尺度特征的交互,开发了几种先进的注意力机制,如可变形注意力、多尺度可变形注意力、动态注意力和级联窗口注意力。

高效的编码器:例如,Lite DETR引入了一个编码器块,该块在高级和低级特征之间交替更新,而RT-DETR在其编码器中结合了CNN和自注意力,显著减少了资源消耗。在这里插入图片描述

DEIM优化

提出的DEIM(Detection with Improved Matching)框架主要做了以下优化:

Dense O2O Matching(密集一对一匹配)

传统的DETR模型采用一对一(O2O)匹配策略,每个目标只与一个预测框匹配,这限制了正样本的数量,导致监督稀疏。
DEIM通过增加每张图片中的目标数量来增加正样本数量,使用如mosaic和mixup等数据增强技术,生成额外的正样本,从而提供更密集的监督,加速模型收敛。

Matchability-Aware Loss (MAL)(匹配能力感知损失)

为了处理密集一对一匹配引入的大量低质量匹配,DEIM提出了MAL,这是一种新的损失函数,它根据匹配质量(IoU)和分类置信度来调整损失,优化不同质量水平的匹配。
MAL在处理低质量匹配时,相比传统的Varifocal Loss (VFL),能够更有效地提升模型性能,特别是在训练的早期阶段。
DEIM显著加快了RT-DETRv2和D-FINE模型的收敛速度,与RT-DETRv2搭配使用时,仅需一半的训练周期就能达到相似的性能。

实验结果

在 MS-COCO 数据集上进行训练和验证,展示了 DEIM 在不同模型和数据集上的性能提升。
与现有的实时目标检测器(包括基于 YOLO 和 DETR 的模型)相比,DEIM 在训练成本、推理延迟和检测精度方面均表现出色。在这里插入图片描述

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

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

相关文章

在python中使用布尔逻辑

布尔是python中常见类型。它的值只能是两项内容之一:true或false. 编写"if"语句 若要在python中表达条件逻辑,可以使用if语句。——编写If语句离不开逻辑运算符:等于、不等于、小于、大于或等于、大于和大于或等于。 在python中…

位运算的总结--奇思妙解

目录 前言 先回顾常用的位运算 1:给一个数 n ,确定它的二进制表示中的第x位是0 还是 1 2:将一个数 n 的二进制表示的第x 位修改成 1 3:将一个数 n 的二进制表示的第 x位修改成 0 4:与位图联系 5:提取一…

语音识别flask接口开发

要开发一个flask语音识别接口,首先要解决语音文件在网络中的传输问题,然后选识别算法进行识别 文章目录 1、以二进制文件流方式上次语音2、网页端长连接流式上传语音文件3、语音识别接口 1、以二进制文件流方式上次语音 python服务端代码,以…

Kafka怎么发送JAVA对象并在消费者端解析出JAVA对象--示例

1、在pom.xml中加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-kafka</artifactId><version>3.1.6</version></dependency> 2、配置application.yml 加入Kafk…

JS中的原型链与继承

原型链的类比 JS中原型链&#xff0c;本质上就是对象之间的关系&#xff0c;通过protoype和[[Prototype]]属性建立起来的连接。这种链条是动态的&#xff0c;可以随时变更。 这个就跟C/C中通过指针建立的关系很相似&#xff0c;比如&#xff0c;通过指针建立一个链表&#xf…

hive分区分桶、数据倾斜总结

一、hive的基本概念 hive是一个构建在hadoop上的数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表并提供数据查询功能 二、hive的特点 &#xff08;1&#xff09;数据是存储在hdfs上 &#xff08;2&#xff09;底层是将sql转换为MapReduce任务进行计算 …

CSS学习记录04

CSS边框 CSS border 属性指定元素边框的样式、宽度和颜色。border-style 属性指定要显示的边框类型。dotted - 定义点线边框dashed - 定义虚线边框solid - 定义实线边框double - 定义双边框groove - 定义3D坡口边框&#xff0c;效果取决于border-color值ridge - 定义3D脊线边框…

一文了解模式识别顶会ICPR 2024的研究热点与最新趋势

简介 对模式识别研究领域前沿方向的跟踪是提高科研能力和制定科研战略的关键。本文通过图文并茂的方式介绍了ICPR 2024的研究热点与最新趋势&#xff0c;帮助读者了解和跟踪模式识别的前沿研究方向。本推文的作者是黄星宇&#xff0c;审校为邱雪和许东舟。 一、会议介绍 ICPR…

服务器挖矿

文章目录 一、确定挖矿进程并停止二、查找并清除挖矿相关文件三、检查并修复系统漏洞四、加强安全防护 一、确定挖矿进程并停止 查找挖矿进程 在Linux系统中&#xff0c;可以使用命令如top或htop来查看系统资源占用情况。挖矿程序通常会占用大量的CPU或GPU资源。例如&#xff…

福昕PDF低代码平台

福昕PDF低代码平台简介 福昕PDF 低代码平台是一款创新的工具&#xff0c;旨在简化PDF处理和管理的流程。通过这个平台&#xff0c;用户可以通过简单的拖拽界面上的按钮&#xff0c;轻松完成对Cloud API的调用工作流&#xff0c;而无需编写复杂的代码。这使得即使没有编程经验的…

oracle 11g中如何快速设置表分区的自动增加

在很多业务系统中&#xff0c;一些大表一般通过分区表的形式来实现数据的分离管理&#xff0c;进而加快数据查询的速度。分区表运维管理的时候&#xff0c;由于人为操作容易忘记添加分区&#xff0c;导致业务数据写入报错。所以我们一般通过配置脚本或者利用oracle内置功能实现…

Antd X : 迅速搭建 AI 页面的解决方案

前言 随着 AI 热度的水涨船高&#xff0c;越来越多的 AI 应用如井喷式爆发&#xff0c;那么如何迅速搭建一个 AI 应用的美观高质量 Web 前端页面呢&#xff0c; Antd 团队给出了一个解决方案。 X Ant DesIgn XAI 体验新秩序Ant Design 团队匠心呈现 RICH 设计范式&#xff0…

SD Express 卡漏洞导致笔记本电脑和游戏机遭受内存攻击

Positive Technologies 最近发布的一份报告揭示了一个名为 DaMAgeCard 的新漏洞&#xff0c;攻击者可以利用该漏洞利用 SD Express 内存卡直接访问系统内存。 该漏洞利用了 SD Express 中引入的直接内存访问 (DMA) 功能来加速数据传输速度&#xff0c;但也为对支持该标准的设备…

Java的Stream流:文件处理、排序与串并行流的全面指南

Java的Stream流&#xff1a;文件处理、排序与串并行流的全面指南 Java 8 引入了 Stream API&#xff0c;这是一个用于处理集合数据的强大工具&#xff0c;它提供了一种声明式的方式来进行聚合操作。Stream 不是一个数据结构&#xff0c;而是一种对数据进行操作的抽象&#xff…

运维工程师.云计算工程师指令集锦

LINUX简介与安装 一、Linux基础认知知识&#xff1a; 多使用者、多任务、多层次 Linux&#xff1a;开源、免费、安全、稳定 Linux中一切皆文件 Linux严格区分大小写 Linux文件命名规则&#xff1a; ①除了/之外&#xff0c;所有字符都合法&#xff1b; ②有些字符最好不用&…

波特图方法

在电路设计中&#xff0c;波特图为最常用的稳定性余量判断方法&#xff0c;波特图的根源是如何来的&#xff0c;却鲜有人知。 本章节串联了奈奎斯特和波特图的渊源&#xff0c;给出了其对应关系和波特图相应的稳定性余量。 理论贯通&#xff0c;不在于精确绘…

React 组件中 State 的定义、使用及正确更新方式

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;React篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容React 组件中 State 的定义、使用及正确更新方式 前言 在 React 应用开发中&#xff0c;state …

C++(十二)

前言&#xff1a; 本文将进一步讲解C中&#xff0c;条件判断语句以及它是如何运行的以及内部逻辑。 一&#xff0c;if-else,if-else语句。 在if语句中&#xff0c;只能判断两个条件的变量&#xff0c;若想实现判断两个以上条件的变体&#xff0c;就需要使用if-else,if-else语…

查询产品所涉及的表有(product、product_admin_mapping)

文章目录 1、ProductController2、AdminCommonService3、ProductApiService4、ProductCommonService5、ProductSqlService1. 完整SQL分析可选部分&#xff08;条件筛选&#xff09;&#xff1a; 2. 涉及的表3. 总结4. 功能概述 查询指定管理员下所有产品所涉及的表&#xff1f;…

Java应用服务器JVM配置与优化全面指南

Java应用服务器JVM配置与优化全面指南 1. JVM基础知识 Java虚拟机&#xff08;JVM&#xff09;是Java平台的核心&#xff0c;负责执行Java字节码。理解JVM的基本组成和工作原理是进行有效优化的基础。 1.1 JVM主要组件 类加载器&#xff1a;负责加载、链接和初始化类文件。…