在视频编码过程中最常见的客观指标是误差平方和(SSE)和峰值信噪比(PSNR)。SSE和PSNR是通过直接积累像素差异来计算的,可能与人类的感知不太相关。另一个著名的客观指标是结构相似度(SSIM)指数,它基于图像的结构信息变化逼近感知失真。
近年来,随着机器学习的发展,机器学习也被引入到改进的客观评估中。视频多方法评估融合(VMAF) 是最具代表性的基于学习的度量,它由Netflix开发,通过支持向量机(SVM)回归将多个基本度量组合在一起。结果表明,VMAF比常规指标具有更高的精度,对行业具有较好的实用性。现在基于学习的度量优于传统的度量,人们也非常希望将它们应用到编码中。
但不幸的是,由于缺乏特定的计算公式,而且可能在帧与帧之间进行不同的计算,基于学习的度量通常表现得像黑匣子,使得传统度量的编码算法不再适用。因此,将基于学习的度量与感知编码结合起来成为了一项挑战。
接下来首先介绍一篇2019年的ISCAS会议论文,本文以最先进的基于学习的度量VMAF为例,提出了一种基于推理方式的VMAF感知编码方法。在编码过程中也采用了感知率失真优化。实验结果表明,与传统方法相比,该方法在HEVC编码下能够实现明显的比特率节省。
考虑到基于学习的度量通常表现得像黑盒,这里的编码框架被设计成以推理的方式工作。该框架的示意图如图1所示。首先进行预编码,产生多个基本结果。然后根据预编码结果推断每个块对度量的影响,并估计编码优化的参数。最后根据分析结果对视频进行优化编码。由于VMAF评分范围为100,分数越高表示感知质量越高,这里定义帧的VMAF失真为公式1。SSE失真指标之所以表现出较弱的感知压缩性能,是因为它忽略了信号样本的重要性不等、信号样本之间的关系等。
但就一个小块而言,它的样本通常具有相似的重要性和特征。因此,局部块的SSE仍然可以作为其感知质量的合适度量。对于一个帧,它的质量是由每个块的质量贡献的,但不同的块可能有不同的影响。因此这里VMAF失真可以近似地表示为所有块的SSE的函数,如公式2所示。
如图2所示,通过预编码,一个帧在不同QP下被重构多次,具有不同的失真水平。我们可以选取一个作为基准benchmark帧,其中M表示帧中的块数,SSEi表示重构帧第i块的SSE。SSEi,b表示基准帧第i块的SSE,利用多变量的泰勒展开,我们可以由公式2进一步得到公式3,然后通过引入ki,可以反映第i块对于帧质量的影响。
对于ki的求解可以利用块替换的方法进行求解,如图2所示,预编码会产生多个重建帧,有不同的失真水平,将将基准重建帧的第i个块被第j个普通重建中的同位置块替换,会产生新的SSE与V,即相对于基准帧产生一组∆SSEi,j与∆Vi,j,如果预编码共有T组普通重建帧,则共产生T组∆SSE与∆V,最后利用多组数据最小二乘法即可以确定当前块的影响ki
最后可由公式12根据预处理的结果推理出每个块的影响ki。在HEVC参考软件HM 16.18的LDP配置下,以QP∈{27,32,37,42}上进行编码(即对于每个帧预编码4个QP)。在预编码分析中,选取QP = 32处的重建帧作为基准,其余视为普通重建帧。
以图3(a)所示的416x240序列Racehorses的第30帧为例。∆SSEi,j与∆Vi,j以及第3行和第2列的64x64块的最佳拟合线如图3(b)所示。图3(c)为帧中所有64x64块的ki,从图3(c)可以看出,马匹和骑手的块对帧质量的影响较大。
由于编码框架中采用了VMAF失真,率失真优化问题可以表述为公式13。去除式子中的常数部分,可转换为公式15。拉格朗日乘子λ可以进一步转化为无约束优化问题,如公式16。接下来引入了高码率近似模型公式18,其中c为源相关常数,σi为第i个块的预测残差方差,N为块中的像素数。将(18)代入(17)可以得到最优解。分析可知,最终的率失真优化公式相比优化前引入了ki因子指示块重要性,进而修正D,与此同时要进行码率对齐,修正帧级lambda。即码率对齐后的帧级lambda公式如上所述。
分析可知若所有的块都相同,则最终的帧级lambda仍旧为lambdaSSE,即不进行调整,但是由于不同的块所占的影响不同,因此优化后的帧级lambda与原始不同。
如上所述,基于小块的失真逼近有助于提高所提方法的性能,但同时也可能增加预编码分析的复杂性。最终本文对每个64x64块进行局部拟合权衡,采用默认的VMAF v0.6.1模型计算VMAF得分。13个有代表性序列的实验结果如表I所示,其中负值为节省比特率。可以看出,在VMAF方面,测试序列可以获得明显的增益。
这是因为通过分段拟合可以很好地表征VMAF,编码框架也为面向VMAF的编码进行了优化。事实上,如果使用更小的块大小,可以以增加复杂性为代价获得进一步的收益。文中还计算了PSNR的bdrate,以供参考。由于VMAF已经成为编码过程中的优化目标,在PSNR方面,性能损失自然是不可避免的。
接下来介绍一篇发表于2020 MMSP会议的论文,本文提出了一种提高基于VMAF视频压缩性能的方法。该系统由多个部分组成,包括具有补充自动滤波参数选择的预处理阶段(锐化)和针对VMAF度量的改进率失真优化框架。与针对PSNR优化的传统视频编解码器相比,该方案在VMAF中平均降低了37%的bdrate。
本文提出了一种VMAF压缩性能的系统方法,包括预处理阶段和率失真优化修正。在预处理阶段,不使用预设参数基于启发式,开发了一种参数自动选择机制,在帧级和块级优化VMAF预处理滤波器的性能。
与上一篇文章不同,上一篇文章对帧进行多次编码以建立SSD和VMAF之间的关系,本文对每个64x64像素块应用高斯滤波器来近似量化误差。然后评估一个局部块的SSD和它对帧的VMAF失真之间的关系。我们利用上述获得的SSD-VMAF关系,在每个块基础上缩放VMAF性能的拉格朗日乘子。最后我们进一步调整基于运动量的帧级QP,对高运动场景施加相对较低的VMAF成本,从而允许更高的量化失真。
接下来介绍第一部分,我们的目标是根据SSD和VMAF成本之间的关系来缩放拉格朗日乘子。然而,不是对一个帧进行多次编码来建立这种关系,而是使用高斯滤波器g来估计量化噪声和相关的VMAF失真。这个近似所需要的计算复杂度远远低于上一篇文章。
作为进一步的步骤,我们利用估计的SSD-VMAF关系在64×64块级别缩放拉格朗日乘子。对于64x64块,原RDO公式为:J = d + λr,其中λ由码率控制系统预定义,r为比特率,d为SSD。为了求解这个方程,我们对d求导。为了解释每个块对整体VMAF度量的影响,我们需要找到将VMAF失真d_v定义为SSD函数的函数h,即d_v = h(d)。引入因子α可以转换得到基于VMAF的率失真优化公式。最后的比例因子通过指数函数修正。
运动量是一个用来计算VMAF分数的特征,这也是SSE中未考虑的。运动量的计算如上式所示,其中mi为第i帧的VMAF运动量,Si为第i帧的源图像,MAE为平均绝对误差。即首先采用高斯滤波对图像进行去噪处理,去除电影胶粒,然后根据相邻帧的MAE计算mi。假定第一帧的运动量总是0。
视频的VMAF分数是所有帧的VMAF分数的平均值。此外视频帧与静态图像的VMAF评分存在差异。本文通过实验发现∆VMAF与运动量有很强的相关性。∆VMAF描述了以视频帧计算的VMAF评分与以静态图像计算的VMAF评分之间的VMAF评分差异。
如图2所示。一个指数函数f很好地拟合了曲线,这说明当运动量较大时,为了达到相同的VMAF评分,允许相对较高的失真。因此我们提出了一种基于运动量缩放QP来调整每一帧失真的方法。为了调整QP,我们需要预测当前帧的失真和它允许的∆SSD。本文使用之前编码帧的SSD和VMAF失真来预测当前帧的∆SSD,如上式所述,最终利用b可以缩放λ,从而找到相应的QP。
本设计在libaom AV1代码库中实现了提出的VMAF优化框架,其中单个视频的典型RD曲线如图3所示。预处理的收益很明显,与预处理阶段结合的其他优化方法可能获得的总增益小于它们各自增益的总和。与上一篇文章相比,拉格朗日乘子自适应方法(RDO)单独证明了类似的编码增益,同时需要更少的编码时间,因为它不需要对每一帧进行多次编码。整体集成方案在VMAF中实现了37%的压缩增益。
接下来介绍一篇发表于2021 ICIP会议的论文,本文提出了一个基于多粒度VMAF的速率失真优化框架。首先在粗粒度调整步骤中考虑量化特征,进行帧级视觉质量适应。在每一帧内,基于每个CTU在细粒度进行一个CTU级拉格朗日乘子和相应的量化参数自适应。该方法已被集成在VVC上测试。实验结果表明,与传统的SSE速率失真优化相比,本文方法在VMAF中平均降低了3.30%的bdrate。
我们提出的基于多粒度VMAF的速率失真优化框架包含两步调整。在粗粒度自适应阶段,根据当前帧所属时间层相应的量化特征对当前帧的QP进行修改。在接下来的细粒度适应调整中,根据当前框架内每个CTU的内容,进一步修改该CTU的拉格朗日乘子和相应的QP。
与前文不同的是,本文为了保持失真、比特率和拉格朗日乘子的一致性,同步修改qp-拉格朗日因子。由于编码参数是由码率和失真的综合考虑决定的,且VMAF没有明确的表达式,我们也遵循原基于SSE的拉格朗日乘子λ的缩放范围,根据SSE和VMAF之间的估计关系对λ进行缩放。
为了简化,我们使用近似的CTU级vmaf - sse关系:如公式3)。其中si施加了第i个CTU内容对整个帧的VMAF评分的影响。因此,需要为每个CTU确定一个单独的比例因子。HVS的一个基本特征是观察者更容易注意到某些视觉内容区域的失真。作为一种与人的知觉具有良好相关性的客观指标,同一框架内的不同区域对VMAF总分的影响不同。
在我们提出的框架中,CTU自适应比例因子si被设计用来反映CTU内容对VMAF总体性能的影响。在用基准QP编码的称为标准QP的特定帧内,第i个CTU的比例因子为公式6所示。分子为改变某一CTU质量后整个帧的VMAF评分差值,分母为改变整个帧质量后VMAF评分差值。如图一所示,标准帧与控制帧如上所示。
为了简单起见,我们使用离线的CTU替换操作来生成控制框架。替换框架如图1所示。我们首先用两个不同的QPs编码当前帧——QPs和qp0。将标准框架的第i个CTU替换为临时框架的同一位置的CTU,以生成第i个CTU的控制框架。用这个标准控制帧对,计算第i组的比例因子(6)。一旦估计出比例因子,就调整按比例计算的拉格朗日乘子和由(2)为当前CTU计算的相应的新QP。因此,在(5)中设计了基于VMAF的近似RDO过程,选择能够提高对整个帧VMAF评分影响较大的ctu质量的编码参数,同时适当降低那些相对不重要的ctu的质量。
一个典型的GOP大小为16的VVC分层编码结构如图2所示,由于GOP结构内部存在预测间参考依赖关系,不同时间层之间存在质量依赖关系。一般来说处于较低时间id (Tid)水平的帧,例如Tid 0和Tid 1会显著影响其他帧。因此低水平帧需要分配更多的比特,即小QP和相应的拉格朗日乘子。VVC分层编码结构帧级QP获取过程为公式7所示。其中offset为1,1,4,5和6,Tid i = 0,…, 4. doffset(i)是对于Tid较高的帧的额外QP偏移量。
虽然在使用SSE或PSNR作为失真度量时,精细的QP调整带来了一定的RD性能提升,但这也意味着将使用不同强度的量化器对不同时间层之间的预测残差进行编码,从而导致感知质量的差异。为了克服视觉质量的波动,我们考虑了当前待编码帧的量化误差的特点,引入了视觉QP调整偏移量。如公式8所示,即对于高时域层的帧QP调小以削弱默认配置带来的视觉质量波动。
最后本文在VTM9.0集成了本设计并测试,对于128x128的块大小,估计拉格朗日乘子比例因子以及对应的QP。控制帧与相应的标准帧之间应存在一定的感知质量差异,但差异不能太大,以免影响估计的比例因子的精度。在我们的实验中,设QPs和qp0之间的∆QP为5。在 RA配置下,以通用测试条件推荐的所有序列进行了测试。注意到用qp22编码的序列的VMAF评分基本在95.0 ~ 100.0之间,人眼几乎无法分辨。
因此我们使用27-42个较大的QP组进行比较。VMAF和PSNR的总体实验结果如表1所示,其中以BDrate为性能指标,取负值代表有压缩性能的提高。与原始VTM相比,我们提出的基于多粒度VMAF的RDO框架在VMAF中相同的感知质量下,平均比特率节省3.30%,编码增益最高可达10.37%。
除了使用多粒度调整框架外,我们还探索了仅对VMAF应用CTU级别RDO修改的性能,此部分平均降低了1.13%的Bdrate。我们观察到所提议的算法在一些序列上有很小的性能损失,这主要是由于每个CTU的估计比例因子不准确。先前论文的研究表明,更精确的块级vmaf - sse关系可以近似以增加复杂性为代价。但为了与VVC的默认CTU大小保持一致,并降低计算复杂度,我们框架中的缩放因子估计单位为128×128块大小,这可能不是最合适的大小。
总结而言:
文章1提出了一种基于块的(64x64)拟合方法,通过对每帧进行4次编码来近似VMAF和SSE之间的关系。这些块级关系被组合起来,以缩放帧级拉格朗日乘子。当前帧的所有块共享相同的帧级拉格朗日乘子。
文章2提出了一种简化的逼近方法,即对每个64x64块使用高斯滤波,而不是多次编码。得到的块级vmaf - sse关系被部署以适应每个块的拉格朗日乘子。此外还根据运动量调节帧级QP。这两种方法都只是对率失真优化框架中使用的拉格朗日乘子进行缩放,并对不同层次的帧应用相同的标准。另一方面,一些图像处理方法如对比度增强技术可以提高VMAF评分。这种预处理方法超出了本文的讨论范围。
文章3提出了一个基于多粒度VMAF的率失真优化框架。在粗粒度调整步骤中,首先考虑相应的量化误差特征,进行时间级视觉质量调整。在一定的框架内,根据每个CTU的内容进行CTU级拉格朗日乘子和QP自适应。实验结果表明,与VVC相比,VMAF的bdrate平均降低了3.30%。
 关 注 我 们 
实验室网站:http://viplab.fudan.edu.cn/
OpenASIC官方网站:www.openasic.org
知乎专栏:http://zhuanlan.zhihu.com/viplab
微信公众号:OpenASIC
继续阅读
阅读原文