引子
最近工作学习中遇到多路视频解码抽帧的需求,考虑到项目上大多数用到的都是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要求的对应,可参考以下这张图: 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 (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 (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的路径添加进去,如下所示: source ~/.bashrc nvcc -V (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 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 deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt 显存使用 三、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 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 (2)rtsp读取 python3 deepstream_test_3.py -i rtsp://xxxxxxxxxxxxx/Streaming/Channels/1 --no-display -s (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目录拷贝到容器中即可。
标签:Ubuntu20.04,DeepStream,deepstream,Python,sudo,python,nvidia,安装 From: https://www.cnblogs.com/nick-algorithmer/p/17911607.html