术语表

ONNX (开放神经网络交流)

了解ONNX 如何增强人工智能模型的可移植性和互操作性,实现在不同平台上无缝部署Ultralytics YOLO 模型。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

在快速发展的人工智能(AI)机器学习(ML)领域,在不同工具和平台之间高效移动模型至关重要。ONNX (开放神经网络交换)通过提供专为人工智能模型设计的开源格式来应对这一挑战。它充当了通用翻译器的角色,允许开发人员在一个框架中训练模型,如 PyTorch等框架中训练模型,然后使用另一种框架或推理引擎(如 TensorFlow或专门的运行时(如ONNX Runtime)进行部署。这种互操作性简化了从研究到生产的过程,促进了人工智能生态系统内的协作和灵活性。ONNX 最初由Facebook AI ResearchMicrosoft 研究院共同开发,现已成为一个蓬勃发展的社区项目

相关性ONNX

ONNX 的核心价值在于促进 可移植性和互操作性 在人工智能开发生命周期内。开发人员可以利用ONNX 在不同工具和硬件平台之间自由移动模型,而不是被锁定在特定框架的生态系统中。通过定义一套通用的运算符(人工智能模型的构件),开发人员可以在不同的工具和硬件平台之间自由移动模型。 神经网络)和标准文件格式 (.onnx),ONNX 可确保模型的结构和学习到的参数 (重量) 的表示方法是一致的。这对 Ultralytics YOLO 模型,因为Ultralytics 提供了直接的方法来 将模型导出为ONNX 格式.这种导出功能可让用户将模型 YOLOv8 或最新的 YOLO11 并将其部署在各种硬件和软件平台上,通常利用优化的 推理引擎 以提高性能和 硬件加速.

ONNX 如何工作

ONNX 通过几个关键技术特征实现互操作性:

  • 通用模型表示法: ONNX 定义了一套标准的计算图运算符(如卷积激活函数)和一个通用的数据类型系统。当深度学习模型转换为ONNX 时,其架构和参数就会转换为这种共享表示法。
  • 基于图形的结构: ONNX 中的模型以计算图表示。图中的节点代表操作(如矩阵乘法或应用 ReLU 函数),而边代表这些操作之间的数据流(张量)。这种图结构在许多 ML 框架中都很常见,便于转换。
  • 版本系统: ONNX 维护其操作集(opsets)的版本。这确保了向后兼容性,使使用较旧运算集创建的模型仍能在支持这些版本的较新运行时上运行。
  • 可扩展性: ONNX 定义了一套核心运算符,同时也允许自定义运算符,使框架和硬件供应商能够支持专门的功能。
  • 生态系统和工具: ONNX 拥有丰富的生态系统,包括从各种框架(如 PyTorchTensorFlow等)转换模型的库,用于可视化和调试ONNX 图形的工具,以及针对不同硬件(如CPU, GPU专用加速器)进行了优化。

应用ONNX

ONNX 是连接模型训练环境和各种部署目标的重要桥梁。下面是两个具体例子:

  1. 在边缘设备上部署计算机视觉模型:开发人员利用 PyTorch在带 GPU 的强大服务器上训练物体检测模型,如 Ultralytics YOLO 模型。为了在资源有限的边缘设备(如智能相机或无人机)上进行部署,他们将模型导出为ONNX 格式。然后可以使用以下工具对ONNX 文件进行优化 NVIDIA TensorRTIntel的OpenVINO等工具进行优化,然后直接在设备上进行高效、实时的推理部署。这种灵活性体现在各种模型部署选项中。您可以以不同行业为例,了解Ultralytics 解决方案
  2. 跨框架协作与部署:一个研究团队利用 TensorFlow.另一个团队希望将该模型集成到使用 PyTorch.通过将TensorFlow 模型导出到ONNX,第二个团队可以在其PyTorch 环境中轻松加载和使用该模型,或使用标准化的ONNX Runtime在不同的服务器配置(云或内部部署)中部署该模型,而无需使用原始TensorFlow 框架。这将使模型服务和集成变得更容易。

ONNX 与相关概念的比较

必须将ONNX 与相关术语区分开来:

  • 特定框架格式: 格式,如PyTorch 的 .pt/.pthTensorFlow 的SavedModel 是各自框架的原生格式。ONNX 充当了中间人的角色,允许在这些格式之间进行转换,或通过通用运行时进行部署。 TorchScript 是PyTorch 模型序列化的另一种格式,有时被用作ONNX 导出的替代或先驱。
  • 推理引擎/运行时: ONNX Runtime 等工具、 TensorRTOpenVINO等工具都是旨在高效执行 ML 模型的软件库。其中很多引擎都能使用ONNX 模型,通常会针对特定硬件目标应用进一步优化(如量化或图融合)。ONNX 为这些引擎提供标准化的模型输入。

总之,ONNX 是确保机器学习操作(MLOps)管道灵活性和互操作性的重要标准,使开发人员能够选择最佳工具进行训练和部署,而不受框架限制。Ultralytics HUB等平台利用这种格式简化了从模型开发到实际应用的过程。

阅读全部