模型导出Ultralytics YOLO
导言
训练模型的最终目的是将其部署到实际应用中。Ultralytics YOLOv8 中的导出模式为将训练好的模型导出为不同格式提供了多种选择,使其可以在各种平台和设备上部署。本综合指南旨在指导您了解模型导出的细微差别,展示如何实现最大的兼容性和性能。
观看: 如何导出自定义训练的Ultralytics YOLOv8 模型并在网络摄像头上运行实时推理。
为什么选择YOLOv8 的导出模式?
- 多功能性:导出为多种格式,包括ONNX,TensorRT,CoreML 等。
- 性能:使用TensorRT 可使 GPU 速度提高 5 倍,使用ONNX 或OpenVINO 可使 CPU 速度提高 3 倍。
- 兼容性:使您的模型可在众多硬件和软件环境中通用部署。
- 易用性:简单的CLI 和Python 应用程序接口,可快速直接地导出模型。
导出模式的主要功能
以下是一些突出的功能:
- 一键导出:导出为不同格式的简单命令。
- 批量导出:批量导出:导出具有批量推理功能的模型。
- 优化推理:输出模型经过优化,推理时间更短。
- 教程视频:深入浅出的指南和教程,带来流畅的导出体验。
提示
- 导出到ONNX 或OpenVINO ,CPU 速度可提高 3 倍。
- 导出到TensorRT ,GPU 速度可提高 5 倍。
使用示例
将YOLOv8n 模型导出为不同的格式,如ONNX 或TensorRT 。有关导出参数的完整列表,请参阅下面的参数部分。
示例
论据
本表详细介绍了将YOLO 模型导出为不同格式时可用的配置和选项。这些设置对于优化导出模型的性能、大小以及在不同平台和环境中的兼容性至关重要。正确的配置可确保模型以最佳效率部署到预定应用中。
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
format |
str |
'torchscript' |
导出模型的目标格式,例如 'onnx' , 'torchscript' , 'tensorflow' 或其他,定义与各种部署环境的兼容性。 |
imgsz |
int 或 tuple |
640 |
模型输入所需的图像尺寸。对于正方形图像,可以是一个整数,或者是一个元组 (height, width) 了解具体尺寸。 |
keras |
bool |
False |
启用导出为 Keras 格式的TensorFlow SavedModel ,提供与TensorFlow serving 和 API 的兼容性。 |
optimize |
bool |
False |
在导出到TorchScript 时,应用针对移动设备的优化,可能会减小模型大小并提高性能。 |
half |
bool |
False |
启用 FP16(半精度)量化,在支持的硬件上减小模型大小并可能加快推理速度。 |
int8 |
bool |
False |
激活 INT8 量化,进一步压缩模型并加快推理速度,同时将精度损失降至最低,主要用于边缘设备。 |
dynamic |
bool |
False |
允许ONNX 和TensorRT 导出动态输入尺寸,提高了处理不同图像尺寸的灵活性。 |
simplify |
bool |
False |
简化了ONNX 导出的模型图,可能会提高性能和兼容性。 |
opset |
int |
None |
指定ONNX opset 版本,以便与不同的ONNX 解析器和运行时兼容。如果未设置,则使用最新的支持版本。 |
workspace |
float |
4.0 |
以 GB 为单位设置最大工作区大小,用于TensorRT 优化,平衡内存使用和性能。 |
nms |
bool |
False |
在CoreML 导出中添加非最大值抑制 (NMS),这对精确高效的检测后处理至关重要。 |
batch |
int |
1 |
指定导出模型的批量推理大小,或导出模型将同时处理的图像的最大数量。 predict 模式。 |
调整这些参数可自定义导出过程,以满足特定要求,如部署环境、硬件限制和性能目标。选择适当的格式和设置对于实现模型大小、速度和准确性之间的最佳平衡至关重要。
导出格式
YOLOv8 可用的导出格式如下表所示。您可以使用 format
参数,即 format='onnx'
或 format='engine'
.您可以直接对导出的模型进行预测或验证,即 yolo predict model=yolov8n.onnx
.导出完成后会显示模型的使用示例。
格式 | format 论据 |
模型 | 元数据 | 论据 |
---|---|---|---|---|
PyTorch | - | yolov8n.pt |
✅ | - |
TorchScript | torchscript |
yolov8n.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolov8n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolov8n_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolov8n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , batch |
CoreML | coreml |
yolov8n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolov8n_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolov8n.pb |
❌ | imgsz , batch |
TF 轻型 | tflite |
yolov8n.tflite |
✅ | imgsz , half , int8 , batch |
TF 边缘TPU | edgetpu |
yolov8n_edgetpu.tflite |
✅ | imgsz , batch |
TF.js | tfjs |
yolov8n_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolov8n_paddle_model/ |
✅ | imgsz , batch |
NCNN | ncnn |
yolov8n_ncnn_model/ |
✅ | imgsz , half , batch |