跳至内容

模型导出Ultralytics YOLO

Ultralytics YOLO 生态系统和集成

导言

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



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

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

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

导出模式的主要功能

以下是一些突出的功能:

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

提示

  • 导出到 ONNXOpenVINO可将CPU 的速度提高 3 倍。
  • 导出到 TensorRT可将GPU 的速度提高 5 倍。

使用示例

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

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.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', 'engine' TensorRT)或其他格式。每种格式都能兼容不同的 部署环境.
imgsz inttuple 640 模型输入所需的图像尺寸。对于正方形图像,可以是整数(例如、 640 为 640×640)或一个元组 (height, width) 了解具体尺寸。
keras bool False 可导出为 Keras 格式 TensorFlowSavedModel的 Keras 格式,提供与TensorFlow serving 和 API 的兼容性。
optimize bool False 在导出到TorchScript 时针对移动设备进行优化,从而缩小模型大小并提高推理性能。与NCNN 格式或CUDA 设备不兼容。
half bool False 启用 FP16(半精度)量化,在支持的硬件上减小模型大小并可能加快推理速度。与 INT8 量化或ONNX 的CPU 输出不兼容。
int8 bool False 激活 INT8 量化,进一步压缩模型并加快推理速度,同时将精度损失降到最低,主要用于边缘设备。与TensorRT 一起使用时,会执行训练后量化 (PTQ)。
dynamic bool False 允许ONNX、TensorRT 和OpenVINO 输出动态输入尺寸,提高了处理不同图像尺寸的灵活性。自动设置为 True 使用 INT8 的TensorRT 时。
simplify bool True 简化了ONNX 输出的模型图。 onnxslim这可能会提高推理引擎的性能和兼容性。
opset int None 指定ONNX 操作集版本,以便与不同的 ONNX解析器和运行时的兼容性。如果未设置,则使用最新支持的版本。
workspace floatNone None 设置工作区的最大大小(单位:GiB TensorRT 优化,平衡内存使用和性能。使用方法 None TensorRT 进行自动分配,最高可达设备最大值。
nms bool False 如果支持(请参阅导出格式),则在导出模型中添加非最大值抑制 (NMS),以提高检测后处理效率。不适用于端对端模型。
batch int 1 指定导出模型的批量推理大小,或导出模型同时处理的最大图像数。 predict 模式。对于边缘TPU 输出,该值自动设为 1。
device str None 指定导出设备:GPU (device=0)、CPU (device=cpu)、MPS for Apple silicon (device=mps)或NVIDIA Jetson 的 DLA (device=dla:0device=dla:1).TensorRT 输出会自动使用GPU。
data str 'coco8.yaml' 通往 数据集 配置文件(默认: coco8.yaml),这对 INT8 量化校准至关重要。如果在启用 INT8 时没有指定,将分配一个默认数据集。

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

导出格式

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

格式 format 论据 模型 元数据 论据
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, nms, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, nms, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, nms, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF 轻型 tflite yolo11n.tflite imgsz, half, int8, nms, batch, data
TF 边缘TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, nms, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
MNN mnn yolo11n.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch
IMX500 imx yolov8n_imx_model/ imgsz, int8, data
RKNN rknn yolo11n_rknn_model/ imgsz, batch, name

常见问题

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

使用Ultralytics 可以直接将YOLO11 模型导出为ONNX 格式。它提供了Python 和CLI 两种导出模型的方法。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

有关该过程的更多详情,包括处理不同输入尺寸等高级选项,请参阅ONNX 集成指南

使用TensorRT 导出模型有什么好处?

使用TensorRT 导出模型可显著提高性能。YOLO11 导出到TensorRT 的模型速度最高可达GPU 的 5 倍,是实时推理应用的理想选择。

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

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

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

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

示例

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.pt format=engine int8=True # export TensorRT model with INT8 quantization

INT8 量化可应用于各种格式,例如 TensorRT, OpenVINOCoreML.为获得最佳量化结果,请提供具有代表性的 数据集 使用 data 参数。

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

动态输入尺寸允许导出的模型处理不同的图像尺寸,为不同的使用案例提供灵活性和优化处理效率。当导出为 ONNXTensorRT等格式时,启用动态输入尺寸可确保模型无缝适应不同的输入形状。

要启用此功能,请使用 dynamic=True 标志:

示例

from ultralytics import YOLO

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

对于输入尺寸可能变化的应用,如视频处理或处理来自不同来源的图像时,动态输入尺寸尤其有用。

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

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

  • format: 导出模型的目标格式(例如:"......")、 onnx, torchscript, tensorflow).
  • imgsz: 模型输入所需的图像大小(例如:"......")、 640(height, width)).
  • half: 启用 FP16 量化,减少模型大小,并可能加快推理速度。
  • optimize: 针对移动或受限环境进行特定优化。
  • int8: 启用 INT8 量化,非常有利于 边缘人工智能 部署。

若要在特定硬件平台上部署,可考虑使用专门的导出格式,如 TensorRT等专业导出格式、 CoreML或用于Google Coral 设备的EdgeTPU

📅创建于 1 年前 ✏️已更新 1 天前

评论