运行 在 python 中使用 Onnx 模型进行推理?

Run inference using Onnx model in python?

我正在尝试检查我的 .onnx 模型是否正确,并且需要 运行 推理来验证相同的输出。

我知道我们可以 运行 在 Python 中使用 coremltools 对 .mlmodel 进行验证 - 基本上加载模型并输入并获得预测。我正在尝试为 .onnx 模型做类似的事情。

我找到了 MXNet 框架,但我似乎无法理解如何导入模型 - 我只有 .onnx 文件,MXNet 除了 onnx 模型之外还需要一些额外的输入。

在 Python 中还有其他简单的方法可以做到这一点吗?我猜这是一个常见问题,但似乎找不到任何相关的 libraries/frameworks 来像 .mlmodel 的 coremltools 一样容易地做到这一点。

我不想将 .onnx 转换为另一种类型的模型(比如 PyTorch),因为我想按原样检查 .onnx 模型,而不用担心转换是否正确。只需要一种方法来加载模型和输入,运行 推理并打印输出。

这是我第一次遇到这些格式,所以任何帮助或见解将不胜感激。

谢谢!

我想出了一种使用 Caffe2 执行此操作的方法 - 只是发帖以防将来有人尝试做同样的事情。

主要代码片段是:

import onnx
import caffe2.python.onnx.backend
from caffe2.python import core, workspace

import numpy as np

# make input Numpy array of correct dimensions and type as required by the model

modelFile = onnx.load('model.onnx')
output = caffe2.python.onnx.backend.run_model(modelFile, inputArray.astype(np.float32))

另外需要注意的是run_model的输入只能是numpy数组或者字符串。输出将是 Backend.Outputs 类型的对象。我能够从中提取输出 numpy 数组。

我能够在 CPU 上执行推理,因此不需要使用 GPU 安装 Caffe2(需要 CUDA 和 CDNN)。