计算机视觉/视频分析

在 NVIDIA Optical SDK 中利用 NVIDIA Ada 架构进行帧速率上转换

NVIDIA Optical Flow SDK 4.0 现已推出,使您能够在 NVIDIA Ada 架构上使用 NvOFFRUC 充分利用新的 NVIDIA Optical 加速器。

NVIDIA Ada Lovelace 架构上的光流

从 NVIDIA Turing 架构开始, NVIDIA GPU 有专用硬件用于一对帧之间的光流计算。由于应用程序开发人员和研究人员的持续反馈, NVIDIA 继续投资改进 NVIDIA Ampere 架构和 NVIDIA Ada Lovelace 架构中的光流硬件引擎。

显著的性能改进

光流算法需要一定的预处理和后处理步骤来提高流向量的质量。

在 NVIDIA Turing 和 NVIDIA Ampere 架构一代 GPU 中,大多数算法使用计算引擎来执行所需任务。因此,当计算引擎工作负载较高时, NVIDIA Optical 加速器( NVOFA )的性能可能会受到影响。

在 NVIDIA Ada 一代 GPU 中,这些算法中的大多数都被转移到 NVOFA 中的专用硬件上,从而显著减少了对计算引擎的依赖。

此外, NVIDIA Ada 一代 GPU 还带来了其他一些与减少驱动程序和硬件之间交互开销相关的优化。这提高了 GPU 上各种硬件引擎之间的整体性能和上下文切换。

通过这些更改,与 NVIDIA Ampere 架构 NVOFA 相比, NVIDIA Ada Lovelace 架构 NVOFA 的速度提高了约 2 倍。

质量改进

根据前几代 NVOFA 的反馈,硬件中有几个质量改进。使用相同的预设,与 NVIDIA Ampere 架构 GPU 相比,您可以看到质量提高 10-15% (在 KITTI2015 数据集上测试)。

有关详细信息,请参见 1.4 NVOFA 质量和性能 。

Optical SDK 4.0

NVIDIA Optical SDK 使您能够访问 NVOFA 功能。 NVIDIA Optical SDK 是一组光流 C API 、可重用 C ++包装类和一组示例应用程序。这些 API 和 C ++包装器类有助于 NVOFA 的编程,以有效计算一对图像之间的光流。

Optical SDK 4.0 具有以下增强和功能:

  • 外部提示支持
  • NVIDIA Optical 辅助帧速率上转换( NvOFFRUC )

外部提示支持

当使用低进化图像生成提示或从其他来源(如游戏引擎)获得提示时, NVOFA 可以进一步细化提示以提高流向量的质量。

虽然外部提示支持已经通过 C-API 提供,但早期版本的 SDK C ++包装类中缺少支持。

Optical SDK 4.0 在 C ++类中添加了必要的支持,示例应用程序 AppOFCuda 中演示了外部提示的使用。提示格式与输出流向量格式相同:NV_OF_FLOW_VECTOR结构的数组。每个阵列元素以光栅扫描顺序表示对应块的运动矢量。

AppOF CUDA 接受 Middlebury flo format 中的提示,但在将其传递给 NVOF API 之前,将其转换为所需的格式(NV_OF_FLOW_VECTOR结构的数组)。 NVOFA 在提供外部提示时优先考虑这些提示;你应该提供合理的质量提示。

NVIDIA Optical 辅助帧速率上转换

帧速率上转换( FRUC )是一种通过将内插帧插入较低帧速率视频中来生成较高帧速率的视频的技术。这种高帧率视频显示了帧间运动的平滑连续性,提高了视频的视觉质量。

Diagram of NvOFFRUC process.
图 1 。在原始帧之间生成插值帧,以创建更平滑的图像

NvOFFRUC 库公开了获取两个连续帧并在其间生成插值帧的 API 。插值是即时的,不必精确地位于两帧的中间:可以任意指定。有关详细信息,请参阅 NVOFA FRUC Programming Guide

这些 API 可用于任何视频内容的上转换。在内部,库使用 NVOFA 硬件引擎和 CUDA 计算核心。因此,与纯软件方法相比,使用 NvOFFRUC 库的帧插值要快得多。

有关详细信息,请参见 AV1 Encoding and FRUC: Video Performance Boosts and Higher Fidelity on the NVIDIA Ada Lovelace Architecture

Optical Flow SDK 4.0 现已推出

 

Tags