论文标题:Neural Rate Control for Learned Video Compression 来源:ICLR 2024 作者:Yiwei Zhang, Guo Lu, Yunuo Chen, Shen Wang, Yibo Shi, Jing Wang, Li Song 内容整理:张一炜 基于学习的视频压缩方法近年来取得了重大进展,与传统视频编解码器相比,显示出良好的压缩性能。然而,之前的研究主要集中在先进的压缩架构上,而忽略了码率控制这一技术。码率控制可以精确控制编码码率,在限制码率下实现最佳压缩性能,是实际应用中的关键技术。针对这一问题,本文针对深度学习视频压缩模型,提出了一种完全基于神经网络的码率控制系统。本文的系统能以给定码率精确编码视频,同时提高整体的率失真性能。具体来说,本文首先设计了一个码率分配模型,根据每个帧的不同空间和时间特性为其分配最佳目标码率。然后,本文提出一种基于深度学习的码率实现网络,用于执行码率参数映射,精确预测给定码率的编码参数。本文提出的码率控制系统可以轻松集成到现有的基于学习的视频压缩方法中。实验结果表明,本文的方法可以实现精确的码率控制效果,平均码率误差仅为 2%。并且在与各种基线方法相比时,本文的方法可以带来近 10% 的压缩性能提升。
近年来,视频内容几乎占据了所有互联网流量的80%。因此,为视频存储和传输设计高效的视频压缩方法至关重要。传统的视频编码标准,如 AVC, HEVC 和 VVC 等,都是在过去几十年中基于块分割、线性离散余弦变换(DCT)等手工设计模块搭建的。最近,研究者对基于深度学习的视频压缩方法越来越感兴趣。现有方法通常采用深度神经网络实现运动补偿和残差/条件编码,并优化端到端压缩框架中的所有模块,展现出了有希望的结果。
然而,目前大多数基于深度学习的视频压缩方法都没有考虑在实际应用中广泛使用的码率控制技术。而在传统编解码器中,通过采用码率控制来缩小编码后的码流大小与给定目标码率之间的差距。这种技术还能为不同帧分配合适的码率,从而提高整体压缩性能。
遗憾的是,对于目前许多基于深度学习的视频压缩方法来说,编解码模型仍主要在单一R-D 点(固定
)下进行优化。虽然有些方法可以在单个模型中实现可变码率的编码,但它们需要多轮压缩来寻找合适的编码参数(通常是
参数),以达到输出所需的码率。此外,即使在可变码率编码的模型上实现输出指定码率的功能,现有的学习视频压缩技术也无法解决码率控制过程中的码率分配问题,导致压缩效率不理想。
一种可能的解决方案是采用传统的码率控制方法,但这些方法依赖于经验数学模型来拟合码率与编码参数之间的关系,可能不适合基于深度学习的视频压缩方法。此外,传统视频编解码器使用预定义的权重来进行码率分配,对不同内容的空间和时间特征缺乏考虑。因此,有必要为学习型视频压缩方法开发一种新的码率控制系统。
因此,在本文中提出了首个基于神经网络实现的的针对深度学习视频压缩的码率控制系统。提出的系统由两个关键部分组成:码率分配网络和码率实现网络。
具体来说,对于给码率预算的视频序列,码率分配网络将提取连续帧相应的时空特征,根据每帧的重要性为其分配最佳码率。然后,码率实现网络会为每一帧预测适当的编码参数,如常用的率失真函数中的权衡参数
,以实现其目标码率的编码。最后即能按照给定的目标码率对视频序列进行精确编码。本文提出的方法具有通用性,可以很容易地与现有的基于深度学习的视频压缩方法集成。为了证明所提方法的有效性,本文将提出的方法应用于四种基线方法上(DVC,FVC,DCVC,AlphaVC),并在常用的视频基准测试数据集上进行了测试。实验结果表明,本文提出的方法可以实现精确的码率控制效果,平均码率误差仅为 2%。此外,与基线方法相比,所提出的方法还能进一步平均带来近 10% 的压缩性能提升。
本文的贡献点可以总结为以下两点:
让
表示视频序列,其中
表示时间
的一帧。在现有的基于深度学习的视频编解码器通常通过码率-失真权衡函数进行优化,即
的率失真函数作为损失函数。这里,
表示码率和失真。
全权衡二者之间的重要性。为实现连续、精确的码率控制,所使用的深度学习视频编解码器应能通过单一模型实现连续可变码率的功能。因此,本文将现有的基于深度学习的视频编解码器(DVC,FVC,DCVC,AlphaVC)与现有的基于
调整中间特征的可变码率方案进行结合,并作为提出的码率控制框架的基线方法。
图 1 神经网络码率控制系统框图
上图展示了当前帧
与提出的码率控制方法相结合的编码过程。图 (a) 是本文提出的神经网络码率控制框架概览。根据给定的目标码率
和输入帧,码率分配网络为当前帧
生成目标码率
。然后,码率实现模块会在码率
和编码参数
之间建立映射,基于深度学习的视频编解码器会使用该编码参数对
进行编码。图 (b) 是本文提出的两级码率分配策略的可视化示意图。
具体来说,首先将几个连续的原始视频帧输入到码率分配网络,然后根据其时间和空间特征计算每帧的码率分配权重。权重越大的帧分配的码率越高,反之则更低。然后,根据视频序列的序列级目标码率
和剩余码率预算,本文采用两级码率分配策略来确定当前帧的最佳码率
。随后利用码率实现网络实现在分配的帧级目标码率
和当前帧的预测编码参数
之间建立映射。最后,基于深度学习的视频编解码器将根据给定的
压缩当前帧
,并最终实现精确控制当前帧的码率。在本文提出的码率控制技术下,可以为每一帧分配最佳码率,并实现编码后的平均码率达到给定的序列级目标码率。
如框架图中所示,本文提出的方法在miniGop级和帧级两个级别进行码率分配。对于当前帧
,相应的 miniGoP 包括一组帧
。
表示 miniGoP 的长度。在 miniGoP 级码率分配过程中,首先根据统一的权重比为每个 miniGoP 分配码率,具体方法如下:
其中,
是当前 miniGoP 的目标码率,
是整个视频序列的目标平均码率,
表示已编码的帧数,
是当前编码序列已消耗的总码率。
是滑动窗口大小,用于确保编码过程中每个 miniGoP 的码率过渡更加平滑。在具体实现过程中 SW 设为 40。
而对于 miniGoP 中的帧级码率分配,采用权重估计网络根据该 miniGoP 中连续帧的时空特征生成的权重来进行码率分配。分配方程如下所示:
其中,
表示帧
所需的目标码率,
表示当前 miniGop 编码过程中已消耗的码率,
表示从权重估计网络中获得的
的码率分配权重。之后,就能得到当前帧
的目标码率,从而在总体目标码率
的情况下实现最优的码率分配。第 t 帧编码完成后,实际编码码率
将被更新在缓冲区中用于计算
和
。
下图展示了本文提出的权重估计网络结构图。通过使用多个卷积网络和 MLP 网络来实现轻量级网络架构。卷积网络从一组连续的时间帧中提取时空特征,而全连接网络则根据从编码结果中获得的信息对卷积网络提取的特征进行调制。
图 2 权重估计网络结构图
具体来说,模型的输入包括当前miniGop中的帧,以及当前 miniGoP 前后的帧
。本文使用卷积网络提取相应的时空特征
。此外,还进一步引入了上一时间步的编码结果统计信息,包括码率
、失真
以及当前 miniGoP 的目标码率
。在此使用 MLP 网络提取相应的特征向量,并进行通道维度相乘实现与特征
融合。最后,融合后的特征通过 Resblocks 和全连接层进行细化,为 miniGoP 中的每个帧生成码率分配权重
。
模型中输入包括
、其编码结果和
的目的是考虑前一参考帧对当前 miniGoP 的影响。如果
是一个相对高质量的帧,那么当前 miniGoP 前面部分帧的编码将使用较低的码率,因高质量参考帧的存在整体质量不会下降。
本文将从码率到编码参数
映射的码率实现过程构建为一个回归问题,并以当前要编码的帧的内容和上一帧实际的编码结果作为条件。
下图展示了提出的码率实现网络的具体结构图。
图 3 码率实现网络结构图
码率实现网络旨在建立码率
和编码参数
之间的映射关系。因此,一种直接的解决方案是使用 MLP 层来模拟这种关系。然而,考虑到不同帧中的内容信息各不相同,这种直接的解决方案可能效果不佳。因此,本文提出进一步引入了当前帧的内容信息和上一帧的编码结果信息,以实现内容自适应的 R-
映射。具体来说,当前帧
和
与上一重建帧
之间的差值图被用作卷积网络的输入。经过多次卷积和平均池化后,得到图像特征向量
。同时,上一帧的统计编码信息(包括实际码率
、失真度
和估计编码参数
)被输入 MLP 网络,以生成特征向量
。
由于视频内容的多样性,不同内容的视频在码率实现网络中的不同输入码率可能导致相似的输出
。因此,本文实现了一个归一化模块来规范输入码率,以提高预测的准确性。通过融合向量
和
来产生归一化参数
,用于调节来自输入目标码率
的原始特征
,方式如下:
其中,
代表归一化后的特征,将用于预测当前帧
的编码参数
。
本文的方法包括多个不同的模块,每个模块都有不同的训练目标和相互依赖的关系。码率分配网络的训练依赖于一个准确的码率实现网络。因此,本文提出了一个逐步的训练策略。
首先需要深度学习视频编码器能够支持连续可变码率的功能,因此需要在原本的模型基础上加入可变码率模块,并进行微调来实现。
随后需要训练码率实现网络。码率实现网络以目标码率和经过码率实现网络(RI)预测得到的编码参数经过编码器(C)编码后的码率之间的相对误差作为损失函数,如下公式所示:
最后,对于码率分配网络,希望码率分配网络能够考虑多个连续帧的码率分配情况。因此码率分配网络训练时以连续n个miniGop的RD损失函数的平均值进行训练。具体公式如下所示:
其中
和
分别代表帧
的码率和失真。
表示miniGoP的数量,
表示用于训练当前miniGoP的全局
。
训练部分,码率实现网络在Vimeo-90k数据集上训练,码率分配网络由于需要更长的连续帧,因此在BVI-DVC数据集上进行训练。测试时,则以关闭码率控制的模型压缩结果作为对比,并将关闭码率控制时的码率作为目标码率来进行码率控制的测试。并使用PSNR和相对码率误差
作为评价指标。
在HEVC标准测试集B、C、D、E,UVG以及MCL_JCV数据集上的测试结果如下图所示。
图 4 不同数据集的RD曲线对比图
图中Ours(DVC+RC)、Ours(FVC+RC)和Ours(AlphaVC+RC)分别代表了本文的方法与DVC、FVC、DCVC和 AlphaVC 基线模型集成后的结果。具体的BD-rate增益以及码率误差在下表中展示。
表 1 不同测试集上的相对码率误差和BD-rate增益测试结果
从上述图表可以看出,本文提出的方法的码率误差在1%~3%左右,可以实现较为准确的码率控制效果,并且可以带来平均9%~33%的压缩性能提升。对于以静止内容占主要部分的HEVC Class E测试集上,本文提出的方法能够带来的压缩效率提升更加明显。
码率实现精度
为了进一步展示本文提出的码率实现网络的准确性,下图提供了HEVC Class B BasketballDrive 序列的每帧的bpp变化情况。这里没有使用码率分配网络,而是为序列中的每帧分配相同的目标码率。
结果表明,本文提出的方法能够以非常低的码率误差对每帧进行编码。具体来说,序列中的每帧设置了0.05 bpp作为目标码率。相应的实际平均编码码率为0.0499,平均相对码率误差为0.21%。
图 5 每帧分配相同码率时每帧bpp变化图
码率分配网络作用
码率分配网络考虑了不同帧的时空特性,以实现最优的码率分配,并在给定的码率下提高压缩性能。为了展示所提出的码率分配方法的有效性,对每一帧使用固定的码率进行编码并进行对比。RD性能的比较结果显示在下图中。去除码率分配网络(标记为 Ours w/o RA)后,模型的整体压缩性能明显下降。这表明平等对待每一帧并为编码分配相同的码率并不是最佳方法。
图 6 码率分配网络消融实验结果图
为了进一步观察码率分配网络的作用,下图展示了编码过程中不同帧的PSNR和bpp的变化。显然,使用码率分配网络显著减轻了质量衰减。码率分配网络调整了P帧序列中每一帧的码率,以提升高质量P帧的质量并减少累积误差。同样可以观察到,码率分配网络最初在一个miniGoP中分配了两个高质量帧,而后来只分配了一个,可以根据内容自适应调整。
图 7 编码过程中每帧的bpp和PSNR变化图
与传统码控方法对比分析
本文对比了使用类似传统码率控制中通过使用简单数学关系来建模拟合R-D-
关系的方法进行对比,本文的方法可以实现更准确的码率控制效果与更明显的RD性能提升。另外,下图也展示了传统码控中的双曲线模型与本文提出的码率实现网络在码率控制精度上的对比。
图 8 码率实现网络与传统双曲线模型的码率误差对比
由于传统的码率控制方法在编码过程中需要动态更新双曲模型的参数以实现有效预测,因此在初始编码阶段会出现较大的码率误差。相比之下,本文提出的方法包括在编码的初始阶段也能实现准确预测。
不同模块作用
为了展示码率分配网络中网络设计的有效性,码率分配网络消融实验结果图中提供了更多组件分析结果。具体来说,首先,本文分析了码率分配训练过程中损失函数的有效性。提出的损失函数包括两个miniGoP中帧的率失真损失,同时也尝试了使用更少帧数(即一个miniGoP中的帧)来进行训练(标记为 *Ours(N=1)*)。实验结果表明,在训练目标中考虑更多帧的RD损失,将带来明显的性能提升。
本文也对码率分配网络的输入进行了分析。实验结果表明,如果去除了前一个参考帧的编码信息(失真、码率等)和当前miniGoP的目标码率(标记为 Ours w/o reference),RD性能将下降3.09%。此外,如果将一个miniGoP的大小设置为2帧,RD性能也会下降(标记为 Ours 2 frames)。相反,如果将一个miniGoP的大小增加到8,权重估计网络中的参数数量和训练时间都将翻倍,但这只会带来0.12%的RD性能提升。因此,将miniGoP的大小设置为4是更优的权衡结果。
对于码率实现网络,本文还展示了归一化操作和输入帧信息的有效性。对于归一化过程,结果显示,如果直接使用全连接网络来预测最终的编码参数,DVC上在HEVC Class B、C、D 和 E 数据集的平均码率误差分别升至1.87%、1.51%、2.69%和3.09%。至于帧信息,从码率实现网络中移除参考帧的编码信息会导致训练不稳定,使得模型在码率控制上失效。此外,如果从码率实现网络中移除残差图像,DVC上的HEVC Class B、C、D 和 E 数据集的平均码率误差分别升至3.56%、2.43%、2.85%和3.96%。
模型运行时间与复杂度
本文提出的码率控制框架仅涉及对编码器端的额外操作,而解码器端的复杂性与原始模型相同。具体来说,码率分配网络和码率实现网络的参数量分别为443K和564K。对于编码1080P序列,码率分配网络和码率实现网络的推理时间分别仅为2.95毫秒和2.32毫秒。
本文提出了首个完全由神经网络实现的深度学习视频压缩的码率控制方案。提出的方法包括一个码率实现网络和一个码率分配网络,使用多个不同的基线模型并在几个基准数据集上都能够实现精确的码率控制。此外,由于最优码率分配,可以在码率控制基础上进一步提高整体压缩性能。提出的方法不依赖于现有的基于学习的视频压缩方法,并且在编码端只需少量额外的计算开销。