一、导言
..;fxxx?.
.^1xf;. .fn.
.jx:. .r.
.fj ' .?n.
'f) . ..trf`.
.'.' >x. !xn} .
:r';" }j .`x)'
. ..rx ..j. .)x.. .fx`.
.rux. . fn. ..n` .x` . .jf
.n.tj.. .f{. .x. .'x^ 'ff.
/j. nurc1-.. ./f/ . :r. :r.
fl.zcJJJJY ...!j1 .j! .x..
fczJJJJJJU . in~. .x.. .\j
. xXJJYCJUJC .fx. .>j .'n.
.jYJJCli!?!i.. .jr. .xj ..rj.
./XJJJJi!!!!i! .jf' .n' .x'
'cJJJJLi!!!!i. 'n^. .x. jt.
tzJJU!!!!!i!. 'tjf(. '.^)jrrrrx|; . 'x'. .;n.
'nYJJQii`iii .`|..nnzzzJCJUUJJU[rnux/ ..lr". ln .
.nJJL. l. .j<zcJJJJUJJJJJJC!!!!iilnv\ .\n..
nn` ,vr. ../tYJJJJJJJJJililli!!!!!!i>jf...nj .
.n. .jn. ..}.YCJJUCJCJ!!!!!!!!!!!!!!!!I'zx .
xl. .. .'t...i!!!tJJ!!!!!!!!!!!!!!!!!!..fj..
.x\.' `)(+. . . f .i!!!i .!!!!!!!!!!i:.i!!!! . x^.
.j .j ;<; .. .t" . .. .' ..`i'!;"'.^' .'l;... x~.
.j...t. ' .. .../ ..x'.
/f..- .`t.. .). 日期: 20240116 ,r.
.xj .- '.. 'x
. xj.. j.
'txxj~ ^. ...?xrrr`'
.'.`ff/.. 二狗大爷出品 MEOW! .. .!!!!!,.`jt.
.^|f'. .UJJJJc!!!!!!i. .fr..
.t' x:. .UJJJJJ!i!!!!!!I . xr.
.'f[. .j\..... JJJJJJJ!X>!!!i. .^fx..
.,r .:j!/. '.. .../\YJJJJJJJCv!l'.... f.
. j). .<r ./t^ . .!rvxf. ixzcXXYUYzcr^>xncx}'.?j.
.)r. .vt' .~n-..... ."~\jjxnxxxxfI' .. . . . .'. I?;.
.xI. .')nX,. ',xj...'l_]_<".....
`j/ . ..<rxrr.. ..nr.
.\j.. ..jrl\n.. .>xj.'
\jf. .jnj..j\'. ../xf'.
t'. '.]xn. `rx .xn-.
.{^+tj.. .rx' ..tnx...
/f'.. '{xj
"jl. .~jj..
..)))"..
本专栏介绍从0开始学习DeepStream的主要内容,学习的思维导图如下:
DeepStream SDK学习历程
概述
SDK是什么
特点和优势
支持的平台和语言
基础概念
架构和模块
第二篇:DeepStream安装和配置(Ubuntu-独立显卡篇)
环境依赖
依赖项安装
基础环境安装
深度学习环境配置
运行sample
平台和系统兼容性
NVIDIA (®) DeepStream 软件开发套件 (SDK) 是一个加速 AI 框架,用于构建智能视频分析 (IVA) 管道。DeepStream 在 NVIDIA® (T4)、NVIDIA® Hopper、NVIDIA® (Ampere)、NVIDIA® (ADA以及)(NVIDIA®) Jetson AGX Orin™、NVIDIA® (Jetson)
Orin™ NX、NVIDIA® (Jetson) Orin™ Nano 等平台上运行。
二、环境依赖
本节介绍如何在安装 DeepStream SDK 之前准备具有 NVIDIA dGPU 设备的系统。Ubuntu x86_64
本文档使用术语 dGPU(“独立 GPU”)来指代 NVIDIA GPU 扩展卡产品,例如 NVIDIA Tesla® (T4)、NVIDIA® Hopper、NVIDIA® (Ampere)、NVIDIA® (ADA)、NVIDIA GeForce® (GTX) 1080、NVIDIA GeForce® (RTX) 2080 、NVIDIA GeForce® (RTX) 3080、NVIDIA GeForce® (RTX) 4080 和 GeForce® (/) NVIDIA RTX/QUADRO。此版本的 DeepStream SDK 在 NVIDIA 驱动程序 535.104.12 和 NVIDIA TensorRT™ 8.6.1.6 及更高版本支持的 GPU 上运行。
必须的组件和环境:
-
Ubuntu22.04
-
GStreamer 1.20.3
-
NVIDIA 驱动程序 535.104.12
-
CUDA 12.2
-
TensorRT 8.6.1.6
删除所有以前的DeepStream 安装(3.0<现有版本<4.0的可pass此步骤)
1. DeepStream 3.0 或更低版本的
$ sudo rm -rf /usr/local/deepstream /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnv* /usr/bin/deepstream* /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libnvdsgst*/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream*/opt/nvidia/deepstream/deepstream*
$ sudo rm -rf /usr/lib/x86_64-linux-gnu/libv41/plugins/libcuvidv4l2_plugin.so
2. DeepStream 4.0 或更高版本的
在路径/opt/nvidia/deepstream/deepstream/下,打开uninstall.sh 将 PREV_DS_VER 设置为 4.0 运行以下脚本sudo ./uninstall.sh
三、基础依赖项安装
首要安装第三方包如下:
$ sudo apt install \
libssl3 \
libssl-dev \
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 \
libjsoncpp-dev \
protobuf-compiler \
gcc \
make \
git \
python3
有时,对于 RTSP 流,应用程序会在到达 EOS 时陷入困境。这是因为 rtpjitterbuffer 组件存在问题。为了解决此问题,已提供脚本“update_rtpmanager.sh”,其中
/opt/nvidia/deepstream/deepstream/
包含更新 gstrtpmanager 库所需的详细信息。作为先决条件安装上述软件包后,应执行该脚本。有时,在运行 gstreamer pipeline 或示例应用程序时,用户可能会遇到错误:该问题是由于 ubuntu22.04 默认附带的 glib 2.0-2.72 版本中的错误引起的。该问题已在 glib2.76 中得到解决,需要安装它才能解决该问题(https://github.com/GNOME/glib/tree/2.76.6)。
GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument. Aborting.
四、基础环境安装(CUDA、英伟达驱动,如有可PASS)
1. 安装 CUDA 工具包 12.2
运行以下命令(参考,https://developer.nvidia.com/cuda-downloads):
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub $ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" $ sudo apt-get update $ sudo apt-get install cuda-toolkit-12-2
如果在安装 CUDA 时发现以下错误,请参阅https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/。
W: GPG error:
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64
InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC
E: The repository '
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64
InRelease' is no longer signed.
2. 安装 NVIDIA 驱动程序 535.104.12
-
使用 NVIDIA 驱动程序 535.104.12 从 NVIDIA Unix 驱动程序页面下载并安装: https: //www.nvidia.cn/Download/driverResults.aspx/212056/en-us/
-
运行以下命令:
$chmod 755 NVIDIA-Linux-x86_64-535.104.12.run $sudo ./NVIDIA-Linux-x86_64-535.104.12.run --no-cc-version-check
确保安装 nvidia 驱动程序时停止 gdm、lightdm 或 Xorg 服务
使用命令:sudo service gdm stop
sudo service lightdm stop
sudo pkill -9 Xorg
如果有数量较多(200+)的视频流处理需求,请按照以下说明操作:
$ sudo service display-manager stop #Make sure no process is running on GPU i.e. Xorg or trition server etc
$ sudo pkill -9 Xorg #Remove kernel modules
$ sudo rmmod nvidia_drm nvidia_modeset nvidia #Load Modules with Regkeys
$ sudo modprobe nvidia NVreg_RegistryDwords="RMDebugOverridePerRunlistChannelRam = 1;RMIncreaseRsvdMemorySizeMB = 1024;RMDisableChIdIsolation = 0x1;RmGspFirmwareHeapSizeMB = 256"
$ sudo service display-manager start
五、深度学习环境配置
1. 安装 TensorRT 8.6.1.6
运行以下命令安装 TensorRT 8.6.1.6:
sudo apt-get install libnvinfer8=8.6.1.6-1+cuda12.0 libnvinfer-plugin8=8.6.1.6-1+cuda12.0 libnvparsers8=8.6.1.6-1+cuda12.0 \ libnvonnxparsers8=8.6.1.6-1+cuda12.0 libnvinfer-bin=8.6.1.6-1+cuda12.0 libnvinfer-dev=8.6.1.6-1+cuda12.0 \ libnvinfer-plugin-dev=8.6.1.6-1+cuda12.0 libnvparsers-dev=8.6.1.6-1+cuda12.0 libnvonnxparsers-dev=8.6.1.6-1+cuda12.0 \ libnvinfer-samples=8.6.1.6-1+cuda12.0 libcudnn8=8.9.4.25-1+cuda12.2 libcudnn8-dev=8.9.4.25-1+cuda12.2
2. 安装 librdkafka(为消息代理启用 Kafka 协议适配器)
从 GitHub克隆librdkafka存储库:
$ git clone https://github.com/confluentinc/librdkafka.git
配置并构建库:
$ cd librdkafka $ git checkout tags/v2.2.0 $ ./configure --enable-ssl $ make $ sudo make install
将生成的库复制到deepstream目录中:
$ sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.4/lib $ sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.4/lib $ sudo ldconfig
3. 安装 DeepStream SDK
方法 1:使用 DeepStream Debian 软件包
下载 DeepStream 6.4 dGPU Debian 软件包deepstream-6.4_6.4.0-1_amd64.deb
:https://catalog.ngc.nvidia.com/orgs/nvidia/resources/deepstream
输入命令:
$ sudo apt-get install ./deepstream-6.4_6.4.0-1_amd64.deb
方法2:下载DeepStream tar包:https://catalog.ngc.nvidia.com/orgs/nvidia/resources/deepstream
导航到下载的 DeepStream 包的位置以提取并安装 DeepStream SDK:
$ sudo tar -xvf deepstream_sdk_v6.4.0_x86_64.tbz2 -C / $ cd /opt/nvidia/deepstream/deepstream-6.4/ $ sudo ./install.sh $ sudo ldconfig
方法3:使用Docker容器
NGC 上提供 DeepStream docker 容器。请参阅Docker 容器部分,了解如何使用 Docker 容器开发和部署 DeepStream。
六、运行deepstream-app (参考应用)
进入示例路径,运行下列代码:
$ deepstream-app -c <path_to_config_file>
其中<path_to_config_file>
是参考应用程序的配置文件之一的路径名,可在configs/deepstream-app
. 有关可用文件的列表,请参阅包内容。
七、运行预编译的示例应用程序
-
导航到 中所选的应用程序目录
sources/apps/sample_apps
。 -
按照该目录的 README 文件运行该应用程序。
八、远程运行(没有连接显示器),如何可视化
1. 通过创建虚拟显示来运行 X 服务器
2. 无需X服务器运行(适用于支持RTSP流输出的应用程序)
SDK 提供的默认配置文件将基于 EGLnveglglessink
作为默认渲染器(由 [sink] 组中的 type=2 表示)。渲染器需要一个正在运行的 X 服务器,如果没有它就会失败。如果没有 X 服务器,DeepStream 参考应用程序提供通过 RTSP 流式传输输出的替代功能。这可以通过在配置文件中添加 RTSP 输出接收器组来启用。有关示例,请参阅文件[sink2]
中的组。source30_1080p_dec_infer-resnet_tiled_display_int8.txt
不要忘记nveglglessink
通过为相应接收器组设置enable=0来禁用渲染器。
九、平台和操作系统兼容性
DeepStream Python 应用程序使用Gst-Python API 操作来构建管道,并使用探测函数来访问管道中各个点的数据。数据类型均采用本机 C 语言,需要通过PyBindings或 NumPy 的填充层才能从 Python 应用程序访问它们。张量数据是推理后得出的原始张量输出。如果您尝试检测对象,则需要通过解析和聚类算法对该张量数据进行后处理,以在检测到的对象周围创建边界框。要开始使用 Python,请参阅本指南中的Python 示例应用程序和绑定源详细信息以及 DeepStream Python API 指南中的“DeepStream Python” 。
DeepStream Triton 推理服务器使用指南
要将 DeepStream 6.4 部署 (Triton 23.08) 中的 Triton 版本迁移到较新版本(例如 Triton 23.09 或更高版本),请按照DeepStream Triton 迁移指南中的说明进行操作。