因为模型跑起来太慢了,所以想要运用tensorrtx进行加速。但是这个是有难度的,且网络上的教程大多写的不是很好。我将以一个新人的视角,从头开始部署基于yolov5的tensorrtx加速。
知识补充:TensorRT和TensorRTX的区别
tensorRT是英伟达出的模型加速推理的SDK,tensorrtx是wangxinyu大佬自己写的通过tensorrt的API直接构建网络的进行模型部署的方案。简单来说就是tensorrtx是教你怎么用tensorRT部署模型的。你要做YOLOv5的模型部署,直接按照tensorrtx上的教程一步一步来就行了。
一:TensorRT的安装
Windows+Anaconda配置TensorRT环境-CSDN博客
简要介绍一下TensorRT的使用流程
TensorRT的使用流程如下图所示,分为两个阶段:预处理阶段和推理阶段。其部署流程大致如下:1.导出网络定义以及相关权重2.解析网络定义以及相关权重3.根据显卡算子构造出最优执行计划4.将执行计划序列化存储5.反序列化执行计划6.进行推理
可以从步骤3得知,tensorrt实际是和硬件关系密切的,所以在部署过程中,如果硬件(显卡)和软件(驱动、cudatoolkit、cudnn)发生了改变,那么从这一步开始就要重新走一遍了。
二:将Pytorch(.pt)模型转为onnx模型
这一步主要是为了将深度学习模型的结构和参数导出来。考虑到实际部署环境的精简性,我这里还是建议大家在使用中先将深度学习模型导出ONNX文件,然后拿着ONNX文件去部署就可以了。
原因很简单,因为ONNX不像Pytorch和TensorFlow那样,还需要安装这些框架运行的依赖包(比如 conda install pytorch,不然你没办法用pytorch的代码),TensorRT可以直接从ONNX文件中读取出网络定义和权重信息。
除此以外,ONNX更像是“通用语言”,ONNX的出现本身就是为了描述网络结构和相关权重,除此以外,还有专门的工具可以对ONNX文件进行解析,查看相关结构,例如网站:https://lutzroeder.github.io/netron/
可以直接将onnx文件拖进去,查看网络结构。
三:ONNX模型转换为TensorRT模型
参考资料:
TensorRT 学习(二):Pytorch 模型转 TensorRT C++ 流程_trt模型推理结果导出c++-CSDN博客
TensorRT(一)Windows+Anaconda配置TensorRT环境 (Python版 )_conda tensorrt-CSDN博客