来源:IBC2021 原作者:J. De Cock 原标题:THE (NON)SENSE OF ARTIFICIAL INTELLIGENCE IN REALTIME VIDEO ENCODING 翻译整理:徐鋆 本文是”大话实时视频编码中的人工智能“上集,简介了 AI 和 ML 的关系,介绍了神经网络的复杂度表征方法,回顾了视频编码的演变和复杂度,总结了一些现有的机器学习方法在视频编码中的应用。
目录
在过去的十年中,已经出现了数千篇主张 AI 和 ML 有益处的文章。其中一些是现实的,而另一些则夸大了 ML 技术在大量应用中可能带来的好处。那么真正的好处在哪里,市场营销部门在哪里越过界线,变成了无稽之谈?在诸如实时(视频)处理或编码等严格条件下的应用呢?考虑到计算开销、延迟和成本限制后,能保留了多少净收益?
这篇文章试探性地将现实与虚构区分开来,我们看到了其中的好处,以及 AI 提供的工具是如何增强编码器工具集的。在确定了 AI/ML 术语之后,本文概述了视频编码领域的最新技术。之后,本文将介绍有效技术的示例和反例,以及有益于编码器阵容的方法。
在这篇文章中,我不打算重复对人工智能、机器学习或(深度)神经网络的全面概述。在这方面已经有很好的书和文章,例如文献[1]和[2],而且新的论文发表的速度比阅读的速度快。
首先,正确掌握术语是有帮助的。AI 和 ML 经常被互换使用。为了避免任何混淆,我们重复一下 AI 中的类的层次结构。AI 是创造智能机器或程序的科学和工程。在 AI 中,ML 被定义为一个研究领域,它使计算机有能力在不被明确编程的情况下学习。
目前有许多不同类型的 ML 算法,每种算法都有其优点,包括决策树、随机森林和支持向量机。鉴于它们在各种任务上的表现,重点已经转向大脑启发的 ML 技术,其中使用的神经元可以将信号作为输入,对这些信号进行计算,并产生输出信号。
神经网络(NN)是最常见的大脑启发的 ML 技术,其中神经元的计算涉及到输入值的加权和,然后应用一个非线性函数,只有当输入越过某个阈值时才会产生一个输出。在神经网络领域,我们发现了深度学习,其中的神经网络有 3 层以上,并且至少有一层是隐藏的。这些所谓的深度神经网络(DNN)已经变得越来越流行,通常包含几十甚至几百个(卷积)层。
一般来说,我们已经看到了从使用手工挑选的特征作为输入的浅层网络向具有众多卷积滤波层的“黑盒子”深度神经网络的演变。特别是对于计算机视觉,使用几个卷积层似乎非常有效。我们有理由期待视频压缩也会有同样的发展。
为了设定预期:尽管有这么多潜力,将 DNN 应用于视频编码,并希望在压缩性能方面出现神奇的跳跃,却根本不会发生。要么产生的网络过于复杂,需要大量的计算能力--提高你的解决方案的成本;要么它们变得非常浅层,精度下降。在这种情况下,坚持在既定的编码器中使用手动定制的启发式方法可能更有好处。硬件加速可以工作(但也提高了成本),但你失去了部署解决方案的灵活性。
在文献中,DNN 的复杂性不断增加。幸运的是,越来越多的文献关注,或者至少提到了 ML 的复杂性。那么,什么是衡量机器学习复杂性的好办法呢?一个被越来越多使用的参考点是用乘法运算(MAC)的数量来表达这些架构的复杂性。这些 MAC 可以从每秒数千到数百万不等,是复杂度的一个很好的代表[1]。即使在硬件并行化之后,一个 MAC 仍然是一个昂贵的操作。
作为一个例子,表 1 中列出了已经提交给 ImageNet 挑战的最先进的 CNN,从 LeNet 到 ResNet 和 VGG,提到了所需的层数和 MAC 总数。对于较新的网络,操作数通常以 GigaOps 表示,突出了所需计算能力的爆炸性增长。

表 1 流行的 DNN 概述
即使是在强大的(和昂贵的)GPU 上,这些网络的推理时间对于一张 1024x1024 的图像来说也会超过 100ms。而且,对于这些较新的网络来说,每参数的准确度会下降,而且规模较大的网络并不能完全发挥其学习能力[3]。虽然这只是说明了现代 DNN 的复杂性,但视频压缩能从这种深度网络中受益多少呢?
自 80 年代的第一个数字压缩系统以来,视频编码已经有了长足的进步。从 H.261 到 MPEG-2 和 H.263,我们现在处于一个多编码的世界,有几种引人注目的格式,包括 H.264/AVC、HEVC、VP9、AV1 和 VVC[4]。通常情况下,视频标准的引入是与分辨率的提高同步进行的。特别是在广播领域,分辨率的下一步和新标准(如 H.264/AVC 和 HD,HEVC 和 UHD)之间有密切联系。预计 VVC 的引入将与 8K 的采用齐头并进。
伴随着压缩效率的提高,视频编码器和解码器的复杂性也大大增加。对于实时编码来说,以最新的标准实时处理高帧数、高分辨率的视频,面临着越来越多的挑战。在现实生活中的系统,如广播或直播 ABR 分发,系统的成本是一个非常重要的参数,以保持竞争力。一般来说,AI 技术可以带来好处,使编码器供应商更具竞争力。但是,如上所述,许多网络的复杂性让人望而却步,在应用于编码时,会导致净劣势。我们将在本文的其余部分探讨这种权衡,排除一些方法的考虑,同时讨论其他看起来有希望的方法。但正如介绍中所宣布的,在市场承诺和现实之间存在着差距。
机器学习已经在图像和视频编码中应用了几十年。在 80 年代末,基于多层感知器(MLP)网络的图像压缩实验已经开始进行[5]。在 90 年代,工作转向用于图像[6][7]和视频[8]压缩的随机神经网络。这些文献侧重于替代当时的压缩方案,如 JPEG 和 H.261,具有相当的计算复杂性。尽管它们提供了合理的性能,但它们从未成功进入该领域,焦点转向了标准化的编码解决方案,如 MPEG-2 和 H.264/AVC。
自 2010 年代初以来,与视频编码相关的机器学习工作已经复苏,并在过去几年中真正加速,带来了一系列你可以描述为“深度方案”、“深度工具”和“符合标准”的工作。很难对这个方向的工作提供详尽的概述,因为这些主题中的每一个都是极其热门的研究课题,每天都有新的文献出现。
深度压缩方案是一种完全不同的编码方法,提供了一个完整的端到端解决方案。它们建立在降维和自动编码的概念上,实现了自动学习并消除了对手工选择的特征的需求[9]。在过去的 5 年中,这些自动编码器受到了越来越多的关注,并取得了非常有希望的结果,特别是在感知质量方面。在[10]中,提出了一个基于 CNN 的视频压缩框架 DeepCoder,用单独的 CNN 网络处理预测信号和残差信号,之后应用标量量化和 Huffman 编码。作者在 SSIM 方面获得了与 x264 IPPP 编码相似的效率。但没有提到关于其计算复杂度的需求。[11]的工作集中在端到端优化和图像压缩上,有可能在压缩性能方面超过 JPEG 和 JPEG 2000 等格式。[12]专注于用 CNN 来建模空间-时间一致性以进行预测编码,得到了接近 H.264/AVC 的压缩性能。但是据报告,其总体计算复杂度是 H.264/AVC 参考软件 JM 的 141 倍。[13]提出了一个端到端的深度视频压缩网络,复杂度约为 11M 参数,对 CIF 大小的视频达到约 24 帧每秒。
在[2]中,概述了端到端的神经视频编码解决方案,并进行了案例研究。但很明显,这些“深度方案”还没有准备好用于实时视频的黄金时间,而且在广泛部署之前,它们缺乏一个标准化的解决方案。
更接近现有标准的是所谓的“深度工具”或“模块化神经视频编码”[2]的工作,其中编码器工具被学习的算法取代。传统上,编码器工具是由活跃在标准化过程中的工程师手工设计和调整的。通过学习,可以找到能够更好地适应内容类型的解决方案,或者更好地利用时空一致性。
在过去的几年里,我们已经看到了关于帧内预测的学习算法提案,例如[14],其中报告了与 HEVC 参考软件相比的微小收益。[15]提到,相对于 HM 编码和解码软件,比特率节省了 1.1%,计算成本分别为 148% 和 290%。[16]提出了互补的 HEVC 帧内预测模式,其中明确提到了乘法方面的高成本,它随着块大小而增长(从 4x4 块的每个像素 20 次乘法到 32x32 块的每个像素 132 次乘法)。
对于时域预测,[17]提出了一种基于分组变化卷积神经网络(GVCNN)的分数插值方法。这使比特率平均节省了 2.2%,但相对于参考软件,编码器/解码器的时间为 6 倍和 1500 倍。已经有其他方案被提出,例如在编码器和解码器之间不发送运动信息就能预测纹理[18]。编码器的时间是 1.5 倍,而解码器的时间则超过 100 倍。
目前,标准化工作正在进行中,以便将 ML 工具带入现实生活中。在 JPEG 中已经开始了一项活动(JPEG AI),在基于学习的编码方向上开始了探索。另外,在 MPEG/JVET 中,有一种在视频压缩方案中使用 AI 的趋势。在过去的 JVET 会议上,在这个方向上已经提交了一些贡献,并且成立了一个 AHG,目标是开发一个潜在的支持基于学习的编码工具的 VVC 扩展[19]。该小组讨论的工具包括帧内预测、环路滤波、后处理和超分辨率。类似的工作正在开放媒体联盟内进行,以便在 AV1 和 AV2 的范围内进行改进。
从缺点来看,这些工具中许多又是非常复杂的。在积极的一面,通过优化网络,复杂性受到了关注。在 JVET AHG 中,提到每个像素的 MAC 数量是一项要求。但是,对于许多这些工具来说,与 VVC 参考软件相比,解码时间上升了两三个数量级,需要做更多的工作来将复杂性降低到可接受的水平。
最近的部分研究集中在以规范的方式(即不修改现有标准或工具)改进和加速视频编码。从 HEVC 的引入开始,可以发现大量的研究试图降低编码器的复杂性。作为一个例子,“数据挖掘”方法被应用,产生了决策树,以减少 HEVC 编码的计算复杂性[20]。在[21]中,基于 CNN 和 LSTM 的模型都被引入,以加速 HEVC 内部和内部编码的四叉树分区。但是,第一个模型仍然需要总共 1.5M 的乘法和加法,而第二个模型需要大约 760K。尽管与参考软件相比,这些模型导致了 60-70% 的编码时间的减少,但对于实际的实施来说,它们的数量级还是太高。
最近,工作转向 VP9[22]、AV1[23]和 VVC[24][25]编码的加速。[22]中最小的模型使用了大约 26K 的可训练参数,每 64x64 的超级块需要大约 10M 的浮点运算。虽然与 VOD 类型的设置相比,这导致了速度的提高,但对于实时编码来说,要证明这个操作数是合理的,要困难得多。
DNN 已经被证明在(预)滤波应用方面非常强大。一系列关于预滤波技术的文章已经写好,包括锐化、去噪、对比度增强、运动去模糊和边缘检测。有一种不同的方法专注于视频内容语义,以协助视频编码,如物体检测/分割、显著性预测等。更具前瞻性的是分析-合成技术,它与人类视觉系统对纹理的感知方式更为接近。一个基于纹理的视频编码方法在[2]中提出,同时也提出了它的开放性问题,如分析的准确性。
一段时间以来,一个有前途的方向是超分辨率,即在编码前对输入视频进行降采样,然后在接收端对重建的帧再次进行升采样。这些方法可以在可接受的复杂度要求下节省比特(见[26]的概述)。这些方法的好处是它们可以以符合标准的方式工作,而不需要修改基础编码器或基础设施。缺点是,超分辨率上采样算法需要在接收端应用,这使得不是所有的(传统的)客户端都适合这种类型的分发。
如[2]所述,“所有这些问题对基于 DNN 的工具的市场采用构成了严重障碍,特别是在节能的移动平台上。一个有希望的解决方案是设计专门的硬件来加速 DNN 算法”。而根据[27],“将现有的深度工具与传统的非深度方案中的对应工具相比较,人们很容易发现前者的计算复杂性比后者高得多。高复杂度确实是深度学习的一个普遍问题,也是阻碍深度网络在计算资源有限的情况下(如手机)采用的一个关键问题。”
尽管有这些潜力,我们离在实时编码器中应用这些方案和工具还很远。虽然在加速编码器的传统决策方面已经花费了大量的研究和工程,但在加速基于 DNN 的编码器决策方面还需要大量的工作。投入 GPU 或并行硬件并不能解决这个问题,因为它导致了一个非常昂贵的解决方案,这是目前部署在通用 CPU 上的软件的几倍。在越来越多的文献中,网络的复杂性被明确提及,这是一个很好的发展,因为我们离许多网络的实际部署还有很大的距离。