0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你们知道DeepStream可以开发出什么应用吗

GLeX_murata_eet 来源:NVIDIA英伟达中国 作者:NVIDIA英伟达中国 2021-08-02 15:44 1998次阅读

前一篇文章为大家讲述了 DeepStream 的应用定位、单机工作流、实际部署图,以及完整的软件栈的内容,可以对其有一个框架性的了解。接下来大家可以思考一下,DeepStream 可以开发什么应用?

可能有人会猜想,这么强大且复杂的视频分析工具,一定需要具备很多的专业知识与编程语言基础,才有可能操作这样一套系统。

的确,如果要实现完整的视频分析中心的整体部署,确实需要更多的技术去完成;但如果只想做些轻便的单机应用,例如自己家中或办公环境的视频分析应用,那就非常地简单,甚至不需要撰写或修改代码就能实现。

本文的内容,就是用 NVIDIA Jetson Nano 2GB 快速带大家来执行 NVIDIA 为 DeepStream 已经提供好的应用,整个执行流程也适用于 Jetson 系列的所有设备,当然,也能在带有 CUDA GPU 计算卡的 x86 设备上运作。

这里的运作环境是用 NVIDIA Jetpack 4.5.0 安装,关于操作系统、CUDA、CUDNN、TensorRT、OpenCV 等版本,请自行参考 NVIDIA 官方所提供的说明内容。

Jetpack 会为 Jetson 设备直接安装好 DeepStream 套件,因此 Jetson 用户可以省略 DeepStream 的安装步骤,进入 Jetson 设备之后,执行以下指令就可以检查其版本:

# 在 Jetson 设备

$ dpkg -l deepstream-5.0

会看到如下截图的信息,表示目前安装的版本为“5.0.1-1”!

85291a42-e036-11eb-9e57-12bb97331649.jpg

接下来看看 Deepstream 为系统提供哪些可执行的软件?请执行以下指令:

$ deepstream-(连续敲击两次“Tab”键)

会看到如下截图,总共有20个可执行工具,我们只需要 deepstream-app 这个工具,其余可以不用理会。

855af558-e036-11eb-9e57-12bb97331649.jpg

在/opt/nvidia/deepstream/deepstream 路径下安装 DeepStream,后面的实验操作以这下面的 samples 目录里的内容为主,为了方便操作起见,请执行以下指令,在主目录执行建立一个链接:

$ cd ~

$ ln -s /opt/nvidia/deepstream/deepstream/samples ds5_samples

现在执行以下指令,看看 samples 里的目录结构,对 DeepStream 范例能多一份总体观:

$ tree -L 2 -d ds5_samples

下图框处是本次实验有关的部分:

85777cf0-e036-11eb-9e57-12bb97331649.jpg

本次实验使用 deepstream-app 这个编译好的工具,执行时只要在后面添加”-c 《配置文件》“即可,要做的任务就是修改配置文件的内容,便可以轻松地改变实现的功能。配置文件的范例存放在 config/deepstream-app 目录下,有 9 个“source”带头的范例文件可以使用,根据文件名可以看出该文件的适用设备。

source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt 这个配置文件比较适合 Jetson Nano 2GB 使用,先简单分解一下文件名所代表的意义:

source8:有 8 个输入源

1080p:输入源的最高分辨率

dec:检测器 detector 的缩写,表示这个设定文件是做物件检测功能

infer-resnet:使用 ResNet 这个神经网络执行推理功能

tracker:启用“物件追踪”功能

tiled_display:启用“并列显示”功能

fp16:推理时的数据精度

nano:针对 Nano 设备

这些文件名只是比较有针对性地提供预设参数而已,里面的每一个参数都是可以任意修改的。为了方便后面的执行,因此建议将配置文件复制成一个比较短的文件名:

$ sudo chmod 777 -R ds5_samples

$ cd ds5_samples/configs/deepstream-app

$ cp source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt myNano.txt

后面所有的修改在 myNano.txt 里面执行就可以。现在执行以下指令,看看会得到什么结果:

$ deepstream-app -c myNano.txt

第一次执行时要为神经网络模型生成 TensorRT 加速引擎,所以需要几分钟时间去建立,出现 2x4 个并列显示框。

下面是指令框显示的个别推理性能,8 个框的总性能合计大约在 120FPS,这对 JetsonNano 2GB 来说是非常惊人的。

85e63096-e036-11eb-9e57-12bb97331649.jpg

如果使用 NoMachine 远程控制 Jetson Nano 2GB,可能会看不到显示的画面,这时请先按 Ctrl-C 退出执行,然后修改 myNano.txt 里面的[sink0]两个参数,如下:

。。。。。

[sink0]

#type=5

type=2

#sync=1

sync=0

。。。。。

然后重新执行“deepstream-app -c myNano.txt”应该就能看到显示的结果了。

这个标准演示一个较明显的问题就是 8 个框的数据源是相同的,这是否存在不真实的部分?因此修改一下输入来源的部分,调用从 DeepStream 与 VisionWorks 所提供的测试视频来执行“多视频”分析功能。

接下来在 myNano.txt 中做些小幅度的修改:

1. 为了让显示的尺寸更加合理化,修改[tiled-display]下面的 rows=2, columns=2

2. 以[source0]为范本,删除不需要的参数,复制为[source1]、[source2]、[source3]

86056a7e-e036-11eb-9e57-12bb97331649.png

这里特别使用不同格式的视频,包括.mp4、.h264、.avi等。存好修改内容后重新执行“deepstream-app -c myNano.txt”,就会看到四个不同视频的推理结果,其中红色的代表“Car”、蓝色代表“Person”。

请自行查看一下命令框里,四组推理性能总和与前面八组推理性能的总合是否符合

玩转 DeepStream 就是这么简单,到目前为止完全没有牵涉任何的代码,只是修改一些参数就能实现多数据源的高性能识别,现在可以去向朋友炫耀了!

“目标追踪(track)”功能是推理识别的后处理任务,为识别出的物件标上编号之后,就能进行更多样化的后续操作,包括统计人流、动向分析、目标锁定等等,这个功能需要相对复杂的算法来支撑。

DeepStream 已经将“目标追踪”功能都封装好,只需在配置文件中做些简单处理,这就是下一篇文章要带大家执行的任务。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    5104

    浏览量

    104375

原文标题:NVIDIA Jetson Nano 2GB 系列文章(28): DeepStream 初体验

文章出处:【微信号:murata-eetrend,微信公众号:murata-eetrend】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    丰田合成开发出8英寸GaN单晶晶圆

    近日,日本丰田合成株式会社宣布了一项重大技术突破:成功开发出用于垂直晶体管的200mm(8英寸)氮化镓(GaN)单晶晶圆。
    的头像 发表于 01-23 16:46 534次阅读

    旋转编码器可以收集并发出什么信号,旋转编码器信号异常怎么处理

    旋转编码器是一种精密的测量装置,主要用于将旋转运动转换为可测量的电信号。它可以收集并发出多种信号,但主要的是与旋转运动相关的位置、速度或角度等物理量的信号。具体来说,旋转编码器可以收集并发出
    的头像 发表于 10-01 16:55 882次阅读

    Linux 驱动开发与应用开发,你知道多少?

    一、Linux驱动开发与应用开发的区别开发层次不同:Linux驱动开发主要是针对硬件设备进行编程,处于操作系统内核层,直接与硬件交互,为上层应用提供设备访问的接口。Linux应用
    的头像 发表于 08-30 12:16 1056次阅读
    Linux 驱动<b class='flag-5'>开发</b>与应用<b class='flag-5'>开发</b>,你<b class='flag-5'>知道</b>多少?

    吸收功率和发出功率怎么理解

    能量可以是热能、电能、光能等多种形式。吸收功率的大小取决于系统与外部环境之间的能量交换速率。 1.2 发出功率 发出功率是指一个系统在单位时间内向外部环境释放的能量。这种能量同样可以
    的头像 发表于 08-22 14:05 3449次阅读

    如何让蜂鸣器发出不同频率的声音

    蜂鸣器是一种电子设备,它可以发出声音。蜂鸣器的工作原理是利用电磁线圈产生磁场,使蜂鸣器内部的振膜振动,从而产生声音。蜂鸣器的频率可以通过改变输入信号的频率来调整。以下是如何让蜂鸣器发出
    的头像 发表于 08-09 10:09 1772次阅读

    TEL、富士金和TMEIC开发出沉积工艺用新型臭氧浓度监测仪

    近日,Tokyo Electron(TEL)、富士金株式会社和TMEIC株式会社共同开发出一款调控半导体制造的沉积工艺中臭氧浓度的新型监测仪,并对该监测仪与臭氧发生器的兼容性进行全面测试。此次的联合开发也是TEL发起并推动的供应链倡议E-COMPASS的一部分。
    的头像 发表于 07-16 18:25 1144次阅读
    TEL、富士金和TMEIC<b class='flag-5'>开发出</b>沉积工艺用新型臭氧浓度监测仪

    ROHM开发出新型二合一SiC封装模块TRCDRIVE pack

    全球知名半导体制造商ROHM(总部位于日本京都市)面向300kW以下的xEV(电动汽车)用牵引逆变器,开发出二合一SiC封装型模块“TRCDRIVE pack”,共4款产品。
    的头像 发表于 06-19 14:28 740次阅读
    ROHM<b class='flag-5'>开发出</b>新型二合一SiC封装模块TRCDRIVE pack

    请问vscode可以开发ESP-ADF吗?

    请问,vscode可以开发 ESP-ADF吗?之前用vscode 开发ESP-IDF,但是今天安装ESP-ADF之后,不知道如何用vscode开发
    发表于 06-17 06:59

    ROHM开发出世界超小CMOS运算放大器

    全球知名半导体制造商ROHM(总部位于日本京都市)开发出一款超小型封装的CMOS运算放大器“TLR377GYZ”,该产品非常适合在智能手机和小型物联网设备等应用中放大温度、压力、流量等的传感器检测信号。
    的头像 发表于 06-12 14:23 633次阅读
    ROHM<b class='flag-5'>开发出</b>世界超小CMOS运算放大器

    TLB成功开发出CXL内存模块PCB,并向三星和SK海力士提供首批样品

    近日,韩国上市PCB制造商TLB (KOSDAQ:356860)成功开发出CXL内存模块PCB,并已独家向三星电子和SK海力士提供了6款以上的首批样品。
    的头像 发表于 05-30 11:30 1014次阅读

    cy943907aeval1f的开发软件需要怎么设置?

    工程师你好!我的问题是这样的,我用你们开发板cy943907aeval1f 可以下载程序,这个开发板上用了usb转jtag芯片ft2232hq-tray,我们的产品不需要这个芯片,我
    发表于 05-27 06:45

    NVIDIA发布DeepStream 7.0,助力下一代视觉AI开发

    NVIDIA DeepStream 是一款功能强大的 SDK,能够提供用于构建端到端视觉 AI 管线的 GPU 加速构建模块。
    的头像 发表于 05-23 10:09 865次阅读
    NVIDIA发布<b class='flag-5'>DeepStream</b> 7.0,助力下一代视觉AI<b class='flag-5'>开发</b>

    罗姆与芯驰科技面向智能座舱联合开发出参考设计“REF66004”

    全球知名半导体制造商罗姆(总部位于日本京都市)与领先的车规芯片企业芯驰科技面向智能座舱联合开发出参考设计“REF66004”。
    的头像 发表于 04-03 14:06 1360次阅读
    罗姆与芯驰科技面向智能座舱联合<b class='flag-5'>开发出</b>参考设计“REF66004”

    芯驰科技与罗姆面向智能座舱联合开发出参考设计“REF66004”

    芯驰科技与全球知名半导体制造商罗姆面向智能座舱联合开发出参考设计“REF66004”。该参考设计主要覆盖芯驰科技的智能座舱SoC“X9M”和“X9E”产品,其中配备了罗姆的PMIC、SerDes IC和LED驱动器等产品。
    的头像 发表于 03-28 15:23 1389次阅读
    芯驰科技与罗姆面向智能座舱联合<b class='flag-5'>开发出</b>参考设计“REF66004”

    stm32g070怎么可以让usart3串口可以自动接收自己发出的数据?

    usart3:没有开启DMA模式,开启此功能必须使能timer1,而且中断发送数据时,总是产生idle故障标志。且总是接收到自己发出的数据。请问,1.怎样可以让idle故障标志不再产生?2.怎么可以
    发表于 03-28 06:53