1 VMAF是什么?

视频多方法评估工具(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 / vmaf​codechina.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中的命令,即可编译成功

  • 第一步:安装msys2;
  • 第二步:执行命令:

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 <Vmaf project root directory>
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包中包含一个文件,\vmaf\libvmaf\build\tools\vmafossexec.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 Documentation​ffmpeg.org/ffmpeg-filters.html#libvmaf

使用VMAF对视频质量进行分析 | reizhi (roov.org)​roov.org/2020/08/vmaf/

音视频应用--VMAF工具学习相关推荐

  1. 音视频命令转换工具 - FFmpeg

    随着自媒体兴起,许多人会自拍视频或者找视频素材裁剪,配上背景音乐或解说,加上各种特效边框,处理后再生成新的视频文件,发布到各大平台.生成的原始视频文件都很大,我们需要转换格式或者压缩大小,便于上传或者 ...

  2. pcm 采样率转换_Cool Audio Video Converter(音视频格式转换工具)V2.18 最新版 - 绿色先锋下载 -...

    Cool Audio Video Converter(音视频格式转换工具)是一款十分优秀好用的音频格式转换助手.如果你需要一款好用的格式转换工具,小编带来的这款Cool Audio Video Con ...

  3. 音视频基础概念(4)—音视频开发常用工具

    目录 1.VLC播放器简介 1.1 VLC 播放器 1.2 VLC的功能列表 1.3 VLC播放网络串流 1.4 VLC作为流媒体服务器 2. MediaInfo简介 2.1 MediaInfo 2. ...

  4. 洽谈 5G 时代“音视频”开发前景及学习方向

    前言 相信大家可以从日常生活感受到视频类的 APP 已经占据了我们大部分的时间,例如:抖音.快手.最右.小红书.哔哩哔哩等等短视频类型的 APP,亦或者是像虎牙.斗鱼等等直播类型的 APP,还有像腾讯 ...

  5. 音视频开发调研和学习路线

    以下内容是对网上多个博主以及音视频大佬发布的内容进行的总结. 1.音视频开发 1.1音视频开发是做什么的 音视频开发就是将我们摄像机.麦克风采集到的画面(视频像素数据,YUV格式)和声音(音频采用数据 ...

  6. 音视频编解码知识学习详解(分多部分进行详细分析)

    1. 常用的基本知识 基本概念 编解码 编解码器(codec)指的是一个能够对一个信号或者一个数据流进行变换的设备或者程序.这里指的变换既包括将信号或者数据流进行编码(通常是为了传输.存储或者加密)或 ...

  7. 音视频测试资源和工具tool

    查看pts,dts时间戳倒退是哪个工具? 0 反编译神器IDA 既可以反汇编so,也可以反汇编dll+pdb. 然后F5再反汇编成c语言.注意反编译成c之后,需要双击左侧反汇编的文件才能出现c文件 1 ...

  8. 从事音视频开发,需要学习哪些知识点?

    总体来讲,音视频开发是有一定的技术门槛的,我觉得至少需要在这个领域踏踏实实积累个3-5年,才能对音视频相关的开发知识有一个整体.深刻的理解. 从技术上来讲,需要从如下两个大类知识点上去积累: C/C+ ...

  9. 抖音视频解析的工具类

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一.一个解析抖音分析链接的工具类 import java.io.IOException; import java.util.HashM ...

最新文章

  1. hadoop记录篇10-数据仓库查询组件impala
  2. 李洋疯狂C语言之将”you are come from shanghai ”倒置为”shanghai from come are you”,将句子中的单词位置倒置,而不改变单词内部结构
  3. 移动应用开发商的生存之道
  4. css倒序循环,不借助后台和 JS ,只用 CSS 让一个列表编号倒序
  5. java aopalliance-1.0.jar这个包是做什么用的?
  6. 4188元起!华为P40系列国行版发布:买它?
  7. 深度学习图像标注工具
  8. 【优化求解】基于matlab改进的粒子群算法求解混合储能系统容量优化问题【含Matlab源码 1823期】
  9. 光盘显示0字节可用_松下PLC编程软件FPWIN Pro7.4.0.0
  10. 两个PDF比较标出差异_怎样核对两份word文档内容差异?我用2小时,同事仅用2分钟搞定...
  11. python 源代码 macd双底 高 低_通达信双底选股公式-MACD底背离通达信选股公式
  12. 老男孩教育 | 5分钟带你搞懂日志采集利器Filebeat!
  13. doker学习4---docker容器数据卷
  14. 假期如何学java_假期学习javaWeb每日笔记
  15. 图案设计灵感怎么写_优秀Logo的设计灵感,从何而来?
  16. git push方法
  17. eclipse导入idea项目
  18. docker运行portainer
  19. 用函数编程实现输出 m~n之间所有素数,并求和,m和n由键盘输入。(c语言)
  20. java全栈系列之JavaSE-编写银行基金收益系统031

热门文章

  1. Python爬虫:多线程爬取盗墓笔记
  2. 织梦二开问答模块插件-支持伪静态利于收录及排名
  3. Linux命令(查看目录和切换目录)
  4. iPhone13问题多,iPhone12价格贵,苹果用户难抉择
  5. 通过表单隐藏域向后台传值
  6. 《不如吃茶去》许嵩新专辑封面首曝光 传达简适生活态度
  7. (四)OpenCV | 斑点检测
  8. 【Java基础】 随机数的3种生成方法
  9. 51物联卡:物联网卡使用中能更换流量套餐吗?
  10. Excel如何快速将多列转为排成一列