了解 ONNX 如何增强人工智能模型的可移植性和互操作性,实现 Ultralytics YOLO 模型在不同平台上的无缝部署。
ONNX(开放神经网络交换)是一种表示机器学习(ML)模型的开源格式。ONNX 由微软和 Facebook 等公司共同开发,是一种通用翻译器,使开发人员能够在不同的 ML 框架和工具之间移动模型。这种互操作性对于简化从模型开发到生产的过程至关重要。团队可以在一个框架(如PyTorch)中训练模型,然后使用另一个框架(如TensorFlow或专门的推理 引擎)部署模型进行推理,而不是被锁定在一个单一的生态系统中。例如,Ultralytics YOLO 模型可以轻松导出为 ONNX 格式,为在各种平台上部署提供了最大的灵活性。
ONNX 提供了计算图的标准定义以及内置运算符列表。当你将模型转换为 ONNX 格式时,它的架构(由层和数学运算组成)就会映射到这个通用标准。由此产生的 .onnx
文件中包含网络结构和经过训练的 模型权重.
然后,任何支持 ONNX 规范的工具都可以加载这个标准化文件。这包括
ONNX 的灵活性使其在许多计算机视觉和 ML 应用场景中都非常有价值。
在边缘设备上部署人工智能:开发人员可能会在配备英伟达™(NVIDIA®)图形处理器的强大台式机上训练一个复杂的物体检测模型,如Ultralytics YOLO11。若要在树莓派(Raspberry Pi)或零售分析中使用的智能摄像头等低功耗边缘设备上运行应用程序,则需要将模型导出到 ONNX。然后,ONNX Runtime 或 OpenVINO 等运行时可对其进行优化,以在目标硬件上实现高效性能,而无需使用原始 PyTorch 环境。
将模型集成到各种应用中:假设一家医疗保健公司使用 Python 和 TensorFlow 建立了一个医学图像分析模型。该医院现有的软件基础设施是使用 C# 和 .NET 构建的。该团队没有重写模型,而是将其导出到 ONNX。然后,C# 应用程序可使用ONNX Runtime for .NET直接集成模型的功能,从而大大减少了开发时间和复杂性。
必须将 ONNX 与相关术语区分开来:
.pt
或 TensorFlow 的 SavedModel 是各自框架的原生格式。ONNX 充当了中间人的角色,允许在这些格式之间进行转换,或通过通用运行时进行部署。 TorchScript 是 PyTorch 模型序列化的另一种格式,有时被用作 ONNX 导出的替代或先驱。总之,ONNX 是确保机器学习操作(MLOps)管道灵活性和互操作性的重要标准,使开发人员能够选择最佳工具进行训练和部署,而不受框架限制。Ultralytics HUB等平台利用此类格式简化了从模型开发到实际应用的过程。要了解更多信息,请访问ONNX 官方网站,并在GitHub 上探索该项目。