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 模型也可以与 ONNX Runtime 配合使用。ONNX Runtime 是一款通用的跨平台机器学习模型加速器,兼容 PyTorch、TensorFlow、TFLite、scikit-learn 等框架。
ONNX Runtime 通过利用特定硬件功能来优化 ONNX 模型的执行。这种优化使得模型能够在包括 CPU、GPU 和专用加速器在内的各种硬件平台上高效、高性能地运行。
无论是否与 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 格式时,你可以使用各种参数自定义流程,以优化你的特定部署需求:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
format | str | 'onnx' | 导出模型的目标格式,定义了与各种部署环境的兼容性。 |
imgsz | int 或 tuple | 640 | 模型输入的期望图像尺寸。可以是一个用于正方形图像的整数,或者是一个用于特定尺寸的元组 (height, width)。 |
quantize | int 或 str | None | 量化精度:16 (FP16) 或 8 (使用来自 data 的校准图像进行 ONNX Runtime 的 INT8 静态量化,生成 _int8.onnx 模型);32/未设置则为 FP32。取代了已弃用的 half/int8 标志。 |
data | str | None | 用于 INT8 校准的 Dataset YAML。如果在 quantize=8 时省略,Ultralytics 将为模型任务选择默认校准数据集。 |
fraction | float | 1.0 | 用于 INT8 量化的校准图像比例。 |
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 导出文档页面。
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 时,你可能会遇到依赖项不匹配或算子不支持等常见问题。要排查这些问题:
- 验证你是否已安装了所需依赖项的正确版本。
- 查看官方 ONNX 文档 以了解支持的算子和特性。
- 查看错误消息以获取线索,并查阅 Ultralytics 常见问题指南。
- 尝试使用不同的导出参数,例如
simplify=True或调整opset版本。 - 对于动态输入尺寸问题,在导出时设置
dynamic=True。
如果问题仍然存在,请联系 Ultralytics 支持团队以获取进一步协助。