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

这篇具有很好参考价值的文章主要介绍了带你玩转Jetson之Deepstream简明教程(二)Deepstream是什么?干什么?有什么优势?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

 1.Deepstream是什么?

带你玩转Jetson之Deepstream简明教程(二)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官方文档链接在此。

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

        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+。这是其他嵌入式平台无法比拟的优势。

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

 

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

 

        但是这些并不是完全没有代价的。据我观察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://www.toymoban.com/news/detail-420598.html

到了这里,关于带你玩转Jetson之Deepstream简明教程(二)Deepstream是什么?干什么?有什么优势?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • dig 简明教程

    哈喽大家好,我是咸鱼 不知道大家在日常学习或者工作当中用 dig 命令多不多 dig 是 Domain Information Groper 的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说,它是一个非常常见且有用的工具。 无论是简单的 DNS 解析查找还是更高级的故障排除和分析, dig 都能够

    2024年02月08日
    浏览(69)
  • SSH 隧道简明教程

    本章主要介绍了什么是 SSH 隧道以及如何使用 SSH 隧道,包括 SSH 隧道加密数据传输以及绕过防火墙。 SSH 隧道是 SSH 中的一种机制,它能够将其他 TCP 端口的网络数据通过 SSH 连接来转发,并且自动提供了相应的加密及解密服务。因为 SSH 为其他 TCP 链接提供了一个安全的通道来

    2024年02月06日
    浏览(53)
  • HuggingFace简明教程

    视频链接:HuggingFace简明教程,BERT中文模型实战示例.NLP预训练模型,Transformers类库,datasets类库快速入门._哔哩哔哩_bilibili 什么是huggingface?huggingface是一个开源社区,它提供了先进的NLP模型,数据集,以及其他便利的工具。 数据集:Hugging Face – The AI community building the future.  这

    2024年01月25日
    浏览(49)
  • 【Verilator】 1 简明教程

    我是 雪天鱼 ,一名FPGA爱好者,研究方向是FPGA架构探索和数字IC设计。 欢迎来关注我的B站账号,我将定期更新IC设计教程。 B站账号: 雪天鱼 ,https://space.bilibili.com/397002941?spm_id_from=333.1007.0.0 先从GitHub下载实验代码 以一个用SystemVerilog编写的简单ALU来作为DUT(device under test)

    2024年02月02日
    浏览(68)
  • mpack简明教程

    本文先简单介绍MessagePack的基本概念。 然后,介绍一个MessagePack C API - MPack的通常使用。 接着尝试对MPack截断数据的读取。 注:本文完整代码见仓库。 如果你使用过C/C++的json库,那么上手MessagePack是比较容易的。关于C/C++ Json库的使用可见:C++ JSON库的一般使用方法-CSDN博客。

    2024年02月20日
    浏览(53)
  • Husky使用简明教程

    Husky 是一个流行的 Git 钩子工具,用于在不同的 Git 操作(如提交和推送)前自动运行脚本。比如代码格式化、静态检查等。这有助于保持代码库的质量和一致性。本教程将详细介绍 Husky 的原理、使用方式、配置方法以及如何在开发中集成 Husky。 Husky 原理 安装 Husky 配置 Hus

    2024年04月10日
    浏览(50)
  • WebGPU开发简明教程【2023】

    WebGPU 是一种全新的现代 API,用于在 Web 应用程序中访问 GPU 的功能。 在 WebGPU 之前,有 WebGL,它提供了 WebGPU 功能的子集。 它启用了新一类丰富的网络内容,开发人员用它构建了令人惊叹的东西。 然而,它基于 2007 年发布的 OpenGL ES 2.0 API,而该 API 又基于更旧的 OpenGL API。

    2024年02月16日
    浏览(47)
  • shell简明教程3函数

    在本章中,您将了解为什么以及何时需要使用函数。 你将学习如何创建函数以及如何使用函数。 我们将讨论变量及其作用域。 学习如何使用参数访问传递给函数的参数。 最后,您还将学习如何使用函数处理退出状态和返回代码。 计算机编程和应用程序开发中有一个概念叫

    2024年02月11日
    浏览(51)
  • Blender骨骼动画简明教程

    Blender 是首选的开源3D动画软件之一。 令人惊讶的是,开始创建简单的角色动画并不需要太多时间。 一旦获得最终的 3D 角色模型,你就可以使用该软件的众多动画功能和工具将其变为现实。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 例如,Blender 的绑定工具将帮助你实现角色

    2024年02月07日
    浏览(52)
  • AI绘画工具简明教程

    官方地址 首先需要邮箱注册,等待邀请(可能需要等待一两天) 能成功登录后会进入这样一个界面 https://app.scenario.com/generators 创建模型 提供的图片集上传的时候得是jpg,还需要裁剪成正方形。批量修改图片在线网站:https://www.birme.net/ 根据图集生成图片 官方网址:https://

    2024年02月11日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包