Skip to content

Ultralytics YOLO 模型导出

Ultralytics YOLO 生态系统和集成

简介

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



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

为何选择 YOLO11 的导出模式?

  • 多功能性: 导出为多种格式,包括 ONNX、TensorRT、CoreML 等。
  • 性能: 通过 TensorRT 获得高达 5 倍的 GPU 加速,通过 ONNX 或 OpenVINO 获得 3 倍的 CPU 加速。
  • 兼容性: 使您的模型能够在众多硬件和软件环境中通用部署。
  • 易用性: 简单的 CLI 和 Python API,实现快速直接的模型导出。

导出模式的关键功能

以下是一些突出的功能:

  • 一键导出: 简单的命令导出为不同格式。
  • 批量导出: 导出支持批量推理的模型。
  • 优化推理: 导出的模型经过优化,推理时间更快。
  • 教程视频: 深入的指南和教程,提供顺畅的导出体验。

Tip

  • 导出到 ONNXOpenVINO 以获得高达 3 倍的 CPU 加速。
  • 导出到 TensorRT 以获得高达 5 倍的 GPU 加速。

使用示例

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

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义训练的模型

# 导出模型
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx  # 导出官方模型
yolo export model=path/to/best.pt format=onnx  # 导出自定义训练的模型

参数

下表详细列出了将 YOLO 模型导出为不同格式的配置和选项。这些设置对于优化导出模型的性能、大小和跨各种平台和环境的兼容性至关重要。正确的配置确保模型在目标应用中以最佳效率部署。

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

调整这些参数允许根据特定需求定制导出过程,如部署环境、硬件限制和性能目标。选择适当的格式和设置对于在模型大小、速度和 准确性 之间取得最佳平衡至关重要。

导出格式

可用的 YOLO11 导出格式如下表所示。您可以使用 format 参数导出为任何格式,例如 format='onnx'format='engine'。您可以直接在导出的模型上进行预测或验证,例如 yolo predict model=yolo11n.onnx。导出完成后,将显示您的模型的使用示例。

格式 format 参数 模型 元数据 参数
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Lite tflite yolo11n.tflite imgsz, half, int8, batch
TF Edge TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch

常见问题

如何将 YOLO11 模型导出为 ONNX 格式?

使用 Ultralytics 将 YOLO11 模型导出为 ONNX 格式非常简单。它提供了 Python 和 CLI 方法来导出模型。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义训练的模型

# 导出模型
model.export(format="onnx")

```bash yolo export model=yolo11n.pt format=onnx # 导出官方模型 yolo export model=path/to/best.pt format=onnx # 导出自定义训练的模型

```

有关该过程的更多详细信息,包括处理不同输入大小等高级选项,请参阅 ONNX 部分

使用 TensorRT 进行模型导出有哪些好处?

使用 TensorRT 进行模型导出可显著提升性能。导出到 TensorRT 的 YOLO11 模型可以实现高达 5 倍的 GPU 加速,非常适合实时推理应用。

  • 多功能性: 针对特定硬件配置优化模型。
  • 速度: 通过高级优化实现更快的推理。
  • 兼容性: 与 NVIDIA 硬件无缝集成。

要了解更多关于集成 TensorRT 的信息,请参阅 TensorRT 集成指南

如何在导出 YOLO11 模型时启用 INT8 量化?

INT8 量化是压缩模型和加速推理的绝佳方式,尤其是在边缘设备上。以下是如何启用 INT8 量化的方法:

Example

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # 加载模型
model.export(format="onnx", int8=True)
yolo export model=yolo11n.pt format=onnx int8=True   # 使用 INT8 量化导出模型

INT8 量化可以应用于多种格式,如 TensorRT 和 CoreML。更多详情请参阅 导出部分

为什么在导出模型时动态输入尺寸很重要?

动态输入尺寸允许导出的模型处理不同尺寸的图像,提供灵活性并优化不同使用场景的处理效率。在导出到 ONNX 或 TensorRT 等格式时,启用动态输入尺寸确保模型能够无缝适应不同的输入形状。

要启用此功能,请在导出时使用 dynamic=True 标志:

Example

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.pt format=onnx dynamic=True

有关更多上下文,请参阅 动态输入尺寸配置

优化模型性能时需要考虑哪些关键导出参数?

理解和配置导出参数对于优化模型性能至关重要:

  • format: 导出模型的目标格式(例如,onnxtorchscripttensorflow)。
  • imgsz: 模型输入的所需图像尺寸(例如,640(高度, 宽度))。
  • half: 启用 FP16 量化,减小模型大小并可能加速推理。
  • optimize: 应用特定优化以适应移动设备或受限环境。
  • int8: 启用 INT8 量化,对边缘部署非常有益。

有关所有导出参数的详细列表和解释,请访问 导出参数部分。 ```


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments