TensorRT的安装参考了下面的文章,在此表示感谢
https://blog.csdn.net/zong596568821xp/article/details/86077553
TensorRT对版本的要求也是较为严格的,为方便配置各种软件我建议在Anaconda的虚拟环境中操作防止破坏现有依赖。这篇文章中我介绍了Anaconda环境的配置:https://blog.csdn.net/qq_37662375/article/details/105605003
由于需要在边缘计算机jetson TX2上部署神经网络,所以需要安装tensorRT实现c++调用加速后的网络进行推理。除了加速推理外TensorRT的还有个优点时便利,安装后就不需在推理端安装CUDA和CUDNN等。以下是安装过程。
在官网上下载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
下载官方的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是一个只有前向传播的深度学习框架,这个框架可以将 Caffe,TensorFlow的网络模型解析,然后与tensorRT中对应的层进行一一映射,把其他框架的模型统一全部 转换到tensorRT中,然后在tensorRT中可以针对NVIDIA自家GPU实施优化策略,并进行部署加速。如果想了解更多关于tensorrt的介绍,可参考官网介绍
查询依赖
tensorrt的安装方式很简单,只需要注意一些环境的依赖关系就可以,我们以tensorrt5.0.4版本为例,参考官网安装教程,这里简单总结一下步骤。tensorrt支持的环境和python版本如表所示(来源)。所以Anaconda的虚拟环境是个不错的选择。
再次确认环境
安装Tensorflow
仍然是从Anaconda中安装,严格注意版本匹配:https://blog.csdn.net/qq_35976351/article/details/89178917
conda install tensorflow-gpu
安装pycuda
如果要使用python接口的tensorrt,则需要安装pycuda
pip install pycuda
下载安装包
安装指令
如果要使用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
# 安装TensorRT
cd TensorRT-5.0.2.6/python
pip install tensorrt-5.0.2.6-py2.py3-none-any.whl
# 安装UFF,支持tensorflow模型转化
cd TensorRT-5.0.2.6/uff
pip install uff-0.5.5-py2.py3-none-any.whl
# 安装graphsurgeon,支持自定义结构
cd TensorRT-5.0.2.6/graphsurgeon
pip 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/lib
sudo 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
<
注意:导入uff的时候需要安装tensorflow模块,tensorflow版本要与cuda版本对应,比如cuda9要对应tensorflow1.12及以下版本,以上版本需要cuda10,具体参考官网
如果导入tensorrt报错如下,则是因为python版本不对,应根据2.1节上边的那个表调整自己的python版本
Traceback (most recent call last):
File "", line 1, in
File "/home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/__init__.py", line 1, in
from .tensorrt import *
ImportError: /home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/tensorrt.so: undefined symbol: _Py_ZeroStruct
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
几个结果作为参考