Meet YOLO26: next-gen vision AI.

Link to this sectionYOLO26 模型的 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 🚀

Link to this sectionONNX 与 ONNX Runtime#

ONNX 代表开放式 神经网络 交换格式,是一个由 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、TensorFlow、TFLite、scikit-learn 等框架。

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

ONNX Runtime cross-platform inference acceleration

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

Link to this sectionONNX 模型的主要特性#

ONNX 处理各种格式的能力归功于以下主要特性:

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

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

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

  • 工具与生态系统:ONNX 周围拥有丰富的工具生态系统,可辅助模型转换、可视化和优化。这些工具使开发者能够更轻松地处理 ONNX 模型,并在不同框架间无缝转换模型。

Link to this sectionONNX 的常见用途#

在我们深入了解如何将 YOLO26 模型导出为 ONNX 格式之前,先来看看 ONNX 模型通常用在哪里。

Link to this sectionCPU 部署#

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

Link to this section支持的部署选项#

尽管 ONNX 模型常用于 CPU,但它们也可以部署在以下平台上:

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

  • 边缘与移动设备:ONNX 扩展到了边缘和移动设备,非常适合端侧和实时推理场景。它轻量且兼容边缘硬件,并作为供应商 NPU 格式的基础,例如 Snapdragon 设备的 Qualcomm QNN 和 Rockchip NPU 的 RKNN

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

Link to this section将 YOLO26 模型导出为 ONNX#

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

Link to this section安装#

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

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

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

Link to this section用法#

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

ONNX 格式支持 导出预测验证 模式。导出模型后,即可加载已导出的模型进行推理或验证其准确性。

导出
from ultralytics import YOLO

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

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

# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml")  # creates 'yolo26n_int8.onnx'
预测
from ultralytics import YOLO

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

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

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

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Link to this section导出参数#

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

参数类型默认值描述
formatstr'onnx'导出模型的目标格式,定义了与各种部署环境的兼容性。
imgszinttuple640模型输入的期望图像尺寸。可以是一个用于正方形图像的整数,或者是一个用于特定尺寸的元组 (height, width)
quantizeintstrNone量化精度:16 (FP16) 或 8 (使用来自 data 的校准图像进行 ONNX Runtime 的 INT8 静态量化,生成 _int8.onnx 模型);32/未设置则为 FP32。取代了已弃用的 half/int8 标志。
datastrNone用于 INT8 校准的 Dataset YAML。如果在 quantize=8 时省略,Ultralytics 将为模型任务选择默认校准数据集。
fractionfloat1.0用于 INT8 量化的校准图像比例。
dynamicboolFalse允许动态输入尺寸,增强处理不同图像尺寸时的灵活性。
simplifyboolTrue使用 onnxslim 简化模型图,从而可能提高性能和兼容性。
opsetintNone指定 ONNX opset 版本以兼容不同的 ONNX 解析器和运行时。如果未设置,将使用最新支持的版本。
nmsboolFalse添加非极大值抑制 (NMS),这是准确高效的检测后处理所必需的。
batchint1指定导出模型的推理批次大小,或导出模型在 predict 模式下并发处理的最大图像数量。
devicestrNone指定导出所用的设备:GPU (device=0)、CPU (device=cpu) 或 Apple 芯片的 MPS (device=mps)。

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

Link to this section部署导出的 YOLO26 ONNX 模型#

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

  • ONNX Runtime Python API 文档:本指南提供了使用 ONNX Runtime 加载和运行 ONNX 模型的基本信息。

  • 边缘设备部署:查看此文档页面以获取在边缘设备上部署 ONNX 模型的不同示例。

  • GitHub 上的 ONNX 教程:一系列全面的教程,涵盖了在不同场景下使用和实现 ONNX 模型的各个方面。

  • Triton Inference Server:学习如何使用 NVIDIA 的 Triton Inference Server 部署你的 ONNX 模型,以实现高性能、可扩展的部署。

Link to this section总结#

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

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

欲了解使用详情,请访问 ONNX 官方文档

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

Link to this section常见问题解答#

Link to this section如何使用 Ultralytics 将 YOLO26 模型导出为 ONNX 格式?#

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

用法
from ultralytics import YOLO

# Load a 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")

有关更多详细信息,请访问 导出文档

Link to this section使用 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 文档 了解更多信息。

Link to this section导出为 ONNX 的 YOLO26 模型有哪些部署选项?#

导出为 ONNX 的 YOLO26 模型可以部署在多种平台上,包括:

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

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

Link to this section为什么我应该为 Ultralytics YOLO26 模型使用 ONNX 格式?#

为 Ultralytics YOLO26 模型使用 ONNX 格式提供了诸多好处:

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

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

Link to this section在将 YOLO26 模型导出为 ONNX 时,我该如何排查问题?#

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

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

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

评论