提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论
ONNXRuntime是微软推出的一款高性能的机器学习推理引擎框架,用户可以非常便利的用其运行一个onnx模型,专注于加速机器学习模型的预测阶段。ONNXRuntime设计目的是为了提供一个高效的执行环境,使机器学习模型能够在各种硬件上快速执行,支持多种运行后端包括CPU,GPU,TensorRT,DML等,使得开发者可以灵活选择最适合其应用场景的硬件平台。
ONNXRuntime是对ONNX模型最原生的支持。
读者可以通过学习【OnnxRuntime部署】系列学习文章目录的Python篇 的内容,系统的学习OnnxRuntime部署不同任务的onnx模型。
Pytorch模型转ONNX并推理的步骤如下:
- 将PyTorch预训练模型文件( .pth 或 .pt 格式)转换成ONNX格式的文件(.onnx格式),这一转换过程在PyTorch环境中进行。
- 将转换得到的 .onnx 文件随后作为输入,调用ONNXRuntime的C++ API来执行模型的推理。
博主使用AlexNet图像分类(五种花分类)进行演示,需要安装pytorch环境,对于该算法的基础知识,可以参考博主【AlexNet模型算法Pytorch版本详解】博文
然后把训练模型好的AlexNet.pth模型转成AlexNet.onnx模型,pyorch2onnx.py转换代码如下:
【AlexNet.pth百度云链接,提取码:ktq5 】直接下载使用即可。
需要在anaconda虚拟环境安装onnxruntime,需要注意onnxruntime-gpu, cuda, cudnn三者的版本要对应,具体参照官方说明。
博主是win11+cuda12.1+cudnn8.8.1,对应onnxruntime-gpu==1.18.0
设置会话选项
通常包括配置优化器级别、线程数和设备(GPU/CPU)使用等。
加载模型并创建会话
加载预训练的ONNX模型文件,使用运行时环境、会话选项和模型创建一个Session对象。
获取模型输入输出信息
从Session对象中获取模型输入和输出的详细信息,包括数量、名称、类型和形状。
预处理输入数据
对输入数据进行颜色空间转换,尺寸缩放、标准化以及形状维度扩展操作。
这部分不是OnnxRuntime核心部分,根据任务需求不同,代码略微不同。
执行推理
调用Session.run方法,传入输入张量、输出张量名和其他必要的参数,执行推理。
后处理推理结果
推理完成后,从输出张量中获取结果数据,根据需要对结果进行后处理,以获得最终的预测结果。
这部分不是OnnxRuntime核心部分,根据任务需求不同,代码基本不同。
需要配置flower_classes.txt文件存储五种花的分类标签,并将其放置到工程目录下(推荐)。
这里需要将AlexNet.onnx放置到工程目录下(推荐),并且将以下推理代码拷贝到新建的py文件中,并执行查看结果。
图片正确预测为向日葵:
尽可能简单、详细的介绍了pytorch模型到onnx模型的转化,python下OnnxRuntime环境的搭建以及onnx模型的OnnxRuntime部署。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/18753.html