特别声明,本文不做任何商业用途,仅作为个人学习相关论文的翻译记录。本文对原文内容直译,一切以论文原文内容为准,对原文作者表示最大的敬意。如有任何侵权请联系我下架相关文章。
摘要:
在神经视频编解码器中,设计一个高效的熵模型来准确预测量化潜在表示的概率分布是至关重要但充满挑战的。然而,大多数现有的视频编解码器直接使用图像编解码器中的现成熵模型来编码残差或运动,并未充分利用视频中的时空特性。为此,本文提出了一种强大的熵模型,可以高效捕获时空依赖性。
具体来说,我们引入了潜在先验,用于利用潜在表示之间的相关性来压缩时间冗余。同时,我们提出了双空间先验,以一种适合并行的方式减少空间冗余。此外,我们的熵模型具有多样性。除了估计概率分布外,我们的熵模型还可以在空间通道维度上生成量化步长。这种内容自适应的量化机制不仅帮助我们的编解码器在单个模型中实现平滑的速率调整,还通过动态比特分配提升了最终的率失真性能。
实验结果表明,基于我们提出的熵模型的神经编解码器在UVG数据集上,与使用最高压缩比配置的H.266 (VTM) 相比,可以节省18.2%的比特率。这标志着神经视频编解码器发展的一个新里程碑。
paper: pdf
code: https://github.com/microsoft/DCVC
引言:
近年来,神经图像编解码器的发展迅速。在其发展过程中,许多研究集中于熵模型的设计,以准确预测量化潜在表示的概率分布,例如因子化模型、超先验模型、自回归先验模型、高斯混合模型以及基于Transformer的模型等。得益于这些不断改进的熵模型,神经图像编解码器的压缩比已经超越了最佳传统编解码器H.266的帧内编码。受神经图像编解码器成功的启发,神经视频编解码器最近也受到越来越多的关注。
现有的神经视频编解码器主要分为三类:基于残差编码、基于条件编码和基于三维自动编码器的解决方案。其中,许多方法属于基于残差编码的解决方案。残差编码源于传统的混合视频编解码器,其具体过程是首先生成运动补偿预测,然后对其与当前帧的残差进行编码。对于基于条件编码的解决方案,时间帧或特征被作为当前帧编码的条件。与残差编码相比,条件编码具有较低或相等的熵界。至于基于三维自动编码器的解决方案,它通过扩展输入维度自然地继承了神经图像编解码器的优势,但它带来了更大的编码延迟并显著增加了内存成本。
总的来说,这些现有工作大多集中于通过探索不同的数据流或网络结构来生成优化的潜在表示。至于熵模型,它们通常直接使用现成的神经图像编解码器解决方案(如超先验模型和自回归先验模型)来对潜在表示进行编码。在视频熵模型的设计中,空间-时间相关性尚未被充分利用。因此,以往最先进的神经视频编解码器的率失真性能有限,仅略优于2013年发布的H.265。
因此,本文提出了一种综合熵模型,能够高效地利用空间和时间相关性,从而帮助神经视频编解码器超越最新的传统标准H.266。具体来说,我们引入了潜在先验和双空间先验。潜在先验通过帧间的潜在表示来探索时间相关性,利用前一帧的量化潜在表示预测当前帧的分布。通过级联训练策略,形成了潜在表示的传播链。这种机制使得能够在当前帧和长时参考帧的潜在表示之间建立隐式连接,从而帮助神经编解码器进一步压缩潜在表示中的时间冗余。
在我们的熵模型中,提出了双空间先验以减少空间冗余。大多数现有的神经编解码器依赖于自回归先验来探索空间相关性。然而,自回归先验是一种序列化的解决方案,需要遵循严格的扫描顺序。这种解决方案不利于并行化,导致推理速度非常缓慢。相比之下,我们的双空间先验采用了基于棋盘上下文模型的两步编码方案,这种方法时间效率更高。在棋盘模型中,所有通道使用相同的编码顺序(例如,先编码偶数位置,再将其用作奇数位置的上下文)。然而,这种固定的顺序无法高效处理各种视频内容,因为在某些情况下,先编码偶数位置的率失真性能可能不如先编码奇数位置。因此,为了解决这一问题,我们的双空间先验引入了一种机制,即首先对偶数和奇数位置的部分潜在表示进行编码,然后利用所有位置的上下文对剩余的潜在表示进行编码。同时,在两步编码过程中也探索了通道之间的相关性。我们的双空间先验在不增加额外编码依赖的情况下,使空间上下文的范围扩大了一倍,并充分利用了通道上下文,从而实现更准确的分布预测。
对于神经视频编解码器,另一个挑战是如何在单个模型中实现平滑的码率调整。对于传统编解码器,这通常通过调整量化参数来实现。然而,大多数神经编解码器缺乏这一能力,使用固定的量化步长。为了达到不同的码率,这些编解码器需要重新训练模型,从而带来巨大的训练和模型存储负担。为了解决这一问题,我们提出了一种基于多粒度的自适应量化机制,这种机制由我们的熵模型支持。在我们的设计中,整体量化步长由用户设置以达到特定目标码率,然后乘以通道级别的量化步长,因为不同的通道携带不同重要性的信息,类似于通道注意机制。最后,空间-通道级别的量化步长由熵模型生成。这种设计帮助我们的编解码器能够适应不同的视频内容,并在每个位置实现精确的码率调整。此外,利用熵模型学习量化步长不仅使我们的编解码器在单一模型中获得了平滑码率调整的能力,还通过为重要内容分配更多比特来提升最终的率失真性能。这种基于内容的自适应量化机制通过动态比特分配提高了最终的压缩比。
借助我们多功能的熵模型,单一模型的神经编解码器在压缩性能上实现了显著提升。例如,与现有的最先进神经视频编解码器相比,我们在UVG数据集上的码率节省达到了57.1%。更重要的是,与最佳传统编解码器H.266(VTM)相比,在UVG数据集上,当面向PSNR(峰值信噪比)时,我们的编解码器实现了平均18.2%的码率节省;当面向MS-SSIM时,对应的码率节省甚至达到了35.1%。这些显著的改进表明,我们的模型在神经视频编解码器的发展中迈出了新的里程碑。
我们的贡献总结如下:
- 对于神经视频编解码器,我们设计了一种强大且并行友好的熵模型来提高概率分布的预测精度。所提出的潜在先验和双空间先验可以分别高效地捕捉时间和空间的依赖性,从而帮助我们进一步压缩视频中的冗余。
- 我们的熵模型具有多功能性。除了生成概率分布参数外,它还可以在空间-通道级别生成量化步长。通过多粒度的量化机制,我们的神经编解码器可以在单一模型中实现平滑的码率调整。同时,空间-通道级别的量化步长是内容自适应的,通过动态比特分配提高了最终的率失真性能。
- 得益于所提出的熵模型,我们的神经视频编解码器将压缩比率推向了一个新的高度。据我们所知,这是首个端到端的神经视频编解码器,其性能超越了使用最高压缩比配置的H.266(VTM)。在UVG数据集上,与H.266(VTM)相比,以PSNR为导向时,我们实现了18.2%的码率节省;以MS-SSIM为导向时,码率节省甚至更高。
相关工作:
神经图像压缩
近年来,神经图像编解码器得到了快速发展。早期的工作使用基于压缩自动编码器的框架,与JPEG 2000在率失真性能上相当。最近,许多工作聚焦于熵模型的设计。例如,Ballé等人提出了因子化模型,在率失真性能上优于JPEG 2000。超先验模型引入了分层设计,并使用额外比特来估计分布,从而获得了与H.265相当的结果。随后,自回归先验被提出,用于探索空间相关性,并与超先验模型结合,进一步提高了压缩比。然而,自回归先验对所有空间位置的推理是序列化的,因此速度非常慢。棋盘上下文模型通过引入两步编码解决了复杂性问题。此外,为了进一步提升压缩比,高斯混合模型被提出,其率失真性能可与H.266相媲美。最近,视觉Transformer引起了广泛关注,其对应的熵模型帮助神经图像编解码器超越了H.266的帧内编码性能。
神经视频压缩
神经图像编解码器的成功也推动了神经视频编解码器的发展。开创性工作DVC遵循传统编解码器的框架,采用基于残差编码的结构,其中首先生成运动补偿预测,然后利用超先验模型对残差进行编码。在自回归先验的帮助下,其后续工作DVCPro实现了更高的压缩比。
最近的大多数工作都遵循这一运动估计和残差编码框架,并提出了更高级的网络结构来生成优化的残差或运动。例如,某些工作通过学习的参数对残差进行自适应缩放,或者在尺度空间内进行光流估计以减少快速运动区域的残差能量。某些方法还在特征空间中引入了可变形补偿以改进预测效果。此外,还有使用多个参考帧来减少残差能量的方法,以及通过运动预测改进运动编码效率的研究。
除了残差编码框架,其他编码框架也得到了探索。例如,三维自动编码器被提出用于同时对多帧进行编码。这是一种通过扩展输入维度自然继承神经图像编解码器优势的方式。然而,这种框架会带来显著的编码延迟,并且不适用于实时场景。另一种新兴的编码框架是条件编码,其熵界比残差编码更低或相等。例如,某些工作使用条件编码对前景内容进行编码。在DCVC中,条件是可扩展的高维特征,而非三维预测帧。后续研究进一步通过引入特征传播和多尺度时间上下文提升了压缩比。
然而,大多数现有的神经视频编解码器主要关注如何生成优化的潜在表示及其网络结构设计。对于潜在表示的熵模型,通常直接使用来自神经图像编解码器的现成解决方案。一些研究开始关注这一问题,例如某些工作提出了条件熵编码,或者利用从时间特征中提取的时间上下文先验。然而,这些研究更关注时间相关性的利用。尽管一些工作也研究了空间相关性,但所使用的自回归先验导致了非常缓慢的编码速度。现阶段亟需一种既能充分利用空间-时间相关性又具有低复杂度的熵模型。为满足这一需求,我们特别设计了潜在先验和高效的双空间先验,为熵模型赋能,并将压缩比推向新高度。此外,这些方法通常需要为每个码率点训练单独的模型。相比之下,我们设计了基于多粒度量化的内容自适应量化机制,由我们的熵模型驱动。这种机制帮助我们的编解码器在单一模型中实现了平滑的码率调整能力。
方法:
在传统的残差编码框架下,我们采用了基于条件编码的框架,而不是残差编码框架。具体来说,我们遵循DCVC及其改进的工作,并重新设计了其中的核心模块。我们的编解码器框架如图1所示。整个编码过程可以大致分为以下三个步骤:时序上下文生成、上下文编码/解码和重构。
时序上下文生成:为了充分利用时间相关性,我们通过时序上下文挖掘模块在不同分辨率上生成多尺度上下文 C 0 t , C 1 t , C 2 t C_0^t, C_1^t, C_2^t C0t,C1t,C2t (更多模块细节参见相关文献)。为了承载更丰富的信息,我们使用了时序特征 F t − 1 F_{t-1} Ft−1 而不是前一帧解码的帧 x t − 1 x_{t-1} xt−1 作为模块输入。至于运动估计,我们采用轻量级的 SPyNet 进行加速。
上下文编码/解码:在多尺度上下文的条件下,当前帧 x t x_t xt 通过上下文编码器被转换为潜表示 y t y_t yt。为了节约比特率, y t y_t yt 被量化为 y ^ t \hat{y}_t y^t 并发送到算术编码器生成比特流。在解码过程中, y ^ t \hat{y}_t y^t 通过算术解码器从比特流解码并被反量化为 y t y_t yt。在多尺度上下文的条件下,上下文解码器从 y t y_t yt 解码出高分辨率特征 F t F_t Ft。在此编码/解码过程中,如何通过熵模型准确估计 y ^ t \hat{y}_t y^t 的分布至关重要。为此,我们提出了一种混合时空熵模型。此外,我们的熵模型支持单模型内的平滑率调整,这得益于我们提出的多粒度量化机制。
重构:在获得高分辨率特征 F t F_t Ft 后,我们的目标是通过帧生成器生成高质量的重构帧 x t x_t xt。与DCVC仅使用普通残差块不同,我们提出使用基于W-Net的结构,它结合了两个U-Net。这种网络设计在复杂度可接受的情况下有效地扩大了模型的感受野,从而提高了模型的生成能力。
时空混合熵模型
为了进行算术编码,需要知道 y ^ t \hat{y}_t y^t 的概率质量函数 (PMF),以便对其进行编码。然而,我们无法获得其真实的 PMF p ( y ^ t ) p(\hat{y}_t) p(y^t),通常使用估计的 PMF q ( y ^ t ) q(\hat{y}_t) q(y^t) 进行近似。交叉熵 E y ^ t ∼ p [ − log 2 q ( y ^ t ) ] E_{\hat{y}_t \sim p}[-\log_2 q(\hat{y}_t)] Ey^t∼p[−log2q(y^t)] 捕获了算术编码所需的平均比特数(不考虑可忽略的开销)。在本文中,我们遵循现有工作,并假设 q ( y ^ t ) q(\hat{y}_t) q(y^t) 遵循拉普拉斯分布。因此,我们的目标是设计一个熵模型,能够准确估计 q ( y ^ t ) q(\hat{y}_t) q(y^t) 的分布参数,从而降低交叉熵。
为了提高估计的准确性,对于
y
^
t
,
i
,
j
,
k
\hat{y}_{t,i,j,k}
y^t,i,j,k (其中
i
,
j
,
k
i, j, k
i,j,k 分别为高度、宽度和通道索引),我们需要充分挖掘其与已知信息(例如前一帧解码的潜表示、时序上下文特征等)之间的相关性。 理论上,
y
^
t
,
i
,
j
,
k
\hat{y}_{t,i,j,k}
y^t,i,j,k 可能与所有先前解码位置的已知信息相关。对于传统编解码器,由于空间规模的限制,无法显式利用这些相关性,因此通常使用简单的手工规则从少量邻近位置获取上下文。而深度学习能够自动在巨大的空间中挖掘相关性。
因此,我们提出将多种输入传递给熵模型,让模型从丰富的高维输入中提取互补信息。我们的熵模型如图2所示。输入不仅包括常用的超先验 z t z_t zt 和时序上下文 C t 2 C_t^2 Ct2,还包括潜先验 y t − 1 y_{t-1} yt−1。虽然 C t 2 C_t^2 Ct2 和 y t − 1 y_{t-1} yt−1 都来自时间方向,但它们具有不同的特性。例如, C t 2 C_t^2 Ct2 在4倍降采样分辨率上通常包含大量运动信息,而 y t − 1 y_{t-1} yt−1 在16倍降采样分辨率上的潜表示域中,与 y t y_t yt 具有更相似的特性。因此, C t 2 C_t^2 Ct2 和 y t − 1 y_{t-1} yt−1 可以提供互补的辅助信息以改进估计。此外,我们采用了级联训练策略,其中梯度会反向传播到多个帧。通过这种训练策略,形成了潜表示的传播链。这意味着当前帧的潜表示与远程参考帧的潜表示之间也建立了连接。这种连接对于提取多个帧潜表示之间的相关性非常有帮助,从而实现更准确的分布预测。
除了使用潜先验 y t − 1 y_{t-1} yt−1 来丰富输入外,我们的熵模型还采用了双空间先验来挖掘空间相关性。为了追求一种时间高效的机制,我们采用了棋盘模型而不是常用的自回归模型,因为后者会严重降低编码速度。然而,原始棋盘模型中的所有通道都使用相同的编码顺序,即偶数位置总是先编码,然后用于奇数位置的编码上下文。这种编码顺序无法处理各种视频,因为在某些情况下,先编码偶数位置的速率失真性能比先编码奇数位置差。因此,我们设计了双空间先验,其中偶数和奇数位置的部分通道在第一步编码时同时被编码。
如图2所示,潜表示沿通道维度被分割为两个块。在第一步编码中,图2中的上分支将编码第一个块中偶数位置的 y ^ t , ( i + j ) % 2 = 0 , k < C / 2 \hat{y}_{t,(i+j)\%2=0,k<C/2} y^t,(i+j)%2=0,k<C/2,同时,下分支编码第二个块中奇数位置的 y ^ t , ( i + j ) % 2 = 1 , k ≥ C / 2 \hat{y}_{t,(i+j)\%2=1,k \geq C/2} y^t,(i+j)%2=1,k≥C/2。在这两个块中未编码的位置(即图2中的白色区域)被设置为零。在第一步编码之后,编码的 y ^ t , ( i + j ) % 2 = 0 , k < C / 2 \hat{y}_{t,(i+j)\%2=0,k<C/2} y^t,(i+j)%2=0,k<C/2 和 y ^ t , ( i + j ) % 2 = 1 , k ≥ C / 2 \hat{y}_{t,(i+j)\%2=1,k \geq C/2} y^t,(i+j)%2=1,k≥C/2 被融合在一起,进一步为第二步编码生成上下文。在第二步编码中,每个块中剩余的位置被编码。上分支编码第一个块中奇数位置的 y ^ t , ( i + j ) % 2 = 1 , k < C / 2 \hat{y}_{t,(i+j)\%2=1,k<C/2} y^t,(i+j)%2=1,k<C/2,下分支编码第二个块中偶数位置的 y ^ t , ( i + j ) % 2 = 0 , k ≥ C / 2 \hat{y}_{t,(i+j)\%2=0,k \geq C/2} y^t,(i+j)%2=0,k≥C/2。如图2所示,这种编码方式使得第二步编码可以从所有位置的上下文中受益。与原始棋盘模型相比,空间上下文的范围翻倍,从而实现更准确的分布预测。需要注意的是,对于两个步骤,第一个块和第二个块将被相加后发送到算术编码器。因此,与原始棋盘模型相比,我们的双空间先验不会带来额外的编码延迟。
此外,从通道维度的角度来看,我们的双空间先验还挖掘了通道间的相关性。在第一步编码过程中,编码的 y ^ t , ( i + j ) % 2 = 0 , k < C / 2 \hat{y}_{t,(i+j)\%2=0,k<C/2} y^t,(i+j)%2=0,k<C/2 也可以用作 y ^ t , ( i + j ) % 2 = 0 , k ≥ C / 2 \hat{y}_{t,(i+j)\%2=0,k \geq C/2} y^t,(i+j)%2=0,k≥C/2 编码的条件。对于 y ^ t , ( i + j ) % 2 = 1 , k ≥ C / 2 \hat{y}_{t,(i+j)\%2=1,k \geq C/2} y^t,(i+j)%2=1,k≥C/2 和 y ^ t , ( i + j ) % 2 = 1 , k < C / 2 \hat{y}_{t,(i+j)\%2=1,k<C/2} y^t,(i+j)%2=1,k<C/2 的编码过程也是类似的,其中通道的编码方向相反。总之,我们提出的双空间先验通过更高效地挖掘空间和通道位置的相关性,进一步压缩了 y ^ t \hat{y}_t y^t 的冗余。
单一模型中的速率调整
在大多数现有的神经编解码器中,单一模型无法实现比特率调整是一大痛点。为了实现不同的比特率,模型需要通过调整速率失真损失的权重重新训练。这会带来巨大的训练成本和模型存储负担。为了解决这个问题,我们提出了一种自适应量化机制,以支持神经编解码器在单一模型中实现广泛的比特率范围。
如图3所示,我们的多粒度量化涉及三种不同类型的量化步长 (QS):全局量化步长 q s global q_{s\text{global}} qsglobal,通道级量化步长 q s ch q_{s\text{ch}} qsch,以及空间通道级量化步长 q s sc q_{s\text{sc}} qssc。全局量化步长 q s global q_{s\text{global}} qsglobal 是一个单一值,由用户输入以控制目标比特率。由于所有位置都采用相同的量化步长, q s global q_{s\text{global}} qsglobal 带来了粗粒度的量化效果。因此,受通道注意力机制的启发,我们设计了一个调节器 q s ch q_{s\text{ch}} qsch,以对不同通道的量化步长进行缩放,因为不同通道携带的信息重要性不同。然而,不同的空间位置由于视频内容的多样性也具有不同的特性。因此,我们遵循相关文献,学习了空间通道级量化步长 q s sc q_{s\text{sc}} qssc,以实现每个位置的精确调整。
空间通道级量化步长 q s sc q_{s\text{sc}} qssc 是由我们的熵模型生成的,如图2所示。需要注意的是,对于每一帧,它会动态调整以适应视频内容。这种设计不仅帮助我们在单一模型中实现平滑的比特率调整,还通过内容自适应的比特分配提升了最终的速率失真性能。重要信息(例如,对于当前帧的重构或被后续帧编码引用至关重要的信息)将分配更小的量化步长。我们在图4中展示了 q s sc q_{s\text{sc}} qssc 的一个可视化示例。在这个示例中,模型学习到运动的玩家更为重要,因此为这些区域生成了更小的量化步长。相反,背景部分则具有更大的量化步长,从而带来了显著的比特率节省(如黄色线条所示的区域)。第4.3节中的消融研究表明, q s sc q_{s\text{sc}} qssc 在多个数据集上带来了显著的改进。
在解码过程中,应用了对应的反量化操作。需要注意的是,全局量化步长 q s global q_{s\text{global}} qsglobal 需要与比特流一起传输至解码器。然而,这种开销可以忽略不计,因为对于每一帧或视频仅传输单个值(用户可灵活设置)。调节器 q s ch q_{s\text{ch}} qsch 属于神经编解码器的一部分,并在训练期间被学习。
实验:
4.1实验设置
数据集:我们使用 Vimeo-90k 数据集进行训练。视频被随机裁剪成 256 × 256 256 \times 256 256×256 的小块。对于测试,我们使用与相关文献中相同的测试视频。这些测试视频广泛用于传统和神经视频编解码器的评估,包括 HEVC Class B、C、D、E 和 RGB。此外,还测试了来自 UVG 和 MCL-JCV 数据集的 1080p 视频。
测试条件:我们对每个视频测试 96 帧。帧间周期设置为 32,而不是 10 或 12。这是因为帧间周期为 32 更接近实际应用中的使用场景。例如,与帧间周期为 12 相比,帧间周期为 32 对 HM 编解码器带来了平均 23.8 % 23.8\% 23.8% 的比特率节省。我们遵循大多数现有工作的低延迟编码设置。压缩比通过 BD-Rate 衡量,其中负值表示比特率节省,正值表示比特率增加。
基准方法:除了使用 x265(使用“veryslow”预设),我们的基准方法还包括 HM-16.20 和 VTM-13.2,它们分别代表 H.265 和 H.266 的最佳编码器。对于 HM 和 VTM,我们按照相关文献中所述,使用最高压缩比的配置。此外,我们还比较了现有的最新神经视频编解码器,包括 DVCPro、MLVC、RLVC、DCVC,以及 Sheng 2021 的方法。
实现与训练细节:运动矢量的潜表示的熵模型和量化方法与 y t y_t yt 的方法相同,唯一的区别在于熵模型的输入。在运动矢量的编码中,熵模型的输入是相应的超先验和潜先验,即来自上一帧的量化潜表示。对于运动矢量的编码,没有时序上下文先验,因为时序上下文的生成依赖于已解码的运动矢量。此外,由于我们的目标是实现单一模型处理多种比特率,我们还训练了一个支持这种功能的神经图像编解码器,用于帧内编码。
在训练过程中,损失函数包括失真和比特率:
Loss
=
λ
⋅
D
+
R
。
\text{Loss} = \lambda \cdot D + R。
Loss=λ⋅D+R。
其中
D
D
D 表示输入帧和重构帧之间的失真,可以是
L
2
L_2
L2 损失或 MS-SSIM 损失(针对不同的视觉目标)。
R
R
R 表示用于编码
y
^
t
\hat{y}_t
y^t 和运动矢量潜表示的比特数,以及用于编码其对应超先验的比特数。
我们采用了多阶段训练,与相关文献相同。此外,为了训练支持比特率调整的单一模型,我们在不同的优化阶段使用不同的 λ \lambda λ 值。为简化训练过程,使用了 4 个 λ \lambda λ 值(85、170、380、840)。在训练过程中,将通过速率失真损失学习 4 个 q s global q_{s\text{global}} qsglobal 值,每个值对应一个 λ \lambda λ 值。我们分别对图像和视频模型进行训练,它们具有不同的 q s global q_{s\text{global}} qsglobal 值。需要注意的是,虽然在训练中仅使用了 4 个 λ \lambda λ 值,但模型仍可以通过在测试过程中手动调整 q s global q_{s\text{global}} qsglobal 实现平滑的比特率调整,相关研究在第 4.4 节中进行了讨论。
4.2 与现有最新方法的比较
表 1 和表 2 分别展示了在 PSNR 和 MS-SSIM 指标下的 BD-Rate(%)比较。最佳的传统编解码器 VTM 被用作基准锚点。从表 1 可以看出,我们的神经编解码器在所有数据集上相较于 VTM 实现了平均 4.7 % 4.7\% 4.7% 的比特率节省。相比之下,第二好的方法 Sheng 2021 [41] 明显落后于 VTM,其比特率增加了 35.7 % 35.7\% 35.7%。据我们所知,这是首个端到端神经视频编解码器在使用最高压缩比配置时超过 VTM,这标志着神经视频编解码器发展的一个重要里程碑。特别是,我们的神经编解码器在 1080p 视频(HEVC B、HEVC RGB、UVG 和 MCL-JCV)上表现更佳。图 5 显示了这些数据集上的速率失真曲线。从图中可以发现,在相同质量下,我们的编解码器使用了最少的比特。这些结果验证了我们的熵模型在利用视频数据之间相关性上的有效性。此外,随着未来高分辨率视频的更广泛应用,我们的神经编解码器的优势将更加明显。
在面向 MS-SSIM 的测试中,我们的神经视频编解码器表现出更大的改进。如表 2 所示,我们在所有数据集上相较于 VTM 实现了平均 46.4 % 46.4\% 46.4% 的比特率节省。
4.3 消融研究
为了验证各个组件的有效性,我们进行了全面的消融研究。我们分析了熵模型输入、双空间先验、多粒度量化以及帧生成器设计的影响。为简化分析,我们仅在 HEVC 测试集上进行比较。结果通过 BD-Rate(%)进行衡量。
熵模型的输入:如图 2 所示,我们的熵模型包含三种不同的输入:超先验、时序上下文先验和潜先验。表 3 比较了这些输入的有效性。当移除潜先验时,比特率增加了 10.1 % 10.1\% 10.1%。如果仅启用一种先验输入,最重要的两个输入分别是超先验( 15.6 % 15.6\% 15.6%)和潜先验( 19.3 % 19.3\% 19.3%)。从这些比较中可以发现,超先验仍然是最重要的,但通过潜先验丰富熵模型输入也带来了显著的比特率节省。
不同的空间先验:表 4 比较了不同空间先验模块在探索 y ^ t \hat{y}_t y^t 内部相关性方面的效果。测试的空间上下文模型包括我们提出的双空间先验、棋盘先验以及并行不友好的自回归先验。从表中可以发现,我们的双空间先验带来了 14.1 % 14.1\% 14.1% 的比特率节省,相较于棋盘先验有 6.2 % 6.2\% 6.2% 的提升。这验证了扩大空间上下文范围和挖掘跨通道相关性的益处。此外,我们还发现自回归先验可以进一步显著节省比特率( 12.0 % 12.0\% 12.0%)。然而,考虑到其极慢的编码和解码速度,我们仍然没有在神经编解码器中采用它。
多粒度量化:如第 3.3 节所述,多粒度量化在单一模型中支持比特率调整,同时通过内容自适应的比特分配提高了最终的速率失真性能。表 5 展示了多粒度量化的 BD-Rate 比较。从表中可以看出,如果禁用整个多粒度量化,比特率增加了 11.8 % 11.8\% 11.8%。当仅移除空间通道级量化步长 q s sc q_{s\text{sc}} qssc 时,比特率显著增加了 8.9 % 8.9\% 8.9%。这表明 q s sc q_{s\text{sc}} qssc 在多粒度量化中起着重要作用,设计一种能够适应不同视频内容的动态比特分配机制是必要的。
帧生成器设计:为了提高神经编解码器的生成能力,我们的帧生成器采用了基于 W-Net 的结构来扩大感受野。为了验证其有效性,我们比较了使用不同网络的帧生成器设计,如表 6 所示。我们比较了 W-Net、U-Net 和基于残差块的结构。从表中可以发现,W-Net 比使用普通残差块的网络节省了超过 10 % 10\% 10% 的比特率。此外,W-Net(结合两个 U-Net)相较于单一 U-Net 也提高了 7.9 % 7.9\% 7.9%。因此,使用更多的 U-Net 可能会进一步节省比特率。然而,考虑到复杂性,我们目前使用 W-Net。
4.4 单模型中的平滑比特率调整
表 5 展示了多粒度量化的速率失真改进。本小节研究了我们的多粒度量化是否能够实现平滑的比特率调整。对于我们的编解码器,全局量化步长 q s global q_{s\text{global}} qsglobal 可以在测试过程中灵活调整,其功能类似于传统视频编解码器中的量化参数。
图 6 显示了使用 4 个学习得到的
q
s
global
q_{s\text{global}}
qsglobal 值的结果,这些值由训练过程中 4 个
λ
\lambda
λ 值通过速率失真损失指导生成。此外,我们还通过插值在学习到的
q
s
global
q_{s\text{global}}
qsglobal 最大值和最小值之间手动生成了 30 个
q
s
global
q_{s\text{global}}
qsglobal 值。从这 30 个比特率点的结果可以看出,我们的单一模型能够实现平滑的比特率调整且没有异常点。相比之下,DCVC 和 Sheng 2021 的方法需要为每个比特率点训练不同的模型。
4.5 模型复杂性
我们将模型复杂性与现有最新的神经视频编解码器在模型大小、MACs(乘加运算次数)、编码时间和解码时间方面进行了比较,结果如表 7 所示。我们以 1080p 帧作为输入来测量这些指标。对于编码/解码时间,我们在 NVIDIA V100 GPU 上进行测量,包括写入和读取比特流的时间,参照相关文献的设置。
如前所述,我们的模型支持单一模型中的比特率调整,因此大大减少了模型训练和存储的负担。由于 DCVC 使用了并行不友好的自回归先验模型,其编码和解码时间非常慢。相比之下,Sheng 2021 和我们的编解码器速度更快。与 Sheng 2021 相比,我们的编码/解码时间略有增加。然而,压缩比被推向了一个新的高度(从 Sheng 2021 超越 HM 到我们超越 VTM)。我们认为,这种轻微的时间代价是值得的。
结论:
本文提出了一种高效的熵模型,帮助我们的神经编解码器不仅实现了比 VTM 更高的压缩比,还能够在单一模型中平滑地调整比特率。具体来说,我们提出了潜先验以丰富熵模型的输入。通过构建传播链,模型可以挖掘多个帧潜表示之间的相关性。此外,提出的双空间先验不仅以并行友好的方式扩大了空间上下文的范围,还进一步压缩了通道维度上的冗余。此外,我们的熵模型还生成了空间通道级的量化步长。这种内容自适应的量化机制能够很好地处理各种视频内容。作为多粒度量化的核心元素,它不仅帮助实现了平滑的比特率调整,还通过动态比特分配提升了最终的速率失真性能。
与使用最高压缩比配置的最佳传统编解码器 VTM 相比,我们在 UVG 数据集上实现了平均 18.2 % 18.2\% 18.2% 的比特率节省,这标志着神经视频编解码器发展的一个重要里程碑。