Ultralytics YOLO 模型导出
简介
训练模型的最终目标是将其部署到实际应用中。Ultralytics YOLO11 的导出模式提供了多种选项,可以将训练好的模型导出为不同的格式,使其能够在各种平台和设备上部署。本综合指南旨在带您了解模型导出的细节,展示如何实现最大兼容性和性能。
观看: 如何导出自定义训练的 Ultralytics YOLO 模型并在网络摄像头上进行实时推理。
为何选择 YOLO11 的导出模式?
- 多功能性: 导出为多种格式,包括 ONNX、TensorRT、CoreML 等。
- 性能: 通过 TensorRT 获得高达 5 倍的 GPU 加速,通过 ONNX 或 OpenVINO 获得 3 倍的 CPU 加速。
- 兼容性: 使您的模型能够在众多硬件和软件环境中通用部署。
- 易用性: 简单的 CLI 和 Python API,实现快速直接的模型导出。
导出模式的关键功能
以下是一些突出的功能:
- 一键导出: 简单的命令导出为不同格式。
- 批量导出: 导出支持批量推理的模型。
- 优化推理: 导出的模型经过优化,推理时间更快。
- 教程视频: 深入的指南和教程,提供顺畅的导出体验。
使用示例
将 YOLO11n 模型导出为不同的格式,如 ONNX 或 TensorRT。请参阅下面的参数部分,获取完整的导出参数列表。
Example
参数
下表详细列出了将 YOLO 模型导出为不同格式的配置和选项。这些设置对于优化导出模型的性能、大小和跨各种平台和环境的兼容性至关重要。正确的配置确保模型在目标应用中以最佳效率部署。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
format |
str |
'torchscript' |
导出模型的目标格式,如 'onnx' , 'torchscript' , 'tensorflow' 或其他格式,定义了与各种部署环境的兼容性。 |
imgsz |
int 或 tuple |
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
```
有关该过程的更多详细信息,包括处理不同输入大小等高级选项,请参阅 ONNX 部分。
使用 TensorRT 进行模型导出有哪些好处?
使用 TensorRT 进行模型导出可显著提升性能。导出到 TensorRT 的 YOLO11 模型可以实现高达 5 倍的 GPU 加速,非常适合实时推理应用。
- 多功能性: 针对特定硬件配置优化模型。
- 速度: 通过高级优化实现更快的推理。
- 兼容性: 与 NVIDIA 硬件无缝集成。
要了解更多关于集成 TensorRT 的信息,请参阅 TensorRT 集成指南。
如何在导出 YOLO11 模型时启用 INT8 量化?
INT8 量化是压缩模型和加速推理的绝佳方式,尤其是在边缘设备上。以下是如何启用 INT8 量化的方法:
Example
INT8 量化可以应用于多种格式,如 TensorRT 和 CoreML。更多详情请参阅 导出部分。
为什么在导出模型时动态输入尺寸很重要?
动态输入尺寸允许导出的模型处理不同尺寸的图像,提供灵活性并优化不同使用场景的处理效率。在导出到 ONNX 或 TensorRT 等格式时,启用动态输入尺寸确保模型能够无缝适应不同的输入形状。
要启用此功能,请在导出时使用 dynamic=True
标志:
Example
有关更多上下文,请参阅 动态输入尺寸配置。
优化模型性能时需要考虑哪些关键导出参数?
理解和配置导出参数对于优化模型性能至关重要:
format:
导出模型的目标格式(例如,onnx
、torchscript
、tensorflow
)。imgsz:
模型输入的所需图像尺寸(例如,640
或(高度, 宽度)
)。half:
启用 FP16 量化,减小模型大小并可能加速推理。optimize:
应用特定优化以适应移动设备或受限环境。int8:
启用 INT8 量化,对边缘部署非常有益。
有关所有导出参数的详细列表和解释,请访问 导出参数部分。 ```