python版openvino使用
生活随笔
收集整理的這篇文章主要介紹了
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 FP16onnx模型來自這里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 timeie = 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#batchsizen, 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 timeie = 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#batchsizen, 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的推理時間和轉換過的推理時間基本一致
總結
以上是生活随笔為你收集整理的python版openvino使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 7.0 创建热点,win
- 下一篇: Python基础语法视频教程全39集,历