ONNX 与 OpenVINO作为不同的推理后端,各有特定优势,这里不再赘述。
部署ONNX 或 PyTorch 模型时,输入图像常常需要在传入网络之前进行标准化处理 (normalization)、通道变换等操作。而OpenVINO模型,标准化处理被移入到模型中进行。另外BGR转RGB等图像处理亦可以在模型中进行,无需对输入图像进行处理。
如果模型部署需要ONNX 模型 转 OpenVINO IR 模型,只需在openvino_{your version}\deployment_tools\model_optimizer文件夹下运行如下代码即可:
python mo_onnx.py
--input_shape=[1,3,224,224]
--input=input
--mean_values=[103.53,116.28,123.675]
--scale_values=[57.375,57.12,58.395]
--data_type FP16
--input_model "your onnx model path"
--output_dir "your openvino model folder path"
onnx模型的输入参数可以用Netron进行查看。
设定参数时有以下几个注意点:
1. 注意空格
注意--mean_values=[103.53,116.28,123.675] 这种形式,中括号之内不能有空格。
也可以采用--mean_values="[103.53, 116.28, 123.675]" 这种带空格形式。
2. 图像标准化采用的参数为:
--mean_values=[103.53,116.28,123.675]
--scale_values=[57.375,57.12,58.395]
而不是
--mean_values=[0.406,0.456,0.485]
--scale_values=[0.225,0.224,0.229]
参考:Convert a PyTorch Model to ONNX and OpenVINO IR — OpenVINO™ documentation