Pytorch pth 格式转ONNX 格式的详细过程
作者:MYVision_ MY视界
背景介绍
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 格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!