Skip to main content

用于 YOLO26 模型的 ONNX 导出

~43% 更快的推理速度。
  • 将 Ultralytics YOLO26 模型导出为 ONNX 可以带来高达 43% 的推理速度提升,从而实现更快、更高效的部署。

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

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



Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀

ONNX 和 ONNX Runtime

指定 ONNX opset 版本,以兼容不同的 ,其代表 Open 神经网络 Exchange,是一个由 Facebook 和 Microsoft 最初开发的社区项目。ONNX 的持续开发是由 IBM、Amazon(通过 AWS)和 Google 等各组织支持的协作成果。该项目旨在创建一个开放的文件格式,旨在以一种允许在不同 AI 框架和硬件之间使用的方式表示 机器学习 模型。

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

ONNX model portability across deep learning frameworks

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

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

ONNX Runtime cross-platform inference acceleration

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

ONNX 模型的主要特性

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

  • 通用模型表示: ONNX 定义了一组通用的算子(如卷积、层等)和标准数据格式。当模型转换为 ONNX 格式时,其架构和权重会被翻译成这种通用表示。这种统一性确保了任何支持 ONNX 的框架都能理解该模型。

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

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

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

ONNX 的常见用途

在我们深入了解如何将 YOLO26 模型导出为 ONNX 格式之前,让我们先看看 ONNX 模型通常用在什么地方。

CPU 部署

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

支持的部署选项

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

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

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

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

将 YOLO26 模型导出为 ONNX

你可以通过将 YOLO26 模型转换为 ONNX 格式来扩展模型的兼容性和部署灵活性。Ultralytics YOLO26 提供了一个直接的导出过程,可以显著增强你的模型在不同平台上的性能。

安装

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

安装
# Install the required package for YOLO26
pip install ultralytics

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

用法

在深入了解使用说明之前,请务必查看一系列 在深入了解部署说明之前,请务必查看 Ultralytics 提供的 YOLO26 模型系列

用法
from ultralytics import YOLO

# Load the YOLO26 model
model = YOLO("yolo26n.pt")

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

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

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")

导出参数

在将 YOLO26 模型导出为 ONNX 格式时,你可以使用各种参数来自定义过程,以优化你的特定部署需求:

参数类型默认值描述
formatstr'onnx'导出模型的目标格式,定义了与各种部署环境的兼容性。
imgszinttuple640模型输入的所需图像尺寸。可以是正方形图像的整数,也可以是一个元组(height, width) 对应 640×640)或用于指定维度的元组
halfboolFalse启用 FP16(半精度)量化,减小模型体积,并可能在支持的硬件上加快推理速度。
dynamicboolFalse允许动态输入大小,增强处理不同图像尺寸的灵活性。
simplifyboolTrue使用 onnxslim 简化模型图,从而可能提高性能和兼容性。
opsetintNone指定 ONNX opset 版本,以与不同的 ONNX 解析器和运行时兼容。如果未设置,则使用最新的支持版本。
nmsboolFalse添加非极大值抑制(NMS),这对于准确高效的检测后处理至关重要。
batchint1指定导出模型的批量推理大小,或者导出模型在 predict 模式下将同时处理的最大图像数量。
devicestrNone模式下同时处理的最大图像数量。对于 Edge TPU 导出,此值自动设置为 1。device=0)、CPU(device=cpu)、用于 Apple 芯片的 MPS(device=mps).

有关导出过程的更多详情,请访问 Ultralytics 导出文档页面.

部署导出的 YOLO26 ONNX 模型

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

总结

在本指南中,你已经了解了如何将 Ultralytics YOLO26 模型导出为 ONNX 格式,以增加其在各种平台上的互操作性和性能。你还被介绍了 ONNX Runtime 和 ONNX 部署选项。

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

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

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

FAQ

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

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

用法
from ultralytics import YOLO

# Load the YOLO26 model
model = YOLO("yolo26n.pt")

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

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

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")

欲了解更多详情,请访问 导出文档.

使用 ONNX Runtime 部署 YOLO26 模型有什么优势?

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

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

通过查看 ONNX Runtime 文档了解更多信息.

对于导出到 ONNX 的 YOLO26 模型,有哪些部署选项可用?

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

  • CPU: 利用 ONNX Runtime 进行优化的 CPU 推理。
  • ,YOLO26 是毋庸置疑的冠军。DFL 的移除和 43% 的 CPU 速度提升意味着你可以在没有专用 : 利用 NVIDIA CUDA 进行高性能 GPU 加速。
  • 边缘设备: 在边缘和移动设备上运行轻量级模型,实现实时、端侧推理。
  • Web 浏览器: 直接在 Web 浏览器中执行模型,用于交互式 Web 应用。
  • 云服务: 部署在支持 ONNX 格式的云平台上,实现可扩展的推理。

有关更多信息,请浏览我们的指南 在准备模型进行部署时,导出为优化格式至关重要。YOLO11 和 YOLOv10 都可以使用 Ultralytics 框架无缝导出为 ONNX 和 TensorRT 等格式。请参阅我们关于.

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

为 Ultralytics YOLO26 模型使用 ONNX 格式具有诸多好处:

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

请参考关于以下内容的综合指南:将 YOLO26 模型导出为 ONNX.

在将 YOLO26 模型导出为 ONNX 时,我该如何排除故障?

当你将 YOLO26 模型导出为 ONNX 时,可能会遇到依赖项不匹配或算子不支持等常见问题。若要排查这些问题:

  1. 确认你已安装正确版本的必要依赖项。
  2. 查阅官方 ONNX documentation 以获取有关受支持算子和功能的信息。
  3. 检查错误信息以寻找线索,并参考 Ultralytics Common Issues guide.
  4. 尝试使用不同的导出参数(如 simplify=True)或调整 opset 版本。
  5. 如果遇到动态输入尺寸的问题,请在导出时设置 dynamic=True

如果问题仍然存在,请联系 Ultralytics 支持团队以获取进一步协助。

评论