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

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

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

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没压住,干扰置信度都太高了,可以试着研究一下什么原因。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/700347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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