当前位置: 首页 > news >正文

python版pytorch模型转openvino及调用

一、openvino安装

参看官方文档https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html
在这里插入图片描述
在这里插入图片描述
安装命令是根据上面的选择生成。这里安装了pytorch和onnx依赖。

二、pytorch模型转opnvino模型推理

import os
import time
import cv2
import numpy as np
import torchfrom openvino.runtime import Core
from openvino.tools import moimg_path = r'./000000002306.jpg'
model_path = 'pure_pose.pt'
## 加载onnx模型
model = torch.load(model_path)
model.eval()
## onnx模型转openvino
model_ir = mo.convert_model(model, input_shape=[1,3, 256, 192],mean_values = [123.675, 116.28 , 103.53],scale_values=[58.395, 57.12 , 57.375],compress_to_fp16=True
)## 图片预处理
image = cv2.cvtColor(src=cv2.imread(filename=str(img_path)),code=cv2.COLOR_BGR2RGB,
)
resized_image,ratio, (dw, dh) = letterbox(image,new_shape=(256,192))# # # Convert the image shape to a shape and a data type expected by the network
# # # for OpenVINO IR model: (1, 3, 512, 512).
input_image = np.expand_dims(np.transpose(resized_image, (2, 0, 1)), 0)ie = Core()
compiled_model_ir = ie.compile_model(model=model_ir, device_name="CPU")
# Get the names of input and output layers.
input_layer_ir = compiled_model_ir.input(0)
output_layer_ir = compiled_model_ir.output(0)# Do inference on the input image.
start_time = time.perf_counter()
result = compiled_model_ir([input_image])[output_layer_ir]
end_time = time.perf_counter()
print(f"Inference finished. Inference time: {end_time-start_time:.3f} seconds, "f"FPS: {1/(end_time-start_time):.2f}."
)

在pytorch转openvino模型的时候,已包含归一化操作过程。在推理的时候不需要对输入图片做归一化操作。

三、onnx模型转opnvino模型推理

1. onnx模型转openvino模型

在上面的安装文件夹openvino_env文件夹下找到mo_onnx.py文件。我的路径:openvino_env/lib/python3.9/site-packages/openvino/tools/mo/mo_onnx.py
根据下面的脚本将onnx模型转成openvino模型

python ../openvino_env/lib/python3.9/site-packages/openvino/tools/mo/mo_onnx.py \--input_model ./mobilenet_load.onnx  \--output_dir ./openvino_model \--input_shape "[1,3,256,192]" \--mean_values="[123.675, 116.28 , 103.53]" \--scale_values="[58.395, 57.12 , 57.375]" \--data_type FP16

生成下面三个文件
在这里插入图片描述

2. 调用openvino模型进行推理

import time
import cv2
import numpy as np
from openvino.runtime import Core
img_path = r'./000000002306.jpg'
from utils import letterboximage = cv2.cvtColor(cv2.imread(img_path), cv2.COLOR_BGR2RGB)# Convert the resized images to network input shape
resized_image,ratio, (dw, dh) = letterbox(image,new_shape=(256,192))
h, w, c = resized_image.shape
input_image = np.expand_dims(np.transpose(resized_image, (2, 0, 1)), 0)# Load the network in Inference Engine
core = Core()
model_ir = core.read_model(model="openvino_model/mobilenet_load.xml")
compiled_model_ir = core.compile_model(model=model_ir, device_name="CPU")# Get output layer
output_layer_ir = compiled_model_ir.output(0)# Run inference on the input image
# Do inference on the input image.
start_time = time.perf_counter()
res_ir = compiled_model_ir([input_image])[output_layer_ir]
end_time = time.perf_counter()
print(f"Inference finished. Inference time: {end_time-start_time:.3f} seconds, "f"FPS: {1/(end_time-start_time):.2f}."
)

比较通过pytorch和onnx转成的openvino模型的推理时间,差不多。openvino模型推理时间大概是pytorch模型推理时间的1/5.

模型推理时间(s)
openvino0.010
onnx0.015
pytorch0.048
http://www.lryc.cn/news/60352.html

相关文章:

  • TensorFlow 机器学习秘籍第二版:9~11
  • 【苏州数字力量】面经 base上海
  • FVM链的Themis Pro(0x,f4) 5日IDO超百万美元,或让Filecoin逆风翻盘
  • webserve简介
  • 分析型数据库:MPP 数据库的概念、技术架构与未来发展方向
  • 微服务高级篇学习【4】之多级缓存
  • 知乎版ChatGPT「知海图AI」加入国产大模型乱斗,称效果与GPT-4持平
  • 邮件发送配置
  • 【Open CASCADE -生成MFC和QT事例方式】
  • python 笔记:PyTrack(将GPS数据和OpenStreetMap数据进行整合)【官网例子解读】
  • 苦中作乐 ---竞赛刷题31-40(15-20)
  • 100种思维模型之人类误判心理思维模型-49
  • 【从零开始学Skynet】实战篇《球球大作战》(十三):场景代码设计(下)
  • 2023年虚拟数字人行业研究报告
  • Oracle 之表的连接类型——舞蹈跳出
  • 深入浅出JS定时器:从setTimeout到setInterval
  • CountDownLatch、CyclicBarrier、Semaphore 的原理以及实例总结
  • 企业电子招投标系统源码之了解电子招标投标全流程
  • SpringCloud之Gateway组件简介
  • GoNote第三章 主流框架加对比
  • Quartz框架详解分析
  • Nginx专题-基于多网卡的主机配置
  • 4.2和4.3、MAC地址、IP地址、端口
  • 放弃 console.log 吧!用 Debugger 你能读懂各种源码
  • epoll机制解析
  • 基于 SpringBoot + Vue 实现的可视化拖拽编辑的大屏项目
  • 我们为什么要写作?
  • 设计模式:创建者模式 - 建造者模式
  • String a = new String(“abc“); 创建了几个对象?String a = “abc“; 呢?
  • keepalived+nginx安装