2025年onnx模型部署(onnx模型部署 python)

onnx模型部署(onnx模型部署 python)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> 

讯享网

提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论


ONNXRuntime是微软推出的一款高性能的机器学习推理引擎框架,用户可以非常便利的用其运行一个onnx模型,专注于加速机器学习模型的预测阶段。ONNXRuntime设计目的是为了提供一个高效的执行环境,使机器学习模型能够在各种硬件上快速执行,支持多种运行后端包括CPU,GPU,TensorRT,DML等,使得开发者可以灵活选择最适合其应用场景的硬件平台。
ONNXRuntime是对ONNX模型最原生的支持。

读者可以通过学习【OnnxRuntime部署】系列学习文章目录的Python篇 的内容,系统的学习OnnxRuntime部署不同任务的onnx模型。


Pytorch模型转ONNX并推理的步骤如下:

  1. 将PyTorch预训练模型文件( .pth 或 .pt 格式)转换成ONNX格式的文件(.onnx格式),这一转换过程在PyTorch环境中进行。
  2. 将转换得到的 .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)使用等。

讯享网
会换选项 日志严重性级别 优化器级别 线程数 设备使用 选项 log_severity_level graph_optimization_level graph_optimization_level CUDAExecutionProvider;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对象。

 
       
ort.InferenceSession参数 path_or_bytes sess_options providers 内容 模型的位置或者模型的二进制数据 会话选项 设备选择

获取模型输入输出信息
从Session对象中获取模型输入和输出的详细信息,包括数量、名称、类型和形状。

讯享网

预处理输入数据
对输入数据进行颜色空间转换,尺寸缩放、标准化以及形状维度扩展操作。

 
       

这部分不是OnnxRuntime核心部分,根据任务需求不同,代码略微不同。

执行推理
调用Session.run方法,传入输入张量、输出张量名和其他必要的参数,执行推理。

讯享网
Session.run参数 output_names input_feed 含义 输出节点名称的列表。 输入节点名称和输入数据的键值对字典,可能有多个输入。

后处理推理结果
推理完成后,从输出张量中获取结果数据,根据需要对结果进行后处理,以获得最终的预测结果。

 
       

这部分不是OnnxRuntime核心部分,根据任务需求不同,代码基本不同。


需要配置flower_classes.txt文件存储五种花的分类标签,并将其放置到工程目录下(推荐)。

讯享网

这里需要将AlexNet.onnx放置到工程目录下(推荐),并且将以下推理代码拷贝到新建的py文件中,并执行查看结果。

 
        

图片正确预测为向日葵:


尽可能简单、详细的介绍了pytorch模型到onnx模型的转化,python下OnnxRuntime环境的搭建以及onnx模型的OnnxRuntime部署。


小讯
上一篇 2025-05-25 09:15
下一篇 2025-05-13 19:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/180549.html