
视频多方法评估工具(VMAF)是由Netflix与南加州大学,南特大学IPI / LS2N实验室以及德克萨斯大学奥斯汀分校的图像和视频工程实验室合作开发的一种客观的全参考视频质量指标。VMAF根据参考和失真的视频序列,借助机器学习和人类视觉模型来客观预测和评判视频质量。该指标可用于评估不同视频编解码器,编码器,编码设置或传输变体的质量。
github地址:
GitHub - Netflix/vmaf: Perceptual video quality assessment based on multi-method fusion.github.com/Netflix/vmaf正在上传…重新上传取消https://link.zhihu.com/?target=https%3A//github.com/Netflix/vmaf
国内也有对应的镜像,访问速度杠杠的
mirrors / Netflix / vmafcodechina.csdn.net/mirrors/Netflix/vmaf正在上传…重新上传取消
VMAF软件包包括一个独立的 C 库及其包装 Python 库。Python 库还提供一组工具,允许用户训练和测试自定义的 VMAF 模型。有兴趣的同学可以查看源码进行模型训练,github中介绍最新速度优化、新的 API 设计和引入适合编解码器评估的 NEG 模式。同时 github中还包括其他几个指标的实现:PSNR、PSNR-HVS、SSIM、MS-SSIM 和 CIEDE2000。
2 VMAF编译在github上Netflix已经开源所有的内容:Netflix-VMAF,因此我们可以下载相关内容进行编译和训练。
参考buildForWindows中的命令,即可编译成功
pacman -S --noconfirm --needed mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-meson mingw-w64-x86_64-ninja
cd
mkdir C:/vmaf-install
meson setup libvmaf libvmaf/build --buildtype release --default-library static --prefix C:/vmaf-install
meson install -C libvmaf/build
这样即可完成编译。
3 VMAF工具使用 3.1 VMAF分数通过查阅资料和官方说明,VMAF的分数评判大致分为一下内容:
VMAF分数范围从 0 到 100,0是最低值,随着分数增加视频质量越好,100表示最高质量标准;
VMAF分数仅仅是一种将其规律性映射到人的意见表的方法,由此条件下获得训练分数。官方最新的训练模型是v0.6.1版本中,其中有特定说明:
使用由绝对类别评分(ACR)方法收集的分数进行训练,该分数使用 1080p 显示屏,观看距离为3H。观看者对视频质量的评分为“差”,“差”,“一般”,“好”和“优秀”,并且粗略地讲,“差”被映射为VMAF级别20,“优秀”为100。
按照官方的说明,VMAF得分70可以测试者理解为:普通观众在 1080p 和 3H 条件下的“好”和“一般”之间的投票结果。
要考虑的另一个因素是,观看者可以给出的最佳和最差选票是通过整套视频中质量最高和最低的视频进行校准的。在默认模型 v0.6.1 的情况下,最佳视频和最差视频分别对应于在低QP(量化参数)1080p下编码的视频和在高QP 的 240p下编码的视频。
3.2 FFMPEG libvmaf 使用VMAF版本本身支持于Python、Matlab版本,有相关经验的童鞋可以自我训练和调试自己的模型。
非相关经验的其他童鞋也可以使用。因为FFMPEG的强大,社区和VMAF团队协作下,现在已经将 VMAF封装到libvmaf.so的开源库中,所以开发者也可将VMAF测量值合并自己的C / C ++代码中。经过了解:目前VMAF 现在打包在FFMPEG中,并作为filter供大家使用,大家可以下载最新官网的bin文件,或者源码即可查看和使用。FFMPEGlibvmaf 过滤器 简单易用,执行文件也是一条FFMPEG命令而已。
网上有很多教程,教授大家如何使用VMAF工具:
有些是按照在linux平台的,有些是Mac上,Windows上比较少。不过好在FFMPEG有windows直接执行文件,因此我们只需要有相关的训练模型既可以使用。
如果想要编译,可以通过官方的链接libvmaf进行编译。
编译时,开启配置项即可。 ./configure --enable-libvmaf
默认的训练模型是: vmaf_v0.6.1.pkl
默认的模型路径: "/usr/local/share/model/vmaf_v0.6.1.pkl"
所以我们执行时候,需要修改默认模型,或者修改训练模型地址即可。
3.3 执行libvmaf划重点了!
划重点了!!
划重点了!!!
本来网上很多教程已经说明了执行方法,但是查看最新的github提交记录,有一个对应的库被作者删除了,没错就是这个vmaf_v0.6.1.pkl,所以网上的操作步骤就无法执行了,
自己尝试恢复对应的包,用最新的FFMPEG执行文件,试跑是无法执行的。
看了当时提交记录,其中这个描述引起了注意:
在FFMPEG bin文件下,所以修改pkl为jaon格式,执行命令即可完成对比:
ffmpeg.exe -i 20210707.mp4 -i test_crf23_6M.mp4 -lavfi libvmaf="model_path=vmaf_v0.6.1.json:log_path=VMAF.txt" -report -f null -
执行完后,有如下结果:
产生这个结果同时,还有对应的log输出:
至此,该工具已经可以试跑完成,如何将该工具应用带我们现有系统中,并得出我们期望中的客观标准,就是接下来要整合的一个目标了。
这部分应该很多教程中是没有和主线保持同步的,所以大家需要特别注意。
3.4 vmafossexec在github包中包含一个文件,vmaflibvmafbuildtoolsvmafossexec.exe
这个文件也是直接执行的,通过–h可以查看命令参数说明:
可以通过命令执行对比:
vmafossexec yuv420p 1920 1080 20210707.mp4 test_crf23_6M.mp4 vmaf_v0.6.1.pkl --psnr --ssim --log test-pkl.txt
速度非常快,但是执行后结果和libvmaf结果差异很大。
这个需要查看一下,具体是什么原因造成的。
4 VMAF工具优缺点 4.1 优点VMAF可以更好地与感知质量相关联的方式捕获编解码器之间的较大差异以及缩放产出。它使视频提供商能够比较真正相关的区域中的编解码器,即在可获得速率质量点的凸包上。比较不同编解码器和/或不同配置之间的凸包,可以比较两个选项在实际重要的速率质量区域中的 Pareto 前沿。
VMAF被用于我们的整个生产流程中,不仅可以测量编码过程的结果,还可以指导编码达到最佳质量。
4.2 缺点由于VMAF是全参考视频质量指标,因此不同视频、不同分辨率的视频不能直接比较,所以我们测试后,需要分析对应的分辨率信息,否则无法完成质量指标的判断。
5 参考文献FFmpeg Filters documentationffmpeg.org/ffmpeg-filters.html#libvmaf
使用VMAF对视频质量进行分析 | reizhi (roov.org)roov.org/2020/08/vmaf/