要给机器人或车选一个检测器,论文里是一排 COCO AP,名字从 YOLO26、RF-DETR 到 SAM 3。这个数是怎么算出来的?该选哪一类?权重能不能商用?检测分数来自把预测框和真值一对一配对,再在多个 IoU 阈值上平均 precision;2026 年真正的选择,是在要自己标数据、速度快的闭集实时模型,和不用重训、但更慢的开放词表(vocabulary)或可提示模型(如 SAM 3)之间取舍;许可证常常在 AP 之前就替你做了决定。

待审核草稿。 这一篇还没有经过站主审阅,事实、取舍和措辞都可能修改;引用前请回到文中链接的一手资料核对。

检测器输出什么,IoU 怎么算

前置知识是 ViT 和 CLIP:现在的检测器多用 Transformer 骨干,开放词表检测靠图文对齐。

一个检测器对每张图输出一组预测:框 $(x_1,y_1,x_2,y_2)$、类别和分数。实例分割再给每个实例一张掩码,视频模型再给一个跨帧的 ID。框和真值重合得好不好,用 IoU(intersection over union)衡量:

$$ \mathrm{IoU}(A,B)=\frac{|A\cap B|}{|A\cup B|}. $$

例如真值 G1 = (0, 0, 10, 10),预测 P1 = (1, 0, 11, 10):交集是 x 方向 [1, 10]、y 方向 [0, 10],面积 $9\times10=90$;并集 $100+100-90=110$;IoU $=0.818$。

手算 AP:3 个真值、5 个预测

教学数据:一张图、一个类别、3 个真值,模型给了 5 个预测。

框 坐标 (x1, y1, x2, y2) 分数 和哪个真值重叠最多 IoU
G1 (0, 0, 10, 10) 真值 — —
G2 (20, 0, 30, 10) 真值 — —
G3 (40, 0, 50, 10) 真值 — —
P1 (1, 0, 11, 10) 0.95 G1 0.818
P2 (0, 1, 10, 11) 0.90 G1 0.818
P3 (22, 1, 32, 11) 0.80 G2 0.563
P4 (60, 0, 70, 10) 0.60 无 0
P5 (41, 1, 51, 10) 0.40 G3 0.743

COCO 官方评测代码(pycocotools 的 cocoeval.py)的配对规则:预测按分数从高到低排,每个预测去拿还没被占用、IoU 达到阈值 $t$ 且最大的那个真值;拿不到就是误检(FP)。没被拿走的真值是漏检,拉低 recall。

取 $t=0.5$。P1 拿走 G1;P2 也和 G1 重叠,但 G1 已被占,P2 是重复框,记 FP;P3 拿 G2;P4 是背景,FP;P5 拿 G3。

按分数第 k 个 结果 累计 TP 累计 FP precision recall
P1 TP 1 0 1.00 0.33
P2 FP 1 1 0.50 0.33
P3 TP 2 1 0.67 0.67
P4 FP 2 2 0.50 0.67
P5 TP 3 2 0.60 1.00

AP 是 precision–recall 曲线下的面积。先把曲线“削平”:每个点的 precision 换成它右边(recall 更高处)出现过的最大值。于是 recall 在 1/3 以内 precision 是 1.0,到 2/3 是 0.667,到 1 是 0.6:

$$ \mathrm{AP}_{50}=\tfrac13\times1.0+\tfrac13\times0.667+\tfrac13\times0.6=0.756. $$

cocoeval.py 不直接算面积,而是在 recall = 0, 0.01, …, 1 这 101 个点上取削平后的 precision 再平均;这个例子同样得到 0.756。

COCO 的主指标 AP 还要在 10 个 IoU 阈值 0.50, 0.55, …, 0.95 上再平均,多类别时再对类别平均(常叫 mAP):

IoU 阈值 算 TP 的预测 AP
0.50、0.55 P1、P3、P5 0.756
0.60、0.65、0.70 P1、P5 0.467
0.75、0.80 P1 0.333
0.85、0.90、0.95 无 0

10 个数平均是 0.358(101 点版本 0.359)。P3 在 0.5 时算命中,但在 10 个阈值里只占 2 个:AP@[.5:.95] 奖励(reward)框得准。cocoeval.py 的默认设置还有:每张图最多算 100 个预测,并按面积分小(< 32² 像素)、中(32²–96²)、大(> 96²)三档另报。每次只改一个条件再算(我用一个按 cocoeval.py 逻辑写的小脚本复算过):

改一个条件 结果 说明什么 不能据此推出
用 NMS 删掉重复框 P2 AP50 升到 0.917 重复框会实打实扣分 NMS 总是对的(见下一节)
不删 P2,只把它的分数降到 0.30 AP50 同样是 0.917 排在所有 TP 之后的误检不扣 AP AP 高说明部署时误检少(部署要定一个分数阈值,看的是那一点的 precision)
把 P3 改成 (21, 0, 31, 10),IoU 0.818 AP50 不变,平均 AP 从 0.358 升到 0.489 AP@[.5:.95] 看定位精度 AP50 一样的两个模型定位一样好
动画 5 个预测怎样算出 AP@[.5:.95]

这张图需要启用 JavaScript。

重复框:NMS 还是一对一匹配

传统检测器会对同一个物体给出好几个框。非极大值抑制(NMS)在推理后处理:按分数排序,保留最高的,删掉和它 IoU 超过阈值(例如 0.5)的其他框,再重复。P1 和 P2 的 IoU 是 0.681,P2 被删,AP50 从 0.756 升到 0.917。

NMS 的问题也在这里:如果 P2 其实框的是站在 G1 身后、和它 IoU 0.68 的另一个人,NMS 就删掉了一个真阳性。阈值是手调的,拥挤场景里很难两头顾。

DETR(2020)把检测写成集合预测,摘要说这样做“effectively removing the need for many hand-designed components like a non-maximum suppression procedure …”,即不再需要 NMS 这类手工设计的组件。具体做法是:解码器固定输出 $N$ 个槽位(论文用 $N=100$),训练时用 Hungarian 算法在预测和真值(不够 $N$ 个就补“无物体” $\varnothing$)之间找一对一配对:

$$ \hat\sigma=\arg\min_{\sigma}\sum_{i=1}^{N}\mathcal L_{\rm match}\big(y_i,\hat y_{\sigma(i)}\big),\qquad \mathcal L_{\rm match}=-\mathbb 1_{\{c_i\neq\varnothing\}}\,\hat p_{\sigma(i)}(c_i)+\mathbb 1_{\{c_i\neq\varnothing\}}\,\mathcal L_{\rm box}\big(b_i,\hat b_{\sigma(i)}\big). $$

$c_i$ 是真值类别,$\hat p_{\sigma(i)}(c_i)$ 是配上的那个槽位给这个类别的概率,$\mathcal L_{\rm box}$ 是 L1 损失和 generalized IoU 损失的加权和。没配上的槽位被训练去预测 $\varnothing$,所以模型自己学会不出重复框。放到上面的例子里:G1 只会配给 P1、P2 中代价更低的一个,另一个被推向“无物体”。这和跟踪那篇用的是同一个 Hungarian 算法,只是那里用来在运行时配轨迹,这里用来在训练时分配监督目标。

DETR 把检测当作集合预测:CNN 加 Transformer 一次并行输出一组固定数量的预测;训练时用二分图匹配把每个真值框唯一地配给一个预测,没配上的预测要学会输出“无物体”。正文里的 Hungarian 配对就是这一步。
原文图DETR 把检测当作集合预测:CNN 加 Transformer 一次并行输出一组固定数量的预测;训练时用二分图匹配把每个真值框唯一地配给一个预测,没配上的预测要学会输出“无物体”。正文里的 Hungarian 配对就是这一步。图源:Carion et al., 2020 · DETR · Figure 1 · CC0 1.0 · 转为 WebP

论文的消融(ablation)也说明了这一点:对第一层解码器的输出做 NMS 有帮助,到最后几层反而略微降低 AP,因为 NMS 删掉了真阳性。DETR 的短板是收敛慢;Deformable DETR 作者报告训练轮数少 10 倍,之后 RT-DETR、D-FINE、DEIM 和 RF-DETR 把这条线做到了实时。

YOLO 这条线在 2026 年也去掉了 NMS。YOLO26 论文(2026-06-02)用双头:一对多的头在训练时提供密集监督,一对一的头在推理时直接输出、不需要 NMS;训练中损失权重逐步移向一对一的头。双头分配的做法沿用自 YOLOv10。

闭集实时、开放词表、可提示:三类怎么选

类别 输入 输出 代表(作者报告) 适合什么
闭集实时 图像;类别在训练时定死 固定类别的框(可加掩码) YOLO26:COCO 40.9–57.5 mAP,T4 TensorRT 1.7–11.8 ms;RF-DETR:Nano 48.0 AP,2XL 是第一个过 60 AP 的实时检测器 类别固定、有标注、延迟预算紧
开放词表检测 图像 + 文字类别名 框 Grounding DINO:COCO 零样本 52.5 AP;YOLOE-26x:LVIS minival 40.6 AP(文字提示) 新类别没有标注时先摸底
可提示概念分割 图像或视频 + 名词短语或示例框 所有匹配实例的掩码和 ID SAM 3:COCO 框 AP 56.4、LVIS 框 AP 53.6(README);H200 上一张有 100 多个目标的图约 30 ms 自动标注、长尾(long tail)概念、在视频里找“所有的 X”

开放词表这条线的前身包括 GLIP、OWL-ViT / OWLv2、YOLO-World 和 YOLOE。SAM 3(2025-11-20)把它和分割合在一起:给一个短名词短语(如“黄色校车”)或示例框,返回图像或视频里所有匹配实例的掩码和 ID。它由一个 DETR 式检测器和一个带记忆的视频跟踪器组成,共用一个骨干;一个 presence head 单独判断“这个概念在不在图里”,把识别和定位拆开(论文摘要)。

数字要连着条件看。同一个 SAM 3,在 COCO 上框 AP 56.4(论文表 1 把它列为零样本结果);在 RF100-VL 的 100 个多领域数据集上,零样本平均只有 15.2 AP,其中医学类 2.6;用每类约 10 个标注实例微调(10-shot)后平均 36.5,全量微调 61.6(论文 v2 表 36、37,作者报告)。论文附录 B 自己写明:零样本时难以泛化到细粒度的领域外概念(如飞机型号、医学术语),热成像这类小众领域尤其如此;提示只能是简单名词短语,长的指代描述要配一个多模态大模型。

怎么选,下面是设计上的取舍,不是哪篇论文的结论:

  • 类别固定、能标数据、延迟预算紧:微调一个闭集实时模型,先查许可证。
  • 新类别、还没有标注:用开放词表模型或 SAM 3 摸底和预标注,但一定在自己的验证集上量;RF100-VL 说明零样本在某些领域可能接近 0。需要上车或上机器人时,可以用这些标注再训一个小的闭集模型。
  • 视频里要“所有的 X”并带 ID:SAM 3 或 SAM 3.1。

Benchmark 现在各管什么

Benchmark 测什么 2025–2026 的角色
COCO(2014) 80 类检测和分割,AP@[.5:.95] 每篇检测论文仍然报,但只是其中一列;RF-DETR 论文认为专用检测器在架构、学习率调度和数据增强上对 COCO 隐式过拟合(overfitting)
LVIS(2019) 1000 多类的长尾实例分割;只在 1–10 张训练图里出现的类叫 rare 开放词表的主考场:看 rare 类 AP(APr),因为这些类几乎没有框标注
ODinW13 ELEVATER 的 35 个“野外”检测集中常用的 13 个 零样本和少样本迁移;SAM 3 零样本 61.0
RF100-VL(2025) 100 个多领域检测集,分零样本、少样本、全量 越来越常和 COCO 并列;Grounding DINO、Qwen2.5-VL 在难的医学集上零样本低于 2%
SA-Co(2025-11) 概念分割,含负样本(negative example)提示,指标 cgF1 SAM 3 引入;SA-Co/Gold 掩码 cgF1 人类 72.8、SAM 3 54.1(README)

注意 RF-DETR 和 RF100-VL 都出自 Roboflow 及合作者,“COCO 不够用”这个论点和他们的产品方向一致;论点本身有数据支持,但读的时候要知道这层关系。

排行榜也变了。Papers with Code 据报道在 2025 年 7 月停止服务,2026-10-15 访问 paperswithcode.com 会被重定向到 Hugging Face 的 Trending Papers;据报道,原来的 SOTA 榜没有被继承。同一天,Hugging Face 的 49 个 “official benchmark” 数据集里没有一个是检测 benchmark。Roboflow 维护一个 COCO val 排行榜,会自己重跑各家模型推理,但它也是 RF-DETR 的出品方(方法说明)。结论:别指望一张公共榜替你选型,在自己的数据上量。

能不能商用:常见 checkpoint 的许可证

下表是 2026-10-15 读到的仓库或 Hugging Face 许可证,只是阅读记录,不是法律意见。代码和权重的许可证可能不同,训练数据还有自己的条款。

模型 许可证 要注意什么
SAM、SAM 2 / 2.1 Apache-2.0 SA-1B 数据集本身是研究用许可
SAM 3、SAM 3.1 自定义 SAM License(2025-11-19) 免版税、允许修改;禁止 ITAR、军事和武器用途;下载需申请
RF-DETR Nano / S / M / L 及分割模型 Apache-2.0 —
RF-DETR Atto / Femto / Pico / XL / 2XL PML 1.0 部署前读 PML 条款
YOLO11、YOLO26(含 YOLOE-26) AGPL-3.0 或 Ultralytics Enterprise 按 AGPL-3.0 的条件用,或另购 Enterprise 许可
YOLOv12(非 Ultralytics 团队)、YOLOE(清华) AGPL-3.0 按 AGPL-3.0 的条件用
YOLO-World GPL-3.0 可另行申请商业许可
RT-DETR、D-FINE、DEIM Apache-2.0 D-FINE 提醒:用 Objects365 预训练(pre-training)的权重可能受该数据集条款约束
DEIMv2 自定义 DEIMv2 License(2026) 条款区分商用和非商用,部署前读
Grounding DINO、OWL-ViT / OWLv2 Apache-2.0 —
Grounding DINO 1.5、DINO-X 只提供 API 拿不到权重
Florence-2、GLIP MIT —
DINOv3(DEIMv2 用的骨干) 自定义 DINOv3 License Meta 博客称允许商用;禁止 ITAR 和军事用途

各行出处:SAM、SAM 2、SAM 3、RF-DETR、YOLO26 文档、YOLO11 文档、YOLOv12、D-FINE、DEIMv2、Grounding DINO 1.5 API、DINO-X API、Florence-2、DINOv3。

截至 2026-10

  • YOLO27 还只是预告。 Ultralytics 文档写明“no launch date has been set”,权重和代码未公开,初步数字可能变(文档,公司自报)。YOLO26 的文档模型表后来加了语义分割和深度头,论文摘要里没有。
  • SAM 3.1(2026-03-27) 加入多目标联合跟踪,见跟踪那篇。2026-10-15 检索(retrieval)没有找到 “SAM 4”,也可能只是还没被索引。
  • 同一模型,不同来源的数字可能不同。 SAM 3 的 SA-Co 概念数,README 写 27 万、论文 v2 写 20.7 万;引用时注明来源版本。
  • DEIMv2 的新许可证何时替换了原许可证,目前查不到。

下一篇:冻结骨干与几何基础模型,讲 DINOv3、Depth Anything 3 和 VGGT 这些检测器背后的骨干与三维模型。

本页术语 9
词表 vocabulary
模型能输出的所有 token 的集合
奖励 reward
RL 里指导策略更新的标量信号
消融 ablation
去掉一个组件再测一次,用来判断它到底有没有贡献
长尾 long tail
出现频率很低但总量可观的那部分情况
微调 fine-tuning
在预训练权重上继续训练以适配具体任务
过拟合 overfitting
训练集越来越好,没见过的数据反而变差
负样本 negative example
被训练目标用来与正样本区分的候选;不一定等价于用户明确不喜欢
预训练 pre-training
先用大量数据学习通用表示和能力,再适配具体任务
检索 retrieval
从外部语料里找出相关内容