ONNX 模型 转 OpenVINO IR 模型

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

你可以使用OpenVINO的Model Optimizer来将PaddleX模型换为OpenVINOIR模型。以下是一些基本步骤: 1. 安装OpenVINO和PaddleX: - 安装OpenVINO:请根据官方文档安装适合您系统的OpenVINO。 - 安装PaddleX:您可以通过pip安装PaddleX:`pip install paddlex` 2. 准备PaddleX模型:使用PaddleX训练或下载一个预训练模型。 3. 使用PaddleX提供的方法将模型换为Paddle Inference模型: ```python import paddlex as pdx # 加载模型 model = pdx.load_model('path_to_model') # 导出Paddle Inference模型 model.export_onnx('path_to_output_dir/onnx_model') ``` 4. 使用Model Optimizer将ONNX模型换为OpenVINOIR模型: ```bash python /path/to/openvino/deployment_tools/model_optimizer/mo.py \ --input_model /path/to/onnx_model/model.onnx \ --output_dir /path/to/output_dir \ --input_shape [1,3,224,224] \ --input image \ --output output ``` 其中,`--input_shape` 指定输入图像的形状,`--input` 和 `--output` 指定输入和输出节点的名称。 5. 载入和推理OpenVINOIR模型: 使用OpenVINO的推理引擎(Inference Engine)载入IR模型,并进行推理。 ```python import cv2 import numpy as np from openvino.inference_engine import IECore # 加载模型 ie = IECore() net = ie.read_network(model='path_to_xml/model.xml', weights='path_to_bin/model.bin') # 加载输入图像 input_image = cv2.imread('path_to_input_image') input_image = cv2.resize(input_image, (224, 224)) input_image = np.transpose(input_image, (2, 0, 1)) input_image = np.expand_dims(input_image, axis=0) # 进行推理 exec_net = ie.load_network(network=net, device_name='CPU') output = exec_net.infer(inputs={'image': input_image}) # 处理输出 output_data = output['output'] ``` 这些是将PaddleX模型换为OpenVINOIR模型的基本步骤。请确保按照OpenVINO和PaddleX的官方文档进行操作,以确保正确安装和使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值