跳至内容

模型基准Ultralytics YOLO

Ultralytics YOLO 生态系统和集成

导言

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



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

基准测试为何至关重要?

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

基准模式下的关键指标

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

支持的导出格式

  • ONNX:优化 CPU 性能
  • TensorRT:最大限度地提高 GPU 效率
  • OpenVINO:用于英特尔硬件优化
  • 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 文件的路径,通常包括验证数据的路径和设置。例如 "coco128.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
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8
TF GraphDef pb yolov8n.pb imgsz
TF 轻型 tflite yolov8n.tflite imgsz, half, int8
TF 边缘TPU edgetpu yolov8n_edgetpu.tflite imgsz
TF.js tfjs yolov8n_web_model/ imgsz, half, int8
PaddlePaddle paddle yolov8n_paddle_model/ imgsz
NCNN ncnn yolov8n_ncnn_model/ imgsz, half

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



创建于 2023-11-12,更新于 2024-03-01
作者:glenn-jocher(10),chr043416@gmail.com(1),Laughing-q(1),maianumerosky(1)

评论