VMAF笔记

一、VMAF简介

VMAF 的全称是:Visual Multimethod Assessment Fusion,视频质量多方法评价融合。这项技术是由美国Netflix公司开发的一套主观视频质量评价体系。2016年1月,VMAF 正式开源;

官网下载地址:https://github.com/Netflix/vmaf

二、相对PSNR和SSIM的优势

根据官网介绍160606 VMAF:Toward A Practical Perceptual Video Quality Metric

上图可以看到从4个不同畸变视频截取出的静态画面的局部内容,上方两个视频检测出其PSNR值为大约31dB,下方两个的PSNR值约为34dB。人们很难察觉“人群”视频有何差异,但两个“狐狸”视频的差异就很明显了。人类观察者针对两个“人群”视频给出的DMOS分数分别为82(上方)和96(下方),而两个“狐狸”视频的DMOS分数分别为27和58。

VMAF引入深度学习机制,进行更符合人眼视觉的视频评价标准。进行视频质量评分。

在vmaf-master\model文件夹下,有一些训练好的模型数据,可以根据自己的实际需要,进行评测。

 

三、VMAF使用方法

命令行说明

\vmaf-master\x64\Release>vmafossexec
Usage: vmafossexec fmt width height ref_path dis_path model_path 
[--log log_path] [--log-fmt log_fmt] [--thread n_thread] [--subsample n_subsample] 
[--disable-clip] [--disable-avx] [--psnr] [--ssim] [--ms-ssim] [--phone-model] [--ci]
fmt:
        yuv420p
        yuv422p
        yuv444p
        yuv420p10le
        yuv422p10le
        yuv444p10le

log_fmt:
        xml (default)
        json

n_thread:
        maximum threads to use (default 0 - use all threads)

n_subsample:
        n indicates computing on one of every n frames (default 1)

命令行示例

vmafossexec yuv420p 640 480 orignal5.yuv test.yuv vmaf_v0.6.1.pkl --psnr --ssim --log test.txt

 

四、ffmpeg上使用VMAF

1、命令行

ffmpeg -s 640x480 -i orignal5.yuv -s 640x480 -i 1.yuv -lavfi libvmaf =”ssim=1:enable_transform=1:log_path=mylog.txt” -f null –

2、源码

ff_vf_libvmaf

3、可配参数

static const AVOption libvmaf_options[] = {
    {"model_path",  "Set the model to be used for computing vmaf.",                     OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/local/share/model/vmaf_v0.6.1.pkl"}, 0, 1, FLAGS},
    {"log_path",  "Set the file path to be used to store logs.",                        OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
    {"log_fmt",  "Set the format of the log (xml or json).",                            OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
    {"enable_transform",  "Enables transform for computing vmaf.",                      OFFSET(enable_transform), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
    {"phone_model",  "Invokes the phone model that will generate higher VMAF scores.",  OFFSET(phone_model), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
    {"psnr",  "Enables computing psnr along with vmaf.",                                OFFSET(psnr), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
    {"ssim",  "Enables computing ssim along with vmaf.",                                OFFSET(ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
    {"ms_ssim",  "Enables computing ms-ssim along with vmaf.",                          OFFSET(ms_ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
    {"pool",  "Set the pool method to be used for computing vmaf.",                     OFFSET(pool), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
    { NULL }
};

 

 

 

### VMAF视频质量评估指标的使用与实现 VMAF(Video Multimethod Assessment Fusion)是一种由Netflix开发的视频质量评估度量标准,旨在通过融合多种图像质量特征来提供更接近人类感知的视频质量评分[^5]。以下是关于其用途和实现方式的具体说明: #### 使用场景 VMAF广泛应用于视频编码优化、流媒体传输以及视频处理领域中的质量控制环节。它能够帮助工程师快速判断不同压缩算法或参数设置下所产生的画质差异,并据此调整策略以达到最佳用户体验效果[^5]。 #### 实现方法 为了计算两个视频之间的VMAF分数,通常需要执行以下几个操作步骤: 1. **安装依赖库**: 需要先下载并编译FFmpeg及其插件`libvmaf`, 这样才能支持后续命令行调用功能。 ```bash git clone https://github.com/Netflix/vmaf.git cd vmaf/libvmaf && mkdir build && cd build cmake .. make sudo make install ``` 2. **准备输入文件**: 将待测原始参考视频(Reference Video) 和经过某种变换后的测试目标视频(Distorted Video),分别保存为YUV格式或其他兼容格式备用。 3. **运行评测脚本**: 利用已配置好的环境变量路径指向新安装版本号下的动态链接库位置;然后借助ffmpeg工具加载对应滤镜选项完成具体数值提取过程。 ```bash ffmpeg -i ref.yuv -i dis.yuv -lavfi "[0][1]libvmaf=log_path=vmaf_log.json" -f null - ``` 上述指令会生成一份JSON格式日志文档记录每次对比分析所得分值详情。 4. **解析结果数据**: 打开刚才创建出来的json文件查看最终统计汇总情况即可得知整体表现如何。 值得注意的是,在实际部署过程中可能还需要考虑更多因素比如分辨率匹配问题等等都会影响到最后得出结论准确性因此建议参照官方指南进一步深入学习掌握细节部分[^6].
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值