DeepStream初探

由于项目原因,开始学习DeepStream处理框架,初期踩坑完毕,记录一下,分享给后来之人。

一、DeepStream基本认识

DeepStream是一个基于Gstreamer,融合了NVIDIA TensorRT技术的视频推理框架,它提供了一个多路视频流、多模型的推理加速工具,是一个模型部署加速的进阶工具,多视频流、多模型异步处理,不降低推理速度,能够使攻城狮更多地从逻辑、业务层面去理解和落地一款优秀的产品。

二、DeepStream安装

1.Deepstream安装

DeepStream基于Gstreamer,融合了TensorRT,安装的也主要是这两个应用,TensorRT的安装无需多说,想要灵活使用DeepStream,肯定要对TensorRT有一个全面的认识,虽然DeepStream更侧重于业务,但本质上是一个高阶开发工具,以下主要分享自己的Gstreamer踩坑记录,Gstreamer可靠安装方法如下:Gstreamer安装
需要强调的是检验安装是否成功要采用如下命令:

import gi
gi.require_version('Gst', '1.0')
gi.require_version('GstRtspServer', '1.0')
from gi.repository import Gst, GstRtspServer, GObject, GLib

整个过程没有报错的话,就说明安装成功了。
我在这个环节断断续续持续了很久,import gi没有问题,但到了后面的环节总提示缺少各种内容,如:

Namespace Gst not available
No module named  .......

最好的修复办法就是卸载了重新安装。

2.Pyds安装

Pyds在使用probe提取Metadata中的关键信息时会用到,要使用NVIDIA编译好的包,而不是直接采用pip install的方式,否则会缺少相应的方法文件,如报错:

AttributeError: module 'pyds' has no attribute 'gst_buffer_get_nvds_batch_meta'

正确的方法是下载编译好的压缩包文件,减压后下载解压后在 python/bindings 路径中,根据自己的平台,如 jetson 中拷贝到 /home//.local/lib/python/site-packages/pyds.so 路径中即可

三、DeepStream应用

DeepSteam提供了基于Python和C++语言两种不同的接口,哪个更适合自己,仁者见仁,智者见智,以下主要围绕基于Python接口的样例应用进行介绍。
NVIDIA提供的test样例基本涵盖了模型部署的所有场景,即多路视频、多模型推理,诚意满满。在下载路径下找到对应的py文件,如

/opt/nvidia/deepstream/deepstream-5.1/sources/deepstream_python_apps/apps/deepstream-test1

下的test文件,这是DeepStream最基础的样例,但细细品读代码,发现全是宝,看懂这个一通百通,采用如下方式运行,

python deepstream_test_1.py /opt/nvidia/deepstream/deepstream-5.1/samples/streams/sample_720p.h264

四、DeepStream学习路径

DeepStream是基于Gstreamer的,学会了Gstreamer上手DeepStream肯定快,但对Gstreamer了解了之后直接学习Deepstream也是一样的,Deepstream整个搭建流程就是Gstreamer的搭建流程,有问题翻教程就可以了。
搭建DeepStream的流程都是固定的,多敲几回就明白了,重要的是如何基于DeepStream做自己的功能开发,这块的关键点是MetaData,搞明白如何设置探针去提取MetaData,就能实现自己想要的功能了,我也想在后续的博客中会持续更新对MetaData的应用。

你可能感兴趣的:(DeepStream,嵌入式硬件,边缘计算)