DeepStream教程

一、参考资料

DeepStream SDK 官方文档DeepStream 6.0 Release Notes
DeepStream SDK Development Guide
DeepStream SDK API Reference
DeepStream Plugin Manual
DeepStream Python API

二、相关介绍

NVIDIA DeepStream概述

DeepStream 是使用开源 GStreamer 框架构建的优化图形架构,用于构建具有AI能力的应用程序的流分析工具包。它以流作为输入,即从USB/CSI/RTSP相机中获取流数据,DeepStream SDK 可以作为许多视频分析解决方案的基础层。

DeepStream 提供不同系统平台下的安装方法,包括:Jetson平台,Ubuntu系统下的dGPU(独立显卡),RedHat系统下的dGPU(独立显卡)。

DeepStream SDK核心部分由几个硬件加速器插件组成,这些插件使用各种加速器,例如:VIC,GPU,DLA,NVDEC和NVENC。通过在专用加速器中执行所有计算繁重的操作,DeepStream可以为视频分析应用程序实现最高性能。

DeepStream 建立在 CUDA-X 堆栈的多个 NVIDIA 库的基础上,例如:CUDA,tensorRT,Triton Inference服务器,多媒体库。

deepstream 被拆分成Group组的形式进行积木搭建,Group组的详细介绍,参考: Configuration Groups 。每个具体的Group组,有很多配置参数。

deepstream 的初衷,就是按照功能拆分成小插件,以插件化搭积木形式快速构建深度学习应用,使用者不需要深入理解每个小插件的开发方式。

2.1 DeepStream SDK架构

DeepStream教程

2.2 DeepStream 架构

DeepStream教程

2.3 构建 DeepStream pipelines

Python易于使用,并且在创建AI模型时被数据科学家和深度学习专家广泛采用。NVIDIA引入了Python绑定,以帮助您使用Python构建高性能的AI应用程序。DeepStream Python应用程序使用“ Gst-Python” API操作来构造管道,并使用探测函数访问管道中各个点的数据。
DeepStream教程

2.4 重要说明

  1. DeepStream 5.1 如何迁移到 DeepStream 6.0,参考: Readme First
  2. C++例程:DS_C_Sample_Apps
  3. python例程:DS_Python_Sample_Apps
  4. 更多的例程,请参阅 NVIDIA-AI-IOT

2.5 deepstream-app

DeepStream Reference Application - deepstream-app

源码:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps/deepstream-app

deepstream-app 是deepstream SDK中的一个例程可执行程序,功能强大。

2.6 Deepstream6.0与Deepstream5.1

Deepstream6.0支持tensorRT8.0.1。tensorRT 8.x与tensorRT 7.x版本不兼容,tensorRT 7.x生成的引擎,在tensorRT 8.x中不可用,故需要重新生成引擎。
DeepStream教程

2.7 DeepStream 6.0 依赖环境

  • Ubuntu 18.04
  • GStreamer 1.14.5
  • NVIDIA driver 470.63.01
  • CUDA 11.4
  • TensorRT 8.0.1

三、准备工作

安装教程 - 官方文档

3.1 卸载删除旧版本的Deepstream

3.1.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

3.1.2 DeepStream 4.0之后的版本

  1. 打开 /opt/nvidia/deepstream/deepstream/ 路径中的 uninstall.sh 文件;
  2. 设置 PREV_DS_VER as 4.0
  3. 运行 sudo ./uninstall.sh

3.2 安装依赖

$ sudo apt install \
libssl1.0.0 \
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 \
gcc \
make \
git \
python3

3.2.1 检查是否安装成功

dpkg -l | grep gstreamer

3.3 (可选)安装显卡驱动

安装CUDA的时候,勾选“Driver”驱动,表示安装驱动。

参考博客: Ubuntu安装显卡驱动教程

3.4 安装CUDA

参考博客:Ubuntu下CUDA的安装及配置(run方式)

3.5 安装tensorRT

注意版本对齐:

  • DeepStream 6.x 对应 tensorRT 7.x;
  • DeepStream 5.x 对应 tensorRT 8.x;

参考博客:【Ubuntu版】TensorRT安装教程

3.6 安装librdkafka

librdkafka (to enable Kafka protocol adaptor for message broker).

3.6.1 从github仓库下载源码

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

3.6.2 修改配置

cd librdkafka
git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure

3.6.3 编译安装

# 编译
make -j8

# 安装
# 默认的安装位置为:/usr/local/lib/librdkafka*
sudo make install

3.6.4 拷贝库文件

sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.0/lib
 
sudo cp -r /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.0/lib

四、安装DeepStream SDK

安装教程 - 官方文档

4.1 方法一

使用deb方式安装。

4.1.1 下载deb安装包

deepstream-6.0_6.0.0-1_amd64.deb

4.1.2 安装

sudo apt-get install ./deepstream-6.0_6.0.0-1_amd64.deb

4.2 方法二

使用 tar 包安装。

4.2.1 下载 tar 安装包

deepstream_sdk_v6.0.0_x86_64.tbz2

4.2.2 解压并安装

# 解压
sudo tar -xvf deepstream_sdk_v6.0.0_x86_64.tbz2 -C /

# 安装
cd /opt/nvidia/deepstream/deepstream-6.0/
sudo ./install.sh

# 修改配置
sudo ldconfig

4.2.3 安装 python 接口

sudo apt update
sudo apt install python3-gi python3-dev python3-gst-1.0 -y

cd /opt/nvidia/deepstream/deepstream-6.0/lib

python3 setup.py install

4.3 方法三

使用 Docker 容器方式安装,略…

4.4 查看是否安装成功

deepstream-app --version-all
# 输出
deepstream-app version 5.1.0
DeepStreamSDK 5.1.0
CUDA Driver Version: 10.2
CUDA Runtime Version: 10.2
TensorRT Version: 7.1
cuDNN Version: 8.0
libNVWarp360 Version: 2.0.1d3

五、运行 deepstream-app

5.1 deepstream-app 简单例程

DeepStream教程

5.2 查看 deepstream-app 的用法

deepstream-app --help

5.3 测试 deeptream-app

# path_to_config_file 是配置文件的路径
deepstream-app -c <path_to_config_file>
# 进入 samples 目录
cd /opt/nvidia/deepstream/deepstream/samples

deepstream-app -c ./configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

或者
deepstream-app -c /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

DeepStream教程

5.4 验证 python 示例

cd /opt/nvidia/deepstream/deepstream/sources
git clone https://github.com/NVIDIA-AI-IOT/deepstream_python_apps

# 运行例子1
cd /opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-test1

python3 deepstream_test_1.py /opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.h264

六、运行预编译的 sample 应用

6.1 (可选)删除 GStreamer 缓存

rm ${HOME}/.cache/gstreamer-1.0/registry.x86_64.bin

请查看 README.md 文档: sources/apps/sample_apps

上一篇:深度学习-序列模型2


下一篇:石子合并(区间DP)