计算机视觉/视频分析

AV1 编码和 FRUC : NVIDIA Ada 架构上的视频性能提升和更高保真度

2022 年 GTC 发布的下一代 NVIDIA GPU ,即 NVIDIA -GeForce RTX 40 系列、 NVIDIA RTX 6000 Ada generation 和数据中心的 NVIDIA L40 ,均采用新的 NVIDIA Ada 架构构建。

NVIDIA Ada 架构具有第三代光线跟踪核心、第四代 Tensor 核心、多视频编码器和新的 Optical Flow 加速器。

为了让您能够充分利用新的硬件升级, NVIDIA 宣布了视频编解码器 SDK 和 Optical FlowSDK 的随附更新。

NVIDIA 视频编解码器 SDK 12.0

AV1 是最先进的视频编码格式,与流行标准 H.264 相比,它提供了显著的性能提升和更高的保真度。在 NVIDIA 安培体系结构上引入的视频编解码器 SDK 扩展了对 AV1 解码的支持。现在,有了视频编解码器 SDK 12.0 , NVIDIA Ada 代 GPU 支持 AV1 编码。

硬件加速 AV1 编码是 AV1 向新标准视频格式过渡的一个巨大里程碑。图 1 显示了 AV1 比特率节省如何转化为令人印象深刻的性能提升和更高保真度的图像。

峰值信噪比( PSNR )是一种视频质量度量。为了达到 42 dB PSNR , AV1 视频的比特率为 7 Mbps ,而 H.264 的比特率高于 12 Mbps 。在所有分辨率中, AV1 编码的平均效率比 H.264 高 40% 。这一基本性能差异为 AV1 打开了支持更高质量视频、更高吞吐量和高动态范围( HDR )的大门。

Bar chart shows that at 2160p, AV1 has a 1.45x bit-rate saving compared to NVENC H.264.
图 2.与 H.264 相比, AV1 的比特率节省

如图 2 所示,在 1440p 和 2160p 时, NVENC AV1 的效率是 NVENC H.264 的 1.45 倍。这种新的性能余量使图像质量比以往任何时候都高,包括 8k 。

AV1 的优点最好与 NVIDIA Ada 架构上的多编码器设计结合使用。视频编解码器 SDK 12.0 在具有多个 NVENC 的芯片上是新的,处理负载同时均匀分布在每个编码器上。这种优化大大减少了编码时间。多个编码器与 AV1 格式相结合,使 NVIDIA Ada 能够实时支持难以置信的 8k 、 60 fps 视频编码。

跨多硬件 NVENC 的 AV1 编码实现了下一代视频性能和保真度。广播平台可以获得更高的实时流分辨率,视频编辑器可以以 2 倍的速度导出视频,所有这些都是由视频编解码器 SDK 实现的。

NVIDIA Video Codec SDK 12.0 将于 2022 年 10 月从 NVIDIA 开发中心下载。

NVIDIA Optical Flow 4.0

新的 NVIDIA Optical Flow SDK 4.0 版本引入了引擎辅助帧速率提升转换( FRUC )。 FRUC 通过使用光流矢量插入插值帧,从低帧速率视频生成高帧速率的视频。这样的高帧速率视频显示了跨帧运动的平滑连续性。其结果是提高了视频播放的平滑度和感知的视觉质量。

NVIDIA Ada Lovelace 架构有一种新的 Optical Flow 加速器,即 NVOFA ,其性能比 NVIDIA-Ampere 架构 NVOFA.高 2.5 倍。它在包括 KITTI 和 MPI Sintel 在内的流行基准测试上提供了 15% 的质量改进。

FRUC 库使用 NVOFA 和 CUDA 插入帧的速度明显快于仅使用软件的方法。它还可以与自定义 DirectX 或 CUDA 应用程序无缝协作,使开发人员易于集成。

除了基本的光流示例应用程序外,Optical Flow SDK 4.0 还包括 FRUC 库和示例应用程序。 FRUC 库公开了 NVIDIA FRUC API ,这些 API 采用两个连续的帧,并在帧之间返回一个插值帧。这些 API 可用于任何视频的上转换。

与其他仅使用软件的方法相比,使用 FRUC 库的帧插值速度非常快。 API 易于使用,并支持 ARGB 和 NV12 输入曲面格式。它可以直接集成到任何 DirectX 或 CUDA 应用程序中。

SDK 中包含的示例应用程序源代码演示了如何将 FRUC API 用于视频 FRUC 。此源代码可以根据需要重用或修改,以构建自定义应用程序。

视频 1 示例是使用 FRUC 库创建的。如您所见,与左侧视频相比,右侧视频中前景对象和背景的运动看起来更平滑。

视频 1.原始视频和帧速率上转换视频的并排比较。(左)原始视频以每秒 15 帧的速度播放。(右)以每秒 30 帧的速度播放的帧速率上调转换视频。使用 FRUC 库创建的视频。 (来源: http://ultravideo.fi/# testsequences)

FRUC 库内部

下面简要说明 FRUC 库如何处理一对帧并生成插值帧。

一对连续的帧(前一帧和后一帧)被输入 FRUC 库(图 4 )。

GIF image shows the previous and next frames of a horse and rider.
图 4.用作输入的连续帧

使用 NVIDIA Optical Flow API ,生成正向和反向流矢量图。

GIF image shows forward and backward flow vector maps.
图 5 正向和反向流矢量图

然后,使用前后一致性检查验证图中的流向量。未通过一致性检查的流向量将被拒绝。此图中的黑色部分是未通过前后一致性检查的流向量。

Picture shows black spots for rejected flow vectors.
图 6.验证和拒绝的流向量

使用可用的流矢量和先进的 CUDA 加速技术,生成更精确的流矢量以填充被拒绝的流矢量。图 7 显示了生成的填充流矢量图。

Picture shows the rejected flow vectors filled in with other colors.
图 7.填充流矢量图
Image shows a closeup of pixel regions without valid color on the interpolated frame.
图 8.带有灰色区域的新插值帧

使用两个帧之间的完整流向量映射,该算法在两个输入帧之间生成插值帧。这样的图像可能包含几个孔(没有有效颜色的像素)。 这张图显示了马头附近和天空中的一些小灰色区域,这些区域是洞。

使用图像域孔填充技术填充插值帧中的孔,以生成最终插值图像。这是 FRUC 库的输出。

Image shows the interpolated frame with pixel holes filled in.
图 9.FRUC 库的输出

调用应用程序可以将此插值帧与原始帧交错,以提高视频或游戏的帧速率。图 10 显示了前一个图像和下一个图像之间交错的插值帧。

GIF shows interpolated frame between original two-frame GIF.
图 10 插值帧交错

最后,为了扩展可以利用 NVOFA 硬件的平台, Optical Flow SDK 4.0 还引入了对 Windows Subsystem for Linux 的支持。

10 月推出 NVIDIA Optical Flow SDK 4.0 时,利用 NVIDIA Ada 架构和 FRUC 库。如果您有任何问题,请联系 Video DevTech Support 。

 

 

标签