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

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

3天内不再提示

使用NVIDIA DeepStream在Fyma解锁视频管道

星星科技指导员 来源:NVIDIA 作者:NVIDIA 2022-10-10 16:32 次阅读

在云中提供大规模的计算机视觉是一项复杂的任务。 Fyma ,一家计算机视觉公司,正借助于 NVIDIA DeepStream 。

作为一家相对较新的公司, Fyma 将视频转换为数据——更具体地说,是物理空间中的运动数据。 Fyma 平台每天全天使用客户的实时视频流,并生成移动事件(例如,有人穿过门口或商店过道)。

他们早期学到的一个教训是,他们的视频处理管道必须简单、可扩展,同时具备良好的性能。由于发展资源有限,一开始它们只能拥有这三种资源中的一种。 NVIDIA DeepStream 最近通过缩短开发时间、提高性能和提供优秀的软件组件(如 GStreamer ),解锁了同时拥有这三种功能的能力。

直播视频流的挑战

Fyma 专注于消费实时视频流,以简化其客户的实施。客户可能会犹豫是否在其场所安装传感器或任何其他硬件,因为他们已经投资了安全摄像头。由于这些摄像机可以在任何地方, Fyma 可以提供不同的对象检测模型,以在不同的环境中最大限度地提高精度

消费实时视频流在多个方面具有挑战性:

摄像机有时会产生损坏的视频(呈现/解码时间戳跳跃,报告的帧率错误)

网络问题导致视频流冻结、结巴、跳转或脱机

CPU /内存负载分配和规划并不简单

实时视频流是无限的

实时视频流的无限性意味着 Fyma 的平台必须至少以帧到达的速度执行计算机视觉。基本上,整个管道必须实时工作。否则,帧将无休止地累积。

幸运的是,在过去几年中,目标检测在速度和准确性方面稳步提高。这意味着每秒可以从 1000 多张图像中检测到物体,而地图的比例超过 90% 。这些进步使 Fyma 能够以合理的价格向客户提供大规模的计算机视觉。

使用计算机视觉(特别是实时)提供物理空间分析涉及的不仅仅是对象检测。据 Fyma 软件开发主管 Kaarel Kivistik 称,“要真正从这些对象中提取一些东西,我们需要在帧之间跟踪它们,并使用某种组件来分析其行为。考虑到每个客户都可以选择自己的模型,建立自己的分析,并根据收集的数据生成报告,一个简单的视频处理管道就成了一个巨大的平台。”

版本 1 :你好,世界

Fyma 从将 OpenCV 和 ffmpeg 耦合到一个非常简单的 Python 应用程序开始。除了他们的神经网络,没有任何硬件加速。当时他们正在使用 Yolo v3 和 Darknet 。尽管使用了 AWS g4dn ,但性能很差,约为每秒 50-60 帧。具有 NVIDIA Tesla T4 GPU (他们继续使用)的 xlarge 实例。应用程序的功能如下:

用于捕获视频的 OpenCV

具有 Python 绑定以检测对象的暗网

自制基于 IoU 的多目标跟踪器

虽然实现相当简单,但不足以扩展。表现不佳的原因有三个:

软件视频解码

在进程之间和 CPU / GPU 内存之间复制解码视频帧

软件对输出进行编码,同时在其上绘制检测结果

他们通过硬件视频解码和编码来改进第一个版本。当时,这并没有使整体速度提高多少,因为他们仍然将解码帧从 GPU 复制到 CPU 内存,然后再复制回[Z1K]内存。

版本 2 :自定义 ffmpeg 编码器

在速度方面真正的突破来自自定义 ffmpeg 编码器,它基本上是一个围绕暗网的包装器,将视频帧转换为检测对象。帧速率增加了十倍,因为它们现在在硬件上解码,而不需要在主机和设备内存之间复制视频帧。

但是帧速率的增加意味着他们的部分应用程序现在是用 C 语言编写的,并且由于 ffmpeg 的高度复杂的构建系统而增加了复杂性。尽管如此,他们的新组件不需要太多的改动,并且被证明是相当可靠的。

这个系统的一个缺点是他们现在只能使用暗网。

版本 2.1 : DeepSORT

为了提高目标跟踪精度, Fyma 用 DeepSORT 取代了自制的基于 IoU 的跟踪器。结果很好,但他们需要更改自定义编码器,以输出对象的视觉特征,以及跟踪所需的边界框。

引入 DeepSORT 提高了准确性,但也带来了另一个问题:根据视频内容,它有时会使用大量 CPU 内存。为了缓解这个问题,该团队采用了“异步跟踪”。基本上是一种基于工作人员的方法,它涉及每个工作人员使用由边界框组成的元数据,并生成有关对象移动的事件。虽然这解决了 CPU 使用不均衡的问题,但它再次使整个体系结构更加复杂。

版本 3 : Triton 推理服务器

虽然之前的版本表现良好,但 Fyma 发现他们仍然无法在每个 GPU 上运行足够的摄像头。他们平台上的每个视频流都有其使用的任何模型的单独副本。如果他们能够减少单个摄像头的内存占用,就有可能从 GPU 实例中挤出更多内存。

Fyma 决定重写其应用程序中与 ffmpeg 相关的部分。更具体地说,该应用程序现在通过自定义 Python 绑定直接与 ffmpeg 库( libav )接口

这使 Fyma 能够将其应用程序连接到 NVIDIA Triton 推理服务器,从而实现摄像机流之间的神经网络共享。为了保持目标检测代码的核心不变,他们将自定义 ffmpeg 编码器代码移到了自定义 Triton 后端。

虽然这解决了内存问题,但它将 Fyma 应用程序的复杂性提高了至少三倍。

版本 4 : DeepStream

Fyma 应用程序的最新版本是基于 GStreamer 和 NVIDIA DeepStream 的完全重写。

Kivistik 说:“基于管道的加速 DeepStream 组件方法是真正推动我们前进的原因。”。“此外,在不影响性能的情况下,将所有以前基于 C 的东西扔进回收站的乐趣真的令人难以置信。我们接受了 DeepStream 提供的一切:解码、编码、推理、跟踪和分析。得益于 nvtracker ,我们恢复了同步跟踪, CPU / GPU 使用率稳定。”

这意味着事件现在几乎是实时到达他们的数据库。以前,这些数据会延迟几个小时,这取决于有多少工作人员在场以及一般的“视觉”负载(整个平台看到了多少对象)。

Fyma 的当前实现为每个 GPU 实例运行一个主进程。该主进程依次为添加到平台的每个视频流运行 GStreamer 管道。每个摄像头的内存开销很低,因为所有内容都在一个进程中运行。

关于端到端性能(解码、推断、跟踪、分析), Fyma 实现了高达 10 倍的帧速率(单个视频流约 500 fps ),与第一次实现相比,精度提高了 2-3 倍。 Fyma 能够在不到两个月的时间内实施 DeepStream 。

Kivistik 说:“我想我们终于可以说,我们现在有了一个不那么大的代码库,并且具有可扩展性,因为我们可以轻松地切换模型,改变视频管道和性能。”。

“对于每个想要创建生产级计算机视觉应用程序的软件开发人员或数据科学家来说,使用 DeepStream 真的是一件轻而易举的事。”

总结

通过使用 NVIDIA DeepStream , Fyma 能够释放其 AI 模型的威力,提高其 vision AI 应用程序的性能,同时加快开发时间。

关于作者

Alvin Clark 是 DeepStream 的产品营销经理。阿尔文的职业生涯始于设计工程师,然后转向技术销售和市场营销。他曾与多个行业的客户合作,应用范围从卫星系统、外科机器人到深海潜水器。阿尔文持有圣地亚哥加利福尼亚大学的工程学学位,目前正在乔治亚理工大学攻读硕士学位。

Kaarel Kivistik 领导着 Fyma 的软件部门。他拥有超过 10 年的软件开发经验,精通多种语言和环境。他设计并设计了 Fyma 平台的工作方式。

审核编辑:郭婷

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

    关注

    2552

    文章

    51228

    浏览量

    754654
  • NVIDIA
    +关注

    关注

    14

    文章

    5021

    浏览量

    103254
  • 计算机
    +关注

    关注

    19

    文章

    7519

    浏览量

    88203
收藏 人收藏

    评论

    相关推荐

    NVIDIA Cosmos世界基础模型平台发布

    NVIDIA 宣布推出NVIDIA Cosmos,该平台由先进的生成式世界基础模型、高级 tokenizer、护栏和加速视频处理管线组成,将推动自动驾驶汽车(AV)和机器人等物理 AI 系统的发展。
    的头像 发表于 01-08 10:39 97次阅读

    Aigtek功率放大器管道悬跨诊断中的具体应用

    现代工业生产中,管道作为传输物质的重要工具,其安全性、稳定性和效率性对生产过程具有重大影响。管道悬跨是一种常见的管道故障,指的是管道
    的头像 发表于 01-02 13:55 78次阅读
    Aigtek功率放大器<b class='flag-5'>在</b><b class='flag-5'>管道</b>悬跨诊断中的具体应用

    解锁NVIDIA TensorRT-LLM的卓越性能

    NVIDIA TensorRT-LLM 是一个专为优化大语言模型 (LLM) 推理而设计的库。它提供了多种先进的优化技术,包括自定义 Attention Kernel、Inflight
    的头像 发表于 12-17 17:47 195次阅读

    TMP117温度传感器写寄存器之前需要解锁,能直接进行这个解锁的写操作吗?

    TMP117温度传感器写寄存器之前需要解锁,而解锁这个操作是向EEPROMUL寄存器的第15位写1,没有解锁的前提下,能直接进行这个
    发表于 12-04 06:27

    声波定位技术地下管道中如何应用

    随着城市化进程的加速,地下管道作为城市基础设施的重要组成部分,其安全、高效的维护与管理显得尤为重要。声波定位技术作为一种非破坏性探测手段,地下管道中的应用日益广泛,成为提升管道维护和
    的头像 发表于 09-27 13:54 168次阅读

    使用NVIDIA JetPack 6.0和YOLOv8构建智能交通应用

    进行视频数据的接收与存储;借助 YOLOv8 和 DeepStream AI 感知服务实现实时目标检测和车辆追踪;车辆移动的时空分析。构建好这一流程后,将利用 API 生成分析报告。
    的头像 发表于 08-23 16:49 507次阅读
    使用<b class='flag-5'>NVIDIA</b> JetPack 6.0和YOLOv8构建智能交通应用

    功率放大器管道定位系统硬件中的应用

    到AigtekATA-308功率放大器。将输出电流的RMS值调整为1A后,通过屏蔽电缆传输到管道模型中,模拟实际场景中的管道检测环境。搭建完成实验平台后,管道周围保持磁传感器探头与地
    的头像 发表于 08-19 16:00 686次阅读
    功率放大器<b class='flag-5'>在</b><b class='flag-5'>管道</b>定位系统硬件中的应用

    功率放大器管道螺旋导波信号测量实验中的应用

    实验名称:功率放大器管道螺旋导波信号测量实验中的应用实验内容:测量沿着管道壁面以螺旋方式行进的准lamb导波,研究其传播规律。研究方向:管道导波无损检测测试设备:信号发生器,ATA-
    的头像 发表于 08-14 17:53 264次阅读
    功率放大器<b class='flag-5'>在</b><b class='flag-5'>管道</b>螺旋导波信号测量实验中的应用

    管道风速传感器的安装在管道的前端还是后端

    管道风速传感器是一种用于测量管道内气流速度的仪器,广泛应用于工业、农业、环保、气象等领域。安装管道风速传感器时,需要考虑多种因素,以确保测量结果的准确性和可靠性。本文将详细介绍
    的头像 发表于 07-01 09:14 879次阅读

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

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

    功率放大器管道螺旋导波信号测量实验中的应用

      实验名称:功率放大器管道螺旋导波信号测量实验中的应用   实验内容:测量沿着管道壁面以螺旋方式行进的准lamb导波,研究其传播规律。   研究方向:管道导波无损检测   测试设备
    发表于 03-08 18:03

    功率放大器管道定位系统硬件中的应用

    到AigtekATA-308功率放大器。将输出电流的RMS值调整为1A后,通过屏蔽电缆传输到管道模型中,模拟实际场景中的管道检测环境。搭建完成实验平台后,管道周围保持磁传感器探头与地
    发表于 03-08 17:39

    红外热成像技术管道泄漏检测中的应用

    全球范围内,管道泄漏问题一直是一个头疼的问题,它不仅直接威胁到人民的生命财产安全,同时还会导致重大的资源浪费。无论是工业生产中的化工管道,还是日常生活中的供水、供热管道,一旦发生泄漏
    的头像 发表于 03-06 11:03 629次阅读
    红外热成像技术<b class='flag-5'>在</b><b class='flag-5'>管道</b>泄漏检测中的应用

    ATA-M4功率放大器充粘液管道损伤检测中的应用

      实验名称:充粘液管道损伤检测   实验原理:管道上的传感器激发一束超声能量脉冲,此脉冲沿着管道长度方向向远处传播,并充斥整个圆周方向,
    发表于 02-27 17:06

    linux管道概述

    一、进程间通信(IPC)介绍 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列
    的头像 发表于 02-18 14:51 512次阅读
    linux<b class='flag-5'>管道</b>概述