REF: WWDC 2021 - Evaluate videos whith the Advanced Video Quality Tool
AVQT
是 Advanced Video Quality Tool
的缩写,是苹果在 WWDC 21 上推出的一款评估视频感知质量
的工具。
在正式开始之前,我想跟大家科普几个概念和行业现状,这些对理解本次的内容很有帮助。
视频质量评估是个老话题了,主流的分为下面几类:
主观评测
,也就是人工评估,准确率高,但成本大,难规模化客观评测
,纯依靠算法,比如PSNR
(Peak Signal-to-Noise Ratio峰值信噪比),SSIM
(Structural SIMilarity 结构相似性),准确率低,成本小,容易规模化感知质量评测
,代表是Netflix 的VMAF
,VMAF 是基于机器学习算法,根据人工的识别结果训练模型,目的是要模拟真人评测,结果上达到接近人工评估的准确度,这也是“感知”一词的含义。优点是准确率高,也容易规模化。我们今天要聊的 AVQT
也属于此类。还有一种分类是有源评估
和无源评估
,有源评估顾名思义,需要有参考源,比如有一个未压缩的超清Raw视频,它作为参考源,然后在进行处理编码之后,变成一个低分辨率、低码率的的视频,这个作为评估的对象,对比参考源视频,打出分数。感知质量评测的工具都属于有源评估范畴,即需要参考源来进行评估打分。
那么视频质量评估有哪些应用场景呢?我了解到的有以下几类,供大家参考。
(1)视频分发流程
在分发视频的时候,从用户体验和成本来考虑,希望在码率和清晰度之间,找到一个比较好的平衡点,那么清晰度这个就需要有个量化的标准,需要有工具能够得到一个相对可信的量化指标
(2)编码器的研发
编码器算法的研发,也是要平衡清晰度、编码速度、编码效率(压缩率)等诸多因素,希望在清晰度一定,编码速度一定的情况下,编码效率(压缩率)尽可能高,也就是编出出来的码率尽可能低。所以它也需要有一个对视频清晰度进行量化的工具。
我们先来看一个视频分发流程:
下采样
(修改分辨率)和压缩(编码)
下采样和压缩过程会对损伤原视频画质,会造成类似马赛克的块或者模糊等伪像,如图:
为了提高用户体验,我们肯定不希望出现类似上述的问题,那么就需要一个工具,对展示给用户的视频进行评估。前面提到,人工评估的方式最准确,但是处理速度慢,成本高,而且无法自动化和规模化。
针对此问题,苹果推出了 AVQT,下面是 AVQT 的工作流程:
AVQT是:
macOS 命令行工具
,现在已经可以体验模拟真人
对视频质量进行打分帧级别
,以及段级别
的打分(一段一般是6秒,可配置)AVFoundation
的所有视频格式,包括 SDR/HDR/HDR 10/HLG 以及Dolby Vision特点1. 感知对齐,AVQT预测和人类主观评估高相关
AVQT 支持跨多种内容类型(动画、自然景观、运动场景),PSNR/SSIM 在这方面表现不佳
对比下面两张图片,第一个是高清的运动场景,PSNR 和 AVQT 的分数都很高。第二张人物场景,脸部轮廓细节缺失,AVQT的分数降低到了 2.49,属于低质量,但是 PSNR 的分数还是 35.2。这里 AVQT 的分数更准确。(这里我没有放源图片)
为了测试准确性,针对公开的测试集,对视频的多种组合进行了测试,这些测试集包含源视频、压缩后的视频、人工的打分。下面是Waterloo IVC 4K
以及 VQEG HD3
两个测试数据集:
为了客观地衡量视频质量指标的性能,我们使用了相关性和相似距离度量。
PCC
(Pearson Correlation Coeffiectent) 衡量线性相关度,也就是预测值和人工打分值的相关性,PCC 越高相关性越高,越高越好。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 格式
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
参数) 都进行评估一下:
> 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
> 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秒:
> 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,支持 JSONviewing-distance
: 观察者距离,单位是屏幕高度,比如1.5H, 3H, 4.5H, 6H,默认3H,表示距离3*屏幕高度的距离观看display-resolution
: 显示的分辨率,默认 1920x1080,支持: 6016x3384, 5120x2880, 3840x2160, 2560x1440, 1920x1080, 3384x6016, 2880x5120, 2160x3840, 1440x2560, 1080x1920选择正确的码率很具挑战性,为了帮助选择合适的码率,苹果为 HLS 创作规范发布了一些码率的指南,作为对应分辨率下的码率初始值。
我们知道,不同的视频内容有着不同的编码复杂度,所以不同的内容所需的码率也是有差异的。苹果建议在此基础上,根据 AVQT 的打分作为反馈,不断对码率进行上调/下调。