尽管主观评定被认为是最佳的视频质量评价方式,但对于每天新增海量视频的平台而言,采用人工方式评定是不现实的。Netflix实践出自己的画质评价模型——VMAF。本文详细阐述了VMAF的实现与演进,LiveVideoStack对其进行了摘译。如果您对音视频技术的未来有实践分析与洞见,欢迎联系 contribute@livevideostack.com。
在Netflix公司,我们很关注视频质量,同时也关注如何规模化地精确评价视频质量。我们提出了视频多方法评估融合(VMAF)评价模型——试图反映观众对我们流媒体质量的感受。目前,我们正在将这个工具开源,并邀请研究界就这个重要课题与我们进行合作。
我们追求高品质的视频呈现
我们努力为会员提供绝佳的观看体验:流畅的视频播放、没有令人厌恶的图像失真。在我们的努力中,非常重要的一部分工作是,在考虑到用户网络带宽和观看设备的限制下,我们尽可能地感知并提供最佳质量的视频流。我们一直在通过各种各样的方法努力实现这一目标。
首先,我们在视频编码领域进行创新。流式视频需要使用H.264 / AVC、HEVC和VP9等标准进行压缩,才能以合理的比特率进行流式传输。当视频被压缩太多或压缩不当时,这些技术会引入质量损伤,即压缩失真。专家称他们为“阻塞”、“响铃”或“蚊子噪音”,但对于观众来说,就是视频看起来不对劲。为此,我们定期比较编解码器提供商的压缩效率、稳定性和性能,并整合市场上最好的解决方案。我们评估不同的视频编码标准,以确保我们保持在压缩技术的前沿。例如,我们比较H.264 / AVC、HEVC和VP9,并将在近期实验由开放媒体联盟(AOM)和联合视频探索组(JVET)开发的下一代解码器。即使在既定的标准之内,为了充分利用现有的工具集,我们仍然继续在解决方案和速率分配算法上进行实验(请参阅标题编码优化项目)。
我们将Netflix视频流编码在分布式云媒体管道中,方便扩展以满足更多业务需求。为了最大限度地减少不良视频源交付、软件报错和云实例不可预测性(瞬态错误)等影响,我们对管道中的各个点进行自动质量监控。通过这种监控,我们试图检测视频从进入管道,到经过每个转换点的质量问题。
最后,当我们在Netflix生态系统的各个领域进行迭代(例如自适应流算法或内容交付网络算法)并运行A / B测试时,我们努力确保通过系统的改良,可以维持或改进视频质量。例如,旨在减少回放延迟或重新缓冲的自适应流算法的改进,不应该降低流会话中的整体视频质量。
上述所有具有挑战性的工作都取决于一个基本前提:我们可以准确有效地衡量大量视频流的感知质量。一般来说,在视频编解码器的开发和研究中,广泛使用两种方法来评估视频质量:1)视觉主观测试和2)简单测度指标的计算,例如PSNR或最近推出的SSIM[1]。
毫无疑问,人工目视检查在操作上和经济上都是不可行的。
基于我们产品的大吞吐量,使用A / B测试来监测和编码研究实验。图像质量评估是一个老问题,已经有许多简单和实用的解决方案。均方差(MSE)、峰值信噪比(PSNR)和结构相似性指数(SSIM)是最初为图像设计的测度指标的例子,后来扩展到视频。这些测度指标经常用于在编解码器(“in-loop”)内优化编码决策和报告编码视频的最终质量。尽管该领域的研究人员和工程师都很清楚PSNR并不能一贯地反映人类的感知,但它仍然是编解码器比较和编解码器标准化工作的事实标准。
建立Netflix相关数据集
我们采用数据驱动的方法来评估视频质量评价算法。第一步是采集一个与我们用例相关的数据集。尽管用于设计和测试视频质量指标的公开数据库有很多,但它们往往缺乏与实用流媒体服务(如Netflix)相关的内容多样性。它们中的许多在源的质量和编码方面已经不再是最先进的技术,例如,它们包含标准清晰度(SD),且仅涵盖较早的压缩标准。此外,由于评估视频质量要比测度压缩失真普遍得多,所以现有数据库试图捕获更大范围的失真,这些失真不仅由压缩引起,还可能由传输损耗、随机噪声和几何变换等引起。例如,观看黑白监控设备传输的低分辨率视频(640×480),与在客厅中观看自己喜爱的Netflix节目相比,呈现出明显不同的观看体验。
Netflix的流媒体服务涌现出一系列独特的挑战,也为设计精确反映流媒体视频质量的感知指标提供了机会。例如:
为了构建更适合Netflix用例的数据集,我们从Netflix目录中流行的电视节目和电影中选择了每个长度为6秒钟的34个源片段(也称为参考视频)样本,并将它们与选择的公共可用片段进行整合。源片段涵盖了广泛的高级特征(动画、室内/室外、摄像头运动、脸部特写、人物、水、明显突出、物体数量)和低级特征(胶片噪点、亮度、对比度、纹理、运动、颜色变化、颜色丰富度、清晰度)。使用源片段,我们编码的H.264 / AVC视频流,分辨率从384×288到1920×1080,比特率从375 kbps到20,000 kbps,输出了约300个有损的视频。这掠过了广阔的视频比特率和分辨率范围,反映了Netflix会员网络状况的巨大差异。
然后,我们进行主观测试,以确定非专业观察者如何评估编码视频相对于源剪辑的失真。在标准化的主观测试中,我们使用的方法被称为双重刺激有损缩放(DSIS)。在受约束的室内照明下(按照建议书ITU-R BT.500-13[2]的规定),参考视频和失真视频在消费级电视机上依次播放。如果失真视频以比参考视频更小的分辨率进行编码,则视频会首先被放大到与源视频分辨率相同后,再在电视上显示。观察者坐在类似起居室的沙发上,以1(失真令人厌烦)到5(失真无法察觉)进行评分。所有观察者的分数合起来为每个视频产生一个差分平均意见分数或DMOS,并在0到100的范围内归一化,其中,参考视频的分数为100。本文将参考视频、失真视频和DMOS分数作为NFLX视频数据集。
传统的视频质量测度指标
广泛使用的传统视频质量指标如何与NFLX视频数据集的“事实上”的DMOS分数相关联?
一个视觉例子
从上图,我们看到从4个不同的失真视频中捕获的静态帧的部分; 顶部的两个视频的PSNR值约31dB,而底部的两个视频的PSNR值约34dB。然而,人们几乎不能注意到“人群”视频的差异,而两个“狐狸”视频的差别却很明显。人类观察者将这两个“人群”视频DMOS分数评为82(顶部)和96(底部),而将两个“狐狸”视频的DMOS分数分别评为27(顶部)和58(底部)。
详细的结果
下面的图表是散点图,x轴上表示观察者的DMOS分数,y轴上表示不同质量测度指标的预测得分。这些图是从NFLX视频数据集的一个选定子集中获得的,我们将其标记为NFLX-TEST(详见下一节)。每个点代表一个失真视频。我们绘制了四个质量指标的结果:
有关SSIM,Multiscale FastSSIM和PSNR-HVS的更多详细信息,请参见参考文献部分中列出的出版物。对于这三个度量指标,我们使用了Daala代码库[5]中的实现,所以后面图中的标题前缀为“Daala”。
注意:具有相同颜色的点对应于源自相同参考视频的失真视频。由于主观差异性和参考视频归一化到100,一些DMOS分数可能超过100。
从图中可以看出,这些指标不能始终如一地预测观察者的DMOS分数值。例如,关注左上角的PSNR图,对于大约35dB的PSNR值,“事实上”的DMOS值在从10(失真令人厌烦)到100(失真无法察觉)的范围内变化。对于SSIM和Multiscale FastSSIM指标,可以得出类似的结论,其中接近0.90的分数可以对应于10到100的DMOS值。在每个图上,我们报告了Spearman等级相关系数(SRCC),Pearson乘积矩相关系数(PCC)和每个指标的均方根误差(RMSE)数据,这些数据是按照ITU-R BT.500-13 [2]附录3.1的规定,在非线性逻辑拟合后计算的。SRCC和PCC值接近1.0、RMSE值接近于0是理想的。在这四个指标中,PSNR-HVS表现出最好的SRCC、PCC和RMSE值,但仍然缺乏预测的准确性。
为了在各种各样的内容中都能实现有意义的表现,测度指标应该表现出良好的相对质量分数,即,测度指标中的增量应该提供关于感知质量增量的信息。在下面的图表中,我们选择了三个典型的参考视频,一个高噪声视频(蓝色),一个CG动画(绿色)和一个电视剧(铁锈色),并绘制了不同失真视频的预测分数与DMOS值。要想保证相对质量得分有效,在质量曲线的相同范围内的不同剪辑之间的斜率最好恒定。例如,参考下面的PSNR图,在34 dB到36 dB的范围内,对于电视剧而言,大约为2分贝的PSNR值变化对应于约50(50至100)的DMOS值变化,但是对于CG动画在相同范围内,大约2分贝的PSNR值变化对应于小于20(40至60)的DMOS值变化。虽然SSIM和FastSSIM在CG动画和电视剧剪辑中呈现出更一致的斜率,但它们的表现仍然欠佳。
总而言之,我们发现传统指标并不适用于我们的内容。为了解决这个问题,我们采用了基于机器学习的模型来设计一个测度指标,以反映人类对视频质量的感知。这一指标将在下一节中讨论。
我们的方法:视频多方法评估融合(VMAF)模型
在与南加州大学的C.-CJ Kuo教授及其团队的研究合作基础上[6] [7],我们开发了视频多方法评估融合,或VMAF,通过结合多个基本质量测度指标来预测主观质量。基本原理是每个基本测度指标都可能在源内容特征、失真类型和失真度方面有自己的长处和短处。通过使用机器学习算法将基础测度指标“融合”为最终测度指标 —— 在我们的例子中,支持向量机(SVM)回归器 —— 为每个基本测度指标分配权重,最终测度指标可以保留单个指标的所有优势,并提供更准确的最终得分。机器学习模型使用通过主观实验获得的意见分数(在我们的例子中是NFLX视频数据集)进行训练和测试。
当前版本的VMAF算法和模型(表示为VMAF 0.3.1)作为VMAF开源软件开发工具包的一部分发布,使用支持向量机(SVM)回归[8]并融合以下基本测度指标:
VIF和DLM都是图像质量测度指标。我们进一步介绍以下简单的功能来说明视频的时间特性:
这些基本指标和特征是通过迭代测试和验证从其他候选者中选择的。
我们将VMAF的准确度与上述其他质量测度指标进行比较。为了避免将VMAF和数据集进行过度拟合,我们首先将NFLX数据集分成两个子集,称为NFLX-TRAIN和NFLX-TEST。两组具有不重叠的参考剪辑片段。然后用NFLX-TRAIN数据集训练SVM回归器,并在NFLX-TEST上进行测试。下面的图表显示了NFLX-TEST数据集和选定的参考剪辑片段 —— 高噪声视频(蓝色)、CG动画(绿色)和电视剧(铁锈色)的VMAF测度指标的性能。为了便于比较,我们重复PSNR-HVS的曲线,这是前面章节中表现最好的指标。很显然,VMAF表现更好。
我们还将VMAF 与具有可变帧延迟的视频质量模型(VQM-VFD,许多人认为这是该领域的最新技术)[11]进行了比较。VQM-VFD是一种使用神经网络模型将低级特征融合为最终测度指标的算法。它在本质上类似于VMAF,不同之处在于它提取较低级别的特征,如空间和时间梯度。
很明显,VQM-VFD在NFLX-TEST数据集上的性能接近VMAF。由于VMAF方法允许将新的基本指标纳入其框架,因此VQM-VFD也可以作为VMAF的基本指标。
下表列出了在NFLX-TEST数据集上融合了不同组合的基本测度指标后,用SRCC、PCC和RMSE值来表示的VMAF模型的性能,以及VMAF 0.3.1的最终性能。我们还列出了通过VQM-VFD增强后的VMAF的性能。结果证明了我们的预设,即高性能视频质量测度指标的智能融合会增强其与人类感知的相关性。
NFLX-TEST数据集
结果小结
在下面的表格中,我们给出了前面讨论的不同指标的SRCC、PCC和RMSE值。数据集基于NLFX-TEST数据集和三个流行的公共数据集:VQEG HD(仅用于vqeghd3集合)[12]、实时视频数据库[13]和实时移动视频数据库[14]。结果显示除了实时视频数据库之外,VMAF 0.3.1的表现都优于其他指标。与性能最好的VQM-VFD相比,VMAF也仍然很有竞争力。由于VQM-VFD在四个数据集之间表现出良好的相关性,我们正在试验VQM-VFD作为VMAF的基本度量指标时的性能; 虽然它不是开源版本VMAF 0.3.1的一部分,但它可能被集成在VMAF的后续版本中。
*仅用于压缩失真(H.264 / AVC和MPEG-2视频)
*SRC01到SRC09的源内容和与流相关的失真HRC04、HRC07,以及HRC16到HRC21
VMAF开发套件(VDK)开源包
为了通过互联网提供高质量的视频服务,我们相信业界需要具有良好感知的视频质量测度指标模型,这些指标使用起来实用而且易于大规模部署。我们已经开发了VMAF来帮助我们解决这个问题。今天,基于 Apache License Version 2.0,我们在Github上开放了VMAF开发工具包(VDK 1.0.0)。通过对VDK开源,我们希望它能随着时间的推移而不断提高性能。
VDK核心中的特征提取(包括基本测度指标计算)部分是计算密集型的,因此为了效率而使用C编写。控制代码是用Python编写的,便于快速原型设计。
该软件包带有一个简单的命令行界面,允许用户以简单模式(run_vmaf命令)或批处理模式(可选择启用并行执行的run_vmaf_in_batch命令)运行VMAF。而且,由于特征提取是最“昂贵”的操作,所以用户还可以将特征提取结果存储在数据存储器中,以便稍后再使用它们。
该软件包还提供了一个VMAF模型的定制框架,该框架基于以下部分:
run_training命令接受三个配置文件:一个数据集文件(其中包含有关训练数据集的信息)、特征参数文件和回归器模型参数文件(包含回归器超参数)。以下是一组示例代码,代码中定义了数据集、一组选定特征、回归器及其超参数。
##### define a dataset #####
dataset_name = ‘example’
yuv_fmt = ‘yuv420p’
width = 1920
height = 1080
ref_videos = [
{‘content_id’:0, ‘path’:’checkerboard.yuv’},
{‘content_id’:1, ‘path’:’flat.yuv’},
]
dis_videos = [
{‘content_id’:0, ‘asset_id’: 0, ‘dmos’:100, ‘path’:’checkerboard.yuv’}, # ref
{‘content_id’:0, ‘asset_id’: 1, ‘dmos’:50, ‘path’:’checkerboard_dis.yuv’},
{‘content_id’:1, ‘asset_id’: 2, ‘dmos’:100, ‘path’:’flat.yuv’}, # ref
{‘content_id’:1, ‘asset_id’: 3, ‘dmos’:80, ‘path’:’flat_dis.yuv’},
]
##### define features #####
feature_dict = {
# VMAF_feature/Moment_feature are the aggregate features
# motion, adm2, dis1st are the atom features
‘VMAF_feature’:[‘motion’, ‘adm2’],
‘Moment_feature’:[‘dis1st’], # 1st moment on dis video
}
##### define regressor and hyper-parameters #####
model_type = “LIBSVMNUSVR” # libsvm NuSVR regressor
model_param_dict = {
# ==== preprocess: normalize each feature ==== #
‘norm_type’:’clip_0to1', # rescale to within [0, 1]
# ==== postprocess: clip final quality score ==== #
‘score_clip’:[0.0, 100.0], # clip to within [0, 100]
# ==== libsvmnusvr parameters ==== #
‘gamma’:0.85, # selected
‘C’:1.0, # default
‘nu’:0.5, # default
‘cache_size’:200 # default
}
最后,FeatureExtractor基类可以扩展为开发定制的VMAF算法。这可以通过尝试其他可用的,或发明新的基本指标和功能来进一步一完善。类似地,TrainTestModel基类可以扩展来测试其他回归模型。请参阅CONTRIBUTING.md更多细节。用户还可以使用现有的开源Python库(如scikit-learn [15],cvxopt [16]或tensorflow [17])来尝试其他机器学习算法。软件包中包含了集成scikit-learn随机森林回归器的示例。
VDK软件包包括具有选择特征的VMAF 0.3.1算法和基于NFLX视频数据集收集的主观评分训练过的SVM模型。我们还邀请社区使用该软件包来开发一些改进功能和回归器,以便进行感知视频质量评估。我们鼓励用户在其他数据集上测试VMAF 0.3.1,并帮助改进我们的用例,并将其扩展到其他用例中。
质量评估的开放性问题
总结
我们开发了VMAF 0.3.1和VDK 1.0.0软件包,来帮助我们向会员提供最优质的视频流服务。作为我们不断追求品质的一部分,我们的团队每天都在使用它来评估视频编解码器以及编码参数和策略。VMAF以及其他指标模型已经被集成到我们的编码管道中,以改进我们的自动化质量控制(QC)。我们正在使用VMAF作为客户端指标模型之一,来监控系统端的A / B测试。
在当今的互联网环境中,提高视频压缩标准和在实际编码系统中做出明智的选择是非常重要的。我们相信,使用传统测度指标模型 —— 不总是与人类感知相关的测度指标模型 —— 可能会阻碍视频编码技术的真正进步。当然,总是依靠人工视觉测试也肯定是行不通的。VMAF是我们试图解决这个问题的一种尝试,使用我们自己的内容样本来帮助设计和验证算法。类似于业界共同开发新的视频标准时那样,我们也邀请社区就改进视频质量措施进行公开合作,最终目标是实现更高效的带宽使用和呈现视觉上令人满意的视频。
致谢
我们感谢以下人士对VMAF项目的帮助:Joe Yuchieh Lin,Eddy Chi-Hao Wu,C.-C Jay-Kuo教授(南加州大学),Patrick Le Callet教授(南特大学)和Todd Goodall。
参考文献
TensorFlow. https://www.tensorflow.org/
移动音视频开发进阶沙龙——暨新书分享会
2018年伊始,短视频与游戏对直播的激发还未平息,“冲顶大会”的火爆再次激发了直播行业的热潮,全新玩法的背后隐藏着的是超低延迟的实时互动。此外,AR/VR/MR的持续火热也将成为2018年新一波技术趋势。而手机App已渐渐占据人们日常生活的大部分时间,移动端开发也就显得至关重要。
本文分享自 LiveVideoStack 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!