Ultralytics YOLO27:
Get Started

导出 YOLO26 模型为 ONNX 格式#

CPU 上的 ONNX 推理速度提升约 43%:YOLO26n 对比 YOLO11n
  • 在 CPU ONNX 推理中,YOLO26n 的运行速度最高比 YOLO11n 快 43%(Intel Xeon CPU @ 2.00 GHz)。完整对比请参阅 YOLO26 模型页面。

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

将 Ultralytics YOLO26 模型导出为 ONNX 格式,可以简化部署,并确保模型在各种环境中发挥最佳性能。本指南将介绍如何轻松地将 YOLO26 模型转换为 ONNX 格式,从而提升模型在实际应用中的可扩展性和效果。



观看: Ultralytics YOLO26 与 Ultralytics YOLO11 ONNX 推理测试 | YOLO26 推理速度快约 43% 🚀

ONNX 和 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、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 模型常部署在 CPU 上,因为它们兼容 ONNX Runtime。该运行时针对 CPU 执行进行了优化,能够显著提升推理速度,让实时 CPU 部署成为可能。

支持的部署选项#

ONNX 模型通常用于 CPU,也可以部署在以下平台:

  • GPU 加速:ONNX 完全支持通过 CUDA 在 NVIDIA GPU 上进行 GPU 加速,也支持通过 ROCm 和 MIGraphX 在 AMD GPU 上进行加速。

  • 边缘设备和移动设备:ONNX 也适用于边缘设备和移动设备,非常适合设备端推理和实时推理场景。它轻量且兼容边缘硬件,还为厂商的 NPU 格式提供了基础,例如 Huawei Ascend、适用于 Snapdragon 设备的 Qualcomm QNN,以及适用于 Rockchip NPU 的 RKNN。

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

支持的任务#

ONNX 导出支持 Ultralytics 的全部七种任务。语义分割和深度估计仅适用于 YOLO26,因为只有 YOLO26 系列提供这两种输出头。

任务YOLOv8YOLO11YOLO26
检测✅✅✅
分割✅✅✅
语义分割❌❌✅
深度估计❌❌✅
分类✅✅✅
姿态✅✅✅
OBB✅✅✅

将 YOLO26 模型导出为 ONNX 格式#

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

安装#

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

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

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

用法#

开始阅读使用说明前,请务必了解 Ultralytics 提供的 YOLO26 模型,以便根据项目需求选择最合适的模型。

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

导出
from ultralytics import YOLO

# 加载 YOLO26 模型
model = YOLO("yolo26n.pt")

# 将模型导出为 ONNX 格式
model.export(format="onnx")  # 创建 'yolo26n.onnx'

# 使用校准数据导出 INT8 量化的 ONNX 模型
model.export(format="onnx", quantize=8, data="coco8.yaml")  # 创建 'yolo26n_int8.onnx'
预测
from ultralytics import YOLO

# 加载导出的 ONNX 模型
model = YOLO("yolo26n.onnx")

# 运行推理
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

# 加载导出的 ONNX 模型
model = YOLO("yolo26n.onnx")

# 在 COCO8 数据集上验证准确率
metrics = model.val(data="coco8.yaml")

导出参数#

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

参数类型默认值说明
formatstr'onnx'导出模型的目标格式,用于定义与各种部署环境的兼容性。
imgszint 或 tuple640模型输入所需的图像尺寸。正方形图像可使用整数;若要指定具体尺寸,则可使用元组 (height, width)。
quantizeint 或 strNone量化精度:16(FP16)或 8(使用 ONNX Runtime 进行 INT8 静态量化,并使用来自 data 的校准图像,生成 _int8.onnx 模型);32/未设置时使用 FP32。使用 quantize=8 训练的检查点始终会根据其自带的取值范围,将 INT8 导出为 Q/DQ 节点,无需校准,并采用普通的 .onnx 名称。此参数会替代已弃用的 half/int8 标志。
datastrNone用于 INT8 校准的数据集 YAML;分类任务则使用数据集目录或内置数据集名称。若使用 quantize=8 时未提供此参数,Ultralytics 会为该模型任务选择默认校准数据集;使用 quantize=8 训练的检查点则不需要校准数据集。
fractionfloat、int 或 list1.0校准子集,可按比例、图像数量或 [train, val, test] 比例/数量指定。包含两个项目的列表会让 test 保持完整,而 0 会跳过它。
dynamicboolFalse允许使用动态输入尺寸,从而更灵活地处理不同图像尺寸。
simplifyboolTrue使用 onnxslim 简化模型图,可能提升性能和兼容性。
opsetintNone指定 ONNX opset 版本,以兼容不同的 ONNX 解析器和运行时。如果未设置,则使用最新的受支持版本。
nmsbool,可选None选择原始输出(None,默认)、嵌入式 NMS(True)或无 NMS 检测头(False)。
batchint1指定导出模型的批量推理大小,或导出模型在 predict 模式下可同时处理的最大图像数。
devicestrNone指定导出设备:GPU(device=0)、CPU(device=cpu)、Apple 芯片的 MPS(device=mps)。

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

部署导出的 YOLO26 ONNX 模型#

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

使用 MIGraphX 在 AMD GPU 上进行推理#

Ultralytics 通过 ONNX Runtime 的 MIGraphX 执行提供程序,在 AMD GPU 上运行导出的 ONNX 模型。在 ROCm (HIP) 系统上,ONNX 后端会在首次使用时安装 onnxruntime-ep-migraphx 插件,并自动选择 MIGraphXExecutionProvider,无需更改代码;同时支持所有 YOLO26 任务。有关先决条件、安装、用法、基准测试和编译程序缓存,请参阅 AMD GPU 推理指南。

总结#

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

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

如需了解更多用法详情,请访问 ONNX 官方文档。

此外,如果你想进一步了解其他 Ultralytics YOLO26 集成方案,请访问我们的集成指南页面。页面上有许多实用资源和见解。

常见问题#

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

    用法
    from ultralytics import YOLO
    
    # 加载 YOLO26 模型
    model = YOLO("yolo26n.pt")
    
    # 将模型导出为 ONNX 格式
    model.export(format="onnx")  # 创建 'yolo26n.onnx'
    
    # 加载导出的 ONNX 模型
    onnx_model = YOLO("yolo26n.onnx")
    
    # 运行推理
    results = onnx_model("https://ultralytics.com/images/bus.jpg")

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

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

    • 跨平台兼容性:ONNX Runtime 支持 Windows、macOS 和 Linux 等多个平台,确保模型在不同环境中顺畅运行。
    • 硬件加速:ONNX Runtime 可利用针对 CPU、GPU 和专用加速器的硬件优化,实现高性能推理。
    • 框架互操作性:在 PyTorch 或 TensorFlow 等常见框架中训练的模型,可以轻松转换为 ONNX 格式,并使用 ONNX Runtime 运行。
    • 性能优化:与原生 PyTorch 模型相比,ONNX Runtime 可将 CPU 速度最高提升 3 倍,因此非常适合 GPU 资源有限的部署场景。

    如需了解更多信息,请参阅 ONNX Runtime 文档。

  • 导出为 ONNX 的 YOLO26 模型可以部署到各种平台,包括:

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

    如需了解更多信息,请参阅我们的模型部署选项指南。

  • 将 ONNX 格式用于 Ultralytics YOLO26 模型有许多优点:

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

    请参阅将 YOLO26 模型导出为 ONNX的完整指南。

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

    1. 确认已安装所需依赖项的正确版本。
    2. 查看官方 ONNX 文档,了解支持的运算符和功能。
    3. 查看错误消息以寻找线索,并参阅 Ultralytics 常见问题指南。
    4. 尝试使用不同的导出参数,例如 simplify=True,或调整 opset 版本。
    5. 如果输入尺寸为动态值时出现问题,请在导出时设置 dynamic=True。

    如果问题仍未解决,请联系 Ultralytics 支持团队以获取进一步帮助。

评论