论文标题
:Advancing Learned Video Compression with In-loop Frame Prediction

来源
:TCSVT 2022

作者
:Ren Yang, Radu Timofte, Luc Van Gool

论文链接
:https://ieeexplore.ieee.org/document/9950550

内容整理
:陈予诺

本文基于端到端深度视频压缩框架,提出了一种环路多帧预测模块(in-loop frame prediction module),在不额外消耗码率的情况下,对当前帧实现基于多个参考帧的高效预测。
目录
  • 引言
  • 方法
    • 整体框架
    • P-frame 环路预测模块
    • B-frame 环路预测模块
  • 实验
    • 训练
    • 性能

引言

近年来,端到端的深度学习视频压缩技术越来越受到关注。以往的大部分研究是通过检测和压缩运动向量、与参考帧进行warp来得到预测帧,以解决时间维度上的冗余问题,但它们未能充分利用前序参考帧中的历史信息。为了解决这一问题,本文提出了一种名为 ALVC(Advanced Learned Video Compression)的深度视频压缩模型,它采用了环路多帧预测模块,在不增加额外码率的情况下,ALVC 能够利用多个前序帧的信息进行目标帧的预测。这样生成的预测帧可以作为一个比先前压缩帧更好的参考,从而提升了压缩性能。本文所提出的 in-loop 预测模块作为端到端视频压缩的一个组成部分,与整个框架进行共同优化。此外,本文提出了 recurrent 和 bi-directional 两种环路预测模块,分别用于压缩 P 帧和 B 帧。该项目的源代码已在以下网址公开:https://github.com/RenYang-home/ALVC。

方法

整体框架

整体流程上,本文模型利用 Buffer 中的前序帧经过相应的 In-loop 模块得到初步的预测帧 Predicted frame ,与 Raw frame 计算得到 Prediction error 后,对 进行修正。
本文将 Prediction error 拆分为 Location error 和 Residual error,类似于DVC等经典方法中的运动向量和残差,区别在于并不是利用前一解码帧与当前帧进行计算,而是用当前帧的初步预测值 取代前一解码帧参与计算。
当前帧的初步预测值 经过 Location error correction 修正得到 ,再经过 Residual error correction 修正得到最终的重建帧 ,将 放入 Buffer。

P-frame 环路预测模块

P帧 in-loop 模块结构
上图所示为P帧的预测模块,在IPPP模式的视频压缩中,P-帧以单向方式连续压缩,因此P帧压缩使用的是单向的 Recurrent in-loop Prediction (RecPred) network,RecPred 网络中使用 U-Net 作为特征提取模块,但我们分别将三个 ConvLSTM 层插入到下采样部分、中间层和上采样部分,这使得 RecPred 网络具有循环性,因此它能够利用连续压缩帧中的时间信息。
在循环 U-Net 之后,我们使用两个子网络生成光流 和 以及两个mask 和 ,它们用于对先前压缩的帧 和 进行 warp 和 掩码,即
其中 表示 backward warp, 表示逐像素乘法。然后,它们通过卷积网络 M 合并以生成预测帧 ,此处 M 类似于 DVC 模型中运动补偿的模块。整体计算过程如下,
除了通过 ConvLSTM 单元传递的隐藏状态外,我们还将前一时刻的预测光流和掩码 mask 作为输入,与参考帧 concat 到一起,一并传入 RecPred 网络,所以整个RecPred网络的计算可用以下公式表示:
其中 指代 ConvLSTM 的 hidden states。

B-frame 环路预测模块

1. B 帧的定义和递归解码顺序
B帧计算流程
本模型在两个 GoP 之间将一定数量的帧定义为B帧。对B帧进行计算时,如上图所示, 至 是需要压缩的连续 B 帧。前序的参考帧分别是 和 ,而后序的参考帧分别是 和 。我们从 开始压缩,它是离前序参考帧最近的帧。压缩 之后,我们使用 、压缩后的 (即 )、 和 作为参考帧来压缩离后序参考帧最近的帧 。接下来,我们依次压缩 和 等。此流程递归进行,直至所有 B 帧都被压缩。
2. B帧预测模块详细结构
B帧 in-loop 模块结构
如上图所示,B 帧的预测模块采用了双向的 in-loop 结构。我们首先通过 SPyNet 估计光流 ,, 和 ,然后我们使用这些估计的光流来计算从参考帧 和 到目标帧的光流,即 和 。
此处计算将光流的变化模型定义为一个关于时间的二次模型,类似于一种匀变速运动。
所以我们可以通过如下思路计算得到 和
在这一步估算以后,我们分别计算 和 的逆光流 和 用以 warp 参考帧 和 。这两个逆向光流会被送入一个 U-Net 型的 RefineNet,用以纠正光流的不准确性并生成两个 mask( 和 )以合并变形的参考帧,其计算方式类似于 P 帧的in-loop 模块,但其中没有 recurrent 结构。

实验

训练

我们使用 Vimeo-90k 数据集作为训练集,我们先对in-loop模块进行初步训练,之后对整个 ALVC 网络进行端到端训练,损失函数为
其中 和 分别是用于压缩 location error 和 residual error 的码率。D 表示压缩帧和原始帧之间的失真度, 是用于控制 R-D tradeoff 的超参数。在本文中,我们分别使用均方误差 (MSE) 和多尺度结构相似性 (MS-SSIM) 指数作为 D 来训练 PSNR 和 MS-SSIM 模型。对于 PSNR 模型,我们将 设置为 256,512,1024 和 2048,对于 MS-SSIM 模型, 分别设置为 8,16,32 和 64。

性能

1. PSNR 性能
上表展示了与 x265 (B-帧) 为 anchor 计算的 PSNR Bjøntegaard Delta 比特率 (BDBR) 性能(越低越好)。从表中可以看出,我们的 ALVC 方法在所有数据集上优于 DVC、HLVC、RLVC、FVC、x265 (LDP) 和 x265 (B-frame)。我们还在 Class C 和 Class D 上击败了 DCVC,我们的 ALVC 方法的平均 BDBR 比 DCVC 好 3.21%。
在将 ALVC 与 HM 16.20 (same GOP) 进行比较时,我们在 Class B 和 Class D 上表现得更好,但平均 BDBR 略差于 HM 16.20,约为 1%。
与传统方法的 PSNR 性能对比
上图说明,尽管我们在深度学习方法中实现了最先进的性能,但我们的 ALVC 无法赶上 HM 16.20 (default)、VTM 14.1 (same GOP) 和 VTM 14.1 (default) 的性能。
2. MS-SSIM 性能
上表展示了基于 MS-SSIM 的 BDBR 性能,以 x265 (SSIM slowest) 的性能作为 anchor。从这个表可以看出,我们的 ALVC 方法在所有数据集上均优于 DVC、HLVC、RLVC、FVC、x265 (SSIM)、x265 (SSIM slowest)、HM 16.20 (same GOP)、HM 16.20 (default) 和 VTM 14.1 (same GOP)。我们还在类别 B、C 和 D 上优于 DCVC。在 UVG 上我们稍逊于 DCVC,但平均 BDBR 超过 DCVC 8%。
与传统方法的 MS-SSIM 性能对比
上图表明,在高比特率下,我们在 MS-SSIM 方面明显优于传统编码器,甚至在所有数据集上优于 VTM 14.1 (default)。总之,在深度学习方法中,我们在 MS-SSIM 方面达到了最先进的性能;和传统方法相比,我们的 MS-SSIM 性能与 VTM 14.1 (default) 相当甚至略好。
继续阅读
阅读原文