这篇文章最初发表在 NVIDIA 技术博客上。
边缘人工智能应用程序,无论是在机场、汽车、军事行动还是医院,都依赖于能够实现实时处理和决策的高性能传感器流应用程序。凭借其最新的 v0 . 5 版本NVIDIA Holoscan SDK为边缘的下一代人工智能应用带来了新一波传感器处理能力。
此次发布也与HoloHub,一个 GitHub 存储库,供 Holoscan 开发人员与可重用组件和示例应用程序共享和协作。 HoloHub 现在提供了一系列新的参考应用程序和操作程序,旨在促进数据处理管道的创建和修改。
通过 HoloHub ,我们打算为处于原型设计、设计、开发和测试 AI 流算法各个阶段的开发人员提供一系列运营商和应用程序,从 I / O 支持到图像分割和对象检测。 HoloHub 由 NVIDIA 所有,由一个开放的开发者社区驱动,该社区共享他们用于构建行业领先的人工智能应用程序的构建块。
Holoscan v0 . 5 版本的亮点:
- HoloHub 中的新操作员和参考应用程序,包括手术工具检测和内窥镜工具分割。
- 支持 H . 264 编码器和解码器,可捕获、处理和存档视频流
- X86 _ 64 物理 I / O 支持
- 深度贴图渲染
- 与 GXF 应用程序的互操作性
- 支持 NVIDIA 开发套件上的集成和分立 GPU
- NVIDIA IGX Orin 的部署堆栈
- 全息扫描测试套件实用程序,用于制造或验证和验证
HoloHub 中的新运营商和参考应用程序
HoloHub 提供的新参考应用程序包括SSD手术刀具检测应用和MONAI 内窥镜工具分割应用。
MONAI 内窥镜工具分割应用程序已经在 GI Genius 沙盒上进行了验证,目前可部署到GI Genius Intelligent Endoscopy Modules, Cosmo Pharmaceutical 的人工智能内镜系统。 Cosmo 的实现展示了 Holohub 应用程序在 NVIDIA Holoscan 上运行的产品/平台上的快速无缝部署。
这个SSD手术刀具检测应用开发用于演示在 Holoscan SDK 中部署对象检测模型的过程以及自定义的后处理步骤。它包含一个教程导出经过训练的 PyTorch 模型检查点,修改导出的 ONNX 模型,在 Holoscan SDK 中的 Python 或 C ++中创建您自己的后处理逻辑,使用 Holoviz 可视化边界框和文本,并将其整合到 Holoscan 应用程序中。
为了保持 Holoscan SDK 的核心优化和领域不可知,所有 Holoscan 的 SDK 示例应用程序都迁移到HoloHub并且构建系统被优化以使得能够针对预先安装的 SDK 版本构建每个应用程序。
我们开发了一个新的基础网络运营及其关联应用。此基本网络运营商使您能够通过标准 Linux 套接字发送和接收 UDP 消息。提供了独立的发射和接收运营商,以便它们能够独立运行,更好地满足应用的需要。示例应用程序采用了在 Holoscan 端口上运行的现有 ping 示例,而是使用基本网络运营商在 UDP 套接字上运行。
外部的贡献欢迎并鼓励 HoloHub 。
DELTACAST
DELTACAST,是一家为一系列广播、工业和医疗应用提供专业视频解决方案的开发商,是首批为 HoloHub 提供 Holoscan 视频处理应用的公司之一。
此应用程序支持 DELTACAST . TV 12G SDI 密钥捕获卡,该卡可以将覆盖层合成到传入和传出卡的视频馈送上。这需要在修改现有输入运算符的基础上开发新的输出运算符。
由此产生的样本应用程序可以捕获视频源流,并使用 GPU Direct RDMA 将数据直接传输到 GPU 存储器中,在那里可以通过内窥镜检查参考管道进行处理。然后,它使用 RDMA 将管道的输出直接传递回捕获卡,在那里它可以与低延迟源视频混合。
为人工智能应用程序捕获、处理和归档视频流
现在 HoloHub 中提供了四个新的本地运营商,用于通过基本流写入/读取执行 H . 264 硬件加速编码和解码。这些运营商使用基于 NV V4L2 的 GXF 扩展来支持 H . 264 。
H . 264 支持基于人工智能的用例,用于捕获、处理和归档视频流。它还增加了使用标准视频格式的能力,而不是使用专有的 GXF 张量格式作为 Holoscan 应用程序的输入。当输入是 H . 264 基本流时,样本 Holoscan 应用程序包的大小急剧减小。
HoloHub 现在提供了两个 C ++应用程序,以展示新的 H . 264 编码和解码功能:
- 这个h264_video_decode应用程序演示了由VideoReadBitream 和VideoDecoder用于从指定的输入文件读取 H . 264 基本流并将其解码为原始视频帧的运算符。
- 这个h264_endoscopy_tool_tracking应用程序是的修改版本endoscopy_tool_tracking将 GXF 张量格式输入替换为 H . 264 基本流的应用程序。它还显示了VideoEncoder和VideoWriteBitstream操作员将原始视频帧编码为 H . 264 ,并将 H . 264 基本流直接写入磁盘。
x86_64 物理 I/O 支持
这个新版本的 Holoscan SDK 为 x86 平台提供了对物理 I / O 的支持。
这个high-speed endoscopy application用作benchmark for low-latency4K 视频,帧速率为 240 Hz ,使用高速以太网摄像头。它现在可以在 x86 _ 64 桌面上运行。它已经用 Rivermax 14 . 1 . 1310 、 GPUDirect RDMA ( OFED 5 . 8 . 1 )和 Emergent Technologies 的相机进行了测试。
深度贴图渲染
在这个新版本中,添加了对深度图渲染的支持HoloViz, Holoscan 的可视化组件。深度图被描述为 2D 矩形阵列,其中每个元素表示一个深度值。然后使用点、线或三角形将数据渲染为三维对象。
在当前的实现中,还可以指定元素的颜色。深度贴图以 3D 方式渲染,并支持相机移动。图 1 显示了具有单个帧的彩色纹理的深度图的可视化。
图 1 。 具有颜色元素的新深度图渲染
与 GXF 应用程序的互操作性
虽然 Holoscan SDK 可以将现有的 GXF 扩展封装到 Holoscan 运算符中,但也可以方便地将用 Holoscan 编写的本机运算符导出到 GXF 中,以便在现有 GXF 应用程序中使用它们。或者,您可以使用NVIDIA graph composer无代码体验。
Holoscan SDK v0 . 5 提供了一个助手 CMake 函数,用于将 Holoscan 运算符包装为 GXF 代码集。有关详细信息,请参阅Using Holoscan Operators in GXF Applications.
支持 Holoscan 开发套件上的集成和离散 GPU
这个NVIDIA Clara AGX和NVIDIA IGX Orin显影剂试剂盒由集成的 GPU ( iGPU )以及一个或多个离散的 GPU ( dGPU )组成。但是,由于nvgpu
用于 iGPU 的驱动程序,以及用于 Linux 的开源 NVIDIA 内核模块( OpenRM )驱动程序 dGPU,此时需要额外的步骤才能并行使用它们。
从 Holoscan SDK v0 . 5 开始,我们在 NGC 上提供了一个实用工具容器:L4T Compute Assist它被设计为在为 dGPU 配置的开发堆栈( Holopack )上启用 iGPU 计算访问。此容器仅允许将 iGPU 用于计算功能,不适用于渲染。
为了展示 L4T Compute Assist 容器的功能,我们发布了一个新的应用程序out-of-body detection在 HoloHub 。该应用程序不需要显示器,并且在终端中报告推断的结果。此应用程序可以在 i GPU 容器内运行,同时在 dGPU 上运行其他应用程序。
下图显示了正在运行的体外检测应用程序和未在应用程序中显示的输入框。
a )从输入视频流中提取的帧
b )终端输出,包括置信区间
图 2 :体外检测应用程序的示例帧和输出
NVIDIA IGX Orin 的部署堆栈
与以前的 Holoscan 版本一样,此 SDK 版本附带了OpenEmbedded/Yocto layer for NVIDIA Holoscan该层提供了一个参考部署平台,支持 Holoscan 开发工具包、 Holoscan SDK 和 HoloHub 参考应用程序。
除了支持新的 NVIDIA IGX Orin 开发套件外,此次对部署堆栈的更新还包括对核心组件的更新:
- 底层 L4T 平台和内核
- 离散 GPU ( dGPU )驱动器
- CUDA
- cuDNN
- Mellanox OFED
- TensorRT
我们还增加了对 dGPU 容器运行时的支持、 PREEMPT_RT 补丁支持和 Emergent 高速 GigE 相机。
本机调试和应用程序评测对于准备就绪的生产部署至关重要。为了便于实现这一点,此次对部署堆栈的更新还包括通过 GDB 对本地和远程调试的额外支持,以及使用 NVIDIA Nsight 系统 的 dGPU 应用程序评测。
部署堆栈在meta-tegra-holoscanGitHub,以及完整的build container托管在 NGC 上,它包括所有的依赖项和脚本,使您能够使用几个命令构建图像并将其闪存到 Holoscan devkit 。
有关此部署堆栈版本引入的更改的完整列表的更多信息,请参阅 Holoscan OpenEmbedded / Yocto 层README和changelog.
全息扫描测试套件实用程序
的用户NVIDIA IGX Orin衍生设计需要测试支持,既要在制造时验证组装系统的正确操作,也要在硬件或软件发生变化时验证开发过程中的正确操作。稳健的系统需要进行彻底的测试,以证明系统的要求和规范得到了满足。需要提交给监管机构的应用程序不仅必须提供测试结果,还必须提供配置数据,以便能够完全重建被测系统。
这个holoscan-test-suite该实用程序提供了一个框架和一组基本的系统验证脚本,这些脚本在制造过程中以及验证和验证时都很容易使用,并且易于扩展。
测试套件从一组用 Python 或 shell 脚本编写的测试开始,添加了一个用于生成配置报告的工具,并用一个简单的 web 界面将其封装起来。
Python 和 shell 脚本被封装到由pytest framework,因此在命令行或 CI 环境中运行测试非常简单。测试套件生成测试结果的 YAML 版本,使其易于包含在与每个制造系统相关的记录中。您可以通过克隆/ holoscan 测试套件 repo 来修改现有的测试并添加新的测试,从而使将来从 NVIDIA 进行测试变得容易
有关详细信息,请参阅README项目中包含的文件。
开始使用 Holoscan SDK
开始使用 Holoscan SDK v0 . 5 的最快方法是运行Holoscan container并启动exploring the examples.
对于 Python 开发人员来说, Holoscan SDK 是available using PyPiHoloscan SDK 也可作为Debian package.
阅读原文