模型导出Ultralytics YOLO
导言
训练模型的最终目的是将其部署到实际应用中。Ultralytics YOLO11 中的导出模式为将训练好的模型导出为不同格式提供了多种选择,使其可以在各种平台和设备上部署。本综合指南旨在指导您了解模型导出的细微差别,展示如何实现最大的兼容性和性能。
观看: 如何导出自定义训练的Ultralytics YOLO 模型并在网络摄像头上运行实时推理。
为什么选择YOLO11 的导出模式?
- 多功能性:导出为多种格式,包括ONNX,TensorRT,CoreML 等。
- 性能:使用TensorRT 最多可将GPU 的速度提高 5 倍,使用ONNX 或OpenVINO 最多可将CPU 的速度提高 3 倍。
- 兼容性:使您的模型可在众多硬件和软件环境中通用部署。
- 易用性:简单的CLI 和Python 应用程序接口,可快速直接导出模型。
导出模式的主要功能
以下是一些突出的功能:
- 一键导出:导出为不同格式的简单命令。
- 批量导出:批量导出:导出具有批量推理功能的模型。
- 优化推理:输出模型经过优化,推理时间更短。
- 教程视频:深入浅出的指南和教程,带来流畅的导出体验。
使用示例
将 YOLO11n 模型导出为不同格式,如ONNX 或TensorRT 。有关导出参数的完整列表,请参阅下面的参数部分。
示例
论据
本表详细介绍了可用于将YOLO 模型导出为不同格式的配置和选项。这些设置对于优化导出模型的性能、大小以及在不同平台和环境中的兼容性至关重要。正确的配置可确保模型以最佳效率部署到预定应用中。
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
format |
str |
'torchscript' |
导出模型的目标格式,例如 'onnx' , 'torchscript' , 'tensorflow' 或其他,定义与各种部署环境的兼容性。 |
imgsz |
int 或 tuple |
640 |
模型输入所需的图像尺寸。对于正方形图像,可以是一个整数,或者是一个元组 (height, width) 了解具体尺寸。 |
keras |
bool |
False |
可导出为 Keras 格式 TensorFlowSavedModel的 Keras 格式,提供与TensorFlow serving 和 API 的兼容性。 |
optimize |
bool |
False |
在导出到TorchScript 时,应用针对移动设备的优化,可能会减小模型大小并提高性能。 |
half |
bool |
False |
启用 FP16(半精度)量化,在支持的硬件上减小模型大小并可能加快推理速度。 |
int8 |
bool |
False |
激活 INT8 量化,进一步压缩模型并加快推理速度,同时将精度损失降至最低,主要用于边缘设备。 |
dynamic |
bool |
False |
允许为ONNX 、TensorRT 和OpenVINO 导出动态输入尺寸,提高了处理不同图像尺寸的灵活性。 |
simplify |
bool |
True |
简化了ONNX 输出的模型图。 onnxslim 这可能会提高性能和兼容性。 |
opset |
int |
None |
指定ONNX opset 版本,以便与不同的ONNX 解析器和运行时兼容。如果未设置,则使用最新的支持版本。 |
workspace |
float 或 None |
None |
为TensorRT 优化设置最大工作区大小(GiB),以平衡内存使用和性能;使用 None TensorRT 进行自动分配,最高可达设备最大值。 |
nms |
bool |
False |
在CoreML 导出中添加非最大值抑制 (NMS),这对精确高效的检测后处理至关重要。 |
batch |
int |
1 |
指定导出模型的批量推理大小,或导出模型将同时处理的图像的最大数量。 predict 模式。 |
device |
str |
None |
指定导出设备:GPU (device=0 )、CPU (device=cpu )、MPS for Apple silicon (device=mps )或NVIDIA Jetson 的 DLA (device=dla:0 或 device=dla:1 ). |
调整这些参数可自定义导出过程,以满足特定要求,如部署环境、硬件限制和性能目标。选择合适的格式和设置对于实现模型大小、速度和准确性之间的最佳平衡至关重要。
导出格式
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 轻型 | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , batch |
TF 边缘TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , 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 |
常见问题
如何将YOLO11 模型导出为ONNX 格式?
使用Ultralytics 可以直接将YOLO11 模型导出为ONNX 格式。它提供了Python 和CLI 两种导出模型的方法。
示例
有关程序的更多详情,包括处理不同输入尺寸等高级选项,请参阅ONNX 部分。
使用TensorRT 导出模型有什么好处?
使用TensorRT 导出模型可显著提高性能。YOLO11 导出到TensorRT 的模型速度最高可达GPU 的 5 倍,是实时推理应用的理想选择。
- 多功能性:针对特定硬件设置优化模型。
- 速度:通过高级优化实现更快的推理。
- 兼容性:可与NVIDIA 硬件顺利集成。
要了解有关集成TensorRT 的更多信息,请参阅TensorRT 集成指南。
导出YOLO11 模型时,如何启用 INT8 量化?
INT8 量化是压缩模型和加快推理速度的绝佳方法,尤其是在边缘设备上。下面介绍如何启用 INT8 量化:
示例
INT8 量化可应用于各种格式,如TensorRT 和CoreML 。更多详情,请参阅 "导出 "部分。
为什么输出模型时动态输入尺寸很重要?
动态输入尺寸允许导出的模型处理不同的图像尺寸,为不同的使用案例提供灵活性并优化处理效率。在导出为ONNX 或TensorRT 等格式时,启用动态输入尺寸可确保模型能无缝适应不同的输入形状。
要启用此功能,请使用 dynamic=True
标志:
示例
有关更多信息,请参阅动态输入尺寸配置。
优化模型性能需要考虑哪些关键的出口参数?
了解和配置导出参数对于优化模型性能至关重要:
format:
导出模型的目标格式(例如:"......")、onnx
,torchscript
,tensorflow
).imgsz:
模型输入所需的图像大小(例如:"......")、640
或(height, width)
).half:
启用 FP16 量化,减少模型大小,并可能加快推理速度。optimize:
针对移动或受限环境进行特定优化。int8:
启用 INT8 量化,非常有利于边缘部署。
有关所有导出参数的详细列表和解释,请访问导出参数部分。