正文字数:7400 阅读时长:18分钟
作为成熟的编解码产品,libvpx VP9已经在工业界大规模使用超过5年。本文由谷歌Senior Staff Engineer韩敬宁在LiveVideoStackCon 2020 线上峰会的演讲内容整理而成,文中主要讨论Google最新的编码器优化工作使得VP9客观压缩性能提升超过10%,并且大幅提高了其在电影等视频内容下的主观压缩质量。
文 / 韩敬宁
整理 / LiveVideoStack
大家好,我是韩敬宁,来自WebM Codec团队。今天非常高兴有机会能向大家介绍一下我们近期的关于VP9编码器优化的工作。VP9是在2013年release,从2013年底开始逐渐被包括YouTube在内的多家video service provider采纳成为编码内核。从2013年到2016年前后,我们的团队一直在做的就是不断优化VP9编码器。优化的目标主要是:首先,提高其核心压缩性能也就是在PSNR和SSIM这些客观Metric条件下的编码。还有一个方向是在同样的压缩性能条件下,我们会降低编码器的复杂度,让编码器跑得更快。
我们今天要讲的工作主要是反映我们在2018年开始进行了一个为期大约1年左右的对VP9编码器的技术升级,这个技术升级主要实现了两个个大的目标,第一个是在VOD条件下,提高它的客观加速性能,也就是以PSNR和SSIM为Metric,提高它的客观加速性能10%;第二个目标是对包括电影在内的高清的视频在输入条件下,我们去提高它的主观压缩质量。我们今天讨论的一些工作,从2019年开始在YouTube、Google play movie等服务平台上进行了大范围的运行,它们的性能目前看是比较稳定可靠的。
我们今天的介绍主要分为2个部分,第一个部分是Core Compression Efficiency,我们会讨论4个方向的工作。前三个主要是为了提高我们Compression Performance,第四个会讨论我们通过引入deep learning model来降低编码器复杂度。这四个工作合在一起会让我们的VPX、VP9编码器在Compression Efficiency上提高10%,与此同时它的编码器速度是加快30%。
第二大部分主要讲主观压缩质量,它的主要运用场景就像我们刚刚讲的对高清视频(比如电影这些)输入材料。它主要会考虑2大部分,一个是对film grain的处理,第二部分是对不同的低频和高频信号在它不同的背景下,我们会采用不同的自适应量化技术去提高它恢复出来的图像质量,让它在人眼的视觉中更接近原始的输入信号。
1. Temporal Dependency Model
第一个工作我们主要讨论Temporal Dependency Model,它主要做的工作是说我们考量一般的RD 优化,我们通常做法是给定一个coding block,给定它的Lagrange Multiplier。我们会去测试不同的编码模式,然后在所有coding mode当中我们会选一个,这个coding mod 会给我们最低的RD cost作为我们的final decision。这种做法通常是会适用于所有,就是说这个Lagrange Multiplier是一个可以决定在比率失真中取舍的因素。我们通常对整帧的所有编码块使用相同的Lagrange Multiplier。这是我们一直使用的传统方法。这项工作的主要想法是不同的coding block在一个coding frame以内的时候它的重要性是不一样的。
Motion Propagation
重要性怎么来理解?我们可以举一个例子,比如我们当前帧是N帧,黄色的编码块通过运动补偿预测会被后续的多个帧不断引用作为参考和预测,相比之下,蓝色和红色编码块的运动补偿预测树要短得多,绿色的只会出现在当前帧中,而不会被后一帧用作运动补偿参考。
在这种情况下,当我们回到当前帧,我们会认为黄色的块失真对整个视频压缩效率的影响比绿色的块要大。这是我们的一个想法,我们希望我们可以量化每个编码块对整个视频序列的重要性,或至少对一个组架构形式的时间依赖模型。
The Measurement
最后两张PPT将更详细地描述我们是如何实现时间依赖模型的。它的主要思想是,对于每一个编码帧,我们向前看几个帧,首先建立一个运动轨迹,然后我们从最远的编码帧以回溯的方式往回推,