Ultralytics YOLO27:

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

Ultralytics YOLO ecosystem and integrations

基准测试可视化#

简介#

模型经过训练和验证后,接下来的逻辑步骤是在各种真实场景中评估其性能。Ultralytics YOLO26 中的基准测试模式通过提供一个强大的框架来满足这一需求,用于评估模型在一系列导出格式上的速度和精度

查看unreleased YOLO27 preview以获取初步的速度基准测试。



Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?

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

  • **明智决策:**深入了解速度与精度之间的权衡。
  • **资源分配:**了解不同导出格式在不同硬件上的性能表现。
  • **优化:**了解哪种导出格式能为你的特定用例提供最佳性能。
  • **成本效率:**根据基准测试结果更高效地利用硬件资源。

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

  • **mAP50-95:**用于目标检测、分割和姿态估计。
  • **accuracy_top1:**用于图像分类
  • **推理时间:**每张图片所花费的时间,以毫秒为单位。

支持的导出格式#

  • **ONNX:**用于实现最佳 CPU 性能
  • **TensorRT:**用于实现最大的 GPU 效率
  • **OpenVINO:**用于 Intel 硬件优化
  • **CoreML、TensorFlow SavedModel 及更多:**满足多样化的部署需求。
提示
  • 导出为 ONNX 或 OpenVINO 可获得高达 3 倍的 CPU 速度提升。
  • 导出为 TensorRT 可获得高达 5 倍的 GPU 速度提升。

使用示例#

推荐安装

在进行基准测试之前,请安装带有导出依赖项的 Ultralytics,以避免缺少软件包。

pip install ultralytics[export]

在所有支持的导出格式(ONNX、TensorRT 等)上运行 YOLO26n 基准测试。有关导出选项的完整列表,请参阅下面的参数部分。

示例
from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")

参数#

诸如 modeldataimgszquantizedeviceverboseformat 等参数使用户能够灵活地根据其特定需求微调基准测试,并轻松比较不同导出格式的性能。

默认值描述
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 推理,而 832 和未设置状态则运行 FP32。然后,每种格式在其自身的运行时精度下运行推理。替换了已弃用的 half/int8 标志。
device'cpu'定义用于基准测试的计算设备,例如 "cpu""cuda:0"
verboseFalse控制日志输出的详细程度。设置为 verbose=True 以获取详细日志。
eps0.001在将每张图像的推理时间转换为 FPS 之前,添加到该时间中的极小 epsilon(毫秒),以防止除以零。极少需要更改。
format''仅对指定的导出格式进行基准测试(例如 format=onnx)。留空则自动测试所有支持的格式。
独立的 `benchmark()` 函数默认值

独立的 benchmark() 函数(from ultralytics.utils.benchmarks import benchmark)使用其自身的签名默认值,而不是上面的表格值,特别是 model="yolo26n.pt"imgsz=160;显式传递 imgsz 以匹配 yolo benchmark 命令行界面(CLI)。

导出格式#

基准测试将尝试在下面列出的所有可能导出格式上自动运行。或者,你也可以使用 format 参数运行特定格式的基准测试,该参数接受下面提到的任何格式。

格式format 参数模型元数据参数
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgszquantizedynamicnmsbatchdevice
ONNXonnxyolo26n.onnximgszquantizedynamicsimplifyopsetnmsbatchdatafractiondevice
OpenVINOopenvinoyolo26n_openvino_model/imgszquantizedynamicnmsbatchdatafractiondevice
TensorRTengineyolo26n.engineimgszquantizedynamicsimplifyopsetworkspacenmsbatchdatafractiondevice
CoreMLcoremlyolo26n.mlpackageimgszdynamicquantizenmsbatchdevice
TF SavedModelsaved_modelyolo26n_saved_model/imgszkerasquantizeopsetnmsbatchdatafractiondevice
TF GraphDefpbyolo26n.pbimgszopsetbatchdevice
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgszquantizeopsetdatafractiondevice
PaddlePaddlepaddleyolo26n_paddle_model/imgszbatchdevice
MNNmnnyolo26n.mnnimgszbatchdynamicquantizesimplifyopsetnmsdevice
NCNNncnnyolo26n_ncnn_model/imgszquantizebatchdevice
IMX500imxyolo26n_imx_model/imgszquantizedatafractionnmsdevice
RKNNrknnyolo26n_rknn_model/imgszbatchnamequantizesimplifyopsetdatafractiondevice
ExecuTorchexecutorchyolo26n_executorch_model/imgszbatchdevice
Axeleraaxelerayolo26n_axelera_model/imgszbatchquantizedatafractiondevice
DEEPXdeepxyolo26n_deepx_model/imgszquantizesimplifyopsetdataoptimizedevice
Qualcomm QNNqnnyolo26n_qnn.onnximgszbatchnamequantizesimplifyopsetdatafractiondevice
LiteRTlitertyolo26n.tfliteimgszquantizebatchdatafractiondevice
Hailohailoyolo26n_hailo_model/imgsznamequantizedatafractionsimplifyconfiou
Huawei Ascendascendyolo26n_ascend_model/imgszbatchnamequantizeopsetsimplifynms
Apple Core AIcoreaiyolo26n.aimodelimgszbatchquantize

nms=None 默认对外部 NMS 使用原始输出。设置 nms=False 以选择可用的无 NMS 检测头;不支持的格式将回退到其本机输出路径。上面的 nms 条目标识了可以通过 nms=True 嵌入 NMS 的格式。

请在导出页面查看完整的 export 详情。

常见问题#

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

    示例
    from ultralytics.utils.benchmarks import benchmark
    
    # Benchmark on GPU
    benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

    有关基准测试参数的更多详细信息,请访问参数部分。

  • 将 YOLO26 模型导出为诸如 ONNXTensorRTOpenVINO 等不同格式,使你能够根据部署环境优化性能。例如:

    • **ONNX:**提供高达 3 倍的 CPU 速度提升。
    • **TensorRT:**提供高达 5 倍的 GPU 速度提升。
    • **OpenVINO:**专门针对 Intel 硬件进行了优化。

    这些格式增强了模型的速度和精度,使其在各种真实世界应用中更加高效。访问导出页面了解完整详情。

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

    • **明智决策:**了解速度与精度之间的权衡。
    • **资源分配:**评估不同硬件选项下的性能。
    • **优化:**确定哪种导出格式为特定用例提供最佳性能。
    • **成本效率:**根据基准测试结果优化硬件使用。

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

  • YOLO26 支持多种导出格式,每种格式都专为特定的硬件和用例而量身定制:

    • **ONNX:**最适合 CPU 性能。
    • **TensorRT:**非常适合 GPU 效率。
    • **OpenVINO:**针对 Intel 硬件进行了优化。
    • **CoreML 与 TensorFlow:**适用于 iOS 和通用机器学习应用。

    有关支持的格式及其各自优势的完整列表,请查看支持的导出格式部分。

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

    • **model:**模型文件的路径(例如“yolo26n.pt”)。
    • **data:**数据集 YAML 的路径(例如 "coco8.yaml");分类任务则改为接受数据集目录或内置数据集名称(例如 imagenet10)。
    • **imgsz:**作为单个整数的正方形输入图像尺寸,例如 640。为了公平比较,基准测试模式在 PyTorch 和导出的格式中使用相同的正方形图像尺寸。
    • **quantize:**请求的精度:16 表示 FP16,8 表示 INT8(对边缘设备有用);32/未设置时,在格式支持的情况下为 FP32 — 无法导出 FP32 的格式会拒绝显式的 32 或回退到其所需的精度。原生 PyTorch 行不会导出:只有 16 会影响它并选择 FP16 推理,而 832 和未设置状态则运行 FP32。然后,每种格式在其自身的运行时精度下运行推理。
    • **device:**指定计算设备(例如“cpu”、“cuda:0”)。
    • **verbose:**控制日志记录的详细程度。

    有关参数的完整列表,请参考参数部分。

评论