YOLO Vision 2026:

YOLO26 模型的 ONNX 导出#

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

通常,在部署computer vision模型时,你需要一种既灵活又兼容多种平台的模型格式。

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



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

ONNX 与 ONNX Runtime#

ONNX代表开放式Neural Network交换(Open Neural Network Exchange),是由Facebook和微软最初开发的社区项目。ONNX的持续发展是一项协作努力,得到了IBM、亚马逊(通过AWS)和谷歌等各种组织的支持。该项目的目标是创建一个开放的文件格式,用于表示machine learning模型,以便它们能够在不同的AI框架和硬件之间使用。

ONNX模型可用于在不同框架之间无缝过渡。例如,在PyTorch中训练的deep learning模型可以导出为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都为机器学习model deployment和兼容性提供了一个灵活的解决方案。

ONNX 模型的主要特性#

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

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

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

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

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

ONNX 的常见用途#

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

CPU 部署#

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

支持的部署选项#

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

  • GPU加速:ONNX完全支持GPU加速,特别是NVIDIA CUDA。要在AMD GPU上进行原生训练和推理,请使用PyTorch ROCm;ONNX文件仍然需要一个兼容AMD的运行时。

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

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

支持的任务#

ONNX 导出支持所有七个 Ultralytics 任务。语义分割和深度估计仅在 YOLO26 中可用,这是唯一带有这些预测头的系列。

任务YOLOv8YOLO11YOLO26
检测
分割
语义
深度
分类
Pose
OBB

将 YOLO26 模型导出为 ONNX#

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

安装#

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

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

有关安装过程的详细说明和最佳实践,请查看我们的YOLO26 Installation guide。在安装 YOLO26 所需的软件包时,如果遇到任何困难,请参考我们的Common Issues guide获取解决方案和提示。

用法#

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

ONNX格式支持ExportPredictValidate模式。导出你的模型,然后加载导出的模型以运行推理或验证其准确性。

导出
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")

导出参数#

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

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

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

部署导出的 YOLO26 ONNX 模型#

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

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

  • 在边缘设备上部署:查看此文档页面,了解在边缘部署ONNX模型的各种示例。

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

  • Triton推理服务器:了解如何使用NVIDIA的Triton推理服务器部署你的ONNX模型,以实现高性能、可扩展的部署。

总结#

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

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

有关用法的更多详细信息,请访问ONNX官方文档

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

常见问题解答#

  • 要使用 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")

    有关更多详细信息,请访问export documentation

  • 使用 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 模型可以部署在多种平台上,包括:

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

    有关更多信息,请浏览我们的model deployment options指南。

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

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

    请参阅关于exporting YOLO26 models to ONNX的综合指南。

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

    1. 验证你是否已安装了所需依赖项的正确版本。
    2. 检查官方ONNX documentation以了解支持的操作符和功能。
    3. 查看错误消息以寻找线索,并查阅Ultralytics Common Issues guide
    4. 尝试使用不同的导出参数(如simplify=True)或调整opset版本。
    5. 对于动态输入大小问题,请在导出期间设置dynamic=True

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

评论