跳至内容

模型基准Ultralytics YOLO

Ultralytics YOLO 生态系统和集成

导言

一旦您的模型经过训练和验证,下一个合理的步骤就是评估其在各种实际场景中的性能。Ultralytics YOLOv8 中的 "基准 "模式可实现这一目的,它提供了一个强大的框架,用于评估模型在各种导出格式下的速度和准确性。



观看: Ultralytics 模式教程:基准测试

基准测试为何至关重要?

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

基准模式下的关键指标

  • mAP50-95:用于物体检测、分割和姿态估计。
  • accuracy_top5:用于图像分类。
  • 推理时间:每个图像所需的时间,以毫秒为单位。

支持的导出格式

  • ONNX: CPU 最佳性能
  • TensorRT: GPU
  • OpenVINO:用于Intel 硬件优化
  • CoreML,TensorFlow SavedModel , 以及更多:满足各种部署需求。

提示

  • 导出到ONNX 或OpenVINO ,可将CPU 的速度提高 3 倍。
  • 导出到TensorRT ,可将GPU 的速度提高 5 倍。

使用示例

在所有支持的导出格式(包括ONNX,TensorRT 等)上运行YOLOv8n 基准。有关导出参数的完整列表,请参阅下面的 "参数 "部分。

示例

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

论据

诸如 model, data, imgsz, half, deviceverbose 用户可以灵活地根据自己的具体需求对基准进行微调,并轻松比较不同导出格式的性能。

钥匙 默认值 说明
model None 指定模型文件的路径。同时接受 .pt.yaml 格式,例如 "yolov8n.pt" 预训练模型或配置文件。
data None 定义基准测试数据集的 YAML 文件的路径,通常包括验证数据的路径和设置。例如 "coco8.yaml".
imgsz 640 模型的输入图像大小。对于正方形图像,可以是单个整数,也可以是一个元组 (width, height) 为非正方形,例如 (640, 480).
half False 启用 FP16(半精度)推理,在兼容硬件上可减少内存使用量并提高速度。使用 half=True 以启用。
int8 False 激活 INT8 量化,进一步优化受支持设备的性能,尤其适用于边缘设备。设置 int8=True 使用。
device None 定义用于基准测试的计算设备,例如 "cpu", "cuda:0"或设备列表,如 "cuda:0,1" GPU 。
verbose False 控制日志输出的详细程度。布尔值;设置 verbose=True 查看详细日志,或使用浮点数查看阈值错误。

导出格式

基准测试将尝试自动运行以下所有可能的导出格式。

格式 format 论据 模型 元数据 论据
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF 轻型 tflite yolov8n.tflite imgsz, half, int8, batch
TF 边缘TPU edgetpu yolov8n_edgetpu.tflite imgsz
TF.js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch

查看全文 export 中的详细信息 出口 page.

常见问题

如何使用Ultralytics 对YOLOv8 机型的性能进行基准测试?

Ultralytics YOLOv8 提供了基准模式,用于评估模型在不同导出格式下的性能。通过该模式,可以深入了解平均精度 (mAP50-95)、准确度和推理时间(以毫秒为单位)等关键指标。要运行基准,可以使用Python 或CLI 命令。例如,要在GPU :

示例

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

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

将YOLOv8 模型导出为不同格式有什么好处?

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

  • ONNX:提供高达 3 倍的CPU 速度。
  • TensorRT:提供高达 5 倍的GPU 速度。
  • OpenVINO:专门针对Intel 硬件进行了优化。 这些格式提高了模型的速度和精度,使其在各种实际应用中更加高效。请访问导出页面了解完整详情。

为什么基准测试对评估YOLOv8 模型至关重要?

出于几个原因,对YOLOv8 模型进行基准测试至关重要:

  • 知情决策:了解速度与准确性之间的权衡。
  • 资源分配:衡量不同硬件选项的性能。
  • 优化:确定哪种导出格式能为特定用例提供最佳性能。
  • 成本效益:根据基准结果优化硬件使用。 mAP50-95、Top-5 精确度和推理时间等关键指标有助于进行这些评估。更多信息,请参阅关键指标部分。

YOLOv8 支持哪些导出格式,它们有哪些优势?

YOLOv8 支持多种导出格式,每种格式都是为特定硬件和使用情况量身定制的:

  • ONNX: CPU 性能最佳。
  • TensorRT: GPU 效率的理想选择。
  • OpenVINO:针对Intel 硬件进行了优化。
  • CoreML &TensorFlow:适用于iOS 和一般 ML 应用程序。 有关支持格式的完整列表及其各自优势,请查看 "支持的导出格式"部分。

我可以使用哪些参数来微调YOLOv8 基准?

在运行基准测试时,有几个参数可以根据具体需要进行定制:

  • 模型:模型文件的路径(如 "yolov8n.pt")。
  • 数据:定义数据集的 YAML 文件的路径(如 "coco8.yml")。
  • imgsz:输入图像的大小,可以是一个整数,也可以是一个元组。
  • 一半:启用 FP16 推理,提高性能。
  • int8:为边缘设备激活 INT8 量化。
  • 设备:指定计算设备(例如,"cpu"、"cuda:0")。
  • verbose:控制日志记录的详细程度。 有关参数的完整列表,请参阅参数部分。


创建于 2023-11-12,更新于 2024-07-04
作者:glenn-jocher(18),Burhan-Q(3),RizwanMunawar(1),Laughing-q(1),maianumerosky(1)

评论