Openvino 模型文件部署推理
一、模型转换流程:
(以mxnet框架在openvino上的转换为例)
1、安装相关openvino toolkit: (以镜像的方式为例)
sudo docker search openvino
docker pull cortexica/openvino:latest
docker run -i -t cortexica/openvino:latest /bin/bashcd /opt/intel/openvino/deployment_tools/model_optimizer
pip3 install -r requirements_mxnet.txt
2、将相关mxnet模型文件及网络结构参数文件放到同一目录下
3、模型转换
python3 mo_mxnet.py --input_shape [1,3,112,112] --input_model model-0000.params --output_dir openvino_modelscd openvino_models/
二、openvino推理流程:(ubuntu16.04, openvino-2020.3为例)
1、设置环境变量:
vi ~/.bashrc
source <INSTALL_DIR>/bin/setupvars.sh
source ~/.bashrc
#如果想要设置具体版本的python
PYTHONPATH=<INSTALL_DIR>/deployment_tools/inference_engine/python_api/<desired_python_version
2、导入IE/OpenCV/numpy/time模块
from openvino.inference_engine import IECore, IENetwork
import cv2
import numpy as np
from time import time
3、配置推断计算设备,IR文件路径,图片(视频)路径
DEVICE = 'CPU'
model_xml = 'model-0000.xml'
model_bin = 'model-0000.bin'
image_file = 'test.jpg'
cpu_extension_lib = "/inference_engine/bin/intel64/Release/cpu_extension.dll"
labels_map = ["fake", "cat", "dog"]
4、初始化插件
ie = IECore()
5、读取IR模型文件
net = IENetwork(model=model_xml, weights=model_bin)
6、准备输入输出张量
print("Preparing input blobs")
input_blob = next(iter(net.inputs))
out_blob = next(iter
7、载入模型到AI推断计算设备
print("Loading IR to the plugin...")
exec_net = ie.load_network(network=net, num_requests=1, device_name=DEVICE)
8、读入图片,执行推断计算
n, c, h, w = net.inputs[input_blob].shape
frame = cv2.imread(image_file)
initial_h, initial_w, channels = frame.shape
# 按照AI模型要求放缩图片
image = cv2.resize(frame, (w, h))
# 按照AI模型要求将图像数据结构从HWC转为CHW
image = image.transpose((2, 0, 1))
print("Batch size is {}".format(n))
print("Starting inference in synchronous mode")
start = time()
res = exec_net.infer(inputs={input_blob: image})
end = time()
print("Infer Time:{}ms".format((end - start) * 1000))
9、处理输出,显示结果
print("Processing output blob")
res = res[out_blob]
print(res)
for obj in res:print(obj)# 当信心指数大于0.7时,显示检测结果if obj[2] > 0.7:xmin = int(obj[3] * initial_w)ymin = int(obj[4] * initial_h)xmax = int(obj[5] * initial_w)ymax = int(obj[6] * initial_h)class_id = int(obj[1])# 显示信心指数,物体标签和边界框color = (0, 255, 0) if class_id > 1 else (255, 0, 0)cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), color, 2)det_label = labels_map[class_id] if labels_map else str(class_id)cv2.putText(frame, det_label + ' ' + str(round(obj[2] * 100, 1)) + ' %', (xmin, ymin - 7),cv2.FONT_HERSHEY_COMPLEX, 0.6, color, 1)
print("Inference is completed")
cv2.imshow("Detection results", frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
Openvino 模型文件部署推理相关推荐
- TF之TFOD-API:基于tensorflow框架利用TFOD-API脚本文件将YoloV3训练好的.ckpt模型文件转换为推理时采用的.pb文件
TF之TFOD-API:基于tensorflow框架利用TFOD-API脚本文件将YoloV3训练好的.ckpt模型文件转换为推理时采用的frozen_inference_graph.pb文件 目录 ...
- 【Camunda 三】Camunda模型文件部署
参考:[Camunda 三]Camunda部署流程定义 https://www.jianshu.com/p/44f58002a618 一.构建流程图 使用Camunda Modeler构建流程图,Ca ...
- 【PaddlePaddle+OpenVINO】电表检测识别模型的部署
转自AI Studio,原文链接:[PaddlePaddle+OpenVINO]电表检测识别模型的部署 - 飞桨AI Studio 0 背景:PaddleOCR的电表识别任务(主线之五) 我国电力行业 ...
- python环境下,XGBoost模型文件转pmml格式用于部署
一. python环境下生成PMML 1. sklearn接口的xgboost 需要用sklearn2pmml包来生成pmml文件,一共有两种方法: 方法一: 在管道pipeline中进行fit后保存 ...
- PTMs:QLoRA技巧之源码解读(qlora.py文件)—解析命令与加载参数→数据预处理→模型训练+评估+推理
PTMs:QLoRA技巧之源码解读(qlora.py文件)-解析命令与加载参数→数据预处理→模型训练+评估+推理 目录 QLoRA技巧之源码解读(qlora.py文件)-解析命令与加载参数→数据预处理 ...
- OpenVINO整合TensorFlow实现推理加速
作者: Arindam, Yamini, Mustafa, Ritesh, Priya, Chandrakant, Surya, Amar, Sesh 编译:李翊玮 技术的传播采用通常是由用户体验的飞 ...
- Tensorflow + OpenCV4 安全帽检测模型训练与推理
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 开发环境 软件版本信息: Windows10 64位 Tensor ...
- YOLOv5发布第六个版本,支持一键适配OpenVINO/OpenCV DNN部署
YOLOv5发布了第六个版本,其它我不说,什么是开源精神,不是写个程序扔github就叫开源,而是持续不断改进,精益求精,不断演化版本,增加最有商业价值的功能,YOLOv5做到了.看看最新版本都有哪些 ...
- 【项目实战课】基于ncnn框架与KL散度的8bit对称模型量化与推理实战
欢迎大家来到我们的项目实战课,本期内容是<基于ncnn框架与KL散度的8bit对称模型量化与推理实战>. 所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题, ...
最新文章
- 微软云计算介绍与实践(实践之十七)
- Oracle SQL之 序列使用限制
- jvm_虚拟机参数讲解(三)
- 四位数码管秒表 c语言编程,4位共阴极数码管秒表设计仿真与程序
- CoolUIViewAnimations
- PostgreSQL 当月最后一天的工作日 , 计算日期是星期几
- mysql merge事务_mysql菜鸟手迹11--mysql存储引擎之Merge
- android-- dp px sp长度单位的区别
- 避免服务器成为肉鸡的应对措施
- 富士通FMV-253L的使用
- 如何使用PowerShell批量删除注册表项
- Shell实现俄罗斯方块小游戏
- android 7.0 root工具,KingRoot全球率先实现Android 7.0一键 Root
- Iterative Reweighted Least Squares
- 2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题(省赛)
- TA(技术美术)宝藏网站
- React.createElement使用
- CD网站用户消费数据分析案例
- ▷Scratch课堂丨【编程趣味卡11】虚拟宠物
- ARM M3/M4单片机jlink连不上的原因
热门文章
- ipad文献管理软件_ipad和电脑双向同步文献的奥秘
- 《C语言程序设计》单元总结与练习题
- 爬虫小程序 - 单词量测试
- 学习javascript这一篇就够了超详细笔记(建议收藏)上
- 灰色预测模型、新灰色预测模型、新陈代谢灰色预测模型
- Html开屏广告源码,开屏(Splash)广告样式
- 2020哔哩哔哩校招前端笔试编程题
- 循环减肥c语言,减肥,这次终于告别一再反弹的死循环
- 局部连接层(Locally-Connected Layer)
- Linux笔记——/etc/motd文件,/etc/issue.net文件