跳至内容

模型导出Ultralytics YOLO

Ultralytics YOLO 生态系统和集成

导言

训练模型的最终目的是将其部署到实际应用中。Ultralytics YOLOv8 中的导出模式为将训练好的模型导出为不同格式提供了多种选择,使其可以在各种平台和设备上部署。本综合指南旨在指导您了解模型导出的细微差别,展示如何实现最大的兼容性和性能。



观看: 如何导出自定义训练的Ultralytics YOLOv8 模型并在网络摄像头上运行实时推理。

为什么选择YOLOv8 的导出模式?

  • 多功能性:导出为多种格式,包括ONNX,TensorRT,CoreML 等。
  • 性能:使用TensorRT 可使 GPU 速度提高 5 倍,使用ONNX 或OpenVINO 可使 CPU 速度提高 3 倍。
  • 兼容性:使您的模型可在众多硬件和软件环境中通用部署。
  • 易用性:简单的CLI 和Python 应用程序接口,可快速直接地导出模型。

导出模式的主要功能

以下是一些突出的功能:

  • 一键导出:导出为不同格式的简单命令。
  • 批量导出:批量导出:导出具有批量推理功能的模型。
  • 优化推理:输出模型经过优化,推理时间更短。
  • 教程视频:深入浅出的指南和教程,带来流畅的导出体验。

提示

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

使用示例

将YOLOv8n 模型导出为不同的格式,如ONNX 或TensorRT 。有关导出参数的完整列表,请参阅下面的参数部分。

示例

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom trained model

# Export the model
model.export(format='onnx')
yolo export model=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

论据

本表详细介绍了可用于将YOLO 模型导出为不同格式的配置和选项。这些设置对于优化导出模型的性能、大小以及在不同平台和环境中的兼容性至关重要。正确的配置可确保模型以最佳效率部署到预定应用中。

论据 类型 默认值 说明
format str 'torchscript' 导出模型的目标格式,例如 'onnx', 'torchscript', 'tensorflow'或其他,定义与各种部署环境的兼容性。
imgsz inttuple 640 模型输入所需的图像尺寸。对于正方形图像,可以是一个整数,或者是一个元组 (height, width) 了解具体尺寸。
keras bool False 启用导出为 Keras 格式的TensorFlow SavedModel ,提供与TensorFlow serving 和 API 的兼容性。
optimize bool False 在导出到TorchScript 时,应用针对移动设备的优化,可能会减小模型大小并提高性能。
half bool False 启用 FP16(半精度)量化,在支持的硬件上减小模型大小并可能加快推理速度。
int8 bool False 激活 INT8 量化,进一步压缩模型并加快推理速度,同时将精度损失降至最低,主要用于边缘设备。
dynamic bool False 允许ONNX 和TensorRT 导出动态输入尺寸,提高了处理不同图像尺寸的灵活性。
simplify bool False 简化了ONNX 导出的模型图,可能会提高性能和兼容性。
opset int None 指定ONNX opset 版本,以便与不同的ONNX 解析器和运行时兼容。如果未设置,则使用最新的支持版本。
workspace float 4.0 以 GB 为单位设置最大工作区大小,用于TensorRT 优化,平衡内存使用和性能。
nms bool False 在CoreML 导出中添加非最大值抑制 (NMS),这对精确高效的检测后处理至关重要。

调整这些参数可自定义导出过程,以满足特定要求,如部署环境、硬件限制和性能目标。选择适当的格式和设置对于实现模型大小、速度和准确性之间的最佳平衡至关重要。

导出格式

YOLOv8 可用的导出格式如下表所示。您可以使用 format 参数,即 format='onnx'format='engine'.

格式 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


创建于 2023-11-12,更新于 2024-03-01
作者:glenn-jocher(10)、Burhan-Q(1)

评论