各版本 YOLO 目标检测模型输出结构详细解析(YOLOv5/YOLOv8/YOLOv10/YOLO11/YOLO12/)

在不同版本的 YOLO 模型中,网络结构不断演进,因此输出张量的维度和含义也有所变化。

各版本 YOLO 模型输出结构详细解析(YOLOv5 / YOLOv8 / YOLOv9 / YOLO11 / YOLO12 / YOLOv10)

在不同版本的 YOLO 模型中,网络结构不断演进,因此输出张量的维度和含义也有所变化。下面按版本总结其典型 ONNX 输出格式,便于开发者在部署时解析模型结果。


YOLOv5 输出格式

输出维度:float[1, 25200, 85]

  • 1:batch size

  • 25200:总预测框数量

    • 来自三尺度输出:

      • 80×80 网格 → 6400 个
      • 40×40 网格 → 1600 个
      • 20×20 网格 → 400 个
      • 合计 8400 个网格,每个网格 3 个 anchor: → 8400 × 3 = 25200 个预测框
  • 85:每个框的属性

    • 4 个边界框参数:x, y, w, h
    • 1 个 objectness 置信度
    • 80 个类别置信度(COCO)

✔ YOLOv5 采用“anchor-based”预测,因此输出较长。


YOLOV5U/YOLOv8/YOLOv9/YOLO11/YOLO12 输出格式

Ultralytics 系列从 YOLOv8 开始,在模型导出时可以选择是否 内置 NMS(Non-Maximum Suppression): 不带 NMS(默认):输出原始预测,需要你自己写 NMS。 带 NMS(export nms=True):输出已经 NMS 处理过的最终检测框,适合部署。 下面分别说明两种输出格式。

② 不带 NMS 的输出格式(默认)

这是最常用、最通用的版本,输出为 anchor-free 三尺度预测特征。 输出维度:float[1, 84, 8400](不带nms)

  • 1:batch size

  • 84:每个预测包含

    • 4 个边界框参数:x, y, w, h
    • 80 个类别置信度(无 objectness)
  • 8400:总候选框数量

    • 来自 80×80 + 40×40 + 20×20 三尺度
    • 每个网格只生成 1 个预测(anchor-free,因此不 ×3)

✔ YOLOV5U/YOLOv8/9/11/12 采用完全无 anchor 的 Decoupled Head,输出更紧凑。

② 带 NMS 的输出格式(export nms=True)

输出维度:float[1, 300, 6] 模型直接输出 最终 300 个候选框(经过排序筛选后的 top 300)

  • 每行 6 个数值:
    索引 含义
    0 x1(左上角横坐标)
    1 y1(左上角纵坐标)
    2 x2(右下角横坐标)
    3 y2(右下角纵坐标)
    4 score(置信度)
    5 label(类别 ID)

YOLOv10 输出格式

YOLOv10 完全使用 Dynamic Head + NMS-free 设计,因此输出格式与传统 YOLO 不同。 不可导出不带nms版本的模型 输出维度:float[1, 300, 6]

模型直接输出 最终 300 个候选框(经过排序筛选后的 top 300)

  • 每行 6 个数值:
    索引 含义
    0 x1(左上角横坐标)
    1 y1(左上角纵坐标)
    2 x2(右下角横坐标)
    3 y2(右下角纵坐标)
    4 score(置信度)
    5 label(类别 ID)

✔ YOLOv10 的输出已经是筛选好的框,是 NMS-free 推理方式

总结对比表

版本 输出张量大小 Anchor? 是否需要 NMS 说明
YOLOv5 [1, 25200, 85] ✔ 有 ✔ 需要 anchor-based,预测框最多
YOLOv5U/8/9/11/12 [1, 84, 8400] ✘ 无 ✔ 需要(可导出带有nms的模型) anchor-free,更紧凑
YOLOv10 [1, 300, 6] ✘ 无 ✘ 不需要 直接输出最终框,更适合部署