以下是关于如何导出 YOLOv11 模型的详细步骤和说明:
1. 导出 YOLOv11 模型的基本步骤
YOLOv11 模型可以通过 Ultralytics 提供的接口轻松导出为多种格式,如 ONNX、TensorRT、CoreML 等。以下是导出模型的基本步骤:
1.1 安装 Ultralytics 库
首先,确保已安装 Ultralytics 库:
pip install ultralytics
1.2 加载模型并导出
使用 Python 代码加载 YOLOv11 模型并导出为 ONNX 格式:
from ultralytics import YOLO
# 加载模型
model = YOLO("yolov11n.pt") # 加载预训练模型或自定义训练模型
# 导出模型为 ONNX 格式
model.export(format="onnx")
导出的 ONNX 文件会保存在与 .pt 文件相同的目录下,文件名为 yolov11n.onnx。
2. 导出时的参数配置
Ultralytics 提供了丰富的导出参数,可以根据需求自定义导出过程。以下是一些常用参数及其说明:
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
format | str | 'onnx' | 导出格式,如 'onnx'、'tensorrt'、'coreml' 等。 |
imgsz | int/tuple | 640 | 输入图像的尺寸,可以是整数(如 640)或元组(如 (640, 640))。 |
half | bool | False | 是否启用 FP16 半精度量化,适用于支持 FP16 的硬件。 |
int8 | bool | False | 是否启用 INT8 量化,适用于边缘设备。 |
dynamic | bool | False | 是否启用动态输入尺寸,适用于处理不同尺寸的图像。 |
simplify | bool | True | 是否简化 ONNX 模型图,以提高性能和兼容性。 |
opset | int | None | 指定 ONNX opset 版本,默认使用最新支持的版本。 |
workspace | float | 4.0 | 为 TensorRT 优化设置最大工作区大小(GiB)。 |
batch | int | 1 | 指定批处理大小。 |
device | str | None | 指定导出设备,如 'cpu' 或 '0'(GPU)。 |
示例代码:
model.export(
format="onnx", # 导出格式
imgsz=(640, 640), # 输入图像尺寸
half=False, # 不启用 FP16 量化
int8=False, # 不启用 INT8 量化
dynamic=False, # 不启用动态输入尺寸
simplify=True, # 简化 ONNX 模型
opset=None, # 使用默认 opset 版本
workspace=4.0, # TensorRT 工作区大小
batch=1, # 批处理大小
device="cpu" # 导出设备
)
3. 支持的导出格式
YOLOv11 支持多种导出格式,具体如下:
| 格式 | 参数值 | 说明 |
|---|---|---|
| PyTorch | - | 默认格式,生成 .pt 文件。 |
| TorchScript | torchscript | 生成 .torchscript 文件,适用于移动设备。 |
| ONNX | onnx | 生成 .onnx 文件,适用于跨平台部署。 |
| TensorRT | engine | 生成 .engine 文件,适用于 NVIDIA GPU 加速。 |
| CoreML | coreml | 生成 .mlpackage 文件,适用于 Apple 设备。 |
| TensorFlow | saved_model | 生成 TensorFlow SavedModel 格式。 |
| TensorFlow Lite | tflite | 生成 .tflite 文件,适用于移动和边缘设备。 |
| OpenVINO | openvino | 生成 OpenVINO 格式,适用于 Intel 硬件。 |
示例代码:
model.export(format="tensorrt") # 导出为 TensorRT 格式
4. 导出后的模型使用
导出后的模型可以用于推理部署。例如,使用 ONNX 模型进行推理的代码如下:
from ultralytics import YOLO
# 加载导出的 ONNX 模型
onnx_model = YOLO("yolov11n.onnx")
# 进行推理
results = onnx_model("https://ultralytics.com/images/bus.jpg")
results.show()
5. 常见问题
5.1 如何启用 INT8 量化?
在导出时设置 int8=True:
model.export(format="onnx", int8=True)
适用于 TensorRT 和 CoreML 格式。
5.2 如何启用动态输入尺寸?
在导出时设置 dynamic=True:
model.export(format="onnx", dynamic=True)
适用于 ONNX 和 TensorRT 格式。
通过以上步骤,您可以轻松导出 YOLOv11 模型并部署到不同的平台和设备上。如果需要更详细的参数说明或示例,可以参考 Ultralytics 官方文档。
1万+

被折叠的 条评论
为什么被折叠?



