目录

1. 测试Resnet50 ONNX模型的推理速度


1. 测试Resnet50 ONNX模型的推理速度

###############################
# 导出resnet50 模型
# 测试onnx模型推理 cpu 和 GPU 的对比
###############################import time
import numpy as np
import onnxruntime as ort
import torchvision.models as models
import torchdef export_onnx(onnx_path):# ResNet50 模型, 保存onnx model 返回 torch modelresnet50 = models.resnet50(pretrained=False)torch.onnx.export(resnet50,  # 模型torch.randn(1, 3, 224, 224),  # 输入onnx_path, # 输出文件名opset_version=12, # opset版本 input_names=["input"], # 输入变量名output_names=["output"], # 输出变量名dynamic_axes={"input":{0 : "batch_x"}, "output":{0: "batch_y"}} # 动态轴设置)class ONNXModel:def __init__(self, model_path, use_gpu=False):"""初始化 ONNX 模型推理类。:param model_path: ONNX 模型文件路径:param use_gpu: 是否使用 GPU 推理"""self.model_path = model_pathself.use_gpu = use_gpuself.session = Noneself.load_model()self.input_name = self.session.get_inputs()[0].name  # 输入名字def load_model(self):"""加载 ONNX 模型。"""try:print(f"Loading model from {self.model_path}...")providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] if self.use_gpu else ['CPUExecutionProvider']self.session = ort.InferenceSession(self.model_path, providers=providers)except Exception as e:print(f"Failed to load model: {e}")raiseproviders = self.session.get_providers()if 'CUDAExecutionProvider' in providers:print("✅ ONNX Runtime 正在使用 GPU 推理")else:print("❌ ONNX Runtime 正在使用 CPU 推理")def run_inference(self, input_data):"""执行推理并返回结果。:param input_data: 输入数据,通常为 numpy 数组或字典:return: 推理结果"""# 确保输入是字典格式input_data = {self.input_name: input_data}outputs = self.session.run(None, input_data)return outputs[0]def eval(onnx_model, n):# 推理n 次 返回对比结果batch_size = 32print("评估中....")onnx_input = np.random.randn(batch_size,3,224,224).astype(np.float32)  # ONNX 需要 CPU 数据# 1. ONNX 时间t1 = time.time()for _ in range(n):onnx_model.run_inference(onnx_input)t2 = time.time()t = t2 - t1print(f"推理{n}次时间对比:")print(f"模型推理时间: {t:.4f} 秒")print(f"模型推理平均时间: {t/n:.4f} 秒")def test():onnx_path = "./resnet50.onnx"# export_onnx(onnx_path)onnx_model_cpu = ONNXModel(onnx_path, use_gpu=False)# 评估推理性能eval(onnx_model_cpu, 50)onnx_model_gpu = ONNXModel(onnx_path, use_gpu=True)eval(onnx_model_cpu, 50)# 示例用法
if __name__ == "__main__":test()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/906832.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/906832.shtml
英文地址,请注明出处:http://en.pswp.cn/news/906832.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.Java 面向对象编程入门:类与对象的创建和使用​

在现实生活中,我们常常会接触到各种各样的对象,比如一辆汽车、一个学生、一部手机等。这些对象都具有各自的属性和行为。例如,汽车有颜色、品牌、型号等属性,还有启动、加速、刹车等行为;学生有姓名、年龄、学号等属性…

从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB

作者: Lucien-卢西恩 原文来源: https://tidb.net/blog/e7034d1b Java 应用开发技术发展历程 在业务开发早期,用 Java 借助 JDBC 进行数据库操作,虽能实现基本交互,但需手动管理连接、编写大量 SQL 及处理结果集&a…

工业智能网关建立烤漆设备故障预警及远程诊断系统

一、项目背景 烤漆房是汽车、机械、家具等工业领域广泛应用的设备,主要用于产品的表面涂装。传统的烤漆房控制柜采用本地控制方式,操作人员需在现场进行参数设置和设备控制,且存在设备智能化程度低、数据孤岛、设备维护成本高以及依靠传统人…

故障率预测:基于LSTM的GPU集群硬件健康监测系统(附Prometheus监控模板)

一、GPU集群健康监测的挑战与价值 在大规模深度学习训练场景下,GPU集群的硬件故障率显著高于传统计算设备。根据2023年MLCommons统计,配备8卡A100的服务器平均故障间隔时间(MTBF)仅为1426小时,其中显存故障占比达38%&…

Vue 样式不一致问题全面分析与解决方案

文章目录 1. 问题概述1.1 问题表现1.2 问题影响 2. 根本原因分析2.1 Vue 的渲染机制与样式加载时机2.2 Scoped CSS 的工作原理2.3 CSS 模块化与作用域隔离2.4 样式加载顺序问题2.5 热重载(HMR)与样式更新 3. 解决方案3.1 确保样式加载顺序3.1.1 预加载关键 CSS3.1.2 控制全局样…

[免费]微信小程序宠物医院管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibi…

测试总结(一)

一、测试流程 参与需求评审-制定测试计划-编写测试用例-用例评审-冒烟测试-测试执行-缺陷管理-预发验收测试-发布线上-线上回归-线上观察-项目总结 二、测试用例设计方法 等价类划分(处理有效/无效输入) 边界值分析(临界值测试&#xff09…

SAP-ABAP:ABAP异常处理与SAP现代技术融合—— 面向云原生、微服务与低代码场景的创新实践

专题三:ABAP异常处理与SAP现代技术融合 —— 面向云原生、微服务与低代码场景的创新实践 一、SAP技术演进与异常处理的挑战 随着SAP技术栈向云端、微服务化和低代码方向演进,异常处理面临新场景: Fiori UX敏感度:用户期望前端友…

DC-DC电路的自举电容电路原理

在以往的电子产品设计中,我们经常会选型 DCDC 芯片,在选型过程中经常遇到有些DC-DC电路中需要用到自举电容,本文主要分析自举电容在DC-DC电路中的原理。 无论同步或者异步整流,经常会看到一个自举电容,常并联在DC-DC的…

android studio 开启无线调试

1、在工具的模拟器点击下后,会出现下面菜单: 选择Pair Devices Using Wi-Fi 发现一直在转圈,并不会连接上,之前在android12的时候,发现一连就上了,现在换成了android14,连不上了。 2、选择用命令…

Go基础语法与控制结构

Go基础语法与控制结构 1. 环境配置与Hello World(扩展) 安装指南 # 验证安装成功 $ go version # 设置模块代理(中国用户推荐) $ go env -w GOPROXYhttps://goproxy.cn,direct程序解剖 package main // 程序入口包声明import…

QGIS新手教程:两种方法创建点图层(手动添加 + 表格导入),支持经纬度定位与查找

🌍QGIS新手教程:两种方法创建点图层(手动添加 表格导入),支持经纬度定位与查找 本文将手把手教你在 QGIS 中通过两种方法创建点图层,并结合经纬度定位、拾取坐标、查找属性等功能,快速掌握从地…

Doris ClickHouse Greenplum 对比

1. 核心架构对比 Doris (https://doris.apache.org/) MPP架构 列式存储支持实时更新(Unique Key模型)向量化执行引擎兼容MySQL协议 ClickHouse (https://clickhouse.com/) 分布式列式存储MergeTree存储引…

基于python,html,echart,php,mysql,在线实时监控入侵检测系统

详细视频:【基于python,html,echart,php,mysql,在线实时监控入侵检测系统,需要的可联系介绍都在所有图片中。包远程部署安装。-哔哩哔哩】 https://b23.tv/KHxmE8k

基于51单片机智能垃圾桶—红外感应自动开关

基于51单片机智能垃圾桶 (仿真+程序+原理图+PCB+设计报告) 功能介绍 具体功能: 1.ULN2003驱动步进电机控制打开关闭垃圾桶; 2.一个红外对管检测有没有人,一个红外对管…

自动涂胶机设计及其在工业生产中的应用研究

摘要 本文详细探讨了自动涂胶机的设计原理、关键技术和应用前景。随着工业自动化水平的不断提高,自动涂胶机在制造业中的应用日益广泛。文章首先分析了自动涂胶机的基本工作原理,然后深入研究了其机械结构设计、控制系统设计和视觉定位系统等关键技术。…

SQL 语言

SQL概述与数据库定义 SQL的基本组成 1、数据定义语言。SQL DDL提供定义关系模式和视图、删除关系和视图、修改关系模式的命令。 2、交互式数据操纵语言。SQL DML提供查询、插入、删除和修改的命令。 3、事务控制。SQL提供定义事务开始和结束的命令。 4、嵌入式SQL和动态SQL。用…

深度剖析ZooKeeper

1. ZooKeeper架构总览 ZooKeeper 是一个分布式协调服务,广泛用于分布式系统中的配置管理、命名服务、分布式锁和领导选举等场景。以下是对 ZooKeeper 架构、通信机制、容错处理、数据一致性与可靠性等方面的详细剖析。 一、ZooKeeper 主从集群 ZooKeeper 采用 主从…

K8S-statefulset-mysql-ha

需求 实现一个HA mysql,包括1个master,2个slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S环境需要解决的问题 1、由于使用同一个statefulset配置,因此需要考虑master和slave使用不同的cnf文件。 2、不同pod之间文件的传输 3、…

人脸美颜磨皮祛痘1:数据集说明(含下载链接)

一. 前言 本篇博客是《人脸美颜磨皮祛痘》系列文章之《数据集说明(含下载链接)》,像这种深度学习图像修复的数据一般是需要成对,网上很难找到,公司或者个人都是花钱找人做。为了方便你我他,本博客将分享一个由我自己整理的人脸美…