作者:Zhi Li、Anne Aaron、Ioannis Katsavounidis、Anush Moorthy 和 Megha Manohara
在 Netflix,我们关心视频质量,我们关心大规模准确测量视频质量。我们的方法:视频多方法评估融合 (VMAF)指数,旨在反映观众对我们的流媒体质量的看法。我们正在开源这个工具,并邀请研究界与我们合作完成这个重要的项目。
我们对高质量视频的追求
我们努力为我们的会员提供出色的观看体验:流畅的视频播放,无恼人的画面伪影。考虑到网络带宽和观看设备的限制,这项工作的一个重要部分是提供具有最佳感知质量的视频流。我们通过多种努力不断朝着这个目标努力。
首先,我们在视频编码领域进行了创新。流式视频需要使用 H.264/AVC、HEVC 和 VP9 等标准进行压缩,以便以合理的比特率进行流式传输。当视频压缩过多或不正确时,这些技术会引入质量损害,称为压缩伪影。专家将它们称为“块效应”、“振铃效应”或“蚊子噪音”,但对于普通观众来说,视频看起来并不正确。为此,我们定期比较编解码器供应商的压缩效率、稳定性和性能,并整合市场上最好的解决方案。我们评估不同的视频编码标准,以确保我们始终处于压缩技术的前沿。例如,我们在 H.264/AVC、HEVC 和 VP9 之间进行比较,开放媒体联盟(AOM) 和联合视频探索团队(JVET)。即使在既定标准内,我们也会继续试验配方决策(参见 Per-Title 编码优化项目)和速率分配算法,以充分利用现有工具集。
我们在基于云的分布式媒体管道中对 Netflix 视频流进行编码,这使我们能够扩展以满足业务需求。为了最大限度地减少不良源交付、软件错误和云实例的不可预测性(瞬态错误)的影响,我们在管道中的各个点自动进行质量监控。通过这种监控,我们试图在采集和管道中的每个转换点检测视频质量问题。
最后,当我们在 Netflix 生态系统的各个领域(例如自适应流媒体或内容交付网络算法)进行迭代并运行 A/B 测试时,我们努力确保通过系统改进来维持或提高视频质量。例如,旨在减少播放开始延迟或重新缓冲的自适应流算法的改进不应降低流会话中的整体视频质量。
上述所有具有挑战性的工作都取决于一个基本前提:我们可以准确有效地测量大规模视频流的感知质量。传统上,在视频编解码器的开发和研究中,有两种方法被广泛用于评估视频质量:1) 视觉主观测试和 2) 简单指标的计算,例如 PSNR,或者最近的 SSIM [1]。
毫无疑问,对于我们生产、A/B 测试监控和编码研究实验的吞吐量而言,人工目视检查在操作上和经济上都是不可行的。测量图像质量是一个老问题,已经提出了许多简单实用的解决方案。均方误差 (MSE)、峰值信噪比(PSNR) 和结构相似性指数 (SSIM) 是最初为图像设计并后来扩展到视频的指标示例。这些指标通常在编解码器(“循环内”)中用于优化编码决策和报告编码视频的最终质量。尽管该领域的研究人员和工程师都清楚 PSNR 并不能始终反映人类的感知,但它仍然是编解码器比较和编解码器标准化工作的事实标准。
构建与 Netflix 相关的数据集
为了评估视频质量评估算法,我们采用数据驱动的方法。第一步是收集与我们的用例相关的数据集。尽管有用于设计和测试视频质量指标的公开数据库,但它们缺乏与 Netflix 等实际流媒体服务相关的内容多样性。其中许多在源和编码质量方面不再是最先进的;例如,它们包含标准清晰度 (SD) 内容并且仅涵盖较旧的压缩标准。此外,由于评估视频质量的问题远比测量压缩伪影更为普遍,因此现有数据库试图捕捉更广泛的损伤,不仅由压缩引起,而且由传输损耗、随机噪声和几何变换引起。
Netflix 的流媒体服务为设计准确反映流媒体视频质量的感知指标带来了一系列独特的挑战和机遇。例如:
视频源特性。Netflix 拥有海量的电影和电视节目,它们在类型上表现出多样性,例如儿童内容、动画、快速动作电影、带有原始镜头的纪录片等。此外,它们还表现出多样化的低级源特征,例如胶片颗粒、传感器噪声、计算机生成的纹理、始终如一的黑暗场景或非常明亮的色彩。过去开发的许多质量指标都没有经过调整以适应源内容的这种巨大变化。例如,许多现有的数据库缺乏动画内容,并且大多数没有考虑电影颗粒,这是专业娱乐内容中非常普遍的信号特征。
文物的来源。由于 Netflix 视频流是使用强大的传输控制协议 (TCP) 传输的,因此丢包和误码绝不是视觉障碍的来源。这会在编码过程中留下两种类型的伪影,最终影响观看者的体验质量 (QoE):压缩伪影(由于有损压缩)和缩放伪影(对于较低比特率,视频在压缩前被下采样,然后在观众的设备)。通过定制质量指标以仅涵盖压缩和缩放工件,以通用性换取精度,其准确性有望优于通用指标。
为了构建更适合 Netflix 用例的数据集,我们从 Netflix 目录中的热门电视节目和电影中选择了 34 个源剪辑(也称为参考视频)的样本,每 6 秒长,并将它们与公开的可用的剪辑。源剪辑涵盖了广泛的高级特征(动画、室内/室外、摄像机运动、面部特写、人物、水、明显的显着性、物体数量)和低级特征(胶片颗粒噪声、亮度、对比度、纹理、运动、色彩变化、色彩丰富度、锐度)。使用源剪辑,我们以 384×288 到 1920×1080 的分辨率和 375 kbps 到 20,000 kbps 的比特率对 H.264/AVC 视频流进行编码,产生大约 300 个失真视频. 这涵盖了广泛的视频比特率和分辨率,以反映 Netflix 成员广泛变化的网络状况。
然后,我们进行了主观测试,以确定非专家观察者如何对编码视频相对于源剪辑的损伤进行评分。在标准化主观测试中,我们使用的方法称为双刺激损伤量表 (DSIS)方法。参考视频和失真视频在消费级电视上按顺序显示,环境照明受控(如 ITU-R BT.500–13 [2] 建议书所述)。如果失真视频以小于参考的分辨率进行编码,则在电视上显示之前将其放大到源分辨率。观察者坐在类似客厅的环境中的沙发上,并被要求以 1(非常烦人)到 5(不明显)的等级对损伤进行评分。将所有观察者的分数结合起来生成差分平均意见分数或DMOS对于每个失真视频并在 0 到 100 范围内归一化,参考视频的得分为 100。来自观察者的参考视频、失真视频和 DMOS 分数的集合在本文中将被称为NFLX 视频数据集。
传统视频质量指标
传统的、广泛使用的视频质量指标与 NFLX 视频数据集的“真实”DMOS 分数有何关联?
视觉示例
上面,我们看到了从 4 个不同的失真视频中捕获的部分静止帧;顶部的两个视频报告的 PSNR 值约为 31 dB,而底部的两个视频报告的 PSNR 值约为 34 dB。然而,人们几乎没有注意到“人群”视频的差异,而两个“狐狸”视频的差异则更加明显。人类观察者通过将这两个“人群”视频的 DMOS 评分为 82(顶部)和 96(底部)来确认这一点,而对两个“狐狸”视频的 DMOS 评分分别为 27 和 58 分来确认这一点。
详细结果
下图是散点图,在 x 轴上显示观察者的 DMOS,在 y 轴上显示来自不同质量指标的预测分数。这些图是从 NFLX 视频数据集的选定子集中获得的,我们将其标记为 NFLX-TEST(详见下一节)。每个点代表一个失真视频。我们绘制了四个质量指标的结果:
亮度分量的PSNR
SSIM [1]
多尺度 FastSSIM [3]
PSNR-HVS [4]
有关 SSIM、Multiscale FastSSIM 和 PSNR-HVS 的更多详细信息,请参阅参考部分列出的出版物。对于这三个指标,我们使用了Daala代码库 [5] 中的实现,因此后续图中的标题以“Daala”为前缀。
注意:具有相同颜色的点对应于源自相同参考视频的失真视频。由于主题可变性和参考视频归一化到 100,一些 DMOS 分数可能超过 100。
从图中可以看出,这些指标未能提供一致地预测观察者 DMOS 评级的分数。例如,关注左上角的 PSNR 图,对于 35 dB 左右的 PSNR 值,“真实”DMOS 值的范围从 10(损伤很烦人)到 100(损伤难以察觉)。对于 SSIM 和多尺度 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 的范围内,电视剧的 PSNR 变化约 2 dB 对应于 DMOS 变化约 50(50 到 100),但 CG 动画在相同范围内类似的 2 dB 变化对应于小于 20(40 到 60)的变化DMOS。虽然 SSIM 和 FastSSIM 对于 CG 动画和电视剧片段表现出更一致的斜率,但它们的性能仍然不足。
总之,我们看到传统指标不适用于我们的内容。为了解决这个问题,我们采用了基于机器学习的模型来设计一个旨在反映人类对视频质量感知的指标。该指标将在下一节中讨论。
我们的方法:视频多方法评估融合 (VMAF)
基于我们与南加州大学 C.-CJ Kuo 教授及其团队的研究合作 6,我们开发了Video Multimethod Assessment Fusion或 VMAF,通过组合多个基本质量指标来预测主观质量。基本原理是,每个基本度量在源内容特征、伪像类型和失真程度方面都可能有自己的优势和劣势。通过使用机器学习算法(在我们的例子中是支持向量机 (SVM) 回归器)将基本指标“融合”到最终指标中,该算法为每个基本指标分配权重,最终指标可以保留各个指标的所有优势,并提供更准确的最终分数。机器学习模型使用通过主观实验(在我们的例子中为 NFLX 视频数据集)获得的意见分数进行训练和测试。
作为 VMAF 开发工具包开源软件的一部分发布的 VMAF 算法和模型的当前版本(表示为 VMAF 0.3.1)使用以下由支持向量机 (SVM) 回归 [8] 融合的基本指标:
视觉信息保真度 (VIF) [9]。VIF 是一种被广泛采用的图像质量度量,其前提是质量与信息保真度损失的度量相辅相成。在其原始形式中,VIF 分数被测量为结合四个量表的保真度损失。在 VMAF 中,我们采用了 VIF 的修改版本,其中每个尺度中的保真度损失作为基本指标包括在内。
细节损失指标(DLM) [10]。DLM 是一种图像质量度量,其基本原理是分别测量影响内容可见性的细节损失和分散观众注意力的冗余损伤。原始指标结合了 DLM 和附加损伤测量 (AIM) 以产生最终分数。在 VMAF 中,我们只采用 DLM 作为基本指标。特别注意特殊情况,例如黑框,其中原始公式的数值计算失败。
VIF 和 DLM 都是图像质量指标。我们进一步引入以下简单特征来解释视频的时间特征:
运动。这是对相邻帧之间时间差异的简单测量。这是通过计算亮度分量的平均绝对像素差来实现的。
这些基本指标和特征是通过测试和验证的迭代从其他候选者中选择出来的。
我们将 VMAF 的准确性与上述其他质量指标进行比较。为了避免不公平地将 VMAF 过度拟合到数据集,我们首先将 NFLX 数据集分为两个子集,称为 NFLX-TRAIN 和 NFLX-TEST。这两组具有不重叠的参考剪辑。然后使用 NFLX-TRAIN 数据集训练 SVM 回归器,并在 NFLX-TEST 上进行测试。下图显示了 VMAF 指标在 NFLX-TEST 数据集和选定参考剪辑上的性能——高噪声视频(蓝色)、CG 动画(绿色)和电视剧(生锈)。为了便于比较,我们重复了 PSNR-HVS 的图,这是前面部分中表现最好的指标。很明显,VMAF 的性能要好得多。
我们还将 VMAF与具有可变帧延迟(VQM-VFD) [11] 的视频质量模型进行了比较,该模型被许多人认为是该领域的最新技术。VQM-VFD 是一种使用神经网络模型将低级特征融合成最终度量的算法。它在精神上类似于 VMAF,只是它在较低级别提取特征,例如空间和时间梯度。
很明显,VQM-VFD 在 NFLX-TEST 数据集上的性能接近 VMAF。由于 VMAF 方法允许将新的基本指标纳入其框架,VQM-VFD 也可以作为 VMAF 的基本指标。
下表列出了融合 NFLX-TEST 数据集上各个基本指标的不同组合后,VMAF 模型的 SRCC、PCC 和 RMSE 数据测量的性能,以及 VMAF 0.3.1 的最终性能。我们还列出了使用 VQM-VFD 增强的 VMAF 的性能。结果证明了我们的假设,即高性能质量指标的智能融合会导致与人类感知的相关性增加。
NFLX-TEST 数据集
结果总结
在下表中,我们总结了前面讨论过的不同指标的 SRCC、PCC 和 RMSE,在 NLFX-TEST 数据集和三个流行的公共数据集上:VQEG HD(仅限 vqeghd3 集合)[12]、实时视频数据库 [13]和实时移动视频数据库 [14]。结果表明,VMAF 0.3.1 在除 LIVE 数据集之外的所有指标中都优于其他指标,与性能最佳的 VQM-VFD 相比,它仍然提供具有竞争力的性能。由于 VQM-VFD 在四个数据集之间表现出良好的相关性,因此我们正在尝试将 VQM-VFD 作为 VMAF 的基本指标;虽然它不是开源版本 VMAF 0.3.1 的一部分,但它可能会集成到后续版本中。
NFLX-TEST 数据集
实时数据集*
*仅用于压缩损伤(H.264/AVC 和 MPEG-2 视频)
VQEGHD3 数据集*
*对于源内容 SRC01 至 SRC09 和流相关损伤 HRC04、HRC07 和 HRC16 至 HRC21
VMAF 开发套件 (VDK) 开源包
为了通过 Internet 提供高质量的视频,我们认为该行业需要良好的感知视频质量指标,这些指标既实用又易于大规模部署。我们开发了 VMAF 来帮助我们满足这一需求。今天,我们在 Apache 许可证版本 2.0 下在 Github 上开源 VMAF 开发工具包(VDK 1.0.0)包。通过开源 VDK,我们希望它可以随着时间的推移而发展,从而提高性能。
VDK 核心中的特征提取(包括基本度量计算)部分是计算密集型的,因此为了提高效率,它是用 C 编写的。控制代码是用 Python 编写的,用于快速原型设计。
该软件包带有一个简单的命令行界面,允许用户以单一模式(run_vmaf 命令)或批处理模式(run_vmaf_in_batch 命令,可选择启用并行执行)运行 VMAF。此外,由于特征提取是最昂贵的操作,用户还可以将特征提取结果存储在数据存储中以供以后重复使用。
该软件包还提供了一个框架,用于进一步定制基于以下内容的 VMAF 模型:
- 训练它的视频数据集
- 要使用的基本指标和其他功能
- 回归器及其超参数
该命令run_training接受三个配置文件:一个数据集文件,其中包含有关训练数据集的信息、一个特征参数文件和一个回归器模型参数文件(包含回归器超参数)。下面是定义数据集、一组选定特征、回归量及其超参数的示例代码。
##### 定义数据集#####
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'},
]
##### 定义特征 #####
feature_dict = {
# VMAF_feature/Moment_feature 是聚合特征
#motion, adm2, dis1st 是原子特征
'VMAF_feature':['motion', 'adm2'],
'Moment_feature' :['dis1st'], # dis video 的第一时刻
}
##### 定义回归器和超参数 #####
model_type = “LIBSVMNUSVR” # libsvm NuSVR 回归器
model_param_dict = {
# ==== 预处理:标准化每个特征 ==== #
'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 参数 ==== #
'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,并为我们的用例帮助改进它,并可能将其扩展到其他用例。
我们关于质量评估的开放式问题
查看条件。Netflix 支持数以千计的有源设备,包括智能电视、游戏机、机顶盒、计算机、平板电脑和智能手机,从而为我们的会员带来了广泛不同的观看条件。观看设置和显示会显着影响质量感知。例如,如果 Netflix 会员在 4K 60 英寸电视上观看以 1 Mbps 编码的 720p 电影,则如果在 5 英寸智能手机上观看同一流的质量,可能会有非常不同的看法。当前的 NFLX 视频数据集涵盖了单一的观看条件——在标准距离观看电视。为了增强 VMAF,我们正在其他观看条件下进行主观测试。有了更多的数据,我们可以推广算法,以便可以将查看条件(显示尺寸、与屏幕的距离等)输入到回归器中。
时间池。我们当前的 VMAF 实现基于每帧计算质量分数。在许多用例中,需要临时池化这些分数在较长时间内返回单个值作为摘要。例如,一个场景的得分、常规时间段的得分或整部电影的得分是合乎需要的。我们目前的方法是一个简单的时间池化,它采用每帧值的算术平均值。但是,这种方法存在“隐藏”质量差的帧的风险。对较低分数给予更多权重的池化算法可能对人类感知更准确。当使用汇总分数来比较帧之间不同质量波动的编码时,或者在优化编码或流会话时作为目标指标时,良好的池化机制尤其重要。VMAF 和其他质量指标的感知准确时间池机制仍然是一个开放且具有挑战性的问题。
一致的指标。由于 VMAF 包含完整的参考基本指标,因此 VMAF 高度依赖于参考的质量。遗憾的是,Netflix 目录中所有影片的视频源质量可能不一致。源以从 SD 到 4K 的分辨率进入我们的系统。即使在相同的分辨率下,可用的最佳源也可能会受到某些视频质量的影响。因此,比较(或总结)不同标题的 VMAF 分数可能不准确。例如,当从 SD 源生成的视频流的 VMAF 得分达到 99(满分 100)时,它绝不具有与从 HD 源编码的具有相同得分 99 的视频相同的感知质量。对于质量监测,我们非常希望我们可以计算出跨来源一致的绝对质量分数。毕竟,当观众观看 Netflix 节目时,除了传送到他们屏幕上的图片之外,他们没有任何参考。我们希望有一种自动化的方式来预测他们对交付给他们的视频质量的看法,同时考虑到促成该屏幕上最终呈现的视频的所有因素。
概括
我们开发了 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 教授(南特大学)和托德·古道尔。
参考
- Z. Wang, A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli, “Image Quality Assessment: From Error Visibility to Structural Similarity,” IEEE Transactions on Image Processing, vol. 13, no. 4, pp. 600–612, Apr. 2004.
- BT.500 : Methodology for the Subjective Assessment of the Quality of Television Pictures, https://www.itu.int/rec/R-REC...
- M.-J. Chen and A. C. Bovik, “Fast Structural Similarity Index Algorithm,” Journal of Real-Time Image Processing, vol. 6, no. 4, pp. 281–287, Dec. 2011.
- N. Ponomarenko, F. Silvestri, K. Egiazarian, M. Carli, J. Astola, and V. Lukin, “On Between-coefficient Contrast Masking of DCT Basis Functions,” in Proceedings of the 3 rd International Workshop on Video Processing and Quality Metrics for Consumer Electronics (VPQM ’07), Scottsdale, Arizona, Jan. 2007.
- Daala codec. https://git.xiph.org/daala.git/
- T.-J. Liu, J. Y. Lin, W. Lin, and C.-C. J. Kuo, “Visual Quality Assessment: Recent Developments, Coding Applications and Future Trends,” APSIPA Transactions on Signal and Information Processing, 2013.
- J. Y. Lin, T.-J. Liu, E. C.-H. Wu, and C.-C. J. Kuo, “A Fusion-based Video Quality Assessment (FVQA) Index,” APSIPA Transactions on Signal and Information Processing, 2014.
- C.Cortes and V.Vapnik, “Support-Vector Networks,” Machine Learning, vol. 20, no. 3, pp. 273–297, 1995.
- H. Sheikh and A. Bovik, “Image Information and Visual Quality,” IEEE Transactions on Image Processing, vol. 15, no. 2, pp. 430–444, Feb. 2006.
- S. Li, F. Zhang, L. Ma, and K. Ngan, “Image Quality Assessment by Separately Evaluating Detail Losses and Additive Impairments,” IEEE Transactions on Multimedia, vol. 13, no. 5, pp. 935–949, Oct. 2011.
- S. Wolf and M. H. Pinson, “Video Quality Model for Variable Frame Delay (VQM_VFD),” U.S. Dept. Commer., Nat. Telecommun. Inf. Admin., Boulder, CO, USA, Tech. Memo TM-11–482, Sep. 2011.
- Video Quality Experts Group (VQEG), “Report on the Validation of Video Quality Models for High Definition Video Content,” June 2010, http://www.vqeg.org/
- K. Seshadrinathan, R. Soundararajan, A. C. Bovik and L. K. Cormack, “Study of Subjective and Objective Quality Assessment of Video”, IEEE Transactions on Image Processing, vol.19, no.6, pp.1427–1441, June 2010.
- A. K. Moorthy, L. K. Choi, A. C. Bovik and G. de Veciana, “Video Quality Assessment on Mobile Devices: Subjective, Behavioral, and Objective Studies,” IEEE Journal of Selected Topics in Signal Processing, vol. 6, no. 6, pp. 652–671, Oct. 2012.
- scikit-learn: Machine Learning in Python. http://scikit-learn.org/stable/
- CVXOPT: Python Software for Convex Optimization. http://cvxopt.org/
- TensorFlow. https://www.tensorflow.org/