python版openvino使用

openvino作为一个优秀的cpu推理引擎

这里使用一下python版api

使用之前需要编译安装openvino

https://docs.openvinotoolkit.org/latest/openvino_docs_get_started_get_started_windows.html

安装好以后,直接pip install openvino安装python版的openvino

实际上,python版的api也是调用的c++编译好的openvino,这就是为啥使用python版,也需要编译安装openvino

接下来可以使用了,使用之前需要转一下openvino模型文件,当然也可以不转,openvino是支持读取onnx的

python /opt/intel/openvino_2021/deployment_tools/model_optimizer/mo.py --input_model ctdet_coco_dlav0_512.onnx --output_dir ./ctdet_coco_dlav0_512  --data_type FP16

onnx模型来自这里https://download.01.org/opencv/public_models/122019/ctdet_coco_dlav0/

现在可以进行推理了 ,先直接使用onnx文件推理

from openvino.inference_engine import IECore
import numpy as np
import cv2
import time

ie = IECore()
model="ctdet_coco_dlav0_512.onnx"
#model="ctdet_coco_dlav0_512/ctdet_coco_dlav0_512.xml"
net = ie.read_network(model=model)
input_blob = next(iter(net.input_info))
out_blob = next(iter(net.outputs))
net.batch_size=16#batchsize

n, c, h, w = net.input_info[input_blob].input_data.shape
print(n, c, h, w)
images = np.ndarray(shape=(n, c, h, w))
for i in range(n):
        image = cv2.imread("123.jpg")
        if image.shape[:-1] != (h, w):
            image = cv2.resize(image, (w, h))
        image = image.transpose((2, 0, 1))
        images[i] = image
exec_net = ie.load_network(network=net, device_name="CPU")
start=time.time()
res = exec_net.infer(inputs={input_blob: images})
#print(res)
print('infer total time is %.4f s'%(time.time()-start))

运行结果:

 我们上面的代码设置的batchsize为16,现在试一下batchsize为1的结果,修改net.batch_size=1即可

 

接下来使用onnx转的文件进行推理:

from openvino.inference_engine import IECore
import numpy as np
import cv2
import time

ie = IECore()
#model="ctdet_coco_dlav0_512.onnx"
model="ctdet_coco_dlav0_512/ctdet_coco_dlav0_512.xml"
net = ie.read_network(model=model)
input_blob = next(iter(net.input_info))
out_blob = next(iter(net.outputs))
net.batch_size=16#batchsize

n, c, h, w = net.input_info[input_blob].input_data.shape
print(n, c, h, w)
images = np.ndarray(shape=(n, c, h, w))
for i in range(n):
        image = cv2.imread("123.jpg")
        if image.shape[:-1] != (h, w):
            image = cv2.resize(image, (w, h))
        image = image.transpose((2, 0, 1))
        images[i] = image
exec_net = ie.load_network(network=net, device_name="CPU")
start=time.time()
res = exec_net.infer(inputs={input_blob: images})
#print(res)
print('infer total time is %.4f s'%(time.time()-start))

运行结果

同理, net.batch_size=1的运行结果:

可以发现,使用onnx的推理时间和转换过的推理时间基本一致

### 回答1: OpenVINOOpen Visual Inference and Neural Network Optimization)是英特尔开发的一款深度学习模型优化和部署工具集。Python作为一种流行的编程语言,可以与OpenVINO 2022一起使用来部署模型。 首先,要使用OpenVINO 2022部署模型,需要先安装OpenVINO 2022的Python库。可以从英特尔官方网站下载和安装适用于对应操作系统的OpenVINO 2022本。安装完成后,需要进行一些配置,以确保Python可以正确访问OpenVINO。 接下来,需要将训练好的深度学习模型转换为OpenVINO支持的IR(Intermediate Representation)格式。OpenVINO提供了一个Model Optimizer工具,可以将常见深度学习框架(如TensorFlow、Caffe等)导出的模型转换为OpenVINO可用的IR格式。只需使用Model Optimizer提供的命令行接口或Python API加载模型,并指定输出的IR格式,然后运行转换过程即可。 转换完成后,可以使用Python编写部署模型的应用程序。在Python中,可以使用OpenVINOPython库来加载和推断IR模型。首先,通过指定IR模型的文件路径,使用OpenVINO提供的函数加载模型。然后,可以使用加载的模型进行推断,输入模型所需的数据,并获取模型的输出结果。 在推断过程中,还可以使用OpenVINO提供的工具和功能来优化推理性能,例如异步推断、多线程推断等。根据具体的应用场景和需求,可以进一步调整并优化模型的推断性能。 最后,根据部署的目标平台,可以将Python应用程序打包为独立的可执行文件或交叉编译为适应不同平台的二进制文件。这样,就可以在目标平台上轻松部署和运行模型,实现高效的深度学习推理。 总结起来,使用PythonOpenVINO 2022一起部署模型的过程主要包括安装OpenVINO Python库、将模型转换为OpenVINO IR格式、编写Python应用程序进行模型推断,并进行性能优化。通过这些步骤,可以实现高性能的深度学习模型部署。 ### 回答2: 在Python使用OpenVINO 2022部署模型涉及以下几个步骤。 首先,需要安装OpenVINO 2022并设置相应的环境变量。安装可以参考OpenVINO官方文档的说明。 接下来,需要使用OpenVINO模型优化工具来将训练好的模型转换为OpenVINO支持的中间表示格式。使用命令行工具或Python API去执行此转换。例如,可以使用Model Optimizer将TensorFlow或ONNX模型转换为IR(Intermediate Representation)格式。 然后,使用OpenVINO的推理引擎来加载和执行转换后的模型。可以使用PythonOpenVINO库来编写代码实现这个过程。首先,使用`IECore`类创建推理引擎的实例,然后使用这个实例加载转换后的模型文件,例如IR格式的`.xml`和`.bin`文件。接下来,创建`ExecutableNetwork`对象来将模型加载到可执行网络中。 在模型加载完成后,可以使用输入数据对模型进行推理。使用`Infer`函数将输入数据传递给模型,并获取输出结果。可以根据需要进行预处理或后处理。 最后,根据模型的需求对推理结果进行解析和使用。可以根据模型返回的结果进行相应的后处理,例如目标检测或图像分类等。 对于不同的应用场景,可能还需要进行其他的操作,例如模型调优、性能优化等。 总之,使用OpenVINO 2022在Python中部署模型可以通过安装OpenVINO、进行模型优化和转换,然后使用OpenVINO库加载和执行模型,最后处理模型输出结果来完成。 ### 回答3: Python使用OpenVINO 2022部署模型是一种将机器学习模型部署到边缘设备的方法。OpenVINO 2022(Open Visual Inference and Neural Network Optimization)是英特尔开发的一种开源工具套件,旨在优化和加速深度学习模型的推理过程。 要使用PythonOpenVINO 2022部署模型,首先需要安装OpenVINO 2022并配置相关环境。安装完成后,可以使用OpenVINO提供的Model Optimizer工具将训练好的模型转换为OpenVINO使用的中间表示(Intermediate Representation,IR)格式。 转换完成后,可以使用OpenVINO提供的推理引擎加载和运行模型。Python可以使用OpenVINOPython API,从IR格式的模型文件中加载模型,并通过推理引擎对输入数据进行推理得出模型的输出结果。 在部署模型之前,需要对输入和输出数据进行预处理和后处理。预处理可能包括图像的规范化、尺寸调整等操作,后处理可能包括提取预测结果、根据模型的需求进行解码等操作。 另外,OpenVINO 2022还提供了许多优化技术,可以在部署模型的过程中进一步提升推理性能。这些技术包括模型量化、异步推理、模型并行等,可以根据具体需求选择和配置。 总之,Python使用OpenVINO 2022部署模型是一种高效、灵活的方式,可以在边缘设备上实现深度学习模型的快速推理。通过OpenVINO的优化技术,可以进一步提升模型的推理性能,使其适用于各种边缘计算场景。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值