栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pytorch模型转TensorRT踩坑

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pytorch模型转TensorRT踩坑

博主使用mmclassification项目来训练道路标志识别模型,并且使用官方代码中的pytorch2onnx以及onnx2tensorrt脚本,由于工程需要使用的tensorrt版本为6.0,但是遇到了如下问题:

  1. 输出的onnx很复杂,有乱七八糟的结构

    方法是将输出的onnx模型通过simplifier简化

  2. 版本问题
    博主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上也不一定能用,所以不如直接在服务器上训练,训练好之后在办卡上转

Simplifier小部分源码分析

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文件
或者官方的源码

安装torchvision

第一次

python setup.py install

报这个错

先查第一个错,后面的可能都是因为第一个引起的

安装mmcv mmcls
  • 有的包torch torchvision 要和硬件打交道,和系统硬件架构有关系,所以需要源码编译或者whl文件
  • 有的包mmcv这些可以直接pip
报错
  1. 很矛盾,mmcv-full 要求torch1.3以上,trt6要求小于等于1.2
  2. 不知道怎么办,我也很无奈,那就先安装一个最低版本的mmcv-full 试试呗
  3. 最低版本的mmcv-full报错了
决定用trt的转onnx代码试一下,不用torch的
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号