跳转至内容

YOLO11 模型的 ONNX 导出

通常,在部署计算机视觉模型时,您需要一种既灵活又与多个平台兼容的模型格式。

Ultralytics YOLO11 模型导出为 ONNX 格式可简化部署,并确保在各种环境中实现最佳性能。本指南将向您展示如何轻松地将 YOLO11 模型转换为 ONNX,并增强其在实际应用中的可扩展性和有效性。

ONNX 和 ONNX Runtime

ONNX,即开放式神经网络交换,是由 Facebook 和 Microsoft 最初开发的社区项目。ONNX 的持续开发是一项协作努力,得到了 IBM、Amazon(通过 AWS)和 Google 等各种组织的支持。该项目旨在创建一种开放文件格式,用于以允许跨不同 AI 框架和硬件使用机器学习模型的方式来表示它们。

ONNX 模型可用于在不同框架之间无缝转换。例如,在 PyTorch 中训练的深度学习模型可以导出为 ONNX 格式,然后轻松导入到 TensorFlow 中。

ONNX

或者,ONNX 模型可以与 ONNX Runtime 一起使用。ONNX Runtime 是一种通用的跨平台机器学习模型加速器,与 PyTorch、TensorFlow、TFLite、scikit-learn 等框架兼容。

ONNX Runtime 通过利用特定于硬件的功能来优化 ONNX 模型的执行。这种优化允许模型在各种硬件平台上高效且高性能地运行,包括 CPU、GPU 和专用加速器。

带有 ONNX Runtime 的 ONNX

无论与 ONNX Runtime 独立使用还是协同使用,ONNX 都为机器学习模型部署和兼容性提供了灵活的解决方案。

ONNX 模型的主要特性

ONNX 处理各种格式的能力可归因于以下关键特性:

  • 通用模型表示 (Common Model Representation): ONNX 定义了一组通用的运算符(如卷积、层等)和一个标准数据格式。当模型转换为 ONNX 格式时,其架构和权重会被转换为这种通用表示。这种统一性确保了模型可以被任何支持 ONNX 的框架理解。

  • 版本控制和向后兼容性: ONNX 为其算子维护一个版本控制系统。这确保了即使标准不断发展,旧版本中创建的模型仍然可用。向后兼容性是一个关键特性,可以防止模型快速过时。

  • 基于图的模型表示: ONNX 将模型表示为计算图。这种基于图的结构是表示机器学习模型的一种通用方式,其中节点表示操作或计算,边表示在它们之间流动的 tensors。这种格式很容易适应也将模型表示为图的各种框架。

  • 工具和生态系统: ONNX 周围有一个丰富的工具生态系统,可以协助模型转换、可视化和优化。这些工具使开发人员可以更轻松地使用 ONNX 模型,并在不同框架之间无缝转换模型。

ONNX 的常见用法

在深入研究如何将 YOLO11 模型导出为 ONNX 格式之前,让我们先看看 ONNX 模型通常在哪些地方使用。

CPU 部署

ONNX 模型通常部署在 CPU 上,因为它们与 ONNX Runtime 兼容。此运行时针对 CPU 执行进行了优化。它显着提高了推理速度,并使实时 CPU 部署成为可能。

支持的部署选项

虽然 ONNX 模型通常在 CPU 上使用,但它们也可以部署在以下平台上:

  • GPU 加速: ONNX 完全支持 GPU 加速,特别是 NVIDIA CUDA。这使得在需要高计算能力的任务中,能够在 NVIDIA GPU 上高效执行。

  • 边缘和移动设备:ONNX 扩展到边缘和移动设备,非常适合设备上和实时推理场景。 它重量轻,并且与边缘硬件兼容。

  • Web 浏览器: ONNX 可以在 Web 浏览器中直接运行,从而为交互式和动态的 Web AI 应用程序提供支持。

将 YOLO11 模型导出到 ONNX

您可以通过将 YOLO11 模型转换为 ONNX 格式来扩展模型兼容性和部署灵活性。Ultralytics YOLO11 提供了一个简单的导出过程,可以显着提高您的模型在不同平台上的性能。

安装

要安装所需的软件包,请运行:

安装

# Install the required package for YOLO11
pip install ultralytics

有关安装过程的详细说明和最佳实践,请查看我们的YOLO11安装指南。在为YOLO11安装所需软件包时,如果遇到任何困难,请查阅我们的常见问题指南,获取解决方案和技巧。

用法

在深入了解使用说明之前,请务必查看 Ultralytics 提供的 YOLO11 模型系列。这将帮助您为您的项目需求选择最合适的模型。

用法

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

导出参数

将您的 YOLO11 模型导出为 ONNX 格式时,您可以使用各种参数自定义该过程,以针对您的特定部署需求进行优化:

参数 类型 默认值 描述
format str 'onnx' 导出模型的目标格式,定义与各种部署环境的兼容性。
imgsz inttuple 640 模型输入的所需图像大小。 可以是正方形图像的整数或元组 (height, width) 用于指定特定维度。
half bool False 启用 FP16(半精度)量化,从而减小模型大小并可能加快受支持硬件上的推理速度。
dynamic bool False 允许动态输入大小,从而增强了处理不同图像尺寸的灵活性。
simplify bool True 使用以下方式简化模型图 onnxslim,从而可能提高性能和兼容性。
opset int None 指定 ONNX opset 版本,以便与不同的 ONNX 解析器和运行时兼容。 如果未设置,则使用最新支持的版本。
nms bool False 添加非极大值抑制 (NMS),这对于准确高效的检测后处理至关重要。
batch int 1 指定导出模型批处理推理大小或导出模型将并发处理的最大图像数量,在 predict 模式下。
device str None 指定导出设备:GPU (device=0),CPU(device=cpu),适用于 Apple 芯片的 MPS(device=mps)。

有关导出过程的更多详细信息,请访问Ultralytics 文档页面上的导出

部署导出的 YOLO11 ONNX 模型

成功将 Ultralytics YOLO11 模型导出为 ONNX 格式后,下一步是将这些模型部署到各种环境中。有关部署 ONNX 模型的详细说明,请查看以下资源:

总结

在本指南中,您学习了如何将 Ultralytics YOLO11 模型导出为 ONNX 格式,以提高它们在各种平台上的互操作性和性能。此外,还向您介绍了 ONNX Runtime 和 ONNX 部署选项。

ONNX 导出只是 Ultralytics YOLO11 支持的众多导出格式之一,允许您在几乎任何环境中部署您的模型。根据您的具体需求,您可能还需要探索其他导出选项,例如用于最大化 GPU 性能的 TensorRT 或用于 Apple 设备的 CoreML

有关使用详情,请访问 ONNX 官方文档

此外,如果您想了解更多关于 Ultralytics YOLO11 集成的信息,请访问我们的集成指南页面。您将在那里找到大量有用的资源和见解。

常见问题

如何使用 Ultralytics 将 YOLO11 模型导出为 ONNX 格式?

要使用 Ultralytics 将您的 YOLO11 模型导出为 ONNX 格式,请按照以下步骤操作:

用法

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

更多详情,请访问导出文档

使用 ONNX Runtime 部署 YOLO11 模型有哪些优势?

使用 ONNX Runtime 部署 YOLO11 模型具有以下几个优点:

  • 跨平台兼容性: ONNX Runtime 支持各种平台,例如 Windows、macOS 和 Linux,确保您的模型在不同的环境中平稳运行。
  • 硬件加速: ONNX Runtime 可以利用针对 CPU、GPU 和专用加速器的硬件特定优化,从而提供高性能的推理。
  • 框架互操作性: 在 PyTorch 或 TensorFlow 等常用框架中训练的模型可以轻松转换为 ONNX 格式,并使用 ONNX Runtime 运行。
  • 性能优化:与原生 PyTorch 模型相比,ONNX Runtime 可以提供高达 3 倍的 CPU 加速,使其成为 GPU 资源有限的部署场景的理想选择。

请查阅ONNX Runtime 文档,了解更多信息。

导出到 ONNX 的 YOLO11 模型有哪些部署选项?

导出到 ONNX 的 YOLO11 模型可以部署在各种平台上,包括:

  • CPU: 利用 ONNX Runtime 进行优化的 CPU 推理。
  • GPU: 利用 NVIDIA CUDA 实现高性能 GPU 加速。
  • 边缘设备: 在边缘和移动设备上运行轻量级模型,以实现实时的设备端推理。
  • Web 浏览器: 在 Web 浏览器中直接执行模型,用于交互式 Web 应用程序。
  • 云服务: 部署在支持 ONNX 格式的云平台上,以实现可扩展的推理。

更多信息,请浏览我们的模型部署选项指南。

为什么 Ultralytics YOLO11 模型应该使用 ONNX 格式?

使用 ONNX 格式的 Ultralytics YOLO11 模型具有许多优点:

  • 互操作性:ONNX 允许模型在不同的机器学习框架之间无缝传输。
  • 性能优化: ONNX Runtime 可以通过利用特定于硬件的优化来增强模型性能。
  • 灵活性: ONNX 支持各种部署环境,使您能够在不同的平台上使用相同的模型而无需修改。
  • 标准化:ONNX 提供了一种行业广泛支持的标准化格式,确保长期兼容性。

请参阅关于将 YOLO11 模型导出到 ONNX的综合指南。

如何解决将 YOLO11 模型导出到 ONNX 时出现的问题?

将YOLO11模型导出到ONNX时,您可能会遇到常见的依赖项不匹配或不支持的操作等问题。要解决这些问题:

  1. 验证您是否安装了所需依赖项的正确版本。
  2. 有关支持的算子和功能,请查看官方 ONNX 文档
  3. 查看错误消息以获取线索,并查阅Ultralytics 常见问题解答指南
  4. 尝试使用不同的导出参数,例如 simplify=True 或调整 opset 版本。
  5. 对于动态输入大小问题,请设置 dynamic=True 在导出期间。

如果问题仍然存在,请联系 Ultralytics 技术支持以获得进一步的帮助。



📅 创建于 1 年前 ✏️ 更新于 4 个月前

评论