ubuntu16.04-cuda11.1上使用TensorRT加速yolov5推理

基础

环境

其实极客的版本已经给我们了

ubuntu16.04-cuda11.1-cudnn8.0-opencv4.1.1-tensorrt7.2

检查

ubantu版本

lsb_release -a

ubuntu16.04-cuda11.1上使用TensorRT加速yolov5推理_第1张图片
检查cuda版本

nvcc --version

ubuntu16.04-cuda11.1上使用TensorRT加速yolov5推理_第2张图片
查看tensorRT的路径

 cd
 find / -name tensorrt*

在这里插入图片描述

需要做的事

(1)下载tensorRT

在Linux下安装tensorrt包时使用

pip install tensorrt
pip install nvidia-pyindex
pip install nvidia-tensorrt

【参考文档】下载tensorRT
这个在官网是真没看见!!!

(2)按照文档运行

文档指的是https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5

报错

然后就是在运行python gen_wts.py -w yolov5s.pt -o yolov5s.wts报个这个错

RequestsDependencyWarning: urllib3 (1.26.12) or chardet(2.3.0)/charset_normalizer (2.0.12) doesn’t match a supported version! RequestsDependencyWarning)

【参考文档】urllib3 1.26.9 or chardet 4.0.0 doesn‘t match a supported version报错处理
版本要求是:

chardet_version >= 3.0.2, < 5.0.0
 urllib3 >= 1.21.1, <= 1.26

所以就
先删除

pip uninstall chardet
pip uninstall urllib3

然后换个新版本吧

pip install chardet==3.0.4 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
 pip install urllib3==1.25 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

用这个源只是因为之前那个源卡到不行

使用tensorRT

如果你乖乖按照文档进行,你就会到这个位置了。
接下来就是使用tensorRT:

  1. 先要将转换好的.wts文件再次转化为.engine文件
  2. 使用.engine进行推理
cp train/src_repo/yolov5-6.0/yolov5s.wts train/src_repo/tensorrtx/yolov5/build

(1)第一种使用方式

// For example yolov5s
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s
sudo ./yolov5 -d yolov5s.engine ../samples

在这里插入图片描述

报错

其实一开始./yolov5 -s yolov5s.wts yolov5s.engine s应该是报了一个错

virtual nvinfer1::YoloLayerPlugin::~YoloLayerPlugin(): Assertion `0’ failed

应该是权重文件不对应,权重文件也应该下载对应版本的.

然后运行./yolov5 -d yolov5s.engine /project/train/src_repo又爆了一个错

terminate called after throwing an instance of ‘cv::Exception’
what(): OpenCV(4.1.2) /usr/local/src/opencv/modules/imgcodecs/src/loadsave.cpp:715: error: (-215:Assertion failed) !_img.empty() in function ‘imwrite’
Aborted (core dumped)

这个错本笨比也是搞了一会
./yolov5 -d yolov5s.engine +检测文件夹
①如果不是文件夹或者不存在这个文件夹报这个错:read_files_in_dir failed
②上面这个错大概率是路径问题

结果就是这样子:

(2)第二种使用方式:指定depth_multiple, width_multiple

sudo ./yolov5 -s yolov5_custom.wts yolov5.engine c 0.17 0.25
sudo ./yolov5 -d yolov5.engine ../samples

报错

yolov5: /project/train/src_repo/tensorrtx/yolov5/common.hpp:94: std::map loadWeights(std::__cxx11::string): Assertion `input.is_open() && “Unable to load weight file. please check if the .wts file path is right!!!”’ failed.
Aborted (core dumped)

同样也是权重问题,权重文件也应该下载对应版本的.

warning

[W] [TRT] TensorRT was linked against cuDNN 8.1.0 but loaded cuDNN 8.0.5

这个东西算是个warning,可以不管,一般不会在这个问题上出错,但是还是建议检查一下cmake路径

你可能感兴趣的:(#,yolov5,目标检测,深度学习,linux,python,深度学习,tensorrt)