博主使用mmclassification项目来训练道路标志识别模型,并且使用官方代码中的pytorch2onnx以及onnx2tensorrt脚本,由于工程需要使用的tensorrt版本为6.0,但是遇到了如下问题:
-
输出的onnx很复杂,有乱七八糟的结构
方法是将输出的onnx模型通过simplifier简化
-
版本问题
博主pytorch2onnx转换成功,但是再转trt的时候收到如下报错
经过google后发现是版本问题,大意是trt6不支持pytorch1.3,所以onnx解释器(onnx2trt)无法解释torch1.3及以上版本导出的onnx模型,所以转换失败,如果将torch降到1.2转onnx就没问题了
但是这很麻烦,torch,torchvision,cuda版本都需要更换
然后具体版本的话 google torchvision version 进入官方文档找版本对应
google如下字段“
pip install torch1.4.0 torchvision0.5.0
所以不得不将所有版本降回去
博主使用虚拟环境
应该大环境的包版本不用动,只要给虚拟环境装适应版本,然后全局更换cuda版本
但是更换版本在最终的Xavier上也不一定能用,所以不如直接在服务器上训练,训练好之后在办卡上转
https://github.com/daquexian/onnx-simplifier/
可以命令行直接运行onnxsim的main函数
python3 -m onnxsim input_onnx_model output_onnx_model
也可以手动运行(部分代码如下图)
import onnx from onnxsim import simplify # load your predefined onNX model model = onnx.load(path + model_name + '.onnx') # convert model model_simp, check = simplify(model) assert check, "Simplified onNX model could not be validated" # use model_simp as a standard onNX model object项目转到Xavier上,配置Xavier环境 安装torch
- 服务器是x86架构,Xavier是arm架构中的aarch64
google torch/torchvision install on jetson
一定要将jetson作为关键词,会找到官方的whl文件
或者官方的源码
第一次
python setup.py install
报这个错
先查第一个错,后面的可能都是因为第一个引起的
- 有的包torch torchvision 要和硬件打交道,和系统硬件架构有关系,所以需要源码编译或者whl文件
- 有的包mmcv这些可以直接pip
- 很矛盾,mmcv-full 要求torch1.3以上,trt6要求小于等于1.2
- 不知道怎么办,我也很无奈,那就先安装一个最低版本的mmcv-full 试试呗
- 最低版本的mmcv-full报错了



