视频编码器的质量评估

引言

每年年底都会看到好多大厂宣布自家的编码器在MSU编码器大赛上取得的优异成绩,拿了N个冠军,看得人眼花缭乱。大家不禁会产生疑问:“咦,为啥有那么多个第一?”。俗话说外行看热闹,内行看门道,今天我们就来聊一聊这个话题。

一、MSU编码器大赛简介

MSU编码器大赛的全称是MSU Video Codecs Comparison,从2003开始到现在已经举行接近二十年,是视频编码领域的一个比较有知名度和权威性的国际比赛。随着近些年国内视频应用的迅猛发展,国内的主要大厂在视频编码上都加大了投入,开始自研视频编码器。像阿里的S265、金山云的KSC265编码器、华为的HW265、百度的BD265、爱奇艺的QAV1、字节跳动的BVC、腾讯的tencent 265、微帧的AuroraAV1等等都参与了比赛,目的都是为了刷成绩提升知名度。

二、编码器大赛比什么

对于对视频编码领域不太熟悉人,看到各家厂商在秀成绩,看着很热闹,但是并不太明白其中的含义,只能感叹一句“不明觉厉”。为了让大家搞清楚里面的门道,我们来搞清楚下面几个问题:

1. 如何评价编码器的好坏

视频编码,本质是一种压缩编码。提到压缩,大家最常见碰到的就是windows下常用工具winzip,winrar等,文件传输起来太大,压缩一下。这种压缩是对数据的无损压缩。解压后恢复出来的文件和压缩前的文件是分毫不差的。无损压缩算法的好坏,主要关注的就是压缩效率(压缩比)和压缩性能(速度快慢)。

还存在另外一种压缩叫有损压缩。所谓有损,就是只重建后得到的数据与原始的数据不是完全相同,是有差异的。那有损压缩无法原样的恢复数据,有什么用呢?有损压缩通常用在音视频的数据压缩领域。这是因为人的眼睛和耳朵对这些损失并不是特别敏感,不用把数据分毫不差(任何一个bit都不能错)的恢复。这个重建恢复出来的数据和原始的数据的差异就是失真。一般来说,失真越大,人眼感知到的质量就会越差。通常的压缩算法就是把这个失真控制在人们感知可以接受的范围内,从而实现较大的数据压缩比例。

有损压缩的失真的度量

如何衡量压缩带来的失真呢?对于视频来说,最常见的就是PSNR指标。PSNR是Peak Signal to Noise Ratio的缩写,通常用对数值来表示

PSNR

对于用8bit表示的视频图像而言,MAX就是255,MSE则表示误差平方的平均值,如下面的公式:

MSE

PSNR的物理含义就是信号的峰值与平均误差的比值,如果误差越小,那么PSNR值越高。如果完全没有误差,那么PSNR值就是无穷大。对于图像数据来说,通常有Y、U、V三个分量,可以对三个分量各自计算PSNR。也可以把三个分量的PSNR值以一定的权重加起来作为总的PSNR值。对于整个视频来说,可以计算单帧的PSNR值,然后平均,也可以计算整个视频的Overall PSNR。除了PSNR,也有其他的度量方式,比如SSIM,Netflix公司的VMAF。

客观评价与主观评价

前面介绍的是客观的度量,不需要人眼观看就可以计算出来。主观评价方式则是找很多人,靠人眼来观看打分。一般来说,人眼的主观感受并不是和PSNR、SSIM完全一致的。人眼对特定的区域、纹理、运动物体、感兴趣对象等有不同的视觉感受。这就可能导致出现尽管PSNR很高,但是主观质量却并不好的现象。Netflix公司在2016年推出了VMAF评价标准,VMAF考虑了更多的维度,得出来的评分比较接近主观体验。尽管客观评价指标与实际的主观体验并不完全一致,但客观评价计算起来比较方便,通常在对编码器进行对比评测的时候,还是作为一项比较重要的指标。

Bitrate与PSNR曲线

在对比编码器时,可以选取一些有代表性的数据做为测试序列,在同等测试序列的情况下,选取一些码率的点来进行编码,把结果绘制到一张图上。如下图所示,横轴是码率,纵轴是PSNR值,同一编码器的点连成曲线,用不同的颜色或样式区分开来。我们可以看到,曲线越靠上,就代表编码的质量越好。同样的码率获得的编码质量越高,或者同样的质量对应的码率更少。比如图中在PSNR为40dB的时候,H.264需要大概2.5Mbps的码率,但是对应的AV1就只需要1Mbps的码率。

psnr-comparison

BDRate

我们看到,在对比两个编码器时,在曲线的不同位置,对应的码率节省比例并不是一样的。但是人们期望有一个简单粗略的码率节省百分比。Gisle Bjøntegaard在2001年就提出了一种计算模型,称之为Bjøntegaard Delta,可以比较两个编码器的RD曲线(Rate-Distortion)的差异,一种是相同质量下的码率差异,指标为BD-Rate,另一种是相同码率下的质量差异,指标为BD-PSNR。BDRate是选取一个范围的的多个采样点(通常是4个),然后进行曲线拟合插值,最后计算出平均的指标差异。目前大部分测试数据的对比,都是基于BDRate指标的。

除了编码质量,编码速度和编码延迟也是比较重要的指标。编码速度和性能直接决定了需要消耗多少CPU或GPU计算能力,从而影响成本。另外对于实时的应用场景,还会直接影响能否正常使用。例如,30fps的采集帧率,实际设备只能编码20fps,那肯定就无法正常工作了。

2. 视频编码标准规定了什么

大家都能在各个场合里,都能听到H.264编码、H.265编码、VP9编码、AV1编码等很多种编码。这么多编码的差别是什么呢?为了搞清楚这个问题,我们先来了解一下视频编码标准到底规定了什么

CodecStandard

从上面的图中,我们可以知道编码标准既没有规定编码器怎么实现,也没有规定解码器如何实现。编码标准只规定了编码后的bitstream码流格式和解码流程。同一个编码标准的码流,用任何支持该标准和对应Profile设置的解码器都能解码。这样各家厂商间才能保持互操作性(Interoperability),实现一家厂商编码生产的视频内容,其它的厂商或终端都能解码消费。

编码工具(Coding Tool)

在做视频编码的过程中,有很多个处理环节,每个步骤里有很多种方式可供选择和调参,比如编码Block的划分、帧内与帧间预测方式、DCT变换、环路滤波器、熵编码等等。H264、H265(HEVC)、AV1等各个编码标准可以使用的编码工具不一样,越高级的编码,可使用的编码工具越多。比如H.264/AVC有9种帧内预测模式,而HEVC的帧内预测方向则可以有33个,AV1的帧内预测模式有69个。一些使用原有预测模式不能很好压缩的数据,使用新增的预测模式可能就能很好的解决。

为什么需要这么多种编码工具

一个编码工具并不是万能的,只在特定的场合适用。换另外一个场合,还用这个工具,就可能导致很低的效率。比如你的工具箱里有锤子、钳子、螺丝刀、扳手等等。在钉钉子的时候,肯定是用锤子更合适,而夹住东西则用钳子更合适。编码工具箱越丰富,能处理的场景和问题就越多。

H.264,HEVC,AV1这些编码标准的差异是什么

我们知道编码标准规定了码流格式与解码过程,那么不同的编码标准间的差异就是码流格式不一样,编码工具箱不一样。

3. MSU比赛为什么有那么多个第一

编码的应用场景有很多,比如用在RTC通信与点播的长视频内容就不太一样。对于一些需要被反复观看的视频内容,压缩一次,观看千万次甚至上亿次的内容来说,肯定追求的是更加极致的压缩比。而对于RTC场景下,编码延迟直接会影响双方沟通的效果,延迟是必须要考虑的一个因素。再比如,对于直播的转码来说,是需要保证实时的编码帧率的(比如30fps),而离线转码时则没有这个约束。我们可以把不同场景的编码理解成不同的体育比赛项目。同样是赛跑,可以既有1千米的长跑,也有百米的短跑。每个比赛项目都有这个项目的第一名,所以MSU比赛就有很多个场景或细分赛道的冠军。

4. 同一个编码标准,不同的编码器差异在哪

前面提到,编码标准规定了能使用的编码工具集,那么对于同一种编码,为什么还有差异呢?这里需要从编码效果和了编码性能两个方面来理解。

编码效果

对于同一种编码标准,虽然能使用的编码工具集是一样的,但是在实际的编码过程中,开始并不知道要编码的图像是更像“钉子”还是更像“螺丝”,需要进行尝试和判断。如果判断错了,没有选用最合适的工具,拿“扳手”去锤“钉子”,那么就会影响压缩的效果。选择对了编码工具之后,还要看是否选择对的参数。比如同样是锤子,也有不同的大小。小锤子去锤大钉子肯定效率不高。另外,就算工具和参数都选对了,还涉及到“预算”该怎么分配的问题(码率控制),分配得不好,同样得不到好的结果。

编码性能

编码工具里有很多种模式可供选择,比如HEVC有33种帧内预测模式,如何通过算法高效的找到最佳的匹配模式,不同编码器的实现方式就会有比较大的差异。同样如何做运动估计的搜索算法,各个编码器实现者也可以各显神通。

即使编码工具和使用的对应参数也都正确选择了,还涉及具体的实现问题。比如同样做一个DCT变换,不同的实现方式性能也不一样,用C代码还是用SIMD优化指令,是否使用了快速算法等,这些都会影响编码的速度。

编码效果决定了压缩比,编码性能决定了速度和资源开销(CPU消耗)。同样是H.265(HEVC)的标准,阿里的S265与百度的BD265,编码出来的码流都是标准的H265,bitstream码流的格式是一样的,用标准的解码器也都能正常的解码,但是他们各自的编码效果与编码性能会有差异,这也是编码器比较时比较的重点。MSU编码器目前公布的一些结果,比较偏重编码质量,并没有太考虑编码的性能。

三、总结

视频编码技术是一项比较复杂和艰深的偏底层技术,编码器的评价也有一套完整、科学的方法。近些年来视频应用的发展,以及新一代编码标准的逐步普及,使得各大厂商在视频编码方面加大了投入,成为一个竞争的热点领域。技术的进步最终都会让消费者受益,让我们能享受到更高质量的视频体验。期望MSU编码器大赛越办越好,促进视频编码领域的技术长足的进步!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇