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 模型与 ONNX Runtime 的兼容性,它们通常部署在 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", int8=True, 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)。 |
half | bool | False | 启用 FP16(半精度)量化,减小模型大小并可能在受支持的硬件上加快推理速度。 |
int8 | bool | False | 使用来自 data 的校准图像启用 ONNX Runtime 的 INT8 静态量化,生成 _int8.onnx 模型。 |
data | str | None | 用于 INT8 校准的数据集 YAML。如果在 int8=True 时省略,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 silicon 的 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导出的 YOLO26 ONNX 模型有哪些部署选项?#
导出为 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 支持团队以获取进一步协助。