LibAOM与AV1的最新研发进展

LiveVideoStack 2021年4月30日


# Editorial Note #

本次分享我们邀请到了来自Google Open Codec Team的韩敬宁博士,他向我们分享了AV1解码器的覆盖,AV1编码器性能的提升包括AV1压缩性能的提升和运算复杂度的降低,AV1实时编码器的应用和基于AV1的图像编码器格式AVIF的最新研究进展。


文 / 韩敬宁

整理 / LiveVideoStack

LibAOM与AV1的最新研发进展


大家好,我是Google Open Codec Team韩敬宁,很高兴能有这样的机会与大家分享关于LibAOM和AV1的最新研发进展。

LibAOM与AV1的最新研发进展


本次分享主要分为一下几个部分:AV1解码器的覆盖、AV1编码器性能的提升(AV1压缩性能的提升和运算复杂度的降低)、AV1实时编码器的应用、 基于AV1的图像编码器格式(AVIF的最新研究进展)。


#1. AV1解码器的覆盖

LibAOM与AV1的最新研发进展


现在主要的支持AV1软件解码器的浏览器有Chrome、Edge、Firefox、Opera。操作系统中Android、ChromeOS、Linux、Windows都有支持AV1解码的原生library。为了进一步推动AV1软件解码器在移动端的覆盖,我们团队还研发了Libgav1 library,它的主要目标是Android设备,在实测的Android设备中Libgav1 library的解码运行速度相对于Libaom而言能提高2.5倍以上。在硬件解码器方向通常的最低要求是4K/60fps,大多数硬件解码器能够达到8K/60fps的性能。在现有和即将上市的电视中LG、三星、索尼和TCL都是已经有AV1硬件解码器的覆盖,手机端则是LG、OPPO、三星、Vivo和小米有AV1硬件解码器的覆盖。再GPU、CPU方向AMD、Nvidia和lntel在现在和未来会有更多的AV1硬件解码器支持。


#2. AV1编码器的性能


2.1 AV1编码器的压缩性能

LibAOM与AV1的最新研发进展


AV1是在2018年中旬finalize bit-stream经过团队两年多的研究和尝试AV1的压缩性能在过去两年中有了显著的提高,现在相对于VP9而言能达到的peak compression performance是在以PSNR或SSIM这样的客观指标条件下能提高36%以上。相对于2018年bit-stream finalization的时候Libaom的AV1的压缩性能peak (compression) performance在PSNR条件下是能够提高超过14%,而在SSIM条件下是能够提高超过17%。这些数字的测试条件是基于通常的standard test set,在YouTube视频条件下实测压缩性能增益远远大于在此列举的数字。


2.2 编码器的速度和内存需求

LibAOM与AV1的最新研发进展


相对于2018年bit-stream finalization的时候Libaom编码器的速度提升150倍以上,与此同时在4K的视频压缩条件下我们对内存的需求下降了80%。为了更好的支持不同的实际应用场景,Libaom支持不同的一个系列的speed setting(speed setting的数字越高就意味着编码器的运行速度越快)相对压缩性能增益会有所损耗。上图的表格中,speed setting3和3以下通常是比较高的压缩性能,运行速度5相对于VP9而言更慢一些;speed setting在5以上时,实际AV1的压缩性能运行速度更高于VP9运行速度,与此同时它会提供19%、16%的压缩性能增益。在比较encoding time时AV1和VP9都是用single thread进行处理;在speed6条件下,AV1比VP9的压缩性能提高了16%与此同时它实际的encoder复杂度只有VP9的40%。


2.3 技术亮点


关于编码器的优化,在很多层面都有新的算法出现包括group of picture level、frame coding level、coding block level,本次在每个层面选一到两个例子做简述。我们的codebase是完全开源的,如果大家感兴趣,非常欢迎大家能够参考我们的codebase,如果有新的想法也非常欢迎与我们一起合作。


2.3.1 Group of picture level

LibAOM与AV1的最新研发进展


在group of picture level 中AV1 Libaom基于的算法是2-pass encoding,通常会有一非常快速的first pass encode去生成一些frame level statistics,2-pass encoding会对它做出一个更好的分析,例如动态的group of picture decision。通常对first pass statistics的分析会试图提取inter frame correlation和每个frame的acquisition noise的强度,基于这两个数据去分析当前一系列的frame是否属于相对稳定、相对静态或运动非常快、variance非常高的区间。基于这些分析再去决定实际的group of picture会包括多少个frame,在这当中一定要保证当出现scene-cut时,group of picture不会go across the scene-cut point。


2.3.2 Frame level

LibAOM与AV1的最新研发进展


在frame level Libaom会对所有的long-term reference frame做decomposition。Decomposition的方法是把一个long term reference frame,如果一个 reference frame把它作为long term reference frame,通常会把它分解成Alternate reference frame(ARF)和Overlay frame。ARF会被作为一个正常的frame去encode和decode,在decoder端它不会给用户playback,它只是作为一个internal reference给后面的frame提供motion compensating prediction。Overlay frame是和ARF处于同一个位置的frame,但是Overlay frame相当于ARF到实际original frame的residual,它会去code这些residual作为实际能够playback的frame。ARF的好处是它允许对原始信号滤波能够降低frame里面的noise level,可以对滤波以后的frame做更高reconstruction quality的coding。在Libaom中采用的生成ARF的temporal filtering的non-local mean filter。它的reference patch是通过motion estimation从周围的frame找到。Filter的kernel会根据当前frame的estimated noise level进行调整。通常概念是,如果noise level越高相对的filter的强度就会更大。

LibAOM与AV1的最新研发进展


上图是long-term reference frame就premium coding structure而言,最底层的frame会被分解成ARF和Overlay frame。对于long-term reference frame都是被当成两个frame去做process。


2.3.3 Coding block level

LibAOM与AV1的最新研发进展


在coding block level为了更好的平衡编码器的速度和编码器的压缩性能采取了multi-winner multi-stage的搜索philosophy。基本的概念是我们在更靠前的early stage,比如试图找到prediction mode时会采取比较简单的rate decision cost estimate去分析在所有可能的prediction mode中找出小部分相对可以提供更好的prediction quality,换句话说更有可能提供更低的RD cost的prediction mode 。在选中的subset当中在下一个stage会对他们进行更精确的rate decision cost estimation,例如transform kernel selection等逐级地选到最好的、最有可能成为最优的coding mode。在motion estimation方向对传统的diamond shape motion search、center-biased search 和square search算法进行了调整。例如在Libaom中我们采用polar coordinate的sampling approach,就是对在motion search当中的sampling的distribution做了重新调整,使它在搜索密度的方向能够更加均匀分布,也能提高压缩性能。

LibAOM与AV1的最新研发进展


除此之外Libaom也支持对一系列不同的metric的optimization mode,包括SSE、VMAF/VMAF-NEG等。VMAF是近年出现的比较popular的metric。它相对于PSNR也能够更好的接近实际用户的视觉感受。在Libaom中对VMAF和VMAF的衍生版本VMAF-NEG也有相应的优化模式,在这个模式下,会允许用户采取动态的pre-processing filter,也就是说有一个option是可以对原始的视频信号做pre-filter去增强关键的对比度,在安全区间相对降低一些noise level。可以根据VMAF metric在不同的block、不同context下对reconstruction error的penalty不同,对此采取不同的adapt rate trade-off,基于此条件下相对于base line的Libaom也就是对PSNR SSIM Optimization,VMAF mode会在VAMF条件下提高压缩性能30%-40%,对VMAF-NEG提高大概7%-9%的空间,这些数字是相对于PSNR based Libaom optimization的运行结果。


#3. AV1实时编码器

LibAOM与AV1的最新研发进展


Libaom AV1实时编码器是从Chrome M90开始被enable by default。

LibAOM与AV1的最新研发进展


在desktop方向,它相对于VP9的压缩性能提高15%-20%,相对复杂度控制在1.25倍以内。相对于VP9而言,AV1的实时编码器会提供更好的主观压缩指标。在移动端,目前Libaom AV1的实时压缩器主要的目标是对低分辨率,比如QVGA 的resolution可以支持非常低的比特率条件下进行视频通信,最低可以达到15kbps。从2020年8月份开始逐渐把Libaom AV1实时编码器放到production开始roll out。得到的用户反馈是相对于VP8/H264的软件编码器和HEVC的硬件编码器而言反馈是更好的,有更高的frame rate,更少的freeze,用户给的quality rating 也更高。Overall在移动端让用户有更长的视频通话时间。


#4. 图像压缩格式AVIF

LibAOM与AV1的最新研发进展


AVIF是基于AV1的图像压缩格式,相当于AV1的bitstream在一个HEIF container形式出现,相对于传统的JPEG 而言,AVIF的压缩性能要提高超过80%,在同样的质量条件下,同样reconstruction quality条件下AVIF所需要的file size 应该是JPEG的五分之一以下。我们团队正在积极的推进AVIF编码器的性能优化,在编码器复杂度方向加速了8倍,与此同时造成的压缩性能损耗控制在5%左右,对内存的需求降低了5倍。从去年秋天开始Chrome M85已经支持使用AVIF图像格式,在今年会有更多的运算平台会支持AVIF格式,比如Android、Firefox和Safari。


#5. Libaom v3.0版本的release

LibAOM与AV1的最新研发进展


今年3月我们进行了Libaom v3.0版本发布。它相对2.0版本压缩性提高大约5%以上,编码器速度进一步加快,如果目标是实时编码器的话实际会产生的binary size会变小,对VOD setting和Real-time setting做了更好的多线程优化,同时也对整个codebase 做了更系统化的文档,希望能够帮助更广泛的developer society,更容易去读懂codebase design并方便大家的使用和contribute Libaom的codebase。


以上就是我的全部分享,谢谢大家!


The cover from creativeboom.com


还可输入800
全部评论
作者介绍

韩敬宁

Google

Senior Staff Engineer

文章

粉丝

视频

阅读排行
  • 2周
  • 4周
  • 16周
热门视频

WebRTC视频数据流程分析

许建林/《WebRTC Native开发实战》书籍作者