0%

WWDC 21 - 使用 AVQT 评估视频质量

REF: WWDC 2021 - Evaluate videos whith the Advanced Video Quality Tool

AVQTAdvanced Video Quality Tool 的缩写,是苹果在 WWDC 21 上推出的一款评估视频感知质量的工具。


一、背景介绍(非WWDC内容)

1.1 视频质量评估的现状

在正式开始之前,我想跟大家科普几个概念和行业现状,这些对理解本次的内容很有帮助。

视频质量评估是个老话题了,主流的分为下面几类:

  1. 主观评测,也就是人工评估,准确率高,但成本大,难规模化
  2. 客观评测,纯依靠算法,比如PSNR(Peak Signal-to-Noise Ratio峰值信噪比),SSIM(Structural SIMilarity 结构相似性),准确率低,成本小,容易规模化
  3. 感知质量评测,代表是Netflix 的VMAF,VMAF 是基于机器学习算法,根据人工的识别结果训练模型,目的是要模拟真人评测,结果上达到接近人工评估的准确度,这也是“感知”一词的含义。优点是准确率高,也容易规模化。我们今天要聊的 AVQT 也属于此类。

还有一种分类是有源评估无源评估,有源评估顾名思义,需要有参考源,比如有一个未压缩的超清Raw视频,它作为参考源,然后在进行处理编码之后,变成一个低分辨率、低码率的的视频,这个作为评估的对象,对比参考源视频,打出分数。感知质量评测的工具都属于有源评估范畴,即需要参考源来进行评估打分。

1.2应用场景

那么视频质量评估有哪些应用场景呢?我了解到的有以下几类,供大家参考。

(1)视频分发流程

在分发视频的时候,从用户体验和成本来考虑,希望在码率和清晰度之间,找到一个比较好的平衡点,那么清晰度这个就需要有个量化的标准,需要有工具能够得到一个相对可信的量化指标

(2)编码器的研发

编码器算法的研发,也是要平衡清晰度、编码速度、编码效率(压缩率)等诸多因素,希望在清晰度一定,编码速度一定的情况下,编码效率(压缩率)尽可能高,也就是编出出来的码率尽可能低。所以它也需要有一个对视频清晰度进行量化的工具。


二、AVQT 是什么?

我们先来看一个视频分发流程:

  1. 采集到高质量原始视频
  2. 进行下采样(修改分辨率)和压缩(编码)
  3. 把得到的编码后的数据,通过CDN下发给终端用户

下采样和压缩过程会对损伤原视频画质,会造成类似马赛克的块或者模糊等伪像,如图:

为了提高用户体验,我们肯定不希望出现类似上述的问题,那么就需要一个工具,对展示给用户的视频进行评估。前面提到,人工评估的方式最准确,但是处理速度慢,成本高,而且无法自动化和规模化。

针对此问题,苹果推出了 AVQT,下面是 AVQT 的工作流程:

  1. AVQT 的输入是源视频,以及压缩后的视频
  2. 经过 AVQT 的处理,对压缩后的视频进行评估,输出打分(0-5)

AVQT是:

  1. 一个 macOS 命令行工具,现在已经可以体验
  2. 模拟真人对视频质量进行打分
  3. AVQT 支持帧级别,以及段级别的打分(一段一般是6秒,可配置)
  4. 支持基于AVFoundation的所有视频格式,包括 SDR/HDR/HDR 10/HLG 以及Dolby Vision

三、AVQT 的特点

特点1. 感知对齐,AVQT预测和人类主观评估高相关

AVQT 支持跨多种内容类型(动画、自然景观、运动场景),PSNR/SSIM 在这方面表现不佳

对比下面两张图片,第一个是高清的运动场景,PSNR 和 AVQT 的分数都很高。第二张人物场景,脸部轮廓细节缺失,AVQT的分数降低到了 2.49,属于低质量,但是 PSNR 的分数还是 35.2。这里 AVQT 的分数更准确。(这里我没有放源图片)

为了测试准确性,针对公开的测试集,对视频的多种组合进行了测试,这些测试集包含源视频、压缩后的视频、人工的打分。下面是Waterloo IVC 4K 以及 VQEG HD3 两个测试数据集:

为了客观地衡量视频质量指标的性能,我们使用了相关性和相似距离度量。

  1. PCC(Pearson Correlation Coeffiectent) 衡量线性相关度,也就是预测值和人工打分值的相关性,PCC 越高相关性越高,越高越好。
  2. RMSE(Root Mean Square Error)均方根误差,衡量预测值和人工打分的差距。值越低说明预测的越准确。

横轴是人工打分,纵轴是 AVQT 的预测值,每个点代表一个压缩的视频打分,从图上来看,在 Waterloo IVC 4K 测试集上,AVQT 和人工打分非常的接近,PCC高达0.9,RMSE 低至 0.54

VQEG HD3 测试集上,AVQT 表现的更加优秀。

特点2. 计算速度快

高计算速度是可规模化的一个至关重要的条件,AVQT 的算法为 Metal 做了设计和优化,也就是说可以非常快地处理大量的视频。而且不需要额外处理,不需要解码,AVQT会自动处理。

AVQT 可以每秒处理 175帧1080p的视频,如果有一个10分钟的 1080p,24fps的视频,不到1分半钟就能处理完。(狡猾的是,苹果没提测试设备的硬件配置)

特点3. 观察设置感知(Viewing setup aware)

观察设置是指观察者距离、显示器大小、显示分辨率等条件,这些对主观视频质量是有影响的。因此,AVQT 支持把这些条件的参数值作为输入,对感知视频质量进行预测。

比如,有两个场景,A场景观看者距离显示器1.5倍屏高的距离观看4K视频,B场景观看者距离3倍屏高的距离观看同样的4K视频, 那么很明显B场景下,因为距离远,一些躁点看不太清楚了,主观打分就更高。

AVQT 的表现也符合主观评测,距离越远,分数越高,最终会趋同。

1)安装 AVQT 命令行工具, 下载地址

2)使用 AVQT 工具进行打分,提供参考源视频,以及压缩后的视频,输出打分,默认 csv 格式

1
AVQT --reference sample_ref.mov --test sample_compressed.mov --output sample_output.csv

这里我自己实验了一下。从这里下载 Waterloo IVC 4K Video 公开的测试数据集进行测试。这里我选择了 H264 这个数据集里名字为20的文件夹。
我们选择以下几个视频文件进行测试:

视频类型 视频名称 分辨率 码率 帧率
源/参考视频 3840x2160_4.mp4 3840x2160 4548 kbps 30
测试视频1 960x540_1.mp4 960x540 359 kbps 30
测试视频2 960x540_4.mp4 960x540 3798 kbps 30

960x540_1 抽帧截图:

960x540_4 抽帧截图:

从上表和上图能看到 960x540_4 码率是 960x540_1 码率的 10 倍,主观上也确实清晰很多。

我们使用 AVQT 以及 PSNR (使用 --metrics AVQT PSNR 参数) 都进行评估一下:

1
2
3
4
5
6
>  AVQT --reference 3840x2160_4.mp4 --test 960x540_1.mp4 --metrics AVQT PSNR --output 549p1_all.csv

Segment[1]: AVQT: 1.58, PSNR: 24.94
Segment[2]: AVQT: 1.67, PSNR: 25.18

Results file: 549p1_all.csv
1
2
3
4
5
6
> AVQT --reference 3840x2160_4.mp4 --test 960x540_4.mp4 --metrics AVQT PSNR --output 549p4_all.csv

Segment[1]: AVQT: 3.87, PSNR: 28.31
Segment[2]: AVQT: 3.86, PSNR: 28.39

Results file: 549p4_all.csv

结果:

视频 AVQT平均分数 PSNR平均分数
960x540_1.mp4 1.62 25.06
960x540_4.mp4 3.86 28.3

AVQT 的分数差了一倍多,和实际的观看类似,PSNR 只差了3分,也就是认为是接近的,误差挺大.

输出的 csv 里包含每一帧的打分,以及每一段的打分,一段默认是6秒:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
> cat 549p4_all.csv
Advanced Video Quality Tool (AVQT) - CLI
Version: 1.0.0
Test file: 960x540_4.mp4
Reference file: 3840x2160_4.mp4
Segment Duration: 6.0
Temporal Pooling: ArithmeticMean
Display Width: 1920
Display Height: 1080
Viewing Distance: 3.0
Frame Index,AVQT,PSNR
1,3.75,28.24
2,3.84,28.24
3,3.80,28.01
4,3.83,28.12
5,3.96,28.22
6,3.82,28.37
7,3.78,28.15
8,4.01,28.57
9,3.74,27.96
...
296,3.79,28.52
297,3.70,28.37
298,3.77,28.54
299,3.68,28.32
300,3.64,28.25
Segment Index,AVQT,PSNR
1,3.87,28.31
2,3.86,28.39

3)调整参数,自定义评估条件

比如:(更多的参数可以通过 AVQT -h来查看)

  • metrics: 除了 AVQT,还支持输出 PSNR MSE 等预测值
  • segment-duration: 自定义段大小,默认是6秒
  • temporal-pooling: 聚合每帧打分的算法,默认算数平方值,支持HarmonicMean, Worst10%, Worst90%, Best10%, Best90%
  • output-format: 输出格式,默认 CSV,支持 JSON
  • viewing-distance: 观察者距离,单位是屏幕高度,比如1.5H, 3H, 4.5H, 6H,默认3H,表示距离3*屏幕高度的距离观看
  • display-resolution: 显示的分辨率,默认 1920x1080,支持: 6016x3384, 5120x2880, 3840x2160, 2560x1440, 1920x1080, 3384x6016, 2880x5120, 2160x3840, 1440x2560, 1080x1920

五、使用 AVQT 优化和选择码率

选择正确的码率很具挑战性,为了帮助选择合适的码率,苹果为 HLS 创作规范发布了一些码率的指南,作为对应分辨率下的码率初始值。

我们知道,不同的视频内容有着不同的编码复杂度,所以不同的内容所需的码率也是有差异的。苹果建议在此基础上,根据 AVQT 的打分作为反馈,不断对码率进行上调/下调。

六、回顾

  • 视频编码对视频质量会有牺牲,会产生一些伪影
  • 使用 AVQT 评估你们的视频感知质量
    • macOS 命令行工具
    • 计算速度快,支持查看设置感知
    • 支持基于 AVFoundation 的所有格式
  • 使用 AVQT 来优化 HLS 层的质量