探索开放神经网络交换 (ONNX) 格式。了解如何将 Ultralytics YOLO26 导出为 ONNX 格式,以实现快速、跨平台部署和硬件优化。
ONNX(开放神经网络交换) 是一种开源格式,旨在表示机器学习模型,允许各种 AI 框架和工具之间的互操作性。它充当深度学习的通用转换器,使开发人员能够在某个框架中(例如 PyTorch、TensorFlow 或 Scikit-learn)构建模型,并将其无缝部署到针对推理优化的另一个环境中。通过定义一组通用算子和标准文件格式,ONNX 消除了对复杂、自定义转换脚本的需求,而这些脚本在历史上是将模型从研究阶段转移到生产阶段所必需的。这种灵活性对于现代 AI 工作流至关重要,其中训练可能在强大的云 GPU 上进行,而部署目标则是边缘设备、手机或网络浏览器等多样化硬件。
在快速发展的人工智能领域,研究人员和工程师经常使用不同的工具来完成开发生命周期的不同阶段。数据科学家可能更喜欢 PyTorch 在实验和训练方面的灵活性,而生产工程师则需要 TensorRT 或 OpenVINO 针对部署优化的性能。如果没有标准的交换格式,在这些生态系统之间移动模型将变得困难且容易出错。
ONNX 通过提供计算图的共享定义来弥合这一差距。当模型导出到 ONNX 时,它被序列化为一种与框架无关的格式,该格式捕获了网络结构(层、连接)和参数(权重、偏差)。这使得专门针对硬件加速进行优化的推理引擎(例如 ONNX Runtime)能够在多个平台(包括 Linux、Windows、macOS、Android 和 iOS)上高效执行模型。
采用开放神经网络交换格式为AI项目提供了多项战略优势:
.onnx 文件可以在NVIDIA GPU、Intel CPU或移动NPU(神经网络处理单元)上使用诸如
OpenVINO 或CoreML之类的工具进行加速。
ONNX 的多功能性使其成为各个行业的重要组成部分。以下是其应用的两个具体示例:
设想一个专为实时作物健康监测设计的移动应用程序。该模型可能在一个强大的云服务器上使用大量的植物图像数据集进行训练。然而,该应用程序需要在农民的智能手机上离线运行。通过将训练好的模型导出为ONNX格式,开发人员可以使用ONNX Runtime Mobile将其集成到移动应用程序中。这使得手机处理器可以在本地运行目标检测,即时识别病虫害,而无需互联网连接。
在电子商务中,一项“虚拟试穿”功能可能使用姿势估计将服装叠加到用户的网络摄像头画面上。该模型的训练可能在python中进行,但部署目标是网络浏览器。使用ONNX,模型可以通过ONNX Runtime Web直接在用户的浏览器中进行转换和运行。这利用了客户端设备的性能(WebGL或WebAssembly)来执行计算机视觉任务,确保了流畅且保护隐私的体验,因为视频数据从未离开用户的计算机。
区分ONNX与其他模型格式和工具有助于理解:
Ultralytics 生态系统简化了将YOLO26等最先进模型转换为ONNX格式的过程。导出功能直接内置于库中,自动处理复杂的图遍历和算子映射。
以下示例演示了如何将预训练的YOLO26模型导出为ONNX格式以进行部署:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")
一旦导出,此 .onnx 文件即可用于
Ultralytics 平台 进行管理,或使用 ONNX Runtime 直接部署到边缘设备,使高性能计算机视觉几乎可在任何环境中实现。

开启您的机器学习未来之旅