用于 HTTP 自适应比特率流的高效多编码算法

来源:Picture Coding Symposium Channel
主讲人:Vignesh V Menon
内容整理:尹文沛
在这篇文章中,作者研究了各种多编码算法(即多速率和多分辨率),并为大规模 HTTP 自适应流部署提出了新颖的多编码算法。实验结果表明,与独立编码相比,所提出的针对最高压缩效率优化的多重编码算法将整体编码时间减少了 39%,比特率增加了 1.5%。与独立编码相比,其优化版本可最大限度地节省时间,将整体编码时间减少 50%,比特率提高 2.6%。

目录

  • 简介

  • 背景和相关工作

  • 先进算法

    • 多速率编码算法

    • 多编码算法

  • 在HAS中高效率的多编码

    • 提出的启发式算法

    • 提出的多速率编码算法

    • 多编码算法

  • 评估

    • 测试方法

    • 实验结果

1简介

思科的视觉网络指数 (VNI) 预测,到 2022 年,82% 的互联网流量将包含视频。视频流量的增加以及分辨率、帧速率和位深度等视频特性的改进,提出了开发大规模高效视频编码环境的需求。为了满足对通过 Internet 流式传输高质量视频内容的高需求并克服相关挑战,运动图像专家组 (MPEG) 开发了一种称为基于 HTTP 的动态自适应流 (MPEG-DASH)的标准。MPEG-DASH 是 HTTP 自适应流媒体 (HAS) 的标准解决方案。HAS 背后的主要思想是将视频内容分成多个片段,并以不同的比特率和分辨率对每个片段进行编码,称为表示,这些表示存储在普通的 HTTP 服务器中。存储这些表示是为了使视频传输不断适应客户端的网络条件和设备功能。高效视频编码 (HEVC) 是标准视频编解码器之一,与其前身高级视频编码 (AVC)相比,可显着提高编码效率。这种改进是以显着增加时间复杂度为代价实现的,这对内容提供商来说是一个挑战。

这对于基于 DASH 的内容供应更为重要,因为它需要对同一视频内容的多个表示进行编码。在本文中,我们假设一组 W × H 视频的表示(其中 W 和 H 分别表示帧宽度和帧高度),如图 1 所示,其中每个框表示分辨率层 i 的表示,空间分辨率为 以比特率 编码。N 表示分辨率的数量, 表示每个分辨率层 i 的比特率数量。由于各种表示是以不同比特率或分辨率编码的相同内容,因此可以共享它们的编码信息以加速其他表示的编码。

本文的主要贡献是为图 1 所示的高效多编码系统优化 HAS 编码。本文讨论了现有的最先进的多速率和多编码算法,并提出了新的算法,这些算法在降低计算复杂度方面提供了更好的权衡,并在比特率和视觉质量之间保持了相同的权衡。当所有表示都以单一分辨率但不同比特率进行编码时,使用术语多速率。当所有表示都以多种分辨率编码时,使用术语多分辨率。当以各种分辨率提供单个视频并且每个分辨率以不同比特率进行编码时,将使用术语多编码。

图1 DASH 中使用的编码视频表示。W 和 H 分别表示框架宽度和框架高度。在 N 层分辨率金字塔中,第 1 层(L1)代表最低分辨率,第 N 层(LN)代表最高分辨率。在每一层 i 中,提供了具有目标比特率 ∀j ∈ [1, Mi] 的 Mi 编码 HEVC 比特流。  和 分别代表分辨率层 i 的最高和最低比特率表示

2背景和相关工作

通过利用大量编码树单元 (CTU) 级速率失真优化 (RDO) 过程,HEVC 中的运动补偿得到了改进。帧首先被划分为切片,然后它们被进一步划分为称为 CTU 的方形区域。这些 CTU 是 HEVC 的主要构建块,每个 CTU 可以递归地划分为更小的方形区域,称为编码单元 (CU)。从 0 到 3 的深度值分别分配给从 64 × 64 到 8 × 8 像素的 CU 大小。因此,为了找到最佳的 CTU 划分,64 个 CU,包括 1 个 64 × 64 CU、4 个 32 × 32 CU、16 个 16 × 16 CU 和 32 个 8 × 8 CU.

此外,对于图片内和图片间预测,每个 CU 可以沿着编码树边界进一步细分为更小的块,称为预测单元 (PU)。帧间预测模式包括 Merge/Skip 2N×2N、Inter 2N×2N、Symmetric Motion Partition(SMP,包括 Inter 2N×N 和 Inter N×2N)、非对称 Motion Partition(AMP,包括 Inter 2N×nU、Inter  2N×nD、Inter nL×2N、Inter nR×2N)和Inter N×N,而帧内预测模式包括Intra 2N×2N和Intra N×N。根据所有模式的最小率失真成本(RD-cost)选择最佳PU模式。此外,对于预测残差的变换编码,每个 CU 可以划分为多个变换块 (TB),其大小也可以从 4x4 到 32x32 像素 。一般来说,考虑到可能的 CU、PU 和 TU 分区、帧间编码 CU 的多个参考帧搜索过程以及实际的运动估计算法,为每个 CTU 找到最佳分区是一个耗时的过程。

几种最先进的算法首先对单个表示进行编码,称为参考表示。在此编码期间,编码器会创建分析元数据文件,其中包含 CU、PU、TU 分区以及 HEVC 比特流本身等信息。剩余的表示,称为依赖表示,分析上述元数据,然后重用它来跳过搜索某些分区,从而显着降低计算复杂度。快速多速率编码算法的关键思想是利用编码器分析中引入的冗余,同时在每个分辨率层以不同的目标比特率对同一视频进行编码。快速多速率编码提出了许多算法,范围从限制 CU 深度搜索级别到重用额外的可用信息以帮助其他编码决策。多编码方法的特点是将快速多速率方法和多分辨率编码优化结合到不同比特率和空间分辨率表示的每个视频。例如,在多分辨率的情况下,通过重用参考编码的编码信息(即最高分辨率的最高质量)来约束相关编码的 RDO,将多速率编码算法扩展到多编码。

3先进算法

在本节中,我们将描述本文中考虑的最先进的多速率和多编码算法。

多速率编码算法

在本文中,我们在 HEVC的背景下讨论了四种最先进的多速率算法。

  1. CU 估计的单界:在该算法中,在分辨率层 i 中,首先对最高质量的表示,即 进行编码。然后使用其深度信息对相关表示进行编码,基于CU在较高质量表示中通常倾向于具有较高深度值的观察,当对相关表示进行编码时,仅搜索其深度级别小于或等于参考表示中位于同一深度级别的CU。这样,在搜索中跳过了更大的深度,节省了大量时间;如果在参考编码中计算出一个块的最佳 CU 深度为 1(即 32×32 像素),则从 RDO 中跳过深度为 2(即 16x16 像素)和深度为 3(即 8x8 像素)的 CU 在从属表示中编码位于同一位置的 CU 时的过程。

  2. CU 估计的双界:在该算法中,在分辨率层 i 中,来自 和 即最高和最低质量表示的信息用于降低编码时间复杂度 (Mi > 2)。首先, 被编码为独立编码(即独立于其他表示的 RDO),然后从这种编码中获得的信息用于编码 。剩余的中间质量表示 , 使用双边界方法进行编码,用于 CU 深度搜索和参考帧选择。在 CU 深度搜索中,可能的深度级别搜索窗口受限于 表示中的最高深度值和 表示中的最低深度值。此外,如果 和 表示具有相同的参考帧,则会跳过其他参考帧搜索

  3. x265 算法1: 在该算法中,依赖表示,即 , 编码 强制在 表示中做出最佳决策,例如 (i) 切片类型和 (ii) 场景剪切决策 (iii) 四叉树结构、(iv) 预测模式和 (v) 参考索引和跳过所有其他可能决策的 RDO 过程。

  4. x265算法2: 在该算法中,依赖表示,即 编码 重用参考表示中的所有 CU 和 PU,即 没有额外的 RDO。此外,从属表示还采用 x265 中定义的静态细化技术。如果参考深度为 d,则通过计算最佳 PU 模式,通过使用 RDO 与分割 CU 的成本(即深度 d + 1)来重新评估它。此外,来自参考表示的运动矢量被用作当前表示中对应 PU 的运动搜索的预测器。

多编码算法

在本文中,我们考虑了最近提出的多编码算法,简要描述如下:

  1. 使用 x265 Algorithm2 编码, 作为参考表示。
  2. 来自 的编码器分析数据与 表示共享,其中它按因子 进行缩放。 表示使用 x265 算法 2。
  3. 剩余的比特率表示 使用步骤 (i) 中使用的 x265 算法 2 进行编码。
  4. 对剩余的分辨率层 按升序重复步骤2。

4在HAS中高效率的多编码

在本节中,我们首先描述我们提出的启发式算法,然后介绍我们提出的多速率和多编码算法。

提出的启发式算法

我们提出了某些启发式方法,可以与单边界和双边界结合应用于 CU 估计算法,在不影响编码效率的情况下提高整体编码速度。

  1. 预测模式启发式算法:在分辨率层i,如果CU深度递归到表示的深度,则对, 提出预测模式启发式如下:

如果在 表示中选择了跳过模式,则仅针对 Merge/Skip 2N×2N、Inter 2N×2N 模式评估 RDO。

如果在 表示中选择了 2Nx2N 模式,则跳过 AMP 模式的 RDO。

如果在 表示中选择了帧间预测模式,则跳过帧内预测模式的 RDO。

在 CU 估计的双界中,如果为 和 表示选择了帧内预测模式,则仅针对合并/跳过 2N×2N 和 , j ∈ [2, Mi-1] 中的帧内预测模式评估 RDO。

  1. 运动估计启发式算法:在分辨率层i,如果CU深度递归到表示的深度并且PU大小也与相同,则对 提出运动估计启发式 如下:

强制使用与 表示相同的参考系。

运动矢量预测器 (MVP) 被设置为 表示的运动矢量 (MV)。

在 CU 估计的双界中,如果 表示的 MV 和 表示的 MV 彼此接近,则运动搜索范围减小到较小的窗口。搜索范围被确定为 MV 的 x 坐标和 y 坐标之间的最大差值。

基于上述启发式,我们引入了两种多速率编码算法:(i)多速率算法1和(ii)多速率算法2。

提出的多速率编码算法

Multi-rate Algorithm-1:它结合了上文解释的 CU 估计算法的单边界和提出的启发式算法。来自第一个表示的编码器分析信息用于对表示 进行编码。

Multi-rate Algorithm-2:它结合了在上文解释的 CU 估计算法的双界和建议的启发式算法。当 2' data-formula-type='inline-equation'> 时应用此模式。

如图 2 所示,分辨率 i, 的 第 表示通过使用来自 的分析信息使用多速率算法 1 进行编码。来自 和 表示的编码器分析信息用于对表示 进行编码。

图2 多速率算法 2 中的编码器分析共享,用于具有 Mi 表示的比特率阶梯。 红色箭头表示使用 Multi-rate Algorithm-1 进行分析共享, 蓝色箭头 表示使用 Multi-rate Algorithm-2 进行分析共享

多编码算法

在以下提出的算法中跳过了对帧内编码 CTU 的优化,因为对帧内编码 CTU 的优化对编码器加速的贡献微不足道。

Multi-encoding Algorithm-1:在我们提出的第一个多编码算法中,我们执行以下步骤:

  1. 使用 Multi-rate Algorithm-2 编码, 作为参考表示。

  2. 来自 的 CU 深度信息与 共享,其中它按因子 进行缩放。特别地,该信息用作下限,即,如果当前编码深度低于参考编码CU深度,则强制分割CU。该分辨率层的剩余比特率表示 其中 j ∈ [2, M2] 使用步骤 (i) 中使用的多速率算法 2 进行编码。

  3. 对剩余的分辨率层 i ∈ [3, N] 按升序重复步骤 (ii)。

Multi-encoding Algorithm-2:第二个提出的多编码算法是 Multiencoding Algorithm-1 的一个小变种,旨在跨分辨率层扩展 CU 估计算法的双界:

  1. 使用 Multi-rate Algorithm-2 编码, 作为参考表示。

  2. 来自 , 的 CU 深度信息与 共享,其中它按 的因子进行缩放。特别地,该信息用作下限,即,如果当前编码深度低于参考编码 CU 深度,则强制分割 CU。

  3. 来自 , 的缩放 CU 深度信息和来自 的 CU 深度信息与 , 共享,分别用作 CU 深度搜索的下限和上限。

  4. 剩余的比特率表示 ,其中 使用步骤 (i) 中使用的多速率算法 2 进行编码。

  5. 对剩余的分辨率层 按升序重复步骤 2。

5评估

在本节中,我们首先介绍本文使用的测试方法,然后介绍实验结果。

测试方法

本文中提出的多编码算法是使用 x265 v3.4 实现的,其中veryslow 预设是 x265 实际可用的最高质量预设。所有实验均在配备 Intel Xeon Gold 5218R(80 核,频率为 2.10 GHz)的双处理器服务器上运行。我们使用两组测试序列:

(i) JVET 测试序列

(ii) 专业制作的代表各种类型内容的 UltraHD HDR 电影内容

在本文中,多编码方法的描述和实现仅限于分辨率为彼此 2 的整数次幂的非隔行内容。对于多编码方案,我们考虑 L1 = 4、L2 = 2 和 L3 = 1(其中 M1 = M2 = M3 = 4 且 N = 3);最低分辨率为960×540,中间分辨率为1920×1080,最高分辨率为3840×2160。较低分辨率的源是通过使用 FFmpeg 应用双三次缩放从原始视频源生成的。每种分辨率考虑的比特率如表 I 所示。

表I

对每个测试序列的结果编码时间、PSNR 和 VMAF 质量 以及实现的比特率进行比较。在实验结果中,ΔT 表示相对于独立编码的所有比特率表示的累积时间节省;Bjøntegaard delta 速率 BDRP 和 BDRV 是指表示的比特率相对于独立编码的比特率的平均增加,以分别保持相同的 PSNR 和 VMAF。正 BDR 表示与独立编码相比,所提出方法的编码效率下降,而负 BDR 表示编码增益。

计算 和 以比较各种多编码方法的性能。 的值越低,所提出算法的性能越好。x265 Algorithm-1 使用 x265 CLI 选项 analysis-load-reuse-level=6 在依赖表示中实现,而 x265 Algorithm-2 使用 x265 CLI 选项实现:analysis-load-reuse-level=10,fine-intra  = 4,refineinter = 2,refine-mv = 1 在依赖表示中。

在最先进的多编码方案中,我们使用 scalefactor=2,analysis-load-reuse-level=10,refine-intra=4,fineinter=2,refine-mv=1 作为加载模式来实现跨决议共享分析。

实验结果

在本节中,我们首先介绍我们提出的多速率编码算法的结果,然后是多编码算法。

多速率编码:表 II 显示了最新技术和我们提出的多速率编码算法的结果。据观察,多速率算法 1 和多速率算法 2 分别将 ∆T 提高了 12% 和 11%,与单边界和双边界的 CU 估计相比,BDR 的增加可以忽略不计。还观察到,与 x265 算法-1 和 x265 算法-2(分别为 8.85% 和 16.10%)相比,所提出的多速率算法表现出显着更低的 值(分别为 2.31% 和 4.88%)。

表II

多编码:表 III 显示了最先进的多重编码算法的结果(参见第 III-B 部分)。平均而言,整体编码时间减少了 80.05%,BDRV 为 9.59%。

表III

表 IV 列出了所提出的多重编码算法的结果。当我们使用 Multi-encoding Algorithm-1 时,ΔT 为 39.72%,BDRV 为 1.55%。对于编码效率非常严格且编码加速不是那么重要的编码应用,这种多编码算法将是一个理想的选择。对于多编码算法 2,ΔT 为 50.9%,BDRP 为 3.45%,BDRV 为 2.63%。据观察,与最先进的算法(12%)相比,所提出算法的 值(分别为 3.89% 和 5.17%)较低。

表IV

因此,所提出的算法在编码速度和比特率之间提供了更好的折衷。

最后附上演讲视频:

(0)

相关推荐