带你玩转Jetson之Deepstream简明教程(二)Deepstream是什么?干什么?有什

[复制链接]
查看1205 | 回复0 | 2023-8-23 12:12:38 | 显示全部楼层 |阅读模式

 1.Deepstream是什么?


        Deepstream是Nvidia公司推出的一套基于开源视频流框架Gstreamer的一套库。其自己由多个.lib.so和.h构成,其支持语言包罗了Python和Cpp两种主流语言。你可以在任何Python大概Cpp编译器、开发环境中引用库的API构建属于你自己的推理流。
        在这里表明一下,GStreamer 是用来构建流媒体应用的开源多媒体框架(framework),其目的是要简化音/视频应用步伐的开发,已经可以或许被用来处理像 MP3、Ogg、MPEG1、MPEG2、AVI、等多种格式的多媒体数据。
        这里打个不得当的比方类比一下,Gstreamer就相当于是开源OpenCv库,用来开发图像处理软件,而Deepstream实际上就是闭源封装的一个OpenCv算子,可以实现推理等功能。
2.Deepstream用来干什么?

        提到Deepstream是用来干什么就必须先提到Gstreamer的功能。Gstreamer框架自己是一个用于做视频流处理和播放的框架,使用Gstreamer的API可以快速搭建雷同于一个视频播放器的功能,雷同于我们一样平常所见的windows player。固然,Gstreamer提供了强大的API用于视频编码、解码、播放等接口,但是这些接口对于Nvidia的GPU调理和使用并不充实,并没有完全使用起来并行盘算的相干资源。因此就有了Accelerated-Gstreamer。这个Accelerated-Gstreamer主要是实现了视频编码、解码、推流、OSD、缩放、混流等等的并行化操纵,用较低的延长实现极大的吞吐量。Accelerated-Gstreamer官方文档链接在此。

        Deepstream在Accelerated-Gstreamer插件的基础上增长了推理插件,可以实现整个视频流的并行化,通过调理GPU和Nvidia专属的硬件加速来实现肯定延长下的大吞吐量的视频流接受,转码,堆叠缩放、推理、OSD、物联网消息收发、视频编码、推流等一系列操纵。
        怎样区分原始的Gstreamer插件和英伟达加速后的插件?实在很简朴,只需要确认插件名称前缀是否带有“nv”字样即可。例如nvosd插件就是并行化加速后的。
       以是总而言之,Deepstream是用来做险些全套并行化加速的视频AI推理流应用的。
3.Deepstream具有什么优势?

        推理框架千万万,我们为什么要用Deepstream?他有什么优势?
        固然你可以使用其他框架更换掉Deepstream的每一个环节,推理可以自己做摆设,解码可以有其他的库,例如ffmpeg,体现可以用OpenCv等等。但是最核心最关键的题目是,你使用其他框架,无法变动Nvidia的全部硬件。
优势之一:变动你能想到的、想不到的底层硬件
        以Jetson为例,除了我们熟知的GPU单元,解码需要调用NVDEC硬件解码器,编码需要用到NVENC编码器,OSD操纵和光流跟踪需要用到英伟达的VIC硬件,假如你的网络是比力轻量大概是网络层支持,可以直接放入英伟达DLA深度学习盘算模块直接推理,以上全部硬件都可以帮助CPU和GPU缓解盘算负担,假如倒霉用Deepstream SDK,上面这些硬件想要全部变动起来并不轻易。乃至部分硬件根本没有底层API可以调用。而在Deepstream中,只需要通过步伐代码设置大概TXT文档设置即可调用上述相干硬件,无需关心底层实现。
优势之二:可以或许用较低延长获取极高的推理性能
        在Jetson设备上,假如我们运行原版的YoloV3,我们根据型号不同,会获得不同推理体现效果。nano上面约莫5-10帧,nx可以20帧。但这对于多路摄像头取流推理根本是杯水车薪。
        Deepstream底层集成了Nvidia TensorRT量化框架,通过TensorRT量化后的模型,推理帧率可以得到倍数提升。例如很久之前做得一个塑料瓶口质量检测推理,原版yolo只能提供30fps,颠末python版本的trt加速以后获得了70fps的帧率,颠末Cpp的trt加速以后可以获得200fps+的帧率,推理一张500x500的图片只需要3ms+。这是其他嵌入式平台无法比拟的优势。

 

 
        但是这些并不是完全没有代价的。据我观察Deepstream系列在嵌入式Jetson上面会根据推理负载的不同产生不同的延时,比力理想的环境是在几百毫秒左右。这样对于及时性比力高的推理就需要针对性优化网络大小、图片输入大小、batch、跳帧推理、优化分辨率等。在一些监控性质的项目上对于及时性要求不高,以是使用起来根本没题目。固然你可以往上堆设备性能去解决延长题目。
长处之三:巨快的技能复兴
        Nvidia官方论坛技能支持这点必须表扬一下,Nvidia的技能论坛有问必答,只要你把完备的bug,error日志贴出来,给出具体的环境,研发人员会在美国上班时间给你复兴题目。有问必答而且可以搜索其他人雷同的bug,这一点是其他框架没有的。官方技能论坛链接在此。留意肯定要去英文论坛,你会获得更过细的信息。
长处之四:无脑接入TLT迁移学习框架,不会计划网络也能玩转
        Nvidia官方为Deepstream等计划了TLT迁移学习,各种模型譬如目的识别和语义分割、NLP等都有官方的模型,直接用Docker训练以后无缝接入Deepstream,假如你不会深度学习,不知道啊怎样计划模型,网络布局,可以直接从官网下载模型迁移训练以后直接摆设。Nvidia官方的网络根本够用,实用于对网络要求没那么高的深度学习场景。
缺点之一:和Gstreamer框架深度集成,然而Gstreamer在国内资料少
        这是现在遇到比力多题目的地方,许多Gstreamer资料国内没有,查一个Bug需要非常费劲,而且根本没有国内论坛等相干资料。Deepstream原来就是Gstreamer框架下的闭源库,你要想使用就避不开这个Gstreamer。以是需要你恶补这个Gstreamer框架。
缺点之二:偶尔会遇到神奇Bug
        之前我遇到过一些神奇Bug,而且很难追查缘故原由。譬如我构建了一个管道,用完了释放掉,再去重新构建,反复云云多次以后莫名其妙步伐会崩掉。我确认我已经按照教程精确释放了,给官方论坛也查不出效果,技能人员无法在他的环境复现我的全部步伐,人也没有义务这么做,只能说让我仔细查抄我的代码。

来源:https://blog.csdn.net/u013963960/article/details/128754623
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则