目标检测SOTA模型D-FINE详解

前言

超越YOLOv11和RT-DETRv3的最新模型D-FINE,基于RT-DETR基线代码进行优化。从图中可观察到,不论是从推理速度、模型参数量、模型计算量,均超过了主流的目标检测模型。

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

代码地址:https://github.com/Peterande/D-FINE

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

主要创新点

论文主要提出两个点 FDR (Fine-grained Distribution Refinement) 细粒度分布优化和GO-LSD (Global Optimal Localization Self-Distillation)全局最优定位自蒸馏机制

1、FDR细粒度分布优化

what:

D-FINE是在RT-DETR结构的基础上进行优化,FDR(Fine-grained Distribution Refinement)通过细化概率分布的方式逐层优化边界框定位,被集成到RT-DETR框架中,增强对物体边界细致定位能力。

步骤分为以下4部分:

        1、初始解码层:在最初的解码器层Layer1,模型生成初始的边界框坐标预测,并通过FDR模块(D-FINE Head)生成每个边界(上下左右)的概率分布。

        2、逐层细化:在后续的解码器层中,每层都会基于上一层的预测分布进一步优化边界框分布。通过这种逐层迭代,模型在每层都逐渐缩小边界不确定性,以此实现越来越精确的定位。。其中FDR采用残差更新的方式进行细化概率分布。

        假设上一层生成的概率分布为 logits^{l-1}(n),则当前层输出的是残差\Delta logits^{l}(n)。这些残差叠加到上一层的分布上,得到当前层更新的概率分布logits^{l}(n) = logits^{l-1}(n)+\Delta logits^{l}(n)

        通过Softmax将叠加后的分布转换成概率,从而得到新的细化分布。通过这种层层叠加的方式,分布逐步收敛到精确的边界位置。

        3、非均匀加权函数W(n)的应用

        权重函数 W(n)让模型对接近真实位置的偏移值进行更小的调整,而对远离真实位置的边界偏移赋予更大的权重。这种设计可以确保模型在接近目标边界时逐渐细化边界框,而在边界预测有偏差时进行较大调整。

why work:

        目前主流的目标检测都是基于预测框和目标框的IOU以及中心点边距distance来约束,但是这种distance强约束并不适合模糊目标,如遮挡物体(边界线位置是未知的,但回归是已知)。作者提采用概率分布的形式,为了更好地表示边界框预测中的位置不确定性

        传统的边界框回归方法通常直接预测边界框的固定坐标(如 (x,y,w,h)(x, y, w, h)(x,y,w,h) 或边距 (t,b,l,r)(t, b, l, r)(t,b,l,r)),把这些坐标当作确定值(即“确定性”预测)。然而,在实际应用中,物体边界往往并非完全明确,尤其是在以下场景中:

  • 物体边缘模糊或部分遮挡
  • 场景中存在复杂的光影变化
  • 目标和背景之间的界限模糊

        在这种情况下,单一确定的坐标预测无法表示边界的不确定性(它假设每个边界坐标都是完全确定的值,忽略真实标注就带有模糊性),即无法区分预测结果的置信度和精确性。

        概率分布如何解决位置不确定性

        FDR通过预测边界框边缘的概率分布,而不是直接输出固定坐标值,来增强模型对位置不确定性的表达能力。每个边界的概率分布表示预测边界可能落在的范围及其置信度高低,这样做有以下优势:

  • 表达不确定性:通过概率分布,模型可以在一个范围内给出可能的边界位置,从而自然地表示出不确定性。模型不再需要强制预测一个单一确定值,而是可以通过概率峰值和分布形状来表达边界可能的多样性。
  • 逐步细化边界框:通过FDR在每一层对分布的残差更新,模型可以逐层调整边界框,逐步收敛到更精确的位置。这种方法既保证了预测的精度,又能提高模型在复杂场景中的适应性。
  • 抗噪性增强:由于概率分布可以缓解单点预测的波动,模型可以在更多场景下给出更稳定的结果,减少噪声干扰的影响。
how效果如何:

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

2、GO-LSD全局最优定位自蒸馏机制

GO-LSD是一种新颖的自蒸馏方法,通过将深层的精细定位知识传递给浅层,实现全局最优的定位优化。它的工作原理相对来说较为简单:

  • 双向优化:利用最终层输出的精细分布来指导浅层预测,使得浅层能更早调整边界框位置,提升整体预测精度。
  • 解耦权重策略(DDF):GO-LSD对匹配的高IoU和低置信度的预测应用不同权重,以更有效地进行蒸馏,提高了模型的稳定性和性能。

简单来说,GO-LSD将最后一层的结果与浅层计算KL散度(类似计算loss),将深层的准确性传递到浅层,帮助模型在训练过程中尽早学习到更高质量的定位信息,从而加快收敛速度。此方法不仅减少了训练成本,还优化了模型对复杂场景的适应能力,例如多对象密集场景和光线变化条件下的检测。

值得注意的是:为什么使用最后一层的预测结果,不直接使用真实标注?

若直接使用真实标注,浅层的误差会显得更大,模型在学习真实标注时反而容易受到过大偏差的影响,导致收敛更慢或难以优化。而最后一层的预测分布虽然不是完美,但通常更接近浅层能学习到的特征空间,因而是一个更稳定、渐进的优化目标。

总结

D-FINE这篇文章给我提供了很多思路,概率分布和自蒸馏,这些trick都是可以用于模型当中进行尝试,该文章代码开源,可以更深入学习。若需要代码解析,等复现后再更新

D-Fine(Dynamic Fine-grained Instance-aware Segmentation Network)是一种用于细粒度实例分割的深度学习模型。如果你想使用自己的数据集对其进行训练,首先需要完成以下步骤: 1. **数据准备**: - 收集或标注数据:确保你有足够多的包含目标物体的样本,并且对于每个对象,都需要提供精细的实例级别的标签,比如像素级别的掩码信息。 - 数据预处理:按照模型要求的尺寸进行裁剪或标准化,例如D-Fine可能需要固定大小的输入图片。 2. **数据划分**: - 划分训练集、验证集和测试集:通常会保留一部分数据作为未见过的新数据,用于评估模型泛化能力。 3. **构建数据集文件**: - 根据D-Fine的要求创建标注文件,这通常包括图像路径和对应的掩码信息。一些库(如MMDetection)提供了工具帮助组织这种格式的数据。 4. **安装依赖**: - 安装D-Fine相关的Python库,如MMDetection、mmseg等,并配置好PyTorch环境。 5. **加载模型和初始化**: - 加载D-Fine模型,然后进行必要的初始化,设置优化器和损失函数。 6. **训练过程**: - 将数据加载到内存中,通过DataLoader迭代,每次迭代更新模型权重。 - 调整学习率策略,可能需要调整批次大小、训练轮数以及超参数。 7. **监控和评估**: - 训练过程中定期保存模型,以便于后期评估;同时观察验证集上的性能指标(如mIoU),如果性能不佳则调整模型或超参数。 8. **测试与部署**: - 训练完成后,在测试集上运行模型,检查最终性能是否达到预期。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

crlearning

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

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

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

打赏作者

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

抵扣说明:

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

余额充值