Pytorch pth 格式转ONNX 格式的详细过程

 更新时间:2023年05月18日 09:29:37   作者:MYVision_ MY视界  
PyTorch 训练的模型,需要在Jetson nano 上部署,jetson 原生提供了TensorRT 的支持,所以一个比较好的方式是把它转换成ONNX 格式,然后在通过ONNX 转换成TensorRT 格式,这篇文章主要介绍了Pytorch pth 格式转ONNX 格式,需要的朋友可以参考下

背景介绍

PyTorch 训练的模型,需要在Jetson nano 上部署,jetson 原生提供了TensorRT 的支持,所以一个比较好的方式是把它转换成ONNX 格式,然后在通过ONNX 转换成TensorRT 格式

 安装依赖库

所以就需要安装ONNX, 安装ONNX 具体的版本需要依赖于环境中的protobuf 和python版本,我的python版本是3.6.9

pip install onnx==1.11.0
pip install onnx-simplifier

 安装ONNX 没问题,但是安装onnx-simplifier的时候,Jetson xaviar 上死活安装不成功

各种报错

 但是,我换到windows 上和ubuntu 服务器上,就很正常的安装成功了

 谁知道Jetson 上为什么安装失败的,可以私信我或评论区告诉我,感谢~

转换成onnx 格式

with torch.no_grad(): 
	    torch.onnx.export( 
		model, 
		example, 
		"init.onnx", 
		opset_version=11, 
		input_names=['input'], 
		output_names=['output'])

这样就能正常导出了

在Jetson XAVIAR 上运行时可能会报如下错误

Illegal instruction (core dumped)

执行下如下命令即可

 export OPENBLAS_CORETYPE=ARMV8

ONNX 转换成TensorRT 格式

在Jetson 上通过trtexec 工具做转换

trtexec --onnx=init.onnx --saveEngine=init.trt --explicitBatch

发现转换时报如下错误:Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.

 所以需要通过onnx-simplifier 转换一下,转换命令如下

python -m onnxsim init.onnx init_sim.onnx

 这样,就转换成功了,成功之后,后面就可以在TensorRT 上推理了

到此这篇关于Pytorch pth 格式转ONNX 格式的文章就介绍到这了,更多相关Pytorch pth 转ONNX 格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 基本结构语句(函数和模块)

    python 基本结构语句(函数和模块)

    这篇文章主要介绍了python 基本结构语句(函数和模块),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python利用PyVista进行mesh的色彩映射的实现

    Python利用PyVista进行mesh的色彩映射的实现

    这篇文章主要介绍了Python利用PyVista进行mesh的色彩映射的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python实现读取mat、tif和hdr格式数据

    Python实现读取mat、tif和hdr格式数据

    遥感影像数据大多以tif格式或者以hdr格式进行存储,如果以mat格式进行存储,不会保留坐标信息,本文将详细介绍如何使用python来读取这三种格式的数据,需要的可以参考下
    2023-12-12
  • Python实现删除列表中满足一定条件的元素示例

    Python实现删除列表中满足一定条件的元素示例

    这篇文章主要介绍了Python实现删除列表中满足一定条件的元素,结合具体实例形式对比分析了Python针对列表元素的遍历、复制、删除等相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • postman和python mock测试过程图解

    postman和python mock测试过程图解

    这篇文章主要介绍了postman和python mock测试过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 基于python实现简单网页服务器代码实例

    基于python实现简单网页服务器代码实例

    这篇文章主要介绍了基于python实现简单网页服务器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python Flask的request对象使用详解

    Python Flask的request对象使用详解

    本文介绍Flask request对象,一个完整的HTTP请求,包括客户端向服务端发送的Request请求和服务器端发送Response响应.为了能方便访问获取请求及响应报文信息,Flask框架提供了一些内建对象,下面就来说一下Flask针对请求提供内建对象reques,需要的朋友可以参考一下
    2023-02-02
  • python中的循环结构问题

    python中的循环结构问题

    这篇文章主要介绍了python中的循环结构问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Python控制台输出时刷新当前行内容而不是输出新行的实现

    Python控制台输出时刷新当前行内容而不是输出新行的实现

    今天小编就为大家分享一篇Python控制台输出时刷新当前行内容而不是输出新行的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pandas数值计算与排序方法

    pandas数值计算与排序方法

    下面小编就为大家分享一篇pandas数值计算与排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论