JetBrains 开展了一项实践实验,用于测试三个现代目标检测模型:YOLO12、YOLO26 和 RF-DETR。测试并不只使用基准数据,而是使用更接近实际使用场景的图像:电缆损坏、X 射线图像中的骨折,以及堆叠在一起的饮料瓶。核心结论很明确:预训练模型不一定就是可以直接部署的模型。
这些模型主要基于 COCO 数据集,该数据集包含约 118,000 张训练图像和 80 个常见类别,例如人、汽车、狗和椅子。然而,一些实际目标(如骨折)本来就不属于这些类别的词汇范围;同时,X 射线图像、工业拍摄图像以及视觉上拥挤的场景,也不同于模型习惯处理的自然图像。
在训练前验证基线
在进入微调阶段前,JetBrains 在由 5,000 张图像组成的 COCO 验证集 val2017 上评估了六个检查点,即三个模型系列各使用两种规模。RF-DETR Base 达到了最高的 mAP50-95,数值为 0.5325;两个中等规模的 YOLO 模型则以 0.5259 和 0.5181 接近这一结果,而参数量少约 1,000 万。
比较结果还显示了实际速度上的差异。YOLO26-N 的耗时为 12.3 毫秒,其 mAP50-95 与 YOLOv12-N 接近;后者尽管是实验中最小的模型,耗时却为 23.9 毫秒。RF-DETR Nano 的耗时为 12.4 毫秒,尽管其参数量接近 3,000 万,超过了 YOLO26-M。
这些数字不一定与模型论文中公布的数据完全一致,因为实验使用了不同于比较中常见的 NVIDIA T4 的硬件,并且直接在各自原生框架中运行模型,没有将其转换为 TensorRT。JetBrains 说明,TensorRT 可以通过融合层以及选择针对硬件优化的内核来降低推理时间,但需要额外的构建步骤,并会生成与特定图形处理单元绑定的引擎。因此,实验数据反映的是更接近直接运行的性能,而不是优化后可能达到的最高性能。
在训练范围之外进行测试
实验使用了 RF100-VL 中的三个数据集。RF100-VL 包含 100 个多模态数据集,旨在覆盖常规训练数据中的罕见目标。所选数据集包括 bone-fracture-7fylg、cable-damage 和 soda-bottles。
将基于 COCO 训练的检查点直接应用于这些数据时,结果几乎为零。JetBrains 解释说,这是因为所使用的模型是封闭词汇目标检测器:它们拥有固定数量的类别,如果模型由 80 个类别组成的检测头中不存在 fracture,就无法输出这一类别。因此,一个模型在 COCO 上获得 0.72 的 mAP50,并不意味着它会自动识别骨折。
微调会带来什么变化?
JetBrains 使用一块 A100 GPU,在每个数据集上对三个模型分别训练 10 个 epoch,并采用 Ultralytics 和 RF-DETR 中的常规训练流程。训练后,电缆损坏和饮料瓶任务的结果明显改善,而骨折任务仍然更加困难。
饮料瓶是最容易的情况;所有模型的 mAP50 在 0.91 至 0.97 之间,YOLOv12-M 的 mAP50-95 最佳,达到 0.6422。JetBrains 推测,原因在于产品图像与 COCO 中的某些类别较为接近,因此该问题更像是增加新的词汇,而不是在两个完全不同的视觉领域之间迁移。
在电缆损坏任务中,mAP50 达到了 0.93,但最高的 mAP50-95 不超过 0.446。这意味着模型能够较好地找到损坏区域,但难以在细长且延伸的缺陷周围绘制精确的边界框。在骨折图像中,最佳 mAP50 仅为 0.447,由 RF-DETR Base 取得,而且不同模型之间差异很大。视觉检查还显示,在部分结果中,包含检测到骨折的图像不到一半。
开发团队应检查哪些方面?
- 从可复现的基线开始:在将结果与已发布数字进行比较前,先在自己的环境和硬件上验证检查点的性能。
- 隔离软件环境:JetBrains 在同一个 PyCharm 项目中使用了三个相互隔离的 uv 环境,因为 YOLO 两代所需的 ultralytics 库版本彼此不兼容。在 PyCharm 中使用远程解释器需要 Professional 版本,而 Community Edition 仅支持本地环境。
- 不要只依赖单一指标:电缆损坏任务中 mAP50 与 mAP50-95 之间的差距揭示了精确定位问题,而这一问题在只查看 mAP50 时可能不会显现。
- 让模型选择与任务相匹配:RF-DETR Base 表现出更高的一致性,并在三个数据集中的两个上胜出,但这并不意味着它适合所有情况。
- 在领域差异较大时规划数据:X 射线结果表明,仅靠微调可能不够,可能还需要更多数据、更长时间的训练,或针对特定领域进行预训练。这些选项在文章中被提出,但本实验并未证明其中任何一种具有优势。
该实验证实,“先进”或“预训练”并不能概括一个目标检测模型是否适合部署环境。实际决策应在精度、推理时间、模型规模、许可要求之间进行权衡,而最重要的是训练数据与目标领域的相似程度。同时,JetBrains 的结果仍然取决于所使用的三个数据集和训练设置,因此不应将其视为适用于所有检测任务的最终排名。