一句话概括
DEIM 是一个针对 DETR 系列实时目标检测器的训练加速框架,通过Dense O2O(密集一对一匹配)增加监督信号密度,配合MAL(匹配质量感知损失)优化低质量匹配,实现收敛速度翻倍 + 精度提升,且不增加任何推理开销。
视频讲解:DEIM:超越 YOLO,快准双绝!DEIM:让 DETR 告别慢收敛,开启实时检测新纪元_哔哩哔哩_bilibili
DEIM:超越 YOLO,快准双绝!带你了解如何在自己的数据集上面跑DEIM_哔哩哔哩_bilibili
代码:tgf123/YOLOv8_improve
背景:DETR 的收敛困境
DETR 用匈牙利算法做一对一(O2O)匹配,天然无需 NMS,端到端。但 O2O 带来两个致命问题:
| 问题 | 原因 | 后果 |
|---|---|---|
| 监督稀疏 | 每个目标只配一个正样本(O2M 通常配 4-10 个) | 正样本数严重不足,收敛慢,尤其小目标表现差 |
| 低质量匹配 | 300 个随机初始化 query 缺乏空间先验,大量匹配 IoU 极低但置信度偏高 | 模型对低质量框缺乏惩罚,难以自我纠正 |
实验数据:SimOTA(O2M)每图正样本可达 80+,Hungarian(O2O)峰值集中在 <10,极端情况下 O2M 的正样本是 O2O 的10 倍。
DEIM 做了什么:两个核心组件
1. Dense O2O — 密集一对一匹配
核心思想:不改变 O2O 匹配结构,而是增加每张图的目标数量,从而间接增加正样本数。
实现方式:用经典数据增强拼图——
Mosaic:4 张图拼成 1 张 → 目标数 ×4
Mixup:2 张图按随机比例叠加 → 目标数增加
以 Mosaic 为例:原始 1 张图有 1 个目标、1 个正样本;4 张图拼成 1 张后有 4 个目标、4 个正样本。匹配方式不变(仍是一对一),但监督密度接近 O2M。
关键优势:
不需要额外 decoder 或辅助 head(对比 Group DETR 需要 K 组独立 decoder,Co-DETR 需要辅助检测头)
零额外推理开销(Mosaic/Mixup 只在训练时使用)
实现极简,只需在训练 pipeline 中开启标准增强
训练策略:训练前 50% epoch 开启 Dense O2O,后 50% 关闭(回归正常训练),最后 2 个 epoch 关闭所有数据增强。前 4 个 epoch 还有 DataAug Warmup,简化注意力学习。
2. MAL — 匹配质量感知损失(Matchability-Aware Loss)
Dense O2O 增加了正样本,但也引入大量低质量匹配——query 和 GT 的 IoU 很低(比如 0.05),但分类置信度却很高(比如 0.9)。模型在"我很有信心,但我框歪了"的状态下缺乏纠正信号。
现有损失函数的问题:
Focal Loss:只看置信度,完全不管框的质量。置信度 0.9 + IoU 0.05 和置信度 0.9 + IoU 0.95,损失一样。
VFL:引入了 IoU 作为目标标签,比 FL 进了一步,但对低质量匹配几乎无感——当 IoU=0.05、置信度=0.9 时,VFL 的损失值极小且几乎不变(loss landscape 接近水平面),等于放任不管。
所以 MAL 要解决的核心问题是:让损失函数对低质量匹配产生足够强的梯度信号,同时不破坏高质量匹配的优化效果。
MAL 公式:
p:分类置信度;q:预测框与GT的IoU;γ:超参数(最优1.5)。
固定 p=0.9,γ=1.5:
目标标签 + 两项拆解
MAL 正样本:-q^γ · log(p) - (1 - q^γ) · log(1-p)
第一项
-q^γ · log(p):惩罚"置信度不够高",目标标签越大 → 惩罚越重 (term1)第二项
-(1 - q^γ) · log(1-p):惩罚"置信度不该高却高",目标标签越小 → 这项越大 → 惩罚越重(term2)
| 场景 | term1 做什么 | term2 做什么 | 净效果 |
|---|---|---|---|
| IoU 高 + 置信度高 | 鼓励维持高置信度 | 几乎不干预 | 保持现状,很好 |
| IoU 高 + 置信度低 | 推高置信度 | 不管 | 纠正:好框该自信 |
| IoU 低 + 置信度高 | 不管 | 重罚,压低置信度 | 纠正:歪框别自信 |
| IoU 低 + 置信度低 | 不管 | 鼓励保持低置信度 | 保持现状,正确 |
低质量匹配(IoU=0.05,q^1.5 = 0.0112)
| p | VFL term1:q²·log(p) | MAL term1 :q^1.5·log(p) | VFL term2 :q(1-q)·log(1-p) | MAL term2 :-(1-q^1.5)·log(1-p) | VFL total | MAL total | VFL Δ | MAL Δ | Δ比 |
|---|---|---|---|---|---|---|---|---|---|
| 0.1 | 0.0058 | 0.0257 | 0.0050 | 0.1042 | 0.0108 | 0.1299 | — | — | — |
| 0.3 | 0.0030 | 0.0135 | 0.0169 | 0.3527 | 0.0200 | 0.3661 | +0.0092 | +0.2362 | 25.7× |
| 0.5 | 0.0017 | 0.0077 | 0.0329 | 0.6854 | 0.0347 | 0.6931 | +0.0147 | +0.3270 | 22.2× |
| 0.7 | 0.0009 | 0.0040 | 0.0572 | 1.1905 | 0.0581 | 1.1945 | +0.0234 | +0.5014 | 21.4× |
| 0.9 | 0.0003 | 0.0012 | 0.1094 | 2.2768 | 0.1096 | 2.2780 | +0.0516 | +1.0835 | 21.0× |
高质量匹配(IoU=0.95,q^1.5 = 0.9259)
| p | VFL term1 -q²·log(p) | MAL term1 -q^1.5·log(p) | VFL term2 -q(1-q)·log(1-p) | MAL term2 -(1-q^1.5)·log(1-p) | VFL total | MAL total | VFL Δ | MAL Δ | Δ比 |
|---|---|---|---|---|---|---|---|---|---|
| 0.1 | 2.0781 | 2.1321 | 0.0050 | 0.0078 | 2.0831 | 2.1399 | — | — | — |
| 0.3 | 1.0866 | 1.1148 | 0.0169 | 0.0264 | 1.1035 | 1.1412 | -0.9796 | -0.9986 | 1.0× |
| 0.5 | 0.6256 | 0.6418 | 0.0329 | 0.0513 | 0.6585 | 0.6931 | -0.4450 | -0.4481 | 1.0× |
| 0.7 | 0.3219 | 0.3303 | 0.0572 | 0.0892 | 0.3791 | 0.4194 | -0.2794 | -0.2737 | 1.0× |
| 0.9 | 0.0951 | 0.0976 | 0.1094 | 0.1705 | 0.2045 | 0.2681 | -0.1746 | -0.1513 | 0.9× |