ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Ubuntu+Yolov5+TensortRT加速部署

2022-03-09 21:31:34  阅读:500  来源: 互联网

标签:Yolov5 lib 11.4 linux TensortRT usr Ubuntu local cuda


Ubuntu+Yolov5+TensortRT加速部署

0.前序

  • 测试机器Ubuntu18.04 GPU: 3060, CUDA11.4, CUDA10.2均可

1.软件下载

  1. Nvidia驱动安装历史版本下载
  2. CUDA下载安装
  3. CUDNN下载安装
  4. OpenCV3.4.4下载
  5. Anaconda下载Linux版本 or Python安装
  6. Pytorch安装
  7. Yolov5安装
  8. TensorRT安装

2.软件安装

2.1 驱动安装

2.2 CUDA安装

wget https://developer.download.nvidia.com/compute/cuda/11.4.2/loc
al_installers/cuda_11.4.2_470.57.02_linux.run

sudo sh cuda_11.4.2_470.57.02_linux.run
  • 终端输入
gedit ~/.bashrc
  • 文件后面追加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.4/lib64
export PATH=$PATH:/usr/local/cuda-11.4/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.4
  • 更新环境变量配置
source ~/.bashrc
  • 至此cuda安装完成,输入nvcc -V 命令查看cuda查看

2.3 CUDNN安装

  • 下载如下

sudo dpkg -i libcudnn8_8.2.4.15-1+cuda11.4_amd64.deb  
sudo dpkg -i libcudnn8-dev_8.2.4.15-1+cuda11.4_amd64.deb  
sudo dpkg -i libcudnn8-samples_8.2.4.15-1+cuda11.4_amd64.deb
  • 验证
ldconfig -v | grep cudnn

  • 解压安装包
tar zxvf cudnn-11.4-linux-x64-v8.2.4.tgz
  • 拷贝.h和libs文件到cuda安装目录
$ 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*
  • 软连接创建
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.2.4 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.2.4 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.2.4 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.2.4 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.2.4 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.2.4 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8.2.4 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8
  • 测试
# Copy the cuDNN sample to a writable path.
cp -r /usr/src/cudnn_samples_v7/ $HOME

# Go to the writable path.
 cd  $HOME/cudnn_samples_v7/mnistCUDNN

#Compile the mnistCUDNN sample.
make clean && make

#Run the mnistCUDNN sample.
 ./mnistCUDNN

If cuDNN is properly installed and running on your Linux system, you will see a message similar to the following:
Test passed!

2.4 Opencv安装

tar zxvf opencv-3.4.4.tar.gz
  • 下载QT
apt-get install qt4-default 
cmake -D CMAKE_BUILD_TYPE=RELEASE -D PYTHON_DEFAULT_EXECUTABLE=$(/home/xujunkai/test/python_env/bin/python3 -c "import sys; print(sys.executable)") -D PYTHON3_EXECUTABLE=$(/home/xujunkai/test/python_env/bin/python3 -c "import sys; print(sys.executable)") -D PYTHON3_NUMPY_INCLUDE_DIRS=$(/home/xujunkai/test/python_env/bin/python3 -c "import numpy; print(numpy.get_include())") -D PYTHON3_PACKAGES_PATH=$(/home/xujunkai/test/python_env/bin/python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_OPENGL=ON -D WITH_CUDA=ON -D ENABLE_FAST_MATH=1 -D WITH_FFMPEG=ON -D CUDA_FAST_MATH=1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.4/ -D WITH_NVCUVID=ON -D CUDA_ARCH_BIN=5.3,6.0,6.1,7.0,7.5 -D CUDA_ARCH_PTX=7.5 -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=/home/xujunkai/test/opencv_base/opencv_contrib/modules -D CUDA_nppicom_LIBRARY=stdc++ -D WITH_OPENMP=ON ..
  • 错误:fatal error: linux/videodev.h: 没有那个文件或目录 参照
sudo apt-get install libv4l-dev
cd /usr/include/linux
sudo ln -s ../libv4l1-videodev.h videodev.h
将   boostdesc_bgm 内步所有文件放在 opencv_contrib/modules/xfeatures2d/src/  下
  • 安装
make -j8
make install

2.5 Python环境安装

  • 推荐编译安装

2.6 pytorch安装

  • 安装
pip3 install torch==1.10.2+cu113 torchvision==0.11.3+cu113 torchaudi
o==0.10.2+cu113 -f https://download.pytorch.org/whl/cu113/torch_sta
ble.html

2.7 yolov5下载

  • 克隆项目
git clone https://github.com/ultralytics/yolov5.git
  • 下载依赖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
python detect.py --source ./data/images/ --weights weights/yolov5s.pt --conf 0.4

2.8 TensorRT安装

image-20220307225901926

  • 解压
tar zxvf TensorRT-8.2.1.8.Linux.x86_64-gnu.cuda-11.4.cudnn8.2.tar.gz
  • 添加环境变量
export LD_LIBRARY_PATH=TensorRT解压路径/lib:$LD_LIBRARY_PAT
  • CUDA环境指定
vi ~/.bashrc
export CUDA_INSTALL_DIR=/usr/local/cuda-11.4   
export CUDNN_INSTALL_DIR=/usr/local/cuda-11.4
source ~/.bashrc
  • 复制TensorRT路径下/lib, /include 文件夹对应系统文件夹
sudo cp -r ./lib/* /usr/lib
sudo cp -r ./include/* /usr/include
  • 安装pycuda
pip install pycuda
  • 报错: #include pyconfig.h
apt-get install -y libpython3.6-dev
export CPLUS_INCLUDE_PATH=/usr/local/python3.6m
  • 测试
cd TensorRT-8.2.1.8/python

pip install tensorrt-8.2.1.8-cp36-none-linux_x86_64.whl

# 进入python解释器
import tensorrt
tensorrt.__version__
  • TensorRT示例代码测试
# TensorRT 为7.X版本需要去data/mnist 执行 python download_pgms.py瞎子啊数据集
cd 路径/TensorRT-8.2.1.8/samples/sampleMNIST
# 编译
make clean
make
  • 运行
cd 路径/TensorRT-8.2.1.8/bin
./sample_mnist

2.9 编译tensorrt/yolov5

  • 下载tensorrtx
git clone https://github.com/wang-xinyu/tensorrtx.git
  • tensorrt/yolov5下的gen_wts.py 复制yolov5项目目录下
  • 生成yolov5s.wts文件
python gen_wts.py --weights weights/yolov5s.pt
  • 编译
# 创建build
mkdir build
cd build
# 拷贝 yolov5s.wts 到tensorrtx/yolov5/build
# yololayer.h内CLASS_NUM 可以定义种类类型
cmake ..
make
  • 执行TensorRT加速后的yolov5命令
yolov5 -s yolov5s.wts yolov5s.engine s

标签:Yolov5,lib,11.4,linux,TensortRT,usr,Ubuntu,local,cuda
来源: https://www.cnblogs.com/xujunkai/p/15987098.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有