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

openvino python推理demo

openvino python推理demo

import openvino
from openvino.runtime import Core
import numpy as np
import argparse
import hashlib
import os
import ioclass OpenvinoInfer:def __init__(self,device_id=0):self.device_id=device_idself.ie = Core()self.available_devices = []# 根据可用设备选择for name in self.ie.available_devices:if name.find("GPU")>=0:self.available_devices.append(name)print(self.available_devices)self.device_name=self.available_devices[self.device_id]print("Using device:",self.device_name)def build(self,onnx_path,onnx_data=None):  if onnx_data is None:with open(onnx_path, 'rb') as model:onnx_data=model.read()md5_hash = hashlib.md5(onnx_data).hexdigest()self.cache_path = f"{md5_hash}.engine"if not os.path.exists(self.cache_path):print("Building engine")model = self.ie.read_model(model=onnx_path)self.compiled_model = self.ie.compile_model(model=model, device_name=self.device_name)user_stream = io.BytesIO()self.compiled_model.export_model(user_stream)with open(self.cache_path, 'wb') as f:f.write(user_stream.getvalue())else:print("Load engine from cache")file = open(self.cache_path, 'br') user_stream = io.BytesIO(file.read())self.compiled_model = self.ie.import_model(model_stream=user_stream, device_name=self.device_name)dtype_map={openvino.Type.f32:np.float32,openvino.Type.i32:np.int32,openvino.Type.i64:np.int64}self.inputs=[]self.outputs=[]for input_layer in self.compiled_model.inputs:print(f"输入层名称:{input_layer.any_name}, 形状:{input_layer.shape} dtype:{input_layer.element_type}")self.inputs.append({"name": input_layer.any_name, "shape": input_layer.shape, "dtype": dtype_map[input_layer.element_type]})for output_layer in self.compiled_model.outputs:print(f"输入层名称:{output_layer.any_name}, 形状:{output_layer.shape} dtype:{output_layer.element_type}")self.outputs.append({"name": output_layer.any_name, "shape": output_layer.shape, "dtype": dtype_map[output_layer.element_type]})return Truedef inference(self,inputs):args=[]for idx,ipt in enumerate(inputs):args.append(ipt.reshape(self.inputs[idx]['shape']))result = self.compiled_model(args)output_data = []for item in self.outputs: output_data.append(result[item['name']])return output_dataif __name__ == '__main__':# 创建 ArgumentParser 对象parser = argparse.ArgumentParser(description='ai_model_trt_infer')parser.add_argument('--model', type=str, help='model')parser.add_argument('--input_paths', type=str, help='inputs')parser.add_argument('--input_dtypes', type=str, help='inputs')parser.add_argument('--output_paths', type=str, help='outputs')parser.add_argument('--output_dtypes', type=str, help='outputs')args = parser.parse_args()dtype_map={"int64":np.int64,"float32":np.float32,"float16":np.float16,"uint8":np.uint8}input_paths=args.input_paths.split(',')input_dtypes=args.input_dtypes.split(',')output_paths=args.output_paths.split(',')output_dtypes=args.output_dtypes.split(',')infer = OpenvinoInfer()infer.build(args.model)inputs=[]for idx,file_path in enumerate(input_paths):with open(file_path, 'rb') as f:input_data = np.frombuffer(f.read(), dtype=infer.inputs[idx]['dtype'])inputs.append(input_data)outputs_gt=[]outputs_pred=[]for idx,file_path in enumerate(output_paths):with open(file_path, 'rb') as f:output_data = np.frombuffer(f.read(), dtype=infer.outputs[idx]['dtype'])outputs_gt.append(output_data)        outputs_pred.append(np.empty(output_data.shape, dtype=output_data.dtype))outputs_pred=infer.inference(inputs)for idx,output_data in enumerate(outputs_pred):mse = np.mean((output_data.reshape(-1) - outputs_gt[idx].reshape(-1)) ** 2)print("均方误差 (MSE):", mse)

用法

python ai_model_openvino_infer.py \--model=resnet50.onnx \--input_paths=resnet50-input-input.bin \--output_paths=resnet50-output-output.bin \--input_dtypes="float32" \--output_dtypes="float32"python ai_model_openvino_infer.py \--model=yolov5m.onnx \--input_paths=yolov5m-images-input.bin \--output_paths=yolov5m-output0-output.bin \--input_dtypes="float32" \--output_dtypes="float32"    python ai_model_openvino_infer.py \--model=bert-base.onnx \--input_paths=bert-base-input_ids-input.bin,bert-base-attention_mask-input.bin,bert-base-token_type_ids-input.bin \--output_paths=bert-base-uncased-output.bin \--input_dtypes="int64,int64" \--output_dtypes="float32"

相关文章:

openvino python推理demo

openvino python推理demo import openvino from openvino.runtime import Core import numpy as np import argparse import hashlib import os import ioclass OpenvinoInfer:def __init__(self,device_id0):self.device_iddevice_idself.ie Core()self.available_devices …...

JavaWeb项目-----博客系统

一.设计数据库 1.创建数据库 create database if not exists java108_blog_system character set utf8; drop table if exists user; drop table if exists blog;2.创建博客列表 create table blog(blogId int primary key auto_increment,title varchar(20),content varcha…...

GY-56 (VL53L0X) 激光测距

文章目录 一、GY-56 简介二、引脚功能三、通信协议1.串口协议: 当 GY-56 PS 焊点开放时候使用(默认)(1)串口通信参数(默认波特率值 9600bps)(2)模块输出格式,每帧包含 8-13 个字节&a…...

当今陪玩系统小程序趋势,陪玩系统源码搭建后的适用于哪些平台

一、市场规模持续扩大 随着全球游戏市场的不断膨胀,游戏陪玩行业正逐渐从一个新兴领域成长为游戏产业链中不可或缺的一环。据《2024年1~6月中国游戏产业报告》显示,今年上半年,国内游戏市场实际销售收入达到1472.67亿元,同比增长…...

qt QListWidget详解

1、概述 QListWidget 是 Qt 框架中的一个类,它提供了一个基于模型的视图,用于显示项目的列表。QListWidget 继承自 QAbstractItemView 并为项目列表提供了一个直观的接口。与 QTreeView 和 QTableView 不同,QListWidget 是专门为单行或多行项…...

java ssm 校园快递物流平台 校园快递管理系统 物流管理 源码 jsp

一、项目简介 本项目是一套基于SSM的校园快递物流平台,主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具等。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后端技术&#x…...

西安电子科技大学考研网报审核通过了,然后呢?

报考西安电子科技大学的宝贝们,考研网上确认已经截止的同学们,不用担心! 最近,有很多同学问到一个问题:网上确认时看到有消息说禁止使用海马体照片,但我明明用了海马体的照片,审核却通过了&…...

pandas习题 051:将字符串数据读取到 DataFrame

编码题)有以下逗号隔开和空格隔开的字符串数据,如何将它读取为 DataFrame ? data = ‘’’ a,b,c 1,3,4 2,4,5 ‘’’ data2 = ‘’’ a b c 1 13 214 2 4 15 ‘’’ Python 代码如下:import pandas as pd import iodata = a,b,c 1,3,4 2,4,5 df = pd.read_csv(io.Stri…...

改进探路者算法复现

本文所涉及所有资源均在 传知代码平台 可获取。 目录 一、背景及意义介绍 (一)背景 ࿰...

PostgreSQL 学习笔记:PostgreSQL 主从复制

PostgreSQL 笔记:PostgreSQL 主从复制 博客地址:TMDOG 的博客 在现代应用程序中,数据库的高可用性和扩展性是至关重要的。PostgreSQL 提供了主从复制功能,可以在多个数据库实例之间复制数据,以实现冗余和负载均衡。本…...

【系统架构设计师(第2版)】十一、未来信息综合技术

未来信息综合技术是指近年来新技术发展而提出的一些新概念、新知识、新产品,主要包括信息物理系统(CPS)、人工智能(AI)、机器人、边缘计算、数字孪生、云计算和大数据等技术。这些技术涉及多学科、多领域,具…...

Pytorch学习--神经网络--优化器

一、头文件 torch.optim.Optimizer(params, defaults) optim文档 for input, target in dataset:optimizer.zero_grad()output model(input)loss loss_fn(output, target)loss.backward()optimizer.step()二、代码 不带优化器的代码框架 import torch import torchvision…...

w~自动驾驶合集11

我自己的原文哦~ https://blog.51cto.com/whaosoft/12329152 #特斯拉的“纯视觉”路线 , 也许不是最好的 BEVTransformer占用网络技术路线的大热,再次将激光雷达推向风口浪尖。 激光雷达该不该被抛弃? 对车企来说,这是一个艰难的抉择&am…...

大数据新视界 -- 大数据大厂之 Impala 性能优化:解锁大数据分析的速度密码(上)(1/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

GESP4级考试语法知识(算法概论(三))

爱因斯坦的阶梯代码&#xff1a; //算法1-12 #include<iostream> using namespace std; int main() {int n1; //n为所设的阶梯数while(!((n%21)&&(n%32)&&(n%54)&&(n%65)&&(n%70)))n; //判别是否满足一组同余式cout<<n<…...

x-cmd pkg | gum - 轻松构建美观实用的终端界面,解锁命令行新玩法

目录 简介快速上手安装使用 功能特点竞品和相关作品进一步探索 简介 gum 是由 Charm 团队于 2022 年使用 Go 开发的终端 UI 组件工具箱&#xff0c;能帮用户在终端中快速构建交互式 TUI 界面&#xff08;如表单、菜单、提示框等&#xff09;&#xff0c;简化命令行应用程序的开…...

WMS系统打通仓储全链条数据势在必行,该如何做呢

一、引言 在当今竞争激烈的商业环境中&#xff0c;高效的仓储管理对于企业的生存和发展至关重要。仓储管理系统&#xff08;WMS&#xff09;作为现代仓储管理的核心工具&#xff0c;其作用不仅仅是简单地记录库存数量和位置&#xff0c;更在于打通仓储全链条数据&#xff0c;实…...

基于Python的校园爱心帮扶管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

如何基于pdf2image实现pdf批量转换为图片

最近为了将pdf报告解析成为文本和图片&#xff0c;需要将大量多页的pdf文件拆分下单独的一页一页的图像&#xff0c;以便后续进行OCR和图像处理&#xff0c;因此就需要实现将pdf2image&#xff0c;本文主要结合开源的pdf2image和poppler&#xff0c;实现了pdf转换为png格式图片…...

Tomcat(1) 什么是Tomcat?

Tomcat是一个开源的Web服务器和Servlet容器&#xff0c;它实现了Java Servlet、JavaServer Pages (JSP)、WebSocket和Java EL等Java EE规范。Tomcat由Apache软件基金会维护&#xff0c;是Java应用程序的常用部署平台。 深入理解Tomcat 1. 架构 Tomcat的核心组件包括&#xf…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...