Ultralytics YOLO27:
Get Started

使用 Ultralytics YOLO 进行模型基准测试#

Ultralytics YOLO ecosystem and integrations

基准测试可视化#

简介#

训练并验证模型后,接下来通常需要在各种真实场景中评估模型性能。Ultralytics YOLO26 的基准测试模式可通过一套可靠的框架,在多种导出格式下评估模型的速度和准确率。

查看尚未发布的 YOLO27 预览版,了解初步速度基准测试结果。



观看: 对 Ultralytics YOLO26 模型进行基准测试 | 如何比较模型在不同硬件上的性能?

为什么基准测试至关重要?#

  • 明智决策:深入了解速度与准确率之间的权衡。
  • 资源分配:了解不同导出格式在不同硬件上的表现。
  • 优化:了解哪种导出格式最适合你的具体用例。
  • 成本效益:根据基准测试结果,更高效地利用硬件资源。

基准测试模式中的关键指标#

  • mAP50-95:适用于目标检测、实例分割、姿态估计和 OBB。
  • mIoU:适用于语义分割。
  • delta1:适用于深度估计。
  • accuracy_top1:适用于图像分类。
  • 推理时间:处理每张图像所需的时间,单位为毫秒。

支持的导出格式#

  • ONNX:实现最佳 CPU 性能
  • TensorRT:实现最高 GPU 效率
  • OpenVINO:针对 Intel 硬件进行优化
  • CoreML、TensorFlow SavedModel 等:满足多样化的部署需求。
提示
  • 导出为 ONNX 或 OpenVINO,CPU 速度最高可提升 3 倍。
  • 导出为 TensorRT,GPU 速度最高可提升 5 倍。

使用示例#

推荐安装

基准测试前,请安装包含导出依赖项的 Ultralytics,以避免缺少软件包。

pip install ultralytics[export]

运行 YOLO26n 基准测试,涵盖所有支持的导出格式(ONNX、TensorRT 等)。请参阅下文的 Arguments 部分,查看完整的导出选项列表。

示例
from ultralytics.utils.benchmarks import benchmark

# 在 GPU 上进行基准测试
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

# 对指定导出格式进行基准测试
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")

参数#

model、data、imgsz、quantize、device、verbose 和 format 等参数,让用户能够根据具体需求微调基准测试,并轻松比较不同导出格式的性能。

键默认值说明
modelNone指定模型文件的路径。接受 .pt 和 .yaml 两种格式,例如,预训练模型或配置文件可使用 "yolo26n.pt"。
dataNone用于基准测试的数据集 YAML 文件路径,通常包含验证数据的路径和设置。例如:"coco8.yaml"。分类任务则使用数据集目录或内置数据集名称(例如 imagenet10)。
imgsz640模型的输入图像尺寸。正方形图像必须使用单个整数表示(例如 640);benchmark() 仅支持正方形图像尺寸。
quantizeNone指定精度:16(FP16)或 8(INT8;PTQ 方案需要校准 data/fraction,仅权重方案则不需要);在格式支持的情况下,32/未设置时使用 FP32——不支持导出 FP32 的格式会拒绝显式指定的 32,或回退到其要求的精度。原生 PyTorch 行不会导出:只有 16 会影响该行,选择 FP16 推理;8、32 和未设置时则运行 FP32。随后,每种格式都会以各自的运行时精度执行推理。此参数取代了已弃用的 half/int8 标志。
deviceNone定义基准测试所用的计算设备,例如 "cpu" 或 "cuda:0";未设置时会使用第一个可用的 GPU,否则使用 CPU。
verboseFalse如果设为 True 或浮点数,基准测试失败时(断言失败除外)会抛出异常,而不是记录错误;浮点数(例如 0.25)还会断言每种成功运行的格式的指标都高于该阈值。
eps0.001将一个较小的 epsilon(毫秒)加到每张图像的推理时间上,然后再将其转换为 FPS,以避免除以零。此参数很少更改。
format''仅对指定的导出格式进行基准测试(例如 format=onnx)。留空则自动测试所有支持的格式。
独立 `benchmark()` 函数的默认值

独立的 benchmark() 函数(from ultralytics.utils.benchmarks import benchmark)使用自身签名中的默认值,而非上表中的值,尤其是 model="yolo26n.pt"、imgsz=160 和 device="cpu";显式传入 imgsz 和 device,即可与 yolo benchmark CLI 保持一致。

导出格式#

基准测试会尝试自动运行下方列出的所有可用导出格式。你也可以使用 format 参数对指定格式运行基准测试,该参数接受下方列出的任意格式。

格式format 参数模型元数据参数
PyTorch-yolo26n.pt✅-
TorchScripttorchscriptyolo26n.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None 默认输出原始结果,以供外部 NMS 使用。设置 nms=False 可选择可用的无 NMS 检测头;不支持的格式会回退到其原生输出路径。上方的 nms 条目表示可以通过 nms=True 嵌入 NMS 的格式。

请参阅 Export 页面,了解完整的 export 详情。

常见问题#

  • Ultralytics YOLO26 提供基准测试模式,可评估模型在不同导出格式下的性能。该模式可展示关键指标,例如平均精度(mAP50-95)、准确率和以毫秒为单位的推理时间。你可以使用 Python 或 CLI 命令运行基准测试。例如,在 GPU 上进行基准测试:

    示例
    from ultralytics.utils.benchmarks import benchmark
    
    # 在 GPU 上进行基准测试
    benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

    如需了解基准测试参数的更多详情,请参阅 Arguments 部分。

  • 将 YOLO26 模型导出为 ONNX、TensorRT 和 OpenVINO 等不同格式,可以根据部署环境优化性能。例如:

    • ONNX:CPU 速度最高可提升 3 倍。
    • TensorRT:GPU 速度最高可提升 5 倍。
    • OpenVINO:专为 Intel 硬件优化。

    这些格式能提升模型在目标硬件上的推理速度,让模型在各种真实应用中运行得更高效。请访问 Export 页面,查看完整详情。

  • 对 YOLO26 模型进行基准测试至关重要,原因有以下几点:

    • 明智决策:了解速度与准确率之间的权衡。
    • 资源分配:衡量模型在不同硬件选项上的性能。
    • 优化:确定哪种导出格式最适合特定用例。
    • 成本效益:根据基准测试结果优化硬件使用。

    mAP50-95、Top-1 准确率和推理时间等关键指标有助于进行这些评估。更多信息请参阅关键指标部分。

  • YOLO26 支持多种导出格式,每种格式都针对特定硬件和用例进行了优化:

    • ONNX:最适合 CPU 性能。
    • TensorRT:最适合提升 GPU 效率。
    • OpenVINO:针对 Intel 硬件优化。
    • CoreML 和 TensorFlow:适用于 iOS 和通用 ML 应用。

    如需查看支持格式及其优势的完整列表,请参阅支持的导出格式部分。

  • 运行基准测试时,可以自定义多个参数以满足特定需求:

    • model:模型文件的路径(例如 "yolo26n.pt")。
    • data:数据集 YAML 文件的路径(例如 "coco8.yaml");分类任务则使用数据集目录或内置数据集名称(例如 imagenet10)。
    • imgsz:以单个整数表示的正方形输入图像尺寸,例如 640。基准测试模式在 PyTorch 和导出格式中使用相同的正方形图像尺寸,以确保比较公平。
    • quantize:指定精度:FP16 使用 16,INT8 使用 8(适用于边缘设备);在格式支持的情况下,32/未设置时使用 FP32——不支持导出 FP32 的格式会拒绝显式指定的 32,或回退到其要求的精度。原生 PyTorch 行不会导出:只有 16 会影响该行,选择 FP16 推理;8、32 和未设置时则运行 FP32。随后,每种格式都会以各自的运行时精度执行推理。
    • device:指定计算设备(例如 "cpu"、"cuda:0")。
    • verbose:基准测试失败时抛出异常,而不是记录错误;传入浮点数还会要求每种格式的指标都高于该阈值。

    如需查看完整的参数列表,请参阅 Arguments 部分。

评论