当前位置: 代码迷 >> 综合 >> 目标检测与位姿估计(六):TensorRT+YOLOv4
  详细解决方案

目标检测与位姿估计(六):TensorRT+YOLOv4

热度:12   发布时间:2023-11-21 09:29:35.0

TensorRT的安装参考了下面的文章,在此表示感谢

https://blog.csdn.net/zong596568821xp/article/details/86077553

Anaconda

TensorRT对版本的要求也是较为严格的,为方便配置各种软件我建议在Anaconda的虚拟环境中操作防止破坏现有依赖。这篇文章中我介绍了Anaconda环境的配置:https://blog.csdn.net/qq_37662375/article/details/105605003

安装TensorRT

由于需要在边缘计算机jetson TX2上部署神经网络,所以需要安装tensorRT实现c++调用加速后的网络进行推理。除了加速推理外TensorRT的还有个优点时便利,安装后就不需在推理端安装CUDA和CUDNN等。以下是安装过程。

安装CUDA10.0

在官网上下载deb包,注意这里cuda的安装如果选deb的话,tensorRT的安装就可以使用deb,如果cuda用的其他安装方式,如.run文件,则tensorRT不能使用deb安装。这里选择deb方便一点。按照官方指令安装即可,然后在.bashrc里添加路径

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

查询CUDA版本:

nvcc -V

安装CUDNN

下载官方的tar包解压

tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
cd cudnn-10.2-linux-x64-v7.6.5.32
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

查询CUDNN版本:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

安装TensorRT

什么是TensorRT

                                           

                           

可以认为tensorRT是一个只有前向传播的深度学习框架,这个框架可以将 Caffe,TensorFlow的网络模型解析,然后与tensorRT中对应的层进行一一映射,把其他框架的模型统一全部 转换到tensorRT中,然后在tensorRT中可以针对NVIDIA自家GPU实施优化策略,并进行部署加速。如果想了解更多关于tensorrt的介绍,可参考官网介绍

查询依赖

tensorrt的安装方式很简单,只需要注意一些环境的依赖关系就可以,我们以tensorrt5.0.4版本为例,参考官网安装教程,这里简单总结一下步骤。tensorrt支持的环境和python版本如表所示(来源)。所以Anaconda的虚拟环境是个不错的选择。

                                                      

再次确认环境

  • 确认CUDA版本是9.0或者10.0,可通过运行nvcc -V指令来查看CUDA,如果不是9.0以上,则需要先把CUDA版本更新一下nn
  • cudnn版本是7.3.1,如果不满足要求,按照《Linux之cudnn升级方法》进行升级
  • 需安装有tensorflow,uff模块需要

安装Tensorflow

仍然是从Anaconda中安装,严格注意版本匹配:https://blog.csdn.net/qq_35976351/article/details/89178917

conda install tensorflow-gpu

安装pycuda

如果要使用python接口的tensorrt,则需要安装pycuda

pip install pycuda

下载安装包

  1. 进入下载链接
  2. 点击Download Now(需要登录英伟达账号,没有的注册一个)
  3. 选择下载的版本(最新TensorRT5)
  4. 完成问卷调查
  5. 选择同意协议
  6. 根据自己的系统版本和CUDA版本,选择安装包,如图所示(如果是完整安装,建议选择Tar File Install Packages,这样可以自行选择安装位置)

                           

安装指令

如果要使用python版本,则使用pip安装,执行下边的指令

#在home下新建文件夹,命名为tensorrt_tar,然后将下载的压缩文件拷贝进来解压tar xzvf TensorRT-5.0.2.6.Ubuntu-16.04.4.x86_64-gnu.cuda-9.0.cudnn7.3.tar#解压得到TensorRT-5.0.2.6的文件夹,将里边的lib绝对路径添加到环境变量中export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lthpc/tensorrt_tar/TensorRT-5.0.2.6/lib# 安装TensorRTcd TensorRT-5.0.2.6/pythonpip install tensorrt-5.0.2.6-py2.py3-none-any.whl# 安装UFF,支持tensorflow模型转化cd TensorRT-5.0.2.6/uffpip install uff-0.5.5-py2.py3-none-any.whl# 安装graphsurgeon,支持自定义结构cd TensorRT-5.0.2.6/graphsurgeonpip install graphsurgeon-0.3.2-py2.py3-none-any.whl

 

很多人安装某些版本的时候会报错,比如

ERROR: tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl is not a supported wheel on this platform.

这个是因为自己python版本不对,输入pip --version来查看python版本是否是自己想象中的版本,不对的话切换一下 

为了避免后边deepstream找不到tensorrt的库,建议把tensorrt的库和头文件添加到系统路径下

# TensorRT路径下sudo cp -r ./lib/* /usr/libsudo cp -r ./include/* /usr/include

需要注意的是,比如我在服务器下做这件事(也就是说没有管理员权限),那么系统路径时不能设置的,这时每次启动虚拟环境都需要重新执行命令:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yu/Torpedo/TensorRTYOLOv4/TensorRT-7.0.0.11/lib

不然会报错:linux系统安装tensorrt 报错 ImportError: libnvinfer.so.6: cannot open shared object file: No such file or directory

环境测试

运行python测试,导入模块不报错就表明安装正确

$ python
<<import tensorrt
<<import tensorflow
<<import uff

注意:导入uff的时候需要安装tensorflow模块,tensorflow版本要与cuda版本对应,比如cuda9要对应tensorflow1.12及以下版本,以上版本需要cuda10,具体参考官网

如果导入tensorrt报错如下,则是因为python版本不对,应根据2.1节上边的那个表调整自己的python版本

Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/__init__.py", line 1, in <module>from .tensorrt import *
ImportError: /home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/tensorrt.so: undefined symbol: _Py_ZeroStruct

TensorRT+YOLOv4的项目

https://github.com/wang-xinyu/tensorrtx
https://github.com/CaoWGG/TensorRT-YOLOv4
https://jkjung-avt.github.io/tensorrt-yolov4/
https://github.com/tjuskyzhang/yolov4-tiny-tensorrt

先安装PyTorch

安装过程我写过:https://blog.csdn.net/qq_37662375/article/details/105605003

我们以最后一个Tiny版本为主

过程也很详细不再赘述:https://github.com/tjuskyzhang/yolov4-tiny-tensorrt

几个结果作为参考