在项目开发中,经常需要将训练好的YOLO模型转换成一个适用于Web环境的格式——ONNX(Open Neural Network Exchange)格式

导出方式

参考官方文档,给出了两种导出形式:

Python

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
# model = YOLO('path/to/best.pt') # load a custom trained model

# Export the model
model.export(
   format="onnx", dynamic=True
)  # export to ONNX (for deployment to C++, Android, iOS, etc.)

CLI

yolo export model=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

参数

该表详细说明了可用于将YOLO模型导出为不同格式的配置和选项。这些设置对于优化导出模型的性能、大小和跨各种平台和环境的兼容性至关重要。正确的配置确保模型可以以最佳效率部署到预期的应用程序中。

ArgumentTypeDefaultDescription
formatstr'torchscript'导出模型的目标格式,例如“onnx”、“torchscript”、“tensorflow”或其他格式,定义与各种部署环境的兼容性。
imgszint or tuple640模型输入所需的图像大小。正方形图像可以是整数,特定尺寸可以是元组(height, width)
kerasboolFalse能够导出到Keras格式的TensorFlow SavedModel,提供了一种服务和api的兼容性。
optimizeboolFalse在导出到TorchScript时对移动设备进行优化,可能会减少模型大小并提高性能。
halfboolFalse实现FP16(半精度)量化,减少模型大小,并可能加快支持的硬件上的推理。
int8boolFalse激活INT8量化,进一步压缩模型并以最小的精度损失加快推理,主要用于边缘设备。
dynamicboolFalse允许ONNX和TensorRT导出的动态输入大小,增强了处理不同图像尺寸的灵活性。
simplifyboolFalse简化了ONNX导出的模型图,可能会提高性能和兼容性。
opsetintNone指定ONNX opset版本,以兼容不同的ONNX解析器和运行时。如果没有设置,则使用支持的最新版本。
workspacefloat4.0设置以GB为单位的最大工作空间大小,用于TensorRT优化,平衡内存使用和性能。
nmsboolFalse在CoreML导出中添加了非极大值抑制(NMS),这对于准确和高效的检测后处理至关重要。

通过调整这些参数,可以定制导出过程以适应特定的需求,例如部署环境、硬件约束和性能目标。选择适当的格式和设置对于实现模型大小、速度和精度之间的最佳平衡至关重要。