Ubuntu20.04下DeepStream Python环境安装

发布时间 2023-12-18 16:48:26作者: 要养家的程序猿

引子

  最近工作学习中遇到多路视频解码抽帧的需求,考虑到项目上大多数用到的都是Nvidia的显卡,常规CPU软解显然无法满足多路的需求,故考虑使用N卡的硬解码功能。然后我就毫不犹豫的去找轮子了,ChatGPT这么火,那就先问问它吧。嗯,呃,貌似下图红框里答案只有那么一点点靠谱(不要问我为啥用ChatGPT3.5,别问,问,就是穷),但...... 好吧,还是Google靠谱,了解到 “DeepStream是一套数据流分析工具包,DeepStream应用程序框架具有硬件加速构建块,可将深层神经网络和其他复杂处理任务带入流处理管道。开发者只需专注于构建核心深度学习网络和IP,而不是从头开始设计端到端解决方案。” 官方的这段话,可以说明DeepStream对算法工程师很贴心的。那么最后一个问题,为什么要选择python环境安装,很简单,人生苦短,我选python。OK,那就让我们开始吧!

 

 

一、机器配置
电脑:台式机
系统:Ubuntu 20.04.1
显卡:RTX 2060,6G显存
软件版本:
(1)deepstream:6.1.1
(2)显卡驱动版本:515.86
(3)CUDA版本:11.7.1
(4)cudnn版本:8.6.0
(5)TensorRT版本:8.4.3.1
二、安装教程
(所有的安装步骤都可以参考官方的教程:https://docs.nvidia.com/metropolis/deepstream/6.1.1/dev-guide/text/DS_Quickstart.html
1、软件对应版本要求
注意对应安装软件的系统版本要与deepstream要求的对应,可参考以下这张图:
0
2、安装
(1)安装显卡驱动
a、下载安装包
https://www.nvidia.cn/drivers/unix/linux-amd64-display-archive/
b、运行如下指令
在安装驱动之前,可能会遇到缺少gcc的情况,这里先安装一些依赖库,执行如下指令:
sudo apt-get update
sudo apt-get install build-essential
再安装驱动文件,执行以下命令:
chmod +x NVIDIA-Linux-x86_64-515.76.run
sudo sh ./ NVIDIA-Linux-x86_64-515.76.run -no-x-check
之后就一直按enter选择默认选项,安装成功后,用nvidia-smi指令查看是否安装完成:
nvidia-smi
0
(2)安装NVIDIA Container Toolkit
a、配置源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
b、安装NVIDIA Container Toolkit
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
c、验证
systemctl restart docker
docker run --rm -it --gpus all -v /home/nick/DeepStream:/workspace linewell_deepstream:v1.0 /bin/bash
sudo su
nvidia-smi
0
(3)安装CUDA
a、下载安装包(我这里最后用的是 cuda_11.7.1_515.65.01_linux.run)
https://developer.nvidia.com/cuda-toolkit-archive
b、运行如下指令进行安装
apt-get install libxml2
chmod +x cuda_11.7.1_515.65.01_linux.run
sudo sh ./cuda_11.7.1_515.65.01_linux.run
刚开始时间有一点点久,之后会弹出以下窗口,选择Continue:
再输入accept:
在下一步中,因为已经安装完了驱动了,这里我只选择安装了CUDA Toolkit 11.7,如下图所示:
然后选确定,往下安装即可。
c、添加环境变量
打开~/.bashrc,在文件末尾把cuda的路径添加进去,如下所示:
0
source ~/.bashrc
nvcc -V
0
(4)安装cudnn
a、下载安装包
https://developer.nvidia.com/rdp/cudnn-archive
b、解压/复制文件
解压tar包
tar -xvf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
把cudnn/include的头文件复制到cuda的include路径
cp cudnn-linux-x86_64-8.6.0.163_cuda11-archive/include/* /usr/local/cuda-11.7/include/
把cudnn/lib的文件复制到cuda的lib路径
cp cudnn-linux-x86_64-8.6.0.163_cuda11-archive/lib/* /usr/local/cuda-11.7/lib64/
(5)安装DeepStream依赖
sudo apt install libssl1.1 libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav libgstreamer-plugins-base1.0-dev libgstrtspserver-1.0-0 libjansson4 libyaml-cpp-dev gcc make git python3
(6)安装TensorRT
a、下载安装包
https://developer.nvidia.com/nvidia-tensorrt-download
b、解压并添加路径
cd /home/nick/DeepStream/soft/
tar -xvf TensorRT-8.4.3.1.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz
0
source ~/.bashrc
(7)安装DeepStream SDK
a、下载
https://developer.nvidia.com/deepstream_sdk_v6.1.1_x86_64.tbz2
b、安装
apt-get install libjson-glib-1.0-0
tar -xvf deepstream_sdk_v6.1.1_x86_64.tbz2 -C /
cd /opt/nvidia/deepstream/deepstream-6.1/
sudo ./install.sh
sudo ldconfig
可能会遇到的问题:
/usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link
解决方法参考:https://blog.csdn.net/weixin_44120025/article/details/129795572
(8)运行示例
切换到deepstream的示例config路径
切换到:/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app
cd /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app
运行如下指令进行测试
设置不显示
vi source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
0
deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
0
显存使用
0
三、Python接口使用
1、下载拷贝代码
cd /opt/nvidia/deepstream/deepstream/sources
cp /workspace/deepstream_python_apps-1.1.4.zip ./
unzip deepstream_python_apps-1.1.4.zip
mv deepstream_python_apps-1.1.4 deepstream_python_apps
2、安装依赖
apt install libcairo2-dev
apt-get install gir1.2-gst-rtsp-server-1.0
3、安装python app包
下载whl
https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases
cd /home/nick/DeepStream/soft/
pip install pyds-1.1.4-py3-none-linux_x86_64.whl
0
3、测试
(1)本地文件读取
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-test3
python deepstream_test_3.py -i file:///home/nick/DeepStream/sample_1080p_h264.mp4 --no-display -s
0
0
(2)rtsp读取
python3 deepstream_test_3.py -i rtsp://xxxxxxxxxxxxx/Streaming/Channels/1 --no-display -s
0
(3)图片保存
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-imagedata-multistream
python3 deepstream_imagedata-multistream.py file:///home/nick/DeepStream/sample_1080p_h264.mp4 frames
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-getframe
 四、Docker镜像安装
  读到这里的一定有同学说,干嘛这么麻烦,直接英伟达网站上拉取官方镜像不就完了( docker pull nvcr.io/nvidia/deepstream:6.1-samples),那我建议这个同学去试试看...... 好吧,因为qiang的原因,其实这样子是拉不到官方镜像的,我的梯子搭过去,依然网络不稳定(这就不知道是梯子问题,还是官网的问题了),拉不完整......
  那么,如果为了方便部署,只有自己镜像里安装这个了。这里注意下,我在镜像容器中按照二中的安装教程安装了一遍后,在执行python接口的时候依然有如下报错,看报错信息 ,应该是有些库没有找到,那么,只要把宿主机中/usr/lib/x86_64-linux-gnu目录拷贝到容器中即可。