yolov5的TensorRT部署【tensorrt+cudnn@主机】

1、版本问题

(1)TensorRT的ONNX解释器是针对Pytorch版本编译的,如果版本不对应可能导致转模型时出现错误。

(2)主机环境:pytorch1.8.1+cuda11.1

2、Pytorch2ONNX

主机上exp305权重可用,尝试转ONNX,命令如下:

python export.py --weights runs/train/exp305/weights/best.pt --img 640 --include engine onnx 

成功导出best.onnx到runs/train/exp305/best.onnx

3、YOLO2TensorRT

export可以直接导出tensorrt,参数是--include engine,自动下载了tensorrt-0.0.1

包不能用:

No module named 'tensorrt'

安装下载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找不到包了:

尝试下载别人博客中的版本:

 下载了这个:

下面是正确安装方法:TensorRT

解压:

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*

 测试成功!

继续export

报错:

猜测可能是显卡驱动的原因,更换了460,495都不能用

换了回来,猜测可能是tensorrt版本的问题,准备换7.2,找到了支持cuda11.1的最低版本7.2,但是只有ubuntu18的版本,希望能支持。

删除TensorRT8环境

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 下删除文件:

 安装TensorRT-7.2.1.6

前面的步骤都一样,但是这个最高只能支持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

最后还是报错了:

4、推理测试

yolov5的detect.py中集成了onnx和tensorrt的推理

还有opencv的ONNX推理:

尝试进行推理

python detect.py --weights runs/train/exp305/weights/best.engine --source ../datasets/coco128/images/train2017

 

效果很差,但是可以看到一个预测出来是正确的,可能是NMS没压住,干扰置信度都太高了,可以试着研究一下什么原因。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值