网络编程
位置:首页>> 网络编程>> Python编程>> Pytorch pth 格式转ONNX 格式的详细过程

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

作者:MYVision_  发布时间:2021-08-29 05:15:28 

标签:Pytorch,pth,ONNX

背景介绍

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

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

 安装依赖库

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

pip install onnx==1.11.0
pip install onnx-simplifier

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

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

各种报错

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

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

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

 谁知道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)

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

执行下如下命令即可

export OPENBLAS_CORETYPE=ARMV8

ONNX 转换成TensorRT 格式

在Jetson 上通过trtexec 工具做转换

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

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

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

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

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

python -m onnxsim init.onnx init_sim.onnx

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

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

来源:https://blog.csdn.net/fengshengwei3/article/details/130615279

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com