计算机视觉/视频分析

NVIDIA DeepStream 7.0 里程碑式发布,用于下一代视觉 AI 开发

NVIDIA DeepStream 是一个功能强大的 SDK,可以解锁 GPU 加速的构建块,以构建端到端的视觉 AI 管道。凭借 40 多个现成的插件,您可以轻松部署具有尖端 AI 推理、对象跟踪和流行的物联网消息代理(如 REDIS、Kafka 和 MQTT)无缝集成的完全优化的管道。

DeepStream 提供直观的 REST API 来控制您的 AI 管道,无论是部署在远端还是云端。

Diagram shows a DeepStream SDK optimizing video streaming pipeline.
图 1. DeepStream SDK 工作流

DeepStream 7.0 的最新版本是我们迄今为止最重要的版本之一,旨在为您在生成人工智能时代提供突破性的功能。此版本包含旨在加速下一代应用程序开发的创新功能。

发布亮点包括以下内容:

  • 通过 Python API 使用新的 DeepStream 库的新开发途径
  • 使用新的 Service Maker 简化了应用程序开发
  • 单视图 3D 跟踪器的增强功能
  • 支持使用 DeepStream 3D 框架的传感器融合模型 BEVFusion。
  • 支持 Linux 的 Windows 子系统(WSL2)
  • 使用 PipeTuner 优化 AI 流水线

立即下载 DeepStream 7.0 版

DeepStream 库:拓展开发者视野 

在构建视觉人工智能应用程序时,业务的首要任务是优化人工智能管道,以获得一流的性能。无论你是一名经验丰富的职业选手,还是刚刚投身其中,了解战略格局都是关键。

大体上,您有两种关键方法可供选择:

  • 现有的开箱即用的框架,如 GStreamer。
  • 加速您自己框架上的关键构建块的功能性 API。
Diagram shows capturing data, decoding, preprocessing, inference, postprocessing, the IoT broker, and encoding.
图 2:视觉 AI 应用工作流程

图 3 显示了 DeepStream 插件的结构。在其核心,每个插件都将其基本功能封装在一个库中,可通过与 GStreamer 插件规范一致的定义良好的接口访问。

这种标准化的方法确保了 GStreamer 生态系统中的无缝兼容性和集成。DeepStream 在插件之间添加零内存拷贝,实现最先进的性能。

Diagram shows the roles of the input GStreamer buffer and metadata, control parameters, the DeepStream plugin, GPU and hardware libraries, and the output GStreamer buffer and metadata.
图 3. DeepStream 插件高级架构

随着 DeepStream 7.0 的推出, NVIDIA 很高兴能为开发人员开辟新的途径,提供继续利用 GStreamer 功能的灵活性,或通过直观的 Python API 利用 DeepStream 库的强大功能。这种双重方法不仅为 Python 开发人员拓宽了 NVIDIA 加速功能的可访问性,而且还无缝集成到您现有的人工智能框架中。

Stack diagram for DeepStream libraries, including nvImageCodec, PyNvVideoCodec, CV-CUDA, Triton, and TensorRT.
图 4. DeepStream 库

由 NVIDIA 提供支持的 DeepStream 库,包括 CV-CUDANvImageCodecPyNv 视频编解码器,提供了一组低级别的 GPU 加速操作,这些操作在视觉 AI 管道的前处理和后处理阶段可以轻松取代 CPU 瓶颈的等效操作。

作为开源库,它们提供了完全的透明度和必要的工具,以实现库之间以及与流行的深度学习框架之间的零内存复制交互。设置过程非常简洁,只需执行一个 pip 安装命令,即可简化集成过程。

DeepStream 7.0 现在支持的两种路径具有固有的优势和权衡:

  • 易于学习和集成:DeepStream 库简化了学习曲线,使您能够快速集成 Python API,并见证 GPU 加速的直接好处。一个主要的例子是与 DeepStream Libraries 编解码器的集成,在那里,图像或视频帧的加速解码/编码的影响在几行代码后很快就会显现出来。
  • 现成的解决方案:对于从零开始或没有现有管道框架的情况,DeepStream 插件与 GStreamer 框架的结合提供了快速的市场部署途径。这些插件具有内置的零内存拷贝和复杂的资源管理功能,是高效应用程序开发的理想选择,能够帮助您快速启动。
Radial diagram that includes resource management, support for zero-memory copy, off-the-shelf building blocks, speed to first result, and ease of integration with existing software.
图 5. DeepStream 库和插件之间的权衡

展望未来, NVIDIA 计划不断扩大支持的 DeepStream 库的范围,进一步丰富每一个新版本的开发者体验。

有关更多信息,请参阅以下资源:

DeepStreamServiceMaker:简化应用程序开发 

对于想要利用 GStreamer 的 DeepStream 开发人员,我们也有好消息。对于那些刚接触 GStreamer 的人来说,它可能会带来陡峭的学习曲线。

NVIDIA 很高兴在 DeepStream 技术套件中推出一项突破性功能:DeepStreamServiceMaker。这一新增功能通过抽象 GStreamer 的复杂性大大简化了开发过程,使每个人都能在一个心跳中高效地构建 C++面向对象的应用程序。

Stack diagram shows an abstraction layer in C++ with an object, element, pipeline, signal emitter, and metadata, integrating with DeepStream C++ modules of a custom plugin, object counter, and FPS probe.
图 6. DeepStreamServiceMaker 抽象层

使用 DeepStreamServiceMaker,您可以在几分钟内快速构建管道、集成所需插件、无缝链接它们并启动应用程序。然后,这些应用程序可以轻松地打包到容器中,并通过 RESTAPI 进行管理,提供了一个简化的工作流程,大大减少了传统的编码工作量。

Pipeline pipeline("deepstream-test1");
    pipeline.add("filesrc", "src", "location", argv[1])
        .add("h264parse", "parser")
        .add("nvv4l2decoder", "decoder")
        .add("nvstreammux", "mux", "batch-size", 1, "width", 1280, "height", 720)
        .add("nvinfer", "infer", "config-file-path", CONFIG_FILE_PATH)
        .add("nvvideoconvert", "converter")
        .add("nvdsosd", "osd")
        .add(sink, "sink")
        .link("src", "parser", "decoder")
        .link({"decoder", "mux"}, {"", "sink_%u"})
        .link("mux", "infer", "converter", "osd", "sink")
        .attach("infer", new BufferProbe("counter", new ObjectCounter))
        .attach("infer", "sample_video_probe", "my probe", "src", "font-size", 20)
        .start()
        .wait();

对于那些不熟悉 GStreamer 的人来说,DeepStreamServiceMaker 使开发过程更加直观,也为经验丰富的开发人员解锁了新的功能。它完全支持自定义插件,如果您多年来一直在创建自定义解决方案,这一点至关重要。

通过将复杂的编码需求从数百行转换为几行,DeepStreamServiceMaker 彻底改变了您处理和管理应用程序开发的方式,使其比以往任何时候都更容易访问。

DeepStreamServiceMaker 还加速了边缘环境的应用程序开发,因为它是为 Jetson(MMJ)的 Metropolitan 微服务开发自己的微服务的理想途径。DeepStreamServiceMaker 也可以很容易地作为微服务部署在云上,可以通过 RESTAPI 进行控制。

视频 1. 轻松构建、部署和控制视觉AI应用程序

当您的应用程序使用 Service Maker 构建时,可以很容易地将其打包到一个容器中,然后通过直观的 RESTAPI(如流添加和删除以及感兴趣区域(ROI)配置)进行管理和动态控制。

视频 2. 使用REST API控制视觉AI应用程序

DeepStreamServiceMaker 的第一个版本支持 C++。Python 支持将在未来的版本中提供,从而扩大该工具的可访问性和多功能性。

欲了解更多信息,请参阅 DeepStream Service Maker 文档

DeepStream 单视图 3D

NVIDIA DeepStream 的最新版本对单视图 3D 跟踪(SV3DT)跟踪器进行了重大增强。这一高级功能旨在仅使用单个单声道相机准确跟踪 3D 空间内的对象,从而在 3D 世界地平面上提供对象的精确定位。

SV3DT 的第一个版本将行人建模为地平面上的圆柱体。这种方法通过将脚部定位在圆柱体底部来确保更准确的定位,提供更清晰、更明确的运动表示,以及无论遮挡程度如何的定位。

Picture shows three pedestrians each outlined in cylinders with a green dot near their feet.
图 7. DeepStream 单视图 3D 跟踪通过单摄像头创建圆柱体和脚部位置

有关更多信息,请参阅以下资源:

使用 DeepStream 3D 框架支持 BEVFusion

DeepStream 7.0 支持传感器融合最令人兴奋的人工智能模型之一:BEVFusion。DeepStream7.0 增强了 DeepStream 3D(DS3D)框架,并添加了可以与相机输入融合的激光雷达和雷达输入。 NVIDIA 承诺推出下一代环境感知解决方案。

通过作为源代码提供的低级别库简化了与各种传感器的集成,简化了对不同传感器供应商的支持。

BEVFusion 与 DS3D 框架的集成提供了一套旨在增强功能和易用性的功能:

  • 易于可视化:在屏幕上渲染和旋转激光雷达或 3D 数据,将激光雷达数据投影到图像中,并从多个视点显示 3D 边界框,以提供更加直观的视觉体验。
  • 消息代理支持:默认情况下与消息代理集成,实现与其他子系统的快速、高效、可靠的集成。
  • 传感器同步:实现多传感器数据(包括激光雷达、雷达和相机)的稳健同步,支持文件输入和直播输入,并能够适应不同的帧速率,有效管理帧丢失,以满足现实应用程序的需求。
  • 对齐筛选器:通过比较不同传感器的内在和外在参数,实现精确定制,适用于各种传感器数据的比对。
  • 自定义三维数据预处理:为激光雷达和雷达数据提供定制化的预处理解决方案,以提高处理精度和灵活性。
  • 通用数据映射管理:通过关键价值系统管理的传感器和张量数据的全面阵列,实现了数据监督和操作的简化和优化。

凭借这些功能,带有 BEVFusion 的 DeepStream 7.0 站在 3D 人工智能开发的前沿,突破了传感器融合技术的极限,该技术可以从边缘部署到云端。

Sensor fusion image of a traffic intersection.
图 8. 使用 BEVFusion 和 DS3D 框架为您的应用程序进行传感器融合

欲了解更多信息,请参阅 DeepStream 3D 框架文档,以获取详细信息。

支持 Linux 的 Windows 子系统

DeepStream 应用程序现在可以使用 Windows Linux 子系统(WSL2)在您的 Windows 系统上开发。此更新是向前迈出的重要一步,也是在以 Windows 为标准的 IT 批准系统上进行开发的客户经常提出的要求。

通过在 WSL2 上集成 DeepStream,您可以在单个系统上简化工作流程,从而无需远程访问 Linux 系统。这一新功能确保您可以使用 DeepStream 的强大功能,而无需复杂的双系统设置,从而简化开发过程并提高生产力。

对 WSL2 的 DeepStream 支持提供了直接在 Windows 上开发高级应用程序所需的灵活性和便利性。在享受 DeepStream 强大功能的同时,轻松兼容 Windows。

Diagram shows roles for VS Code, Windows usermode, Windows NT kernel, Hypervisor, the Linux kernel, Linux usermode, the DeepStream SDK, your AI application, and VS Code Server.
图 9. 基于 WSL2 架构的 DeepStream SDK

如需了解更多信息,请参阅 WSL2 文档

PipeTuner 1.0:优化 AI 流水线

PipeTuner 1.0 是一款新的开发工具,有望彻底改变人工智能管道的调整。人工智能服务通常包含一系列用于推理和跟踪的参数。找到最佳设置以最大限度地提高特定用例的准确性是一个复杂而关键的过程。

传统上,手动调整需要对每个管道模块有深入的了解,并且在广泛的高维参数空间中变得不切实际——即使有数据集和用于精度分析的基本事实标签的支持。

PipeTune 旨在直面这些挑战。PipeTune 有效地探索参数空间,并自动化识别最佳参数的过程,根据用户提供的数据集实现尽可能高的关键性能指标(KPI)。至关重要的是,PipeTuner 简化了这一过程,因此用户不需要管道及其参数的技术知识。

PipeTuner 1.0 正在开发人员预览版中。

Diagram shows roles for VS Code, Windows usermode, Windows NT kernel, Hypervisor, the Linux kernel, Linux usermode, the DeepStream SDK, your AI application, and VS Code Server.
图 10。PipeTuner 工作流

通过集成 PipeTuner,您可以加快上市时间,并为每个部署位置定制 DeepStream 管道参数,确保在每个场景中都能获得最佳性能。这标志着在使复杂的人工智能管道优化对所有用例和场景中的每个人都可访问和有效方面迈出了重要一步。

立即开始管道调整!

视频 3. 使用PipeTuner自动优化DeepStream Vision AI应用程序

欲了解更多信息,请参阅 PipeTuner 文档,以获取详细信息。

总结

我们很高兴看到您如何使用最新 DeepStream SDK7.0 版本中提供的这些新工具和功能来创造非凡的东西。

现在开始使用 DeepStream 并在 DeepStream 论坛 中更深入地探索。

一如既往,DeepStreaming 快乐!

 

Tags