NVIDIA DeepStream概述

NVIDIA DeepStream是一款流分析工具包,专为构建AI驱动的应用设计,适用于智能城市、医疗、零售等领域。它利用硬件加速器进行视频分析,支持C/C++和Python开发,并提供多种参考应用程序和安全协议。DeepStream基于GStreamer框架,包含多个硬件加速插件,可优化在NVIDIA GPU上的性能,适用于从边缘设备到数据中心的部署。
摘要由CSDN通过智能技术生成

NVIDIA DeepStream概述

DeepStream是用于构建AI驱动的应用程序的流分析工具包。它以流数据作为输入-来自USB / CSI摄像机,来自文件的视频或基于RTSP的流,并使用AI和计算机视觉从像素中生成洞察力,以更好地了解环境。DeepStream SDK可以用作许多视频分析解决方案的基础层,例如了解智能城市中的交通和行人,医院中的健康和安全监控,零售中的自检和分析,检测制造工厂中的组件缺陷等。在此处https://ngc.nvidia.com/catalog/collections/nvidia:deepstreamcomputervision`_了解更多有关DeepStream的信息。

DeepStream通过Python绑定支持C / C ++和Python中的应用程序开发。为了使入门变得更容易,DeepStream附带了C / C ++和Python中的多个参考应用程序。请参阅\ DS_C_Sample_Apps和\ DS_Python_Sample_Apps部分,以了解有关可用应用程序的更多信息。有关某些示例DeepStream参考应用程序,请参见NVIDIA-AI-IOT https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps __ Github页面。

核心SDK由几个硬件加速器插件组成,这些插件使用各种加速器,例如VIC,GPU,DLA,NVDEC和NVENC。通过在专用加速器中执行所有计算繁重的操作,DeepStream可以为视频分析应用程序实现最高性能。DeepStream的关键功能之一是边缘和云之间的安全双向通信。DeepStream随附了几种现成的安全协议,例如使用用户名/密码的SASL /普通身份验证和2路TLS身份验证。要了解有关这些安全功能的更多信息,请阅读:doc:\ DS_IoT一章。要了解有关双向功能的更多信息,请参阅本指南中的“双向标签”部分。

DeepStream建立在CUDA-X堆栈的多个NVIDIA库的基础上,例如CUDA,TensorRT,Triton Inference服务器和多媒体库。TensorRT加快了NVIDIA GPU上的AI推理速度。DeepStream在DeepStream插件中抽象了这些库,使开发人员可以轻松地构建视频分析管道,而不必学习所有单独的库。

DeepStream针对NVIDIA GPU进行了优化;该应用程序可以部署在运行Jetson平台的嵌入式边缘设备上,也可以部署在较大的边缘或数据中心GPU(例如T4)上。可以使用NVIDIA容器运行时将DeepStream应用程序部署在容器中。这些容器可在NGC,NVIDIA GPU云注册表中找到。要了解有关使用docker进行部署的更多信息,请参阅Docker容器一章。可以使用GPU上的Kubernetes在边缘上编排DeepStream应用程序。NGC上提供了用于部署DeepStream应用程序的“示例Helm图表https://ngc.nvidia.com/catalog/helm-charts/nvidia:video-analytics-demo _”。

DeepStream图架构
#########################################

DeepStream是使用开源GStreamer框架构建的优化图形架构。。下图显示了一个典型的视频分析应用程序,从输入视频到输出见解。所有单独的块都是使用的各种插件。底部是在整个应用程序中使用的不同硬件引擎。最佳的内存管理以及插件之间的零内存复制以及各种加速器的使用确保了最高的性能。

DeepStream以GStreamer插件的形式提供了构建基块,可用于构建有效的视频分析管道。有15个以上的插件可以通过硬件加速完成各种任务。

*流数据可以通过RTSP或来自本地文件系统或直接来自摄像机的网络来传输。流是使用CPU捕获的。一旦帧进入存储器,就使用NVDEC加速器发送它们以进行解码。用于解码的插件称为:doc:\ DS_plugin_gst-nvvideo4linux2
*解码后,有一个可选的图像预处理步骤,其中输入图像可以在推理之前进行预处理。预处理可以是图像变形或色彩空间转换。\ doc_\ DS_plugin_gst-nvdewarper插件可以使鱼眼镜头或360度摄像机的图像变形。\ doc:\ DS_plugin_gst-nvvideoconvert插件可以在框架上执行颜色格式转换。这些插件使用GPU或VIC(视觉图像合成器)。
*下一步是批处理帧以获得最佳推理性能。使用:doc:\ DS_plugin_gst-nvstreammux插件可以完成批处理。
*批处理帧后,将其发送以进行推断。可以使用TensorRT,NVIDIA的推理加速器运行时进行推理,也可以使用Triton推理服务器在诸如TensorFlow或“ PyTorch”之类的本机框架中进行推理。使用\ DS_plugin_gst-nvinfer插件执行本机TensorRT推理,使用\\ DS_plugin_gst-nvinferserver插件完成使用Triton的推理。推论可以使用Jetson AGX Xavier和Xavier NX的GPU或DLA(深度学习加速器)。
*推断后,下一步可能涉及跟踪对象。SDK中有多个内置参考跟踪器,范围从高性能到高精度。使用\ DS_plugin_gst-nvtracker插件执行对象跟踪。 *为了创建可视化工件,例如边界框,分割蒙版,标签,有一个名为:doc:\ DS_plugin_gst-nvdsosd的可视化插件。
*最后,要输出结果,DeepStream提供了各种选项:在屏幕上用边框显示输出,将输出保存到本地磁盘,通过RTSP进行流传输或仅将元数据发送到云。为了将元数据发送到云,DeepStream使用\ DS_plugin_gst-nvmsgconv和\\ DS_plugin_gst-nvmsgbroker插件。\ doc:\ DS_plugin_gst-nvmsgconv将元数据转换为架构有效负载,而\ doc:\ DS_plugin_gst-nvmsgbroker建立与云的连接并发送遥测数据。有几种内置的代理协议,例如Kafka,MQTT,AMQP和Azure IoT。可以创建自定义代理适配器。

DeepStream参考应用
#########################
首先,开发人员可以使用提供的参考应用程序。还包括这些应用程序的源代码。端到端应用程序称为“ deepstream-app”。该应用程序是完全可配置的-它允许用户配置任何类型和数量的源。用户还可以选择运行推理的网络类型。它预先内置了一个推理插件来进行对象检测,并由推理插件进行级联以进行图像分类。有一个配置跟踪器的选项。对于输出,用户可以选择在屏幕上渲染,保存输出文件或通过RTSP传输视频。

这是开始学习DeepStream功能的一个很好的参考应用程序。DS_ref_app_deepstream一章将更详细地介绍此应用程序。此应用程序的源代码位于/ opt / nvidia / deepstream / deepstream-5.1 / sources / apps / sample_apps / deepstream-app`中。该应用程序将适用于所有AI模型,并在各个自述文件中提供详细说明。性能基准测试也使用此应用程序运行。

开始构建应用
####################################
对于希望构建其自定义应用程序的开发人员而言,“ deepstream-app”对于开始开发可能有些不知所措。该SDK附带了几个简单的应用程序,开发人员可以在其中学习DeepStream的基本概念,构造一个简单的管道,然后逐步构建更复杂的应用程序。

开发人员可以从deepstream-test1开始,它几乎像DeepStream的hello世界。在此应用程序中,开发人员将学习如何使用各种DeepStream插件构建GStreamer管道。他们将从文件中获取视频,进行解码,批处理,然后进行对象检测,最后在屏幕上呈现这些框。deepstream-test2从test1进行,并将级联网络级联到主网络。deepstream-test3显示了如何添加多个视频源,最后test4将显示如何使用消息代理插件为IoT服务。这4个入门应用程序在本机C / C ++和Python中均可用。要了解有关DeepStream中这些应用程序和其他示例应用程序的更多信息,请参阅DS_C_Sample_Apps和DS_Python_Sample_Apps。

Python中的DeepStream
#########################
Python易于使用,并且在创建AI模型时被数据科学家和深度学习专家广泛采用。NVIDIA引入了Python绑定,以帮助您使用Python构建高性能的AI应用程序。可以使用GStreamer框架Gst-Python Python绑定来构建DeepStream管道。

DeepStream Python应用程序使用“ Gst-Python” API操作来构造管道,并使用探测函数访问管道中各个点的数据。数据类型全部在本机C中,并且需要通过PyBindings或NumPy的填充层才能从Python应用程序访问它们。张量数据是推断后得出的原始张量输出。如果要检测对象,则需要使用解析和聚类算法对该张量数据进行后处理,以在检测到的对象周围创建边界框。要开始使用Python,请参阅本指南中的DS_Python_Sample_Apps和《 DeepStream Python API指南》中的“令人惊叹的DeepStream Python”。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值