目标检测SOTA模型DEIM详解

 前言

超越D-FINE和RT-DETRv3的最新模型DEIM,基于RT-DETR和D-FINE基线代码进行创新,提出了两个创新点。从论文中的效果图中可观察到,模型收敛速度更快并且效果更好。(代码也简单,可用于DETR系列实验提点)

论文地址:https://arxiv.org/pdf/2412.04234

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

本文主要分析该文章提出的创新点,及其为什么work。

主要创新点

论文主要提出两个点 Dense O2O 密集一对一匹配和MAL (Matchability Aware Loss)匹配感知损失

1、Dense O2O 密集一对一匹配

为什么需要它:

        DETR系列的一个主要限制是收敛速度较慢,部分原因在于其采用的一对一(O2O)匹配策略,每个目标仅对应一个正样本,导致监督信号稀疏,影响模型的有效学习。

        为解决监督稀缺问题,O2M训练为每个目标引入辅助正样本以增加监督,放宽了O2O匹配的约束。Group DETR通过使用多个具有独立O2O匹配的查询组来实现这一点,但它们也需要额外的解码器,从而增加了计算开销,并存在生成与传统检测器类似的冗余高质量预测的风险。

        所以是否存在一种效果和O2M方式相接近的O2O方式呢?

        刨析问题:如何有效增加正样本数量,从而提供更密集的监督信息?

what:

        上图呈现的是三种匹配方式,作者通过Mosaic 数据增强,将单目标图片拼接成多目标图片,增加匹配数量,实现同一个“目标”多个query匹配,但其本质还是一对一,只是将图片实例复制拼接;

why work:

        以下个人理解:

        1、为什么不直接用copypaste:直接复制GT可能会导致模型过拟合于特定目标,降低泛化能力。而复制整张图片可以保留目标的上下文和背景信息,也不会破环原图的结构。

        2、为什么不直接用O2M,而用Dense O2O?

  • 避免低质量匹配: O2M直接将多个预测框与一个GT匹配,容易引入误匹配。而Dense O2O避免了这个问题,因为每个GT始终只与一个高质量预测框匹配,确保匹配质量稳定。
  • 稳定训练: O2O匹配在目标检测中更稳定,梯度更新更平滑。而O2M虽然速度快,但训练波动较大,容易导致模型不收敛或性能不稳定。
how效果如何:

        作者在coco数据集上进行实验,结果如下:呈正向

2、MAL匹配感知损失

        MAL是对VFL的优化,针对IOU低置信度高的badcase进行优化。它的工作原理较为简单:

what:

        目前RT-DETR中采用的也是VFL,那么先看看VFL是什么,以及它的缺点:

        ​其中q代表IoU,p为预测的置信度,从而导致q过小时,VFL整体则偏小。所以对于 IoU 较低的匹配,损失不会随着置信度增加而增加。

        通过可视化来说,红色框为IOU小但置信度却很高的badcase,我们希望模型给它一个较高的损失,但是从右图中的VFL来看,红星代表框的损失位置,明显不符合预期。

        为了解决这个问题,文中给出了MAL:对比VFL就是将系数q去除

从函数曲线可以看出,在IOU低置信度高时,损失升高,其他部分不变。

代码层面也比较简单:

# VFL中的权重
weight = self.alpha * pred_score.pow(self.gamma) * (1 - target) + target_score


# MAL中的权重
weight = self.mal_alpha * pred_score.pow(self.gamma) * (1 - target) + target

### MAL中当target为1时,weight=1;而VFL中weight=target_score(也就是IOU)
how:

        MAL和VFL在不同case上的loss曲线:

3、消融实验结果:

总结

DEIM这篇文章给出了两个即插即用模块,能够帮助做DETR实验的炼丹师们提点。最后是对比其他SOTA模型的实验效果:

回答: 前端WebSocket的原理是通过在客户端和服务器之间建立一个持久的双向通信连接。首先,客户端通过发送一个HTTP请求到服务器来发起WebSocket握手。这个握手请求中包含一些特殊的HTTP头部,比如Upgrade和Connection等。服务器如果支持WebSocket协议,会响应一个101 Switching Protocols的状态码,表示握手成功。接下来,客户端和服务器之间的连接就变成了WebSocket连接,双方可以直接通过发送WebSocket消息进行实时的双向通信。WebSocket的消息格式是基于帧的,每个消息都由一个或多个帧组成。客户端和服务器可以通过发送不同类型的帧来实现不同的功能,比如发送文本数据、二进制数据等。通过WebSocket,前端可以实现实时的消息推送、实时更新等功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [webSocket详解:技术原理+前后端实现](https://blog.youkuaiyun.com/zhang2312600_a/article/details/127517384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [看完让你彻底理解 WebSocket 原理](https://blog.youkuaiyun.com/asd051377305/article/details/108066378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [一文吃透 WebSocket 原理](https://blog.youkuaiyun.com/sshuai131400/article/details/121339044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crlearning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值