深圳Yolo 视觉
深圳
立即加入
词汇表

ONNX (开放神经网络交换中心)

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

开放神经网络交换ONNX)是一个开源标准,旨在以一种可 机器学习(ML)模型的方式,以确保在不同框架和硬件间的可移植性 的方式表示机器学习(ML)模型,以确保不同框架和硬件之间的可移植性。ONNX 最初由Microsoft 和 Facebook 等公司开发,ONNX 是人工智能的 "通用翻译器"。它允许开发人员在一个 生态系统中训练模型,例如 PyTorch等生态系统中训练模型,并将其无缝部署到 另一个生态系统中无缝部署,如 TensorFlow或专门的 推理引擎。这种互操作性消除了 从研究环境转向生产应用时,无需重建或重新训练网络、 大大简化了 模型部署管道。

ONNX 如何工作

ONNX 的核心是定义一套通用操作符--深度学习(DL)和机器学习模型的构建模块 深度学习(DL)和机器学习模型的构件--以及标准文件格式。 标准文件格式。当模型转换为ONNX 时,其计算结构会被映射为一个静态的 计算图。在这个图中,节点代表数学运算 节点代表数学运算(如卷积或激活函数),边代表节点之间的数据张量流。

由于这种图形表示是标准化的,因此硬件制造商可以为 ONNX 构建优化的执行提供商。 ONNX的优化执行提供商。这意味着一个 .onnx 文件可以在不同的硬件上加速,包括一个 CPU, 图形处理器(GPU或 专门 TPU Tensor 处理单元)通常 通常使用高性能的 ONNX 运行时.

将模型导出到ONNX

对于 ultralytics 软件包,将训练好的模型转换为ONNX 格式是一个直截了当的 过程。程序库会自动处理各层与ONNX 标准的复杂映射。以下代码 代码段演示了如何导出 YOLO11 模式,为 为更广泛的部署做好准备。

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
# This creates 'yolo11n.onnx' in the current directory
model.export(format="onnx")

实际应用

ONNX 的灵活性使其成为现代人工智能基础架构的重要组成部分,特别是在计算机视觉(CV)任务中。 计算机视觉(CV)任务。

  1. 跨平台移动部署:开发人员可能会使用 PyTorch 对象检测模型。 强大的工作站上训练物体检测模型。但是,最终的应用程序需要同时在iOS 和Android 设备上运行。通过将 模型导出到ONNX,开发人员就能使用 ONNX Runtime for Mobile)将同一模型文件集成到移动应用程序中,从而确保在不同操作系统上运行一致的行为,而无需维护单独的代码。 无需维护单独的代码库。
  2. 与传统系统集成:许多工业应用程序都是使用 C++ 或 C# 等语言构建的。 C# 等语言,以保证性能和稳定性。虽然Python 是训练的标准,但将Python 的模型集成到 C++ 生产环境可能会很慢,而且容易出错。ONNX 弥补了这一缺陷。使用 机器人中的计算机视觉 可以在Python 中训练模型,将其导出至ONNX,然后将其直接加载到 C++ 控制软件中,在工厂中进行高速实时推理。 进行高速实时推理。 车间。

ONNX 与相关概念的比较

了解ONNX 与其他工具的交互方式有助于选择正确的部署策略。

  • ONNX 与TensorRT: ONNX 是一种用于表示模型的文件格式、 TensorRT是一个高性能优化 SDK TensorRT 是NVIDIA ®)公司专为NVIDIA )GPU 开发的高性能优化 SDK。二者经常协同工作;开发人员将模型导出为ONNX ,然后使用 TensorRT 对模型进行优化。 然后使用TensorRT 来摄取ONNX 文件,应用积极的 模型优化 层融合和校准等积极的模型优化技术,从而在NVIDIA (NVIDIA ®)硬件上实现最高速度。
  • ONNX 与框架格式(如 .pt、.h5): 原生格式,如PyTorch 的 .pt 或 或 Keras 的 .h5 是培训和储蓄的最佳选择 模型权重 在其特定的生态系统中。 不过,它们通常需要安装原始框架才能运行模型。ONNX 将模型与训练框架分离开来 训练框架,从而更容易执行 边缘人工智能 由于存储或内存限制,安装完整的培训 由于存储或内存限制,安装完整的培训库是不切实际的。
  • ONNX 与量化: ONNX 是一种格式,而 模型量化是通过降低精度(如从 float32 到 int8 例如,从 float32 到 int8)。ONNX 标准支持 量化运算符,允许开发人员存储和运行 量化模型 高效运行。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入