导出 YOLOv11 模型的详细步骤和说明

以下是关于如何导出 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 官方文档。

你可能感兴趣的:(计算机视觉,YOLO,人工智能,计算机视觉)