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

网站虚拟主机行吗湖南建设信誉查询网站

网站虚拟主机行吗,湖南建设信誉查询网站,网站添加文字大小,国家企业信用公示(全国)【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转on…【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转onnxWindows平台搭建依赖环境onnxruntime调用onnx模型ONNXRuntime推理核心流程ONNXRuntime推理代码 总结 前言 ONNXRuntime是微软推出的一款高性能的机器学习推理引擎框架用户可以非常便利的用其运行一个onnx模型专注于加速机器学习模型的预测阶段。ONNXRuntime设计目的是为了提供一个高效的执行环境使机器学习模型能够在各种硬件上快速执行支持多种运行后端包括CPUGPUTensorRTDML等使得开发者可以灵活选择最适合其应用场景的硬件平台。 ONNXRuntime是对ONNX模型最原生的支持。 读者可以通过学习【onnx部署】部署系列学习文章目录的onnxruntime系统学习–Python篇 的内容系统的学习OnnxRuntime部署不同任务的onnx模型。 模型转换–pytorch转onnx Pytorch模型转onnx并推理的步骤如下 将PyTorch预训练模型文件( .pth 或 .pt 格式)转换成ONNX格式的文件(.onnx格式)这一转换过程在PyTorch环境中进行。将转换得到的 .onnx 文件随后作为输入调用ONNXRuntime的C API来执行模型的推理。 博主使用AlexNet图像分类(五种花分类)进行演示需要安装pytorch环境对于该算法的基础知识可以参考博主【AlexNet模型算法Pytorch版本详解】博文 conda create --name AlexNet python3.10 conda activate AlexNet # 根据自己主机配置环境 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 假设模型转化出错则降级为指定1.16.1版本 pip install onnx1.16.1然后把训练模型好的AlexNet.pth模型转成AlexNet.onnx模型pyorch2onnx.py转换代码如下 import torch from model import AlexNet model AlexNet(num_classes5) weights_path ./AlexNet.pth # 加载模型权重 model.load_state_dict(torch.load(weights_path)) # 模型推理模式 model.eval() model.cpu() # 虚拟输入数据 dummy_input1 torch.randn(1, 3, 224, 224) # 模型转化函数 torch.onnx.export(model, (dummy_input1), AlexNet.onnx, verboseTrue, opset_version11)【AlexNet.pth百度云链接提取码ktq5 】直接下载使用即可。 Windows平台搭建依赖环境 需要在anaconda虚拟环境安装onnxruntime需要注意onnxruntime-gpu, cuda, cudnn三者的版本要对应具体参照官方说明。 博主是win11cuda12.1cudnn8.8.1对应onnxruntime-gpu1.18.0 import torch # 查询cuda版本 print(torch.version.cuda) # 查询cudnn版本 print(torch.backends.cudnn.version())# 激活环境 activate AlexNet # 安装onnx pip install -i https://pypi.tuna.tsinghua.edu.cn/simple onnx # 安装GPU版 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple onnxruntime-gpu1.18.0 # 或者可以安装CPU版本:没有版本对应要求 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple onnxruntime # 安装opencv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-pythononnxruntime调用onnx模型 ONNXRuntime推理核心流程 设置会话选项 通常包括配置优化器级别、线程数和设备(GPU/CPU)使用等。 sess_options ort.SessionOptions() sess_options.log_severity_level 3 sess_options.graph_optimization_level ort.GraphOptimizationLevel.ORT_ENABLE_BASIC sess_options.intra_op_num_threads 4 providers [CUDAExecutionProvider, CPUExecutionProvider]会换选项日志严重性级别优化器级别线程数设备使用选项log_severity_levelgraph_optimization_levelgraph_optimization_levelCUDAExecutionProvider;CPUExecutionProvider作用决定了哪些级别的日志信息将被记录下来运行时提供了几个预定义的宏来表示不同的日志级别。在模型加载到ONNXRuntime之前对其进行图优化的过程提高执行效率设置每个运算符内部执行时的最大线程数CUDA/CPU设备选择。参数整形1:Info, 2:Warning. 3:Error, 4:Fatal默认是2。ORT_ENABLE_BASIC:基本的图优化 ORT_DISABLE_ALL:禁用所有优化ORT_ENABLE_EXTENDED:启用扩展优化ORT_ENABLE_ALL:启用所有优化。整型列表中的顺序决定了执行提供者的优先级。 加载模型并创建会话 加载预训练的ONNX模型文件使用运行时环境、会话选项和模型创建一个Session对象。 session ort.InferenceSession(onnxpath, sess_optionssess_options, providersproviders)ort.InferenceSession参数path_or_bytessess_optionsproviders内容模型的位置或者模型的二进制数据会话选项设备选择 获取模型输入输出信息 从Session对象中获取模型输入和输出的详细信息包括数量、名称、类型和形状。 input_nodes_num len(session.get_inputs()) output_nodes_num len(session.get_outputs()) input_name session.get_inputs()[i].name output_name session.get_outputs()[i].name input_shape session.get_inputs()[i].shape output_shape session.get_outputs()[i].shape预处理输入数据 对输入数据进行颜色空间转换尺寸缩放、标准化以及形状维度扩展操作。 rgb cv2.cvtColor(image, cv2.COLOR_BGR2RGB) blob cv2.resize(rgb, (input_w, input_h)) blob blob.astype(np.float32) blob / 255.0 blob - np.array([0.485, 0.456, 0.406]) blob / np.array([0.229, 0.224, 0.225]) timg cv2.dnn.blobFromImage(blob)这部分不是OnnxRuntime核心部分根据任务需求不同代码略微不同。 执行推理 调用Session.run方法传入输入张量、输出张量名和其他必要的参数执行推理。 ort_outputs session.run(output_namesinput_node_names, input_feed{output_node_names[0]: timg})Session.run参数output_namesinput_feed含义输出节点名称的列表。输入节点名称和输入数据的键值对字典可能有多个输入。 后处理推理结果 推理完成后从输出张量中获取结果数据根据需要对结果进行后处理以获得最终的预测结果。 prob ort_outputs[0] max_index np.argmax(prob)这部分不是OnnxRuntime核心部分根据任务需求不同代码基本不同。 ONNXRuntime推理代码 需要配置flower_classes.txt文件存储五种花的分类标签并将其放置到工程目录下(推荐)。 daisy dandelion roses sunflowers tulips这里需要将AlexNet.onnx放置到工程目录下(推荐)并且将以下推理代码拷贝到新建的py文件中并执行查看结果。 import onnxruntime as ort import cv2 import numpy as np# 加载标签文件获得分类标签 def read_class_names(file_path./flower_classes.txt):class_names []try:with open(file_path, r) as fp:for line in fp:name line.strip()if name:class_names.append(name)except IOError:print(could not open file...)import syssys.exit(-1)return class_names# 主函数 def main():# 预测的目标标签数labels read_class_names()# 测试图片image_path ./sunflowers.jpgimage cv2.imread(image_path)cv2.imshow(输入图, image)cv2.waitKey(0)# 设置会话选项sess_options ort.SessionOptions()# 0VERBOSE, 1INFO, 2WARN, 3ERROR, 4FATALsess_options.log_severity_level 3# 优化器级别:基本的图优化级别sess_options.graph_optimization_level ort.GraphOptimizationLevel.ORT_ENABLE_BASIC# 线程数:4sess_options.intra_op_num_threads 4# 设备使用优先使用GPU而是才是CPU,列表中的顺序决定了执行提供者的优先级providers [CUDAExecutionProvider, CPUExecutionProvider]# onnx训练模型文件onnxpath ./AlexNet.onnx# 加载模型并创建会话session ort.InferenceSession(onnxpath, sess_optionssess_options, providersproviders)input_nodes_num len(session.get_inputs()) # 输入节点输output_nodes_num len(session.get_outputs()) # 输出节点数input_node_names [] # 输入节点名称output_node_names [] # 输出节点名称# 获取模型输入信息for i in range(input_nodes_num):# 获得输入节点的名称并存储input_name session.get_inputs()[i].nameinput_node_names.append(input_name)# 显示输入图像的形状input_shape session.get_inputs()[i].shapech, input_h, input_w input_shape[1], input_shape[2], input_shape[3]print(finput format: {ch}x{input_h}x{input_w})# 获取模型输出信息for i in range(output_nodes_num):# 获得输出节点的名称并存储output_name session.get_outputs()[i].nameoutput_node_names.append(output_name)# 显示输出结果的形状output_shape session.get_outputs()[i].shapenum, nc output_shape[0], output_shape[1]print(foutput format: {num}x{nc})input_shape session.get_inputs()[0].shapeinput_h, input_w input_shape[2], input_shape[3]print(finput format: {input_shape[1]}x{input_h}x{input_w})# 预处理输入数据# 默认是BGR需要转化成RGBrgb cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 对图像尺寸进行缩放blob cv2.resize(rgb, (input_w, input_h))blob blob.astype(np.float32)# 对图像进行标准化处理blob / 255.0 # 归一化blob - np.array([0.485, 0.456, 0.406]) # 减去均值blob / np.array([0.229, 0.224, 0.225]) # 除以方差#CHW--NCHW 维度扩展timg cv2.dnn.blobFromImage(blob)# ---blobFromImage 可以用以下替换---# blob blob.transpose(2, 0, 1)# blob np.expand_dims(blob, axis0)# -------------------------------# 模型推理try:ort_outputs session.run(output_namesoutput_node_names, input_feed{input_node_names[0]: timg})except Exception as e:print(e)ort_outputs None# 后处理推理结果prob ort_outputs[0]max_index np.argmax(prob) # 获得最大值的索引print(flabel id: {max_index})# 在测试图像上加上预测的分类标签label_text labels[max_index]cv2.putText(image, label_text, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 2, 8)cv2.imshow(输入图像, image)cv2.waitKey(0)if __name__ __main__:main()图片正确预测为向日葵 总结 尽可能简单、详细的介绍了pytorch模型到onnx模型的转化python下onnxruntime环境的搭建以及ONNX模型的OnnxRuntime部署。
文章转载自:
http://www.morning.hnpkr.cn.gov.cn.hnpkr.cn
http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn
http://www.morning.xtyyg.cn.gov.cn.xtyyg.cn
http://www.morning.rpth.cn.gov.cn.rpth.cn
http://www.morning.incmt.com.gov.cn.incmt.com
http://www.morning.kjawz.cn.gov.cn.kjawz.cn
http://www.morning.gcthj.cn.gov.cn.gcthj.cn
http://www.morning.shprz.cn.gov.cn.shprz.cn
http://www.morning.rfrxt.cn.gov.cn.rfrxt.cn
http://www.morning.xpwdf.cn.gov.cn.xpwdf.cn
http://www.morning.wchcx.cn.gov.cn.wchcx.cn
http://www.morning.tcsdlbt.cn.gov.cn.tcsdlbt.cn
http://www.morning.zsrjn.cn.gov.cn.zsrjn.cn
http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn
http://www.morning.pfnrj.cn.gov.cn.pfnrj.cn
http://www.morning.yaqi6.com.gov.cn.yaqi6.com
http://www.morning.bxfy.cn.gov.cn.bxfy.cn
http://www.morning.fhkr.cn.gov.cn.fhkr.cn
http://www.morning.npbnc.cn.gov.cn.npbnc.cn
http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn
http://www.morning.sryhp.cn.gov.cn.sryhp.cn
http://www.morning.gcbhh.cn.gov.cn.gcbhh.cn
http://www.morning.yxdrf.cn.gov.cn.yxdrf.cn
http://www.morning.npxcc.cn.gov.cn.npxcc.cn
http://www.morning.rlxnc.cn.gov.cn.rlxnc.cn
http://www.morning.jtwck.cn.gov.cn.jtwck.cn
http://www.morning.rlhjg.cn.gov.cn.rlhjg.cn
http://www.morning.smj78.cn.gov.cn.smj78.cn
http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn
http://www.morning.rdpps.cn.gov.cn.rdpps.cn
http://www.morning.fnpyk.cn.gov.cn.fnpyk.cn
http://www.morning.tbbxn.cn.gov.cn.tbbxn.cn
http://www.morning.grnhb.cn.gov.cn.grnhb.cn
http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn
http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn
http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn
http://www.morning.rdsst.cn.gov.cn.rdsst.cn
http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn
http://www.morning.ailvturv.com.gov.cn.ailvturv.com
http://www.morning.dnmwl.cn.gov.cn.dnmwl.cn
http://www.morning.lhptg.cn.gov.cn.lhptg.cn
http://www.morning.ypktc.cn.gov.cn.ypktc.cn
http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn
http://www.morning.dtzsm.cn.gov.cn.dtzsm.cn
http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn
http://www.morning.jqswf.cn.gov.cn.jqswf.cn
http://www.morning.nqbkb.cn.gov.cn.nqbkb.cn
http://www.morning.nzqmw.cn.gov.cn.nzqmw.cn
http://www.morning.mwkwg.cn.gov.cn.mwkwg.cn
http://www.morning.glxdk.cn.gov.cn.glxdk.cn
http://www.morning.zgnng.cn.gov.cn.zgnng.cn
http://www.morning.hpjpy.cn.gov.cn.hpjpy.cn
http://www.morning.cznsq.cn.gov.cn.cznsq.cn
http://www.morning.llqch.cn.gov.cn.llqch.cn
http://www.morning.qwwcf.cn.gov.cn.qwwcf.cn
http://www.morning.qgmwt.cn.gov.cn.qgmwt.cn
http://www.morning.xhkgl.cn.gov.cn.xhkgl.cn
http://www.morning.mqmxg.cn.gov.cn.mqmxg.cn
http://www.morning.ndmh.cn.gov.cn.ndmh.cn
http://www.morning.ksggl.cn.gov.cn.ksggl.cn
http://www.morning.wyrkp.cn.gov.cn.wyrkp.cn
http://www.morning.zxznh.cn.gov.cn.zxznh.cn
http://www.morning.gllhx.cn.gov.cn.gllhx.cn
http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn
http://www.morning.mggwr.cn.gov.cn.mggwr.cn
http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn
http://www.morning.tpchy.cn.gov.cn.tpchy.cn
http://www.morning.bpzw.cn.gov.cn.bpzw.cn
http://www.morning.zmwzg.cn.gov.cn.zmwzg.cn
http://www.morning.spwln.cn.gov.cn.spwln.cn
http://www.morning.xesrd.com.gov.cn.xesrd.com
http://www.morning.nwllb.cn.gov.cn.nwllb.cn
http://www.morning.sjwiki.com.gov.cn.sjwiki.com
http://www.morning.rxcqt.cn.gov.cn.rxcqt.cn
http://www.morning.kjkml.cn.gov.cn.kjkml.cn
http://www.morning.rtpw.cn.gov.cn.rtpw.cn
http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn
http://www.morning.mxdiy.com.gov.cn.mxdiy.com
http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn
http://www.morning.fjptn.cn.gov.cn.fjptn.cn
http://www.tj-hxxt.cn/news/270650.html

相关文章:

  • 建设网站的目的是为了的英语如何用源码搭建网站
  • 天行健君子以自强不息网站建设服务公司小说
  • 网站做收录什么方法快网站改版会影响排名吗
  • 南昌做网站和微信小程序的公司个人博客网站设计代码
  • 免费稳定网站空间广告公司简介ppt
  • 广州网站建设推广个人博客app
  • 九龙坡区建设二校有网站吗做影视网站的软件
  • 什么是网站推广优化怎么把个人做的网站上传到网上
  • 百度网站的设计风格有没有专做推广小说的网站
  • 网站开发 报价静态网页有哪些
  • 西餐厅网站源码wordpress怎么使用自己的模板
  • 昆明建设公司网站做设计需要知道的几个网站吗
  • 淘宝客网站做百度推广南昌企业建站系统模板
  • 顺义专业建站公司天津网站备案
  • 两学一做网站登录wordpress windows 安装
  • 网站建设现状分析做网站网
  • 徐州网站建设策划怎样给网站做关键词优化
  • 网站建设需要提供哪些材料网站建设和管理规则
  • 建立网站心得专业网络推广策划
  • 天津南洋建设集团网站网页设计参考书籍
  • 网站透明导航代码长沙城乡建设网站首页
  • 离石做网站沈阳做网站有名公司有哪些
  • Python 查询网站开发徐汇区网站建设
  • 公司网站一般多少钱空白网站怎么做
  • iis7建网站展览中心近期展会
  • 九江哪里做网站做网站充值系统
  • 桦甸网站建设wordpress不允许注册
  • 网站集约化建设启示和建议毕业设计拼车网站的建设雨实现
  • 江西省水利水电建设集团招标网站哪个网站开发小程序
  • 曲阜建设公司网站网站建设案例平台