当前位置: 首页 > 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…...

CANN/pypto循环结束判断API

pypto.is_loop_end 【免费下载链接】pypto PyPTO&#xff08;发音: pai p-t-o&#xff09;&#xff1a;Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 产品支持情况 产品是否支持Atlas A3 训练系列产品/Atlas A3 推理系列产品√…...

如何将普通桌面实时转换为3D立体视频?nunif iw3-desktop完全指南

如何将普通桌面实时转换为3D立体视频&#xff1f;nunif iw3-desktop完全指南 【免费下载链接】nunif Misc; latest version of waifu2x; 2D video to stereo 3D video conversion 项目地址: https://gitcode.com/gh_mirrors/nu/nunif 你是否曾想过在VR头显中观看你的电脑…...

论文AI率爆表怕延毕?5招实测降AI率,3分钟知网AIGC过审上岸

2025 年 12 月 25 日知网 AIGC 检测系统升级&#xff0c;2026 年 4 月 27 日维普 AI 率检测平台升级…2026 毕业季&#xff0c;各大主流 AIGC 检测软件陆续升级系统&#xff0c;识别 AI 痕迹更加精准。 临近毕业&#xff0c;同学们看者飘红的 AIGC 检测报告、纷繁复杂的降 AI …...

Heavy Fighter动画包:Unity战斗系统根运动与状态机深度解析

1. 这套动画包不是“拿来就能用”的资源&#xff0c;而是需要你亲手校准的战斗系统骨架我在2021年接手一个横版ARPG项目时&#xff0c;美术总监甩给我三套Mecanim动画包&#xff0c;其中一套就是Heavy Fighter Mecanim Animation Pack。当时我第一反应是“终于不用手调IK了”&a…...

Unity角色移动手感优化:从WASD输入到物理移动的完整链路

1. 这不是“写个Input.GetAxis”就能跑通的移动逻辑在Unity项目里&#xff0c;只要角色需要被玩家操控&#xff0c;WASDQEShift这套组合键几乎就是默认配置——它不依赖鼠标、不强制视角绑定、兼容手柄映射&#xff0c;是PC端第三人称/第一人称角色最基础也最易被低估的交互层。…...

从CRUD到AI大神:小白程序员5个月逆袭之路(收藏版)

本文分享了作者从传统CRUD工程师转型为AI应用工程师的心路历程。通过实战先行、深入学习、项目巩固三个阶段&#xff0c;作者逐步掌握了AI模型开发、部署和服务化能力&#xff0c;并成功开发了多个AI应用项目。文章强调实践导向的学习方法&#xff0c;建议程序员利用AI工具提升…...

LLM 认知框架:揭秘时间序列与空间结构,洞悉 AI 未来!

一、简明摘要 本文是一篇概念说明与方法论文章&#xff0c;核心问题是&#xff1a;LLM 到底是什么&#xff0c;它与 AI、AGI、Agent、Skill 有什么关系。全文先区分 AI、AGI、LLM 三个层级&#xff0c;再说明 LLM 的现实形态已经从“文本生成模型”扩展为“模型、上下文、外部知…...

Miro致力弥合AI潜力与组织现实之间的鸿沟

Miro在Canvas 26上将其AI平台建设成为现代AI生态系统的连接层 — 汇聚团队、智能体以及已经使用的工具&#xff0c;将个体AI生产率变为整个组织的转型 Miro是一个面向团队的人工智能&#xff08;AI&#xff09;创新工作空间。该公司宣布推出多项AI平台创新&#xff0c;强化了其…...

Obsidian全功能日历:在笔记中打造你的专属时间管理系统

Obsidian全功能日历&#xff1a;在笔记中打造你的专属时间管理系统 【免费下载链接】obsidian-full-calendar Keep events and manage your calendar alongside all your other notes in your Obsidian Vault. 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-full-c…...

AI编程工具 Codex 入门教程,带你7分钟上手 Codex !

大家好&#xff0c;我是程序员小灰。前一段时间&#xff0c;Anthropic旗下的AI编程工具 Claude Code 火了&#xff0c;小灰也为大家制作了Claude Code 相关的视频教程&#xff0c;得到了很多读者的肯定。尽管Claude Code很强大&#xff0c;但存在一个致命的问题&#xff0c;就是…...