deepstream6.1-YOLOv5部署

常用安装包的路径

/usr/local/cuda

/home/hlj/TensorRT-8.2.5.1/

/opt/nvidia/deepstream/deepstream

/home/hlj/anaconda3/

搭建环境前先确认显卡型号

查看显卡型号,通过网址 https://blog.csdn.net/TFATS/article/details/109161006 (感谢博主)对应方法查看显卡型号,确认显卡类别是否为 T4, V100, A2, A10, A30, A100, RTX Ampere(Ax000/RTX30x0)系列。

确认无误可以在 Ubuntu 20.04 的基础上,开始搭建DeepStream6.1相关环境。

搭建DeepStream6.1-Yolov5

(如下是DS官网指定的必备环境,可以先参考,后面【大环境部署的内容一步一步来,DS就可搭建完成啦】)

Requirements

  • Requirements

    DeepStream 6.1 on x86 platform

    • Ubuntu 20.04
    • CUDA 11.6 Update 1
    • TensorRT 8.2 GA Update 4 (8.2.5.1)
    • NVIDIA Driver 510.47.03
    • NVIDIA DeepStream SDK 6.1
    • GStreamer 1.16.2
    • DeepStream-Yolo

大环境部署

部署DeepStream6.1

请严格按照如下红色框中的版本匹配【请注意GPU平台需与蓝色框中的型号对应】

主要参考Quickstart Guide — DeepStream 6.1 Release documentation (nvidia.com)来部署。

deepstream6.1-YOLOv5部署_第1张图片

详细搭建过程如下:

1. 安装依赖:

##如下是Deepstream官网的安装依赖。 (下列命令需依次一行一行的输入,直接复制整段会报错)

$ sudo apt install libssl1.1
$ sudo apt install libgstreamer1.0-0 \
$ sudo apt install gstreamer1.0-tools \
【如果无法下载,需要更换下载源】
sudo apt install libgstrtspserver-1.0-0 \
sudo apt install libjansson4 \
sudo apt install libyaml-cpp-dev \
sudo apt install gcc \
sudo apt install make \
sudo apt install git \
sudo apt install python3

建议按照如下命令安装(下列命令是gstream官网推荐的安装依赖)

 sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
安装完成之后执行如下命令,使指定位置。
   pkg-config --cflags --libs gstreamer-1.0

安装anaconda示例(这是python的环境,如果不需要使用python,可以不装)

参考:(48条消息) Ubuntu 20.04安装Anaconda3及简单使用_气泡水、的博客-CSDN博客_ubuntu20.04安装anaconda

!!!【执行脚本时不要sudo,否则会安装到root】
进入安装包目录,运行Anaconda脚本
   bash Anaconda3-5.2.0-Linux-x86_64.sh 
或
   bash Anaconda3-2020.02-Linux-x86_64.sh

一路 Enter 或 Yes ,参照下列截图:

deepstream6.1-YOLOv5部署_第2张图片

可以切换安装路径,也可以不管它。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ene0Tmo-1665714264358)(C:\Users\C202109\AppData\Roaming\Typora\typora-user-images\image-20220607103832546.png)]

将Anaconda添加到用户环境变量中

vim ~/.bashrc  然后“i”表示插入。
添加下面内容
export PATH="/home/ssj/anaconda3/bin:$PATH"
然后“Esc”,":wq"退出再回车
source一下
source ~/.bashrc

再检查是否安装成功

conda --version
cnda -V 

【注】 如果复制安装包的时候复制不进去,参照如下

进入DL目录下
sudo su 
ls
chmod 777 -R /home/mec/DL/   # 命令表示对该文件夹设置为可读可写权限

2. 安装NVIDIA driver 510.47.03。如下命令:

下载好安装包后,执行如下命令

chmod 755 NVIDIA-Linux-x86_64-510.47.03.run
sudo ./NVIDIA-Linux-x86_64-510.47.03.run
上述第二条命令执行过程中,有一条是否自动更新和重启的提示时,选择【no】

3. Install CUDA Toolkit 11.6.1 (CUDA 11.6 Update 1)

sudo sh cuda_11.6.1_510.47.03_linux.run --silent --toolkit

添加环境变量

nano ~/.bashrc  
插入如下路径 如下 到环境变量中

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64
export PATH=$PATH:/usr/local/cuda-11.6/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.6
或(下面这两行比较繁琐,建议插入上面的三行)
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

然后按Ctrl+X 选择yes  即可退出
再source运行一下
source ~/.bashrc

执行nvcc -V会显示版本 说明成功

安装cudnn

Run follow commands to install:

运行下列命令安装:

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.4.0.27_1.0-1_amd64.deb
sudo apt-get update
sudo apt install libcudnn8=8.4.0.27-1+cuda11.6 
sudo apt install libcudnn8-dev=8.4.0.27-1+cuda11.6

运行第一句命令时报如下问题

The public CUDA GPG key does not appear to be installed.

提示缺少key,安装key,使用下面的命令(To install the key, run this command)

sudo apt-key add /var/cudnn-local-repo-ubuntu2004-8.4.0.27/7fa2af80.pub

运行sudo apt-key add /var/cudnn-local-repo-ubuntu2004-8.4.0.27/7fa2af80.pub即可解决

运行sudo apt-get update时报没有公钥…可以不用管他

4. Install TensorRT 8.2.5.1

如下步骤:

1. 解压:
tar -xzvf TensorRT-8.2.5.1.Linux.x86_64-gnu.cuda-11.4.cudnn8.2.tar.gz
2. 解压得到TensorRT-8.2.5.1/lib文件夹 Lib添加到环境变量中
vim ~/.bashrc
   i
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/ssf/LD/TensorRT-8.2.5.1/lib"
   Esc ":wq"  Enter
source ~/.bashrc
3. 安装TensorRT-8.2.5.1
cd TensorRT-8.2.5.1/python
sudo pip3 install tensorrt-8.2.5.1-cp38-none-linux_x86_64.whl
此处 尝试install cp37失败,cp36失败 最终只能cp38成功了
4. 安装python uff wheel文件,当TensorRt与TensorFlow一起使用时,需要安装此项
cd TensorRT-8.2.5.1/uff
sudo pip3 install uff-0.6.9-py2.py3-none-any.whl
5. 安装Python graphsurgeon
cd TensorRT-8.2.5.1/graphsurgeon
sudo pip3 install graphsurgeon-0.4.5-py2.py3-none-any.whl
6. 为了避免deepstream找不到tensorrt库,把tensorrt库和头文件添加到系统路径下
sudo cp -r ./lib/* /usr/lib
sudo cp -r ./include/* /usr/include
7. 如果要使用python接口的tensort,则需要安装pycuda
pip3 install pycuda
8. 测试
cd ~/TensorRT-8.2.5.1/data/mnist
python3 download_pgms.py

cd ~/TensorRT-8.2.5.1/samples/sampleMNIST
make clean
make
cd ~/TensorRT-8.2.5.1/bin
./sample_mnist

【执行测试时遇到问题】
提示找不到libcudart.so.11.0 => not found  
        libcublas.so.11 => not found
        libcublasLt.so.11 => not found
可能环境变量没链接到 将对应库拷贝过来到 TensorRT-8.2.5.1/lib 目录下即可
cp /usr/local/cuda-11.6/lib64/libcublasLt.so.11 TensorRT-8.2.5.1/lib

5. Install librdkafka

如下步骤:

(1)Clone the librdkafka repository from GitHub:

$ git clone https://github.com/edenhill/librdkafka.git

(2)Configure and build the library:

cd librdkafka
git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
make
sudo make install

(3)Copy the generated libraries to the deepstream directory:

$ sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.1/lib
$ sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.1/lib

6. Install the DeepStream SDK

确保如下依赖包已安装【再次执行如下命令】
sudo apt-get install -y libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio libssl1.0.0 libgstrtspserver-1.0-0 libjansson4

sudo apt-get install dkms

sudo apt-get install libssl1.1 libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav libgstrtspserver-1.0-0 libjansson4 libyaml-cpp-dev

the DeepStream tar package: deepstream_sdk_v6.1.0_x86_64.tbz2
Navigate to the location of the downloaded DeepStream package to extract and install the DeepStream SDK:(使用DeepStream的安装包安装DeepStream)
$ sudo tar -xvf deepstream_sdk_v6.1.0_x86_64.tbz2 -C /
$ cd /opt/nvidia/deepstream/deepstream-6.1/
$ sudo ./install.sh
$ sudo ldconfig

完成后,检验DeepStream是否安装成功

deepstream-app --version-all

上述命令查看版本是否打印输出如下信息:

deepstream-app version 6.1.0
DeepStreamSDK 6.1.0
CUDA Driver Version: 11.6
CUDA Runtime Version: 11.6
TensorRT Version: 8.2
cuDNN Version: 8.4
libNVWarp360 Version: 2.0.1d3

一般来说,如果下述版本信息打印成功,就代表deepstream环境配置成功了。
通过如下命令运行示例程序

$ cd /opt/nvidia/deepstream/deepstream-6.1/samples/configs/deepstream-app
$ sudo deepstream-app -c 

例如:deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

【如果运行时 提示找不到一些库,需要将deepstream-6.1-lib添加到系统lib路径中,如下】

sudo vi /etc/ld.so.conf
在文本后面添加该路径
/opt/nvidia/deepstream/deepstream-6.1/lib/  
执行 ldconfig 立即生效
sudo ldconfig  

7. DeepStream环境配置成功之后

可以进入到如下路径,并通过对应命令查看显卡性能和显卡型号。

:/usr/local/cuda-11.6/extras/demo_suite$ ./bandwidthTest

输出如下图所示内容,Result = PASS,则代表通过,显卡可正常使用。

deepstream6.1-YOLOv5部署_第3张图片

8. 若上述已完成,通过conda命令 安装Pytorch

安装pytorch是为了运行python文件( gen_wts_yoloV5.py ),如果不在本地运行,可以不安装。

For YOLOv5 x86 platform: PyTorch >= 1.7.0

使用conda命令创建虚拟环境,并激活虚拟环境

conda create -n yolov5t
conda activate yolov5t   
##注: 若激活失败  source activate yolov5t 可成功激活。

输入如下命令,安装pyTorch:(会提示下载并安装一系列的包,占用较长时间)

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

如果由于文件不可读写导致无法安装,需要设置文件权限:

sudo chmod -R 777 ./anaconda3

若上述命令无法安装完成,可通过如下两个文件DS6.1_dependence/torch-1.10.0+cu113-cp38-cp38-linux_x86_64.whl 和 torchvision-0.11.0+cu113-cp38-cp38-linux_x86_64.whl 实现安装:

pip install torch-1.10.0+cu113-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.11.0+cu113-cp38-cp38-linux_x86_64.whl

9. 安装opencv4.2.0(如果没有用到 可以先不安装)

准备安装包:

1.解压opencv
unzip opencv-4.2.0.zip
2.进入到解压后的文件包中
cd opencv-4.2.0
3.安装cmake工具
sudo apt-get install cmake
sudo apt-get update
4.安装依赖库
sudo apt-get install build-essential
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev pkg-config
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev git
【
若有些库安装不了提示:E: Unable to locate package …
执行:
sudo add-apt-repository “deb http://security.ubuntu.com/ubuntu xenial-security main”
sudo apt-get update
然后再执行安装不了的那些库,如sudo apt install (无法安装的库名libjasper1 libjasper-dev)
】
5.创建编译目录(build)并进入
cd opencv-4.2.0
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_opencv_cudacodec=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
如下提示则表示成功,中间有faild 和 no 可以不用管它。
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ssf/DL/opencv-4.2.0/build
6. 继续
make -j8   //8个线程编译,查看cpu核数量
7. 安装
sudo make install

完成上述所有内容,可以搭建yolov5了~

下面的内容概括来说就是为了生成deepstream-yolov5配置文件的相关参数。

搭建Deepstream-yolov5

将DeepStream-Yolo-master拷贝到:/opt/nvidia/deepstream/deepstream-6.1/sources/目录下

1. yoloV5准备模型 .wts 和 .cfg 文件

完成后按照如下步骤的准备工作:

yolov5相关工作

将 ./DeepStream-Yolo-master/utils/gen_wts_yoloV5.py 拷贝到 yolov5-master 文件夹下。

将训练好的模型文件(yolov5s.pt)文件拷贝到 yolov5-master 文件夹下。

将上述(yolov5s.pt)对应的**模型文件(./models/yolov5s.yaml)**文件对应。

如下命令生成对应的yolov5.cfg 和 yolov5.wts文件

conda activate yolov5t
python3 gen_wts_yoloV5.py -w yolov5s.pt
若上述执行不出结果,则使用命令 python gen_wts_yoloV5.py -w yolov5s.pt 尝试。

使用本地系统打开【Anaconda Prompt(anaconda3.8)】亦可生成对应.cfg和.wts文件。方法如下:
①. 进入D:\yolov5train\yolov5_5.0_ce输入命令conda activate yolov5t以激活yolov5t环境。
②. 确保对应的yolov5s.pt文件在相应的【weights】目录下。
③. python gen_wts_yoloV5.py -w yolov5s.pt即可生成。
!!!但不知道为什么 本地可以生成对应文件,但放在deepstream对应目录下会报错如下:
Assertion `count > 0 && "Invalid weight map file."
!!!暂时还没找到是什么原因,初步怀疑是TRT环境或显卡驱动的问题。

【执行上述命令的时候 提示No module named ‘***’,则需要依次安装对应的包】

pip3 install pyyaml【yaml】
#  sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python【cv2】
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python【cv2】
conda install pandas 【pandas】
conda install matplotlib
conda install tqdm
conda install seaborn

python3 gen_wts_yoloV5.py -w yolov5s.pt执行结束将生成yolov5s.wts和yolov5s.cfg文件

2. 运行deepstream-app

将上述yolov5.cfg 和 yolov5.wts文件拷贝到 ./DeepStream-Yolo-master目录下。

进入目录 ./DeepStream-Yolo-master

cd ./DeepStream-Yolo-master

执行

CUDA_VER=11.6 make -C nvdsinfer_custom_impl_Yolo

编辑配置文件 config_infer_primary_yoloV5.txt 对应自己的model信息

[property]
...
# 0=RGB, 1=BGR, 2=GRAYSCALE
model-color-format=0
# CFG
custom-network-config=yolov5n.cfg
# WTS
model-file=yolov5n.wts
# Generated TensorRT model (will be created if it doesn't exist)
# model-engine-file=model_b1_gpu0_fp32.engine
# Model labels file
labelfile-path=labels.txt
# Batch size
batch-size=1
# 0=FP32, 1=INT8, 2=FP16 mode
network-mode=0
# Number of classes in label file
num-detected-classes=80
...
[class-attrs-all]
# IOU threshold
nms-iou-threshold=0.45
# Score threshold
pre-cluster-threshold=0.25

编辑 deepstream_app_config.txt 文件对应上述config_infer_primary_yoloV5.txt配置文件

[primary-gie]
enable=1
gpu-id=0
gie-unique-id=1
nvbuf-memory-type=0
config-file=config_infer_primary_yoloV5.txt

运行程序命令:deepstream-app -c deepstream_app_config.txt

deepstream-app -c deepstream_app_config.txt

你可能感兴趣的:(ubuntu,linux,python,神经网络,深度学习)