YOLO模型导出指南

在现实世界的应用中,模型的部署是一个至关重要的环节。Ultralytics YOLO的最新版本提供了一个多功能的导出模式,允许用户将训练好的模型导出到不同的格式,以便于在各种平台和设备上部署。本全面的指南旨在带了解模型导出的细节,展示如何实现最大的兼容性和性能。

选择YOLO的导出模式有以下几个理由:

多功能性:支持导出到ONNX、TensorRT、CoreML等多种格式。

性能:使用TensorRT在GPU上可以获得高达5倍的速度提升,使用ONNX或OpenVINO在CPU上可以获得高达3倍的速度提升。

兼容性:使模型能够在众多硬件和软件环境中通用部署。

易用性:简单的命令行界面(CLI)和Python API,可以快速直接地导出模型。

导出模式的关键特性包括:

一键导出:简单命令即可导出到不同格式。

批量导出:支持导出批量推理能力的模型。

优化推理:导出的模型针对更快的推理时间进行了优化。

教程视频:深入的指南和教程,确保顺利的导出体验。

提示:为了在CPU上获得高达3倍的速度提升,可以导出到ONNX或OpenVINO格式。为了在GPU上获得高达5倍的速度提升,可以导出到TensorRT格式。

使用示例:

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 | int或tuple | 640 | 模型输入所需的图像大小。可以是整数,用于正方形图像,或元组(height, width)用于特定尺寸。

keras | bool | False | 启用TensorFlow SavedModel的Keras格式导出,提供与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 opset版本,以兼容不同的ONNX解析器和运行时。如果未设置,则使用最新支持的版本。

workspace | float | 4.0 | 设置TensorRT优化的最大工作空间大小(以GiB为单位),平衡内存使用和性能。

nms | bool | False | 在CoreML导出中添加非最大抑制(NMS),对于准确高效的检测后处理至关重要。

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 ✅

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方法来导出模型。

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
# 导出自定义训练的模型
        

有关处理不同输入大小等高级选项的更多详细信息,请参考ONNX部分。

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

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

多功能性:为特定硬件设置优化模型。

速度:通过高级优化实现更快的推理。

兼容性:与NVIDIA硬件无缝集成。

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

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

INT8量化是压缩模型并加速推理的好方法,特别是在边缘设备上。以下是如何启用INT8量化的方法:

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标志:

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量化,对于边缘部署非常有益。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485