我在尝试使用 OpenVino 时遇到了一个奇怪的问题。
我已将我的 pytorch 模型导出到 onnx,然后使用以下命令将其导入 OpenVino:
python /opt/intel/openvino/deployment_tools/model_optimizer/mo.py --input_model ~/Downloads/unet2d.onnx --disable_resnet_optimization --disable_fusing --disable_gfusing --data_type=FP32
所以对于测试用例,我禁用了优化。
现在,使用示例 python 应用程序,我使用模型运行推理,如下所示:
from openvino.inference_engine import IENetwork, IECore
import numpy as np
model_xml = path.expanduser('model.xml')
model_bin = path.expanduser('model.bin')
ie = IECore()
net = IENetwork(model=model_xml, weights=model_bin)
input_blob = next(iter(net.inputs))
out_blob = next(iter(net.outputs))
net.batch_size = 1
exec_net = ie.load_network(network=net, device_name='CPU')
np.random.seed(0)
x = np.random.randn(1, 2, 256, 256) # expected input shape
res = exec_net.infer(inputs={input_blob: x})
res = res[out_blob]
问题是这似乎输出的东西与我的 onnx 或 pytorch 模型完全不同。
此外,我意识到我什至不必传递输入,所以如果我执行以下操作:
x = None
res = exec_net.infer(inputs={input_blob: x})
这仍然返回相同的输出!所以这似乎表明我的输入以某种方式被忽略或类似的东西?