Google 视频压缩核心算法组工程师陈诚:详解 AV1 研发现状与未来
2018-09-27 20:42

      本文整理自 Google 视频压缩核心算法组软件工程师陈诚在 RTC 2018 实时互联网大会编解码技术专场上的演讲分享。他在演讲中主要分享了 AV1 的研发现状,详细分享了 AV1 的编码算法、编码效果。如有任何问题,欢迎留言提问。

      根据思科公司今年发布的报告称,预计 2021 年,视频将会成为互联网产品的主要需求,超过80%的互联网流量将会被视频占据。届时,与视频相关的服务与需求将提升约50%,而其中对超高清的需求将提升约30%。同时,互联网对直播和其它实时视频服务的需求将会是目前的15倍。

如此快速的发展和快速增长的需求,正是互联网公司推动新一代视频编解码技术的动力。

一、AV1 AOM 的概况

新一代编解码技术 AV1 已于20186月定稿,它有四个特点:

1AV1 是一个开源、免费的生态系统,开放媒体联盟(AOM)的成员都将支持 AV1

2AOM AV1 准备了资金进行法律方面的援助和专利保护

3AV1 相对于前一代产品使用了更前沿的编码技术,并取得了较好的压缩效率

4、在 AOM 的合作框架内为 AV1 提供了合作开放的环境

众所周知,AV1 的前身是 Google 推出的 VP9。相对于 VP9AV1 有三个特点:PerformancePlatformPotentialAOM 的框架使得 AV1 ,以及未来视频的发展都更有活力。尽管 AV1 目前还处于研发和推广初期,我们相信它在业界的广大支持下,会获得比 VP9 更广泛的应用。

开源媒体联盟 AOM Google、亚马逊、思科等公司联合牵头成立,致力于推广和研发多媒体的视频编解码技术。除了当前与视频行业紧密相连的互联网公司外,该联盟内还有硬件设备厂商、内容供应商、主流浏览器厂商等。最近苹果也加入了 AOM。业界的生态系统也都将支持 AV1

AV1 工作组共有四个:软件研发组、硬件研发组、Tapas 组、测试组。软件和硬件研发组联合进行 AV1 的研发,同时测试组会对 AV1 的一致性进行检测。而 Tapas 组则进行专利审核,并提供法律问题咨询。

AV1 的研发组是个很有活力的社区。在整个 AV1 的研发过程中,已经发表超过15篇学术论文,约有 100 多个研发提案被 AV1 采用。目前大家可以在网上下载到参考代码,大约有30万行代码,并且平均每天会有15个代码被提交上来。

AV1 从研发到推广,将会分为四个阶段:

第一阶段,标准的研发与制定

第二阶段,桌面浏览器对解码的支持

第三阶段,推广 AV1 在更多硬件与软件的支持

第四阶段,在 AOM 生态系统中支持 AV1 的软硬件编码 

 

2015年的研发开始,到20186月的定稿,我们已经完成了第一阶段的目标。目前,我们正处于第二阶段,Google Chrome 浏览器上已经实现了软件解码。在未来的第三、第四阶段中,我们的主要任务就是硬件设备与内容供应商对 AV1 的支持。预计2020 AV1 将获得更广泛的应用。

二、AV1 的编码与算法

与其它视频编码软件相似,AV1 的也分为一系列连续的模块,包括分割、预测、变换、量化、熵编码、环内滤波等。在单元块划分上,AV1 支持更多的划分模式和更大的划分块。其前身 VP9 支持最大划分块为 64x64,对每个方块可以递归地进行四个子块的划分。AV1 支持最大划分块为 128x128,对方块递归的划分有10种类型,最小的划分块为 4x4 

 

预测模式分为帧间预测和帧内预测。在帧内预测主要包含了四个主要工具:

1、支持更多多种的预测模式

2、支持从亮度值预测色度值

3、调色板模式

4、帧内拷贝模式

AV1 支持56个方向的预测,利用当前块的上边界和左边界,重建的图像,通过方向的差值来预测当前块的像素值。它的角度的表达方式是从8个主要的差值方向中,选择其中之一,并用一个 Delta 值来确定精确的角度。

除了方向的预测之外,AV1还支持其它的方式对单个像素或当前渐变块生成预测。如下图所示,有四种不同的差值方法对当前值进行预测,当前值P将会由深蓝色模块的像素差值获得。值得一提的是,另外一种递归的方式对渐变块进行预测,利用滤波的方式递归地对每个像素值进行预测,在编解码方面复杂度会有所提升。 

 

从亮度值预测色度值的工具,它利用了视频图像当中亮度值通道与色度值通道具有高度相似性的特点,通过选择适当的参数再以重建亮度值通道来预测色度值,这个工具对于游戏视频具有很好的压缩效果。

调色板模式将块内的元素当做几种离散的颜色,不同于直接传输像素本身的参数值,而是通过传输色块的颜色编号实现压缩的目的。AV1支持从8×864×64的块,支持调色板模式,编码器会自动根据视频内容选择是否使用调色板模式,如图所示的例子,左边是一个当前模块被划分成了3种不同的颜色块,根据波前的方式逐个编码块内的方块,它的左侧和上侧的颜色信号将作为信息在熵编码中被使用。调色板模式对于当前块有单一色调的场景十分有用,一般这种场景出现在屏幕内容的压缩当中。

  

另一个对于屏幕内容压缩很重要的工具叫做帧内拷贝。它的工作原理就是,在预测当前块时它会去搜索当前帧已重建的图像部分,比如下图1中第二个字母 A 和第三个字母 A,它将找到第一个已经被编码的字母A预测块,它的预测会非常准确,可以达到提高压缩效率的目的。图形中包含了非常多的字母,就会通过帧内拷贝的模式搜索到非常好的预测效果,大大提高了视频压缩效率,仅这幅图来说,压缩效率就提升了 50%

 

帧间的压缩工具比帧内的压缩工具更丰富。AV1 VP9 在参考帧的数量和结构上有了进一步的优化,支持8个参考帧,并能够使用其中的7个参考帧进行预测,而 VP9 只使用了其中三个。AV1 还支持分层结构进行双向预测。 

在现在的视频压缩标准中,运动估计在比特率中占有很大一部分,运动的估计一般通过搜寻一个运动向量找到参考帧中对应的块对当前块进行预测。在 AV1 里我们采用了一种方法叫做运动场投影的方法来获取运动向量,它的工作原理是通过当前帧的两个参考帧,并且找到参考帧的对应参考帧获得一个运动轨迹,将运动轨迹投影到当前来帧获得两个运动向量。当物体是线性运动时,这两个运动向量将能很好预测到物体的运动轨迹,并获得更精准的预测,从而帮我们获得更好的压缩效果。 

 

在我们有了这些运动向量之后,我们还需要传输它们。而在现有视频标准中,传输运动向量已经占据了很大的比例。所以我们 AV1 中采取了一种叫做动态运动向量索引的方法,它不直接传输运动向量的具体坐标值,而是传输它在运动列表中的序号,然后通过查询得知所用的运动向量。运动向量通过运动场投影的方式获得并加入到运动列表中。我们通过运动估计的测算将运动列表的向量值进行排序,再通过编码器选择对好的序号传输给解码器。

 

      现在的视频压缩标准都支持双向预测,当我们有了两个参考帧之后如何把它们融合在一起生成预测块是值得探讨的问题。AV1 在这个方面支持了多种不同的方式来生成预测块,包括平均值运动补偿、加权运动补偿、楔形分割预测等。 

 

运动块补偿早在 H.263 时代就被提出,在这里被 AV1 采用。它的原理是利用平滑滤波的方式将两个运动补偿块重叠在一起,特点是能够消除运动的不连续性带来的影响,以此提高预测准确率。双向预测中,我们可以通过调整两个预测快的权重来达到生成不同预测快的目的。AV1 除了支持平均运动补偿,还会根据参考帧的距离来加权生成预测块,特点是当一个参考帧距离现在帧非常近的时候它的预测准确度可能更会高,于是我们给予它更高的权重,当另一个参考帧距离比较远的时候我们会给予远处的参考帧一个更低的权重,权重并不直接通过比特流传输,会通过传输序号的方式在预设置的表格里查询对应的权重。 

AV1 还支持楔形分割预测,可以弥补方块运动补偿中无法准确模拟物体边界的缺点。楔形分割已经作为查表预存在编解码器中,通过编码器选择合适的最佳的楔形分割方式传输比特流来告知解码器。 

方块的运动补偿有一个很大的问题,它无法模拟实际运动中的大量的卷曲和变换。AV1 采用了基于仿射变换的方块补偿来解决这个问题。AV1 支持从帧到帧的全局变换,也支持块到块的局部变换。 

在变换处理方面,AV1 除了支持传统的 DCT,还支持 ADSTfADSTIDT ,由于他们都是二维可分割的,所以 AV1 共支持16种组合。同时,AV1还支持多种尺寸的变换快,最大为64x64,最小为4x4,还支持长方形的变换块尺寸。AV1 支持 DCT 是因为,它对自然信号具有近似最优解的压缩效果,而当残差信号为单调变化时,那么 ADST 和反向 ADST 会有很好的压缩效果。全等变换对于视频是阶跃变换时,会有很好的压缩效果。

 

相比 VP9AV1 增加了很多变换尺寸和变换类型,这使得它的搜索空间大幅增加,编解码复杂度也有所提升。 

在量化方面,AV1 VP9 的基础上增加了几个新的工具,包括 Delta-q Quantization matrix 等。这些工具使得 AV1 的量化有了更大的灵活性,它的特殊的使用场景下具有很好的使用效果,比如使用参数矩阵能够提升主观观测的质量。 

 

在熵编码方面,AV1 使用了多符号算数编码,能有较高的吞吐量,具备快速概率模型自适应的特点。 

在视频压缩技术中,对变换后的系数矩阵的压缩和传输将占比特流的绝大部分,甚至超过50%AV1 里针对这个变换矩阵的传输使用了分层编码的方法,分层编码将使用两次扫描对当前块的矩阵进行压缩,第一次扫描将会编码系数的绝对值,第二次编码将会编码系数的符号。让我们用一个例子来说明分层编码的过程。如下图所示,左侧代表当前的系数矩阵和扫描的顺序,第一行表示第一次编码,第一次编码从终止位置开始,逆扫描方向逐渐走向起始位置,深黄色的块表示当前的像素值,浅黄色表示它能用到的周围的数值信息,第二行表示第二次编码从起始位置开始一直到终止位置,第一次编码只编码系数的绝对值,第二次编码将编码系数的符号。 

 

环内滤波是目前视频标准的必要组成部分。AV1 除了有传统的去区块滤波器,还增加了新工具,比如约束方向增强滤波器(CDEF),还有帧超分辨率重建、环内重建滤波器,以及电影颗粒胶片效果合成器。 

AV1 的去区块滤波器对 YUV 三个信号通道分别采用不同的滤波强度。对 Y 通道,水平滤波和垂直滤波采用不同的滤波强度。这个设计为去区块滤波增加了更多可优化的空间。 

约束方向增强滤波器(CDEF),应用在去区块滤波之后,对每一个8x8的块估计物体的方向,并沿着物体方向采用增强滤波。它能保留物体边缘的清晰度,提升重建图像的质量。 

帧超分辨率重建,应用在 CDEF 之后。它首先将图像沿着水平方向降采样,只对低分辨率图像进行编码,在解码器升采样把低分率图像还原为原分辨率。这个方法显著提升了低码率下的编解码的主观观测质量。 

环内重建滤波器,是另一个重要的增强图像质量的后期处理方法。它包含了两种滤波器。编码器从两者中选择其一。Wiener 滤波器采用可分离的对称设计。自导向投影滤波器使用两个重建信号的线性组合来近似真实信号。编码器通过比较滤波结果,选择合适的参数,并传输给解码器。 

电影胶片颗粒效果合成,是针对高质量视频而设计的一个工具。电影胶片的颗粒效果,很难用传统的视频压缩方法保留。AV1 将颗粒效果合成作为后期处理的步骤,对颗粒效果单独处理。它的工作原理是将电影胶片颗粒效果在编码前从原视频中分离出来。分离后的图像进行普通编解码,而颗粒效果在最后与解码后的图像合成为最终的输出视频。 

三、AV1 的压缩效率对比 

我们对比了 AV1 VP9 HEVC,严谨地讲,我们对比的是这几种编码标准所使用的参考软件实现,AV1 使用的参考软件实现是 LibaomVP9使用的是 LibvpxHEVC 使用的是 x265。我们的测试环境是 AWCY,它是一个公开的测试集,包含了30多个从360p 1080p 的测试视频文件,测试条件固定 QP60帧。在这样的测试环境下,我们可以看到 Libaom Libvpx 约有30%的压缩效率提升,比 x265 27%的效率提升。 

 

Facebook 也在他们实际应用场景中,对比测试了 AV1VP9 H.264AV1 的效率比 H.264 提升了 50%,比 VP9 提升了30% 

 

莫斯科国立大学每年也会进行编码器的效果测试,在他们的测试结果中,AV1 取得了最佳的压缩效果,明显超越了 H.264H.265 VP9 

 

我们都知道,现在的视频压缩标准用更高的编解码复杂度换取视频压缩效率的提升,当然实际应用中我们不可能无限制提高编解码复杂度,那平衡点在哪里呢?对于视频点播的公司而言 Netflix 给出了他们的回答。他们认为 AV1 的编解码复杂度,如果能控制在 VP9 4-10 倍,就可以应用于他们的产品中。我们 AV1 的复杂度是多少呢?截止今年8月初,我们对比了 AV1 VP9 在速度 0 到速度 3 的编码复杂度。先解释一下,速度 0 表示压缩效率最高,但速度最慢,速度 3 反之。相比于 VP9AV1 在速度0 VP970倍,在速度3则已经降低到10倍以内。AOM 软件开发组正在进行AV1编解码的优化,这个数值也在不断下降。 

 四、AV1的下一步演进 

AV1 当前的重要目标是编解码的优化,在编码端需要更多的 SIMD 代码支持,还要重新设计编码,尤其是降低在硬件端的复杂度。在编码方面,我们需要加快编码速度,我们需要更高效的分割算法,更优的滤波器类型、编码类型、运动估计算法等。 

AV1 中,我们使用了很多机器学习算法,它使得 AV1 能做出很多快速的决定,比如对搜寻方块划分的类型。我们相信在接下来的工作中,更好的机器学习算法会有助于 AV1 视频编解码的加速。我们在未来还将继续尝试其它新的视频压缩工具,比如光流的算法、基于机器学习的预测与合成的算法、基于机器学习的变换方法等。相信在 AOM 的框架下,以及各个成员与整个生态系统的支持下,AV1 在不久的将来会获得更广泛的应用。

现场提问

观众AV1什么时候可以让所有人使用上?

陈诚:目前 AV1 处于第二阶段,我们已经完成了标准的定稿以及浏览器软件解码的支持。未来一两年内会完成与硬件相关的设计与优化,预计在2020年,AOM 组织内的成员将都支持 AV1,那时任何人都可以使用到它。

观众:我们很关心 AV1的性能问题。跟其它编码器相比,在同样的质量条件下,压缩同样的内容能节省多少码率。刚刚您已经提供了一些比较详细的数据。我有一个疑问,印象中,在 Facebook 的测试中,与 H.264进行对比,AV1能节省一半的码率,我们知道 HEVC H.264 的比较也是提升了一半。从这个角度讲,AV1 H.265压缩比应该是相当的。但从其它报告来看,又显示 AV1 略胜于 H.265,但是数据略有浮动,有的是20%,有的是40%。您能提供一个比较权威的对比解读么?AV1到底比 H.265 强多少?

陈诚:我的说法仅是个人意见,无法作为官方解释来参考。不同的测试环境会导致测试效果的不同。我认为有两方面的差异导致了结果不同。首先是所使用的测试集,其次就是测试条件不同。关于测试条件,AV1 的研发目前主要为互联网公司的视频点播提供压缩算法。以 youtube Netflix 来说,他们是给一个固定的码流来进行压缩,而AV1HEVC的对比是基于固定 QP 作为对比条件。AV1 的设计初衷是在一个固定码流下进行压缩,并没有针对固定 QP 进行优化。这就导致了在很多的对比测试中,AV1 看起来并没有比 HEVC 提升多少。我在解释是基于 youtubeNetflix 等公司在实际应用环境中的测试结果,他们认为 AV1 已经超过了 H.264H.265