RF100-VL benchmark results

RF100-VL 基准测试:YOLOv9、YOLOX、YOLO-NAS、EdgeCrafter 和 RF-DETR 跨数据集泛化能力

Generalization beyond COCO: how well object detectors adapt to new datasets.

Xuban · LibreYOLO

RF100-VL 要回答的是检测器在 COCO 之外的数据上适应得如何。我们分别在 100 个差异很大的数据集上微调每个模型,其中包括红外、X 射线、显微镜、体育、无线电频谱图像、微小物体和电子游戏数据集。我们对 17 种 LibreYOLO 配置进行了基准测试:总计 1700 次微调。

Sports
Document
Aerial
Medical
Other
Industrial
Flora and Fauna

悬停预览 · 点击星球打开数据集

结果

17 个配置 · 平均 AP50:95
平均 AP50:95485256606401020304050总参数量(百万)NSMLTSMNanoTinySMSMLSMLoRA
悬停或点击数据点,查看模型详情。

RF-DETR-L 在这次比较中以 61.76 领先。M 以 61.13 紧随其后,S 为 60.41。四项 RF-DETR 结果与 Roboflow 发布的数据 接近,这为 LibreYOLO 中的 RF-DETR 训练提供了有用的验证。

模型尺寸并不能预测所有结果。YOLO-NAS-S 和 M 的成绩几乎持平,分别为 58.00 和 57.99。EdgeCrafter-M 得分为 57.93,高于 S 的 55.99 和 L 的 56.11。我们计划调查这些回退现象。这轮测试不是受控的缩放实验:分辨率、预训练权重、精度和训练方案各不相同。

使用骨干 LoRA 的 RF-DETR-S 得分为 57.19,而全量微调为 60.41。全量微调在 95 个数据集上胜出。记录的中位耗时只多 7 分钟,而作业总耗时几乎没有变化。

YOLOv9 的结果是在几项重要训练修复之前得到的。异常的 M 结果帮助我们发现了 PGI 缺失、不同的 letterbox 约定以及 100 个标签的训练上限。归档的数字反映了当时实际运行的代码,不能据此评判 YOLOv9 架构。

选择下方的模型,查看它在全部 100 个数据集上的得分。

61.8%
RF-DETR-L,100 个数据集的均值
100
75
50
25
均值 61.8%
最强100 个数据集,按得分排序最弱
75+60 至 7545 至 6030 至 45低于 30
表现最强的数据集
表现最弱的数据集

方法

对于每个数据集,我们都在 train 上训练,选择验证集 AP50:95 最佳的检查点,并在 test 上评估一次。总分是这 100 个测试结果的非加权平均值。

设置测试规则
训练100 轮;不提前停止
有效批大小16
随机种子0;每个数据集完成一次运行
检查点使用 EMA 权重的最佳验证集 AP50:95
测试评分pycocotools,maxDets=500
调参每个家族固定一套训练方案;不按数据集调参

每个家族都使用自己的训练方案:

家族分辨率精度增强概述
YOLOv9 T/S/M640FP32Mosaic、HSV、翻转;最后 15 轮关闭强增强
YOLOX Nano/Tiny416FP32Mosaic、mixup、HSV、仿射变换、翻转;最后 15 轮为收尾阶段
YOLOX S/M640FP32使用同一家族的训练方案,并按尺寸设置学习率
YOLO-NAS S/M640FP32Mixup、HSV 和翻转;关闭 mosaic
EdgeCrafter S/M/L640FP16翻转;LibreYOLO 家族默认设置
RF-DETR N/S/M/L 和 S LoRA384/512/576/704;LoRA 使用 512BF16多尺度、裁剪/调整尺寸和翻转

这些结果都只用了一个随机种子。微小差异不能证明有所提升。RF-DETR M 和 L 使用梯度累积以适应可用内存,一些密集数据集则需要较小的实际批大小。公开的 RF-DETR 训练方案也从 COCO 检查点开始,而 Roboflow 历史表格使用的是私有 Objects365 检查点。

训练耗时是测试活动的记录,不是受控的速度基准。作业有时会共用 GPU、重试或恢复运行。我们没有执行可选的 T4 单制品延迟测试流程。YOLO-NAS 使用 Deci 单独许可的非商用预训练权重。

工作负载带来的改进

小规模测试可以证明训练能够启动,但无法复现跨许多架构和数据集持续数周的微调。在这样的规模下,缓慢路径、内存压力和正确性问题都很难被忽略。

  • 图像加载和验证。 我们在数据增强前缓存确定性缩放结果,复用验证器工作线程和缓冲区,并在支持的情况下绘制验证前向传播图。PR #677、PR #682
  • 训练 CUDA graph。 捕获支持从 YOLOv9 和 RF-DETR 扩展到了 24 个家族。我们还修复了 DataLoader 的 pin-memory 竞争问题,以及训练阶段转换时的 graph 失效问题。在一项 YOLOv9-T 测试中,耗时从 428.4 秒降至 367.7 秒,报告的 AP 相同。PR #671、PR #681、PR #716
  • COCO 评分。 在密集数据集上,评估有时比训练耗时更长。集成 faster-coco-eval 后,对全部 100 个测试划分中已保存的预测评分只需 8.4 秒,而原来需要 131.4 秒。在 1,400 个指标值中,1,381 个逐位一致;最大差异为 2.22e-16,汇总 AP 不变。PR #708
  • RF-DETR 和共享训练路径。 更快的 L1 匹配、更少的设备同步、融合 AdamW 和有界的匹配器内存,将一次记录的 RF-DETR-S 测试步耗时从 266 毫秒降至 234 毫秒。同一轮调查还改进了另外五个匹配器、YOLOv9 日志记录和 EdgeCrafter 张量复用。PR #761、PR #762、PR #765
  • Attention。 我们将符合条件的 attention 路由到 PyTorch SDPA,集成了一种 Apache-2.0 CUDA 实现,并修复了混合精度执行问题。我们还在代码库中为推理编写了 Triton deformable-attention kernel。在文档记录的测试中,它单独运行时约快 4 倍,RF-DETR-N 端到端运行则约快 7%。PR #712、PR #713、PR #760、PR #784、PR #790
  • 训练正确性。 我们修复了 YOLOX BatchNorm 重建问题,并恢复了 YOLOv9 PGI、letterbox 元数据、标签容量和动量预热。基准测试提供的检查点和故障模式揭示了这两个问题。PR #700、PR #796

这些数字来自不同工作负载下的独立测试,不能相乘后合并成一个总体加速比。与这轮测试活动开始前相比,LibreYOLO 现在处理真实训练工作负载的速度更快、可靠性也更高。

测试工具和产物

公开的训练测试工具会跨 GPU 调度数据集、恢复中断的作业、处理 OOM 恢复,并记录训练方案、数据集版本、日志、检查点和预测结果。

run-rf100vl-benchmark skill 为 AI 编码代理提供测试流程和 Vast.ai 操作说明。结果归档包含所有已发布的运行结果。

感谢 Roboflow

我写下自己想在 COCO 之外进行基准测试、但无力承担这些运行费用后,Joseph Nelson 提供了 GPU 支持。Matvei Popov 分享了参考设置,解释了评估设置,并持续关注后续结果。

这份支持让我们得以验证 17 种配置下的 LibreYOLO 训练、发布人们选模型时可以参考的证据、开放测试工具,并对库进行压力测试,直到其薄弱环节清晰显现。

感谢 Joseph、Matvei 和 Roboflow 团队提供算力、时间和指导。