常用安装包的路径
/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
大环境部署
部署DeepStream6.1
请严格按照如下红色框中的版本匹配【请注意GPU平台需与蓝色框中的型号对应】
主要参考Quickstart Guide — DeepStream 6.1 Release documentation (nvidia.com)来部署。
详细搭建过程如下:
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 ,参照下列截图:
可以切换安装路径,也可以不管它。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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 <path_to_config_file>
例如: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,则代表通过,显卡可正常使用。
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