(1)TensorRT的ONNX解释器是针对Pytorch版本编译的,如果版本不对应可能导致转模型时出现错误。
(2)主机环境:pytorch1.8.1+cuda11.1
主机上exp305权重可用,尝试转ONNX,命令如下:
python export.py --weights runs/train/exp305/weights/best.pt --img 640 --include engine onnx
成功导出best.onnx到runs/train/exp305/best.onnx
export可以直接导出tensorrt,参数是--include engine,自动下载了tensorrt-0.0.1
包不能用:
No module named 'tensorrt'
参照别人的版本:
尝试更换tensorrt版本:
pip uninstall tensorrt
因为看到英伟达官网上只有8.2有ubuntu20.02版本,所以下载了这个版本
下载安装了trt8.2,仍然不行,no module named 'tensorrt':
用dpkg安装:
还是不行。
版本不对需要不同的依赖:
准备重新来,卸载deb包:
查找tensorrt包:
dpkg -l |grep tensorrt
卸载这个包:
sudo dpkg -P nv-tensorrt-repo-ubuntu2004-cuda11.4-trt8.2.1.8-ga-20211117
dpkg -r 卸载。
dpkg -P 彻底卸载,包括配置文件等。
卸载完之后用dpkg找不到包了:
尝试下载别人博客中的版本:
下载了这个:
解压:
tar zxf TensorRT-8.0.1.6.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz
移动:
sudo mv TensorRT-8.0.1.6 /opt
环境变量
gedit ~/.bashrc
添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TensorRT-8.0.1.6/lib
source ~/.bashrc
制tensorRT目录下 lib、include文件夹到系统文件夹(或者将这两个文件夹路径添加到.bashrc文件中)
cd /opt/TensorRT-8.0.1.6
sudo cp -r ./lib/* /usr/lib
sudo cp -r ./include/* /usr/include
转到我的conda环境
conda activate project1
cd python
pip install pycuda
pip install tensorrt-8.0.1.6-cp39-none-linux_x86_64.whl
安装成功:
注意选择对应python版本的whl
下载安装CUDNN:
官方教程:
Installation Guide :: NVIDIA Deep Learning cuDNN Documentation
解压:
tar -xvf cudnn-11.1-linux-x64-v8.0.5.39.tgz
cd cuda
cd include
sudo cp cudnn*.h /usr/local/cuda/include
挺奇怪的,解压后生成这两个东西,灵活变通一下路径复制文件:
cd ../
sudo cp -P ./lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
测试成功!
报错:
猜测可能是显卡驱动的原因,更换了460,495都不能用
换了回来,猜测可能是tensorrt版本的问题,准备换7.2,找到了支持cuda11.1的最低版本7.2,但是只有ubuntu18的版本,希望能支持。
cd到opt下用(sudo rm -rf 文件夹)的命令删除tensorrt8文件
到conda虚拟环境下删除whl
pip uninstall tensorrt-8.0.1.6-cp39-none-linux_x86_64.whl
根据/home/epic-l/下载/TensorRT-8.0.1.6.Linux.x86_64-gnu.cuda-11.3.cudnn8.2/TensorRT-8.0.1.6/lib的内容到opt/lib下删除文件
用sudo权限都删掉:
到usr/include 下删除文件:
前面的步骤都一样,但是这个最高只能支持python3.7
新的conda环境python=3.7:
conda create -n tensorrt python=3.7
pip install pycuda
pip install tensorrt-7.2.1.6-cp37-none-linux_x86_64.whl
pip install -r requirements.txt
最后还是报错了:
yolov5的detect.py中集成了onnx和tensorrt的推理
还有opencv的ONNX推理:
尝试进行推理
python detect.py --weights runs/train/exp305/weights/best.engine --source ../datasets/coco128/images/train2017
效果很差,但是可以看到一个预测出来是正确的,可能是NMS没压住,干扰置信度都太高了,可以试着研究一下什么原因。