AV1 概括性论文《An Overview of Core Coding Tools in the AV1 Video Codec》学习

       HEVC因为专利的问题一直没达到AVC的高度,但是AVC已经服役20年,还能再服役20年吗?一众大佬(公司)为改善现状,一起提出了AV1这一标准。AV1主打点就是免知识产权费,最近在国内国外已经越来越火。作为已经不年轻的码农也深感更新知识的重要性,因此就从今天开始系统性地学习一下AV1这个编码标准吧,期间也在博客上分享一些自己的心得,一方面作为记录,另一方面抛砖引玉,希望有同好能共同探讨,共同进步。我的预期学习AV1的过程是包括文章和代码两部分,顺序是按模块从文章到代码,先有认知再看实现。由于个人知识有限,因此肯定会出现错漏,希望大家大胆引用小心求证,如果发现问题请不吝指出。

   总体来说AV1相对于VP9在块结构、帧内预测、帧间预测、熵编码、变换、环内滤波几乎所有环节都新增了工具。

  • 块结构  VP9使用四叉树的块划分结构最大支持64x64最小支持4x4的块(作为对比HEVC支持64x64至8x8的四叉树CU划分)。AV1将最块尺寸扩展至128x128,同时增加至10种块划分形式(见图 1),并且在8x8以下的尺寸增加了更多灵活的划分决策方式,如某些情况下的2x2色度帧间预测。

        AV1 概括性论文《An Overview of Core Coding Tools in the AV1 Video Codec》学习_第1张图片

                                 图1 VP9与AV1块划分对比

  • 帧内预测 VP9支持10种帧内预测模式,由8种方向模式和2种非方向模式DC和TM(True Motion)组成。作为对比HEVC支持33种方向模式和DC、Planar 2种非方向模式。(个人对TM模式比较好奇,应该在AV1中还会遇到,后续内容分析技术细节时看到再更新。)AV1相比VP9的帧内预测模式在以下方向有扩展:方向模式分了更精细的方向插值,非方向预测模式考虑了梯度和亮度色度变化的相关相关性,添加了针对人造场景的工具。具体到工具上有以下这些:方向预测模式扩展至56种;增加3种非方向预测模式:SMOOTH V, SMOOTH H, SMOOTH;基于递归滤波的帧内预测;调色板模式(在HEVC-SCC中也有,不知道AV1是如何规避这个专利问题的);Intra Block Copy。
  • 帧间预测 AV1在帧间主要有以下几点升级:扩展参考帧类型;使用更复杂的运动矢量预测算法;使用重叠块运动补偿(Overlapped Block Motion Compensation, OBMC)减少块边缘的预测误差;使用仿射变换实现扭曲运动补偿(Warped Motion Compensation, WMC);同时一系列新的复合预测工具,以使其帧间编码器更加通用(这个工具还没有太理解算法原理)。

          AV1 概括性论文《An Overview of Core Coding Tools in the AV1 Video Codec》学习_第2张图片

                                        图2 参考帧结构示例

  • 变换 增加类似HEVC中TU划分的结构,扩展变换核。
  • 熵编码 使用多符号熵编码(与此对应地HEVC中使用的是二元熵编码);根据频域系数位置对应使用不同的模型。
  • 环内滤波和后处理 在去块效应滤波之外新增限制方向加强滤波器(Constrained Directional Enhancement Filter, CDEF)保留细节;新增Wiener滤波和Guided Filter 二选一的滤波方式;支持帧级的超分辨率,但是只支持水平方向的缩放,而且超分算法也很简单(没有应用一些NN类的算法);增加针对电影胶片噪声的编码方法,在编码前将噪声提取、去除,然后在解码端恢复,但是“恢复噪声”并不是完全一致的,是存在一定随机性的,因此会导致PSNR下降。

    AV1 概括性论文《An Overview of Core Coding Tools in the AV1 Video Codec》学习_第3张图片

                                           图3 AV1超分辨率算法框架

        以上这些工具总结都来自这篇文章https://ieeexplore.ieee.org/document/8456249/,有感兴趣的朋友可以自己下下来研究一下。我觉得比较有趣的是帧内非角度预测模式、多符号熵编码、Wiener和Guided Filter以及超分辨率的应用。当然算法上内容肯定不止这些,目前只是通过这篇文章对AV1有个初步的认识。还有一些内容在这篇文章中尚没有体现,比如码率控制算法、AV1的参考软件支持2-pass编码是怎么样的机制等等,这些都有待于在学习代码的过程中逐一研究。

       最后是编码性能的对比,HEVC用的是X265而不是HM,从文章的结果来看性能增益还是很客观的,只是不知计算复杂度增长几何。AV1的overview中提到标准制定的时候考虑了硬件设计的代价,猜测应该会有更利于硬件实现的规划。

 AV1 概括性论文《An Overview of Core Coding Tools in the AV1 Video Codec》学习_第4张图片

                     图4 AV1与VP9 HEVC性能对比

你可能感兴趣的:(AV1学习)