本文来自Netflix的科技博客,阐述了VMAF的最新应用进展,以及VMAF正在做的改进工作。感谢邓斌的翻译,及快手相关同学的技术审校。
文 / Zhi Li,Christos Bampis,Julie Novak,Anne Aaron,Kyle Swanson,Anush Moorthy和Jan De Cock
译 / 邓斌
审校 / 快手的相关同学
原文 https://medium.com/netflix-techblog/vmaf-the-journey-continues-44b51ee9ed12
Netflix会员会如何评价一段视频的质量—— 差、一般或非常好? 对于同一段视频,是用A编码器还是B编码器进行编码看起来效果更好?对于一集视频,同样是1000 kbps码率,是应该选择具有一些块效应的高清版本,还是块效应较少的标清版本?
这些都是我们在尝试为Netflix会员提供最佳观看体验时会面临的实际问题。几年前,我们意识到无法通过简单地依赖“黄金眼”来有力地解决这些问题。专业的“黄金眼”的主观测试并不能在海量内容,不同的编码配置和整体编码流程之间进行扩展。PSNR和SSIM等这种现有的客观视频质量评价指标虽然可以大规模部署,但它们无法准确捕捉人类的主观感受。因此,我们开启了一段寻找能够自动回答 “Netflix会员将如何评价这样编码的质量?” 这个问题的方法的旅程,这就是VMAF诞生的契机。
视频多评估方法融合(Video Multi-method Assessment Fusion简称VMAF)指标是一种将人类视觉模型与机器学习相结合的视频质量评价指标。该项目始于我们团队与来自南加州大学的C.-C Jay Kuo教授之间的研究合作。他的研究小组之前曾研究过图像的感知质量指标,我们跟他们一起将这些想法扩展到视频。随着时间的推移,更多的研究团队加入了我们,如德克萨斯大学奥斯汀分校的Alan Bovik教授和南特大学的Patrick Le Callet教授,我们共同的目标是提高VMAF模型与人类主观感知的相关性,并扩大其范围以涵盖更多场景。2016年6月,我们在Github上开源了VMAF,并发布了第一篇介绍VMAF 的博客文章。在本篇文章中,我们希望分享我们的VMAF旅程。
一、工业界采用
除了在Netflix公司内部,视频社区的一些成员也发现了VMAF作为质量评估工具的价值。由于工业界的采用,该项目受到了研究人员,视频相关公司的工程师和开源社区的成员的广泛支持。
VMAF已经集成到第三方视频分析工具中(例如,FFmpeg,Elecard StreamEye,MSU视频质量测量工具和iswecompressedyet),并将其与已得到认可的指标(如PSNR和SSIM)一同被用作参考指标。
在NAB,Video@Scale和Demuxed等展会中,其中的一些demo和演讲使用了VMAF指标来比较各种编码技术的质量和效率。
视频质量评价专家组成的国际机构视频质量专家组(VQEG)在最近的Los Gatos,Krakow和Madrid VQEG会议上,多次对VMAF模型进行了评估。
我们很高兴看到其他研究小组已经对VMAF的感知准确性进行了交叉验证。Rassool(RealNetworks)确认了在4K内容上,VMAF和DMOS得分之间的高度相关性。Barman等人(金斯顿大学)在游戏内容上测试了几个质量评估指标,并得出结论:VMAF在预测主观质量方面是最好的。Lee等人(延世大学)应用各种视频质量指标到多分辨率自适应流传输方面,结果表明VMAF和EPSNR与人的感知质量的相关性最高。Gutiérrez等人(Université de Nantes)的研究表明,在高清(HD)和超高清(UHD)内容上,VMAF和VQM是表现最佳的两个质量指标。此外,我们还注意到了一些研究指出VMAF并没有达到预期效果。对于最新的VMAF模型,我们会邀请行业专家和研究人员对其进行评估,并鼓励其与我们分享其中的一些反例和极端情况,用于改进出下一个版本的VMAF模型。我们还将在后面的部分介绍VMAF工具的使用方法,以解决一些实际使用中可能遇到的问题。
当然,VMAF指标也可用作更好的编码决策的优化标准,我们已经看到其他一些公司应用VMAF进行优化的相关报告。
二、VMAF在Netflix产品中的应用
2.1 编解码器性能比较
传统意义上比较编解码器之间的性能,通常使用这样的方法:首先,在一套测试条件下(固定分辨率和量化步长)对每个视频序列进行编码;然后,对多个视频序列计算PSNR值;接着,构建码率--质量曲线,并计算这些曲线之间的平均差异(BD-rate)。这种比较方法适用于评价不同编解码器中的简单区别,或评估同一编解码器中的各种工具。对于我们的应用场景(视频流)使用PSNR是不合适的,因为它与感知质量的相关性比较差。
而VMAF的提出填补了这一空白,它可以评估编解码器之间的具有较大差异的情况,也可以评估视频的缩放失真,且该指标与主观感知质量的相关性更高。它能够帮助我们比较出编解码器中真正重要的部分,即在码率与主观质量之间找到一个最优平衡点。具体而言,比较不同编解码器和/或不同配置之间的码率--质量曲线,构建其对应的凸包(https://en.wikipedia.org/wiki/Convex_hull)进而可以得到相应的最优解帕雷托前沿( https://blog.csdn.net/u010180815/article/details/78994486)。我们团队最近关于编解码器性能比较的一些工作发表在基于场景编码的技术博客上,以及Picture Coding Symposium 2018 和SPIE Applications of Digital Image Processing XLI学术论文中。
2.2 编码决策
VMAF在我们的整个工作流程中广泛应用,不仅用于衡量编码的结果,还用于指导编码器编码到最佳质量。在编码中使用VMAF的一个典型例子是我们的动态优化器,其中每个单个场景的编码决策由每个编码阶段的码率和质量指标来指导。在此优化过程中,VMAF分数非常重要,主要用于获得最佳的码率与质量之间的平衡点。
2.3 A / B实验
不同商业领域的研究人员——例如电视UI团队和流媒体客户团队——正在不断创新,以提高流媒体的观看体验。借助VMAF模型,我们可以在系统范围内进行A / B测试,并可以量化不同视频质量对用户的影响。例如,如果研究人员改变自适应流传输算法或部署新的编码器,可以进行实验比较新旧算法或编码器之间的VMAF分数变化情况。VMAF指标非常适合评估这类实验的效果,因为它对于不同内容的有很好的一致性,并且对于反映人类感知质量相当准确。例如,对于不同的视频内容,VMAF得分为85意味着视频主观质量“良好”,但是从码率的角度却无法反映视频主观质量,因为同一个码率点在不同内容中可能对应不同的主观质量。
三、我们所为之事
3.1 速度优化
2016年6月我们首次在Github上开源VMAF,它的核心特征提取库用C编写,控制代码用Python编写,主要目标是支持算法实验和快速原型设计。顺应用户的需求,我们很快添加了一个独立的C ++可执行文件,可以在实际环境中更轻松地部署。2016年12月,我们将AVX优化添加到VMAF的卷积函数(VMAF中计算量最大的操作)中,使得VMAF的执行速度提高了大约3倍。在2018年6月,我们增加了帧级多线程,还实现了跳帧功能,允许在每N帧里的一帧上计算VMAF。这使得VMAF指标首次能达到实时计算,即使在4K视频中也可以(有很小的精度损失)。
3.2 FFmpeg的libvmaf库
在FFmpeg社区的帮助下,我们将VMAF模型打包到一个名为libvmaf的C代码库中。该库提供了一个接口,可将VMAF指标计算过程添加到自己的C / C ++代码中。VMAF是作为一个滤波器添加到FFmpeg中。FFmpeg的libvmaf滤波器目前是一个非常便捷的计算压缩视频码流的VMAF指标的方法。
3.3 准确性提高
VMAF项目开源之后,我们一直在不断提高其预测准确性。随着时间的推移,我们修复了其中许多基本度量指标和机器学习模型中的问题,从而在整体上能得到更准确的预测。例如,修改了基本度量指标可以改进VMAF指标与亮度掩蔽特性的一致性;更新场景边界处的运动得分以避免场景变化带来的影响; 现在,在高QP区域,VMAF的单调性能够保持。显然VMAF模型的准确性在很大程度上取决于用于训练的主观打分的覆盖范围和准确度。我们建立了一个主观数据集,其范围比我们以前的数据集更广泛,包括更多样化的内容和采集源失真(如胶片颗粒和相机噪音)以及更全面的编码分辨率和压缩参数。我们还开发了一个新的数据清理技术来消除原始数据中人为偏见和不一致性,并在Github上开源。该方法使用最大似然估计来联合优化其参数,消除主观偏差。
3.4 不同观看条件下的VMAF模型
VMAF框架支持在特定观看条件下训练特定的预测模型,无论是在移动终端上还是在超高清电视上。我们之前开源的VMAF原始模型基于如下观看条件:观众坐在1080p显示器前面,在类似客厅的环境中,观看距离是屏幕高度的3倍(3H)。这组观看参数在许多场景中较为常用,然而,在将该模型应用于移动端视频时,我们发现它并没有准确地反映观看者的视觉感知。特别是在较小的屏幕和相对于屏幕高度较远(> 3H)的观看距离时,即使是观看高质量视频,观众也只能感知到较小的视觉差异。例如,在手机上,与其他设备相比,720p和1080p视频之间的区别较小。考虑到这一点,我们训练并发布了VMAF手机模型。
上图展示了VMAF的默认模型和手机模型关于VMAF分数与码率之间的关系。一个可行的解释是,在手机屏幕上观看时,相同的失真的视频具有比在高清电视上更高的质量,使用手机模型时,720p和1080p视频之间的VMAF分值差异更小。
最近,我们添加了一个新的4K VMAF模型,该模型可以预测在1.5H距离下的4K电视上显示的视频的主观质量(1.5H的观看距离是普通观众能够充分感受4K内容清晰度的最大距离)。4K模型类似于所给的默认模型,因为两种模型所使用的主观实验数据都是在1/60(度/像素)的临界角频率下的主观质量。不同之处在于,4K模型使用了更宽的视角,会影响受试者的余光和聚焦点的成像。
3.5 对预测的不确定性进行定量
VMAF模型主要在一些具有代表性的视频和不同失真类型上进行训练。由于实验室条件下进行主观实验的一些限制,选择的视频序列可能无法涵盖整个视频感知质量空间。因此,VMAF模型的分值预测可以与置信区间(CI)相关联,以表征训练过程的内在不确定性。因此,我们最近提出了一种可以得出VMAF预测分数及其95%的置信区间的方法,从而定量预测的置信水平。主要通过使用完整的训练数据引导预测残差来得到置信区间,从本质上讲,它通过对预测的残差使用“有替换的重采样”来得到更多模型。每个模型都会引入略有不同的预测,这些预测的可变性量化了置信水平——这些预测越接近,使用完整数据的预测就越可靠。
上面的示例图基于NFLX公共数据集得到了与每个数据点相关联的95%置信区间。值得注意的是,得分较高的一方往往比得分较低的一方具有更小的置信区间。一个可行的解释是:在训练VMAF模型的数据集中,分数较高的一端比分数较低的一端具有更密集的数据点采样。值得注意的是,引导技术不一定会提高训练模型的准确性,但会为其预测提供一定统计意义。
四、实战攻略
我们经常会被问到用特定方式计算VMAF分数是否合适,或者算得的分数应当如何解释。本节将重点解释一些使用VMAF的注意事项。
4.1 VMAF分数的解释
VMAF分数取值范围为0-100,其中0表示最低质量,100表示最高质量。理解VMAF分数的一种很好的方法是,将其线性映射到用于训练的主观测试时的分数域。例如,默认模型v0.6.1使用绝对类别评级(ACR)方法收集的分数进行训练,使用1080p显示器,观看距离为3H。观众在“很差”,“较差”,“一般”,“良好”和“优秀”这5个范围对视频质量进行打分。粗略地说,“很差”映射到VMAF分数的20,“优秀”映射到100分。因此,在1080p和3H条件下,普通观众可以将VMAF得分70解释为“良好”和“一般”之间的质量。另一个需要注意的是测试者给出的最好和最差分数往往是整套视频中质量最高和最低的视频(在进行实际测试开始之前,受试者通常习惯于实验条件下的视频质量范围)。在默认模型v0.6.1的条件下,最佳和最差视频分别对应的是通过低量化参数(QP)的1080p压缩视频和通过高QP的240p压缩视频。
4.2 以正确的分辨率计算VMAF
典型的用于自适应流传输的编码过程一般引入了两种类型的失真——压缩失真(编码器有损压缩)和缩放失真(对于低码率,源视频在压缩之前被下采样,并且稍后在显示设备上上采样)。使用VMAF评估感知质量时,必须考虑这两种类型的失真。例如,当源视频为1080p但被编码为480p时,计算VMAF的正确方法是将编码后的视频上采样至1080p以匹配源视频的分辨率。反之,如果将源视频下采样到480p以匹配编码后的视频,则获得的VMAF分数将无法体现缩放失真。在对不同视频进行编码时显得尤为重要,因为其中凸包的构造对于选择最佳编码参数是至关重要的。
上面的例子说明了正确计算(左)和错误计算(右)VMAF时形成的凸包的结果。当对编码后视频进行上采样后计算VMAF,可以很容易地发现不同分辨率的曲线会交叉而过。另一方面,如果对源视频进行下采样,则低分辨率编码将偏向于高分,并且会发现曲线之间没有交叉。
4.3上采样算法的选取
当对编码进行上采样以匹配源视频的分辨率时,可以使用许多上采样算法,包括双线性,双三次,lanczos,甚至更高级的基于神经网络的方法。“上采样算法的质量越高对应的结果越好”这个观点是不正确的。原则上,应该选择能够最好地匹配显示设备的算法。在许多情况下,显示器中对视频进行上采样的硬件是未知的,因此,我们建议使用双三次上采样方法的结果作为一个通用的方法。
4.4 解读非1080p视频的VMAF分数
常常有人会问:如果源视频和编码后视频的分辨率都低于1080p,那么1080p模型(例如默认的v0.6.1模型)是否仍然适用?默认模型反映的是 “1/60(度/像素)”(意味着它假设在一度的视角内具有60个像素)的临界角频率对应的视频质量的模型。根据几何学知识,可以发现观看距离为3H的1080p视频,与距离为4.5H的720p视频和距离为6.75H的480p视频效果基本相同。换句话说,如果将1080p模型应用于720p或 480p视频,则得到的分数可以解释为分别以4.5H或 6.75H的观看距离下观看而得的分数。在这样远的观看距离下,许多失真人眼无法察觉,因此反而会得到更高的分数。值得注意的是,这种解释并没有校准其他因素,如眼睛焦距,中央凹视力和观众对标清视频与高清视频的心理预期。
4.5 时域池化操作
VMAF模型会为每帧打出一个分数,在实际应用中,通常一个较长持续时间内的综合分数比较有用,譬如对于几秒钟的视频片段,或者甚至是两小时的电影。尽管有许多复杂的在时域池化的技术,我们的实践结果表明,简单的算术平均值(AM)是取平均操作的最佳方式,因为它的结果与主观分数的相关性最高。另一种实用的取平均技术是调和平均值(HM)。通常情况它的结果与AM非常相似,除了在存在异常值的情况下,HM更加突出小值的影响。
上面的例子证明了在有无小的异常值情况下AM 和 HM之间的差异。当人们想要基于VMAF优化质量同时避免偶尔的低质量视频编码时,基于HM的时域池化是有用的。
4.6 A / B测试的度量准则
为了理解不同操作在A / B测试中的影响,我们需要将帧级VMAF分数综合为每次测试的结果(即每次测试一个分数)。自适应流传输中选择的最佳码率受各种因素(例如吞吐量)影响,每次测试将基于每个流播放的时长以及在何时播放对每帧VMAF分值进行不同的“结合”。要对每次测试的单个VMAF分值进行综合,我们必须注意:1)确定适当的聚合程度;2)使用反映不同方面的感知质量指标进行聚合。
如果我们将每个流的每帧的VMAF分数进行平均,我们将漏掉在此间发生的质量下降。如果我们不平均,就使用每帧的值,则对于每次测试,最终在综合每帧分值时的计算复杂度将会很高。因此,我们建议使用秒为粒度的时间间隔,以在准确性和易实施性之间达到一个较好的平衡。
为了理解不同处理方法在A / B测试中的影响,我们建议采用能反映三个方面质量的关键指标:总体质量,开播质量和可变性。这三个量可以分别是整个测试中的平均VMAF分值,前N秒的平均VMAF分值,以及VMAF值相对于先前一个值下降到某个阈值以下的次数。
五、旅程继续
从一个公司内部项目到成为一个为Netflix的所有会员提供最佳视频观看体验的有效工具,以及到现在的一个开始吸引用户和社区贡献者维护的开源项目,VMAF一直在不断发展,不断寻找新的应用领域。我们很高兴看到除了在Netflix公司内部,VMAF已应用于编解码器的比较、编码优化、A / B实验、视频分析和后处理优化等诸多方面。此外,我们还看到了独立的研究人员交叉验证了VMAF的感知准确性、开源社区对VMAF的计算进行了加速、创建了易于使用的界面等,它正在不断的被优化着。
但我们的旅途才刚刚开始~
通过与一些研究人员和VMAF使用者进行交流,我们意识到目前的VMAF模型在很多方面可以改进。举几个例子:
VMAF模型只使用了简单的时域特征,即相邻帧之间的平均低通滤波差异。进一步,VMAF模型还可以借鉴学习更复杂的时域模型来更好地度量时域感知特征来提升性能;
VMAF模型并没有完全体现许多编解码器中的感知优化带来的效果,尽管与PSNR相比,它正朝着正确的方向更进了一步;
目前VMAF尚未使用色度特征,且并不能充分表达HDR 或 WCG视频的感知方面的特点;
VMAF模型在时长为几秒钟的短视频中表现最佳,但是它对反映卡顿造成的QoE影响无能为力,同时也无法捕捉(用户)在长时间观看后的一些主观感知特性,比如首因效应(primacy effect)和近因效应(recency effect)
在未来几年,我们将继续努力改进VMAF模型,并邀请行业、学术界和开源社区与我们进行合作。
六、致谢
我们要感谢以下个人对VMAF项目的帮助:C.-C Jay Kuo教授(南加州大学),Joe Yuchieh Lin,Eddy Chi-Hao Wu,Haiqiang Wang,Patrick Le Callet教授( UniversitédeNantes),Jing Li,Yoann Baveye,Lukas Krasula,Alan Bovik教授(德克萨斯大学奥斯汀分校),Todd Goodall,Ioannis Katsavounidis,视频算法团队成员,Martin Tingley和Lavanya Sharan of Streaming S&A,以及VMAF项目的开源贡献者。