![624eabdc3ec5f86715640d6478ffdc84.png](https://i-blog.csdnimg.cn/blog_migrate/1e377dfe42d34e6182da9c814e244301.jpeg)
-- 本文来自于VIP Lab的曾艺璇同学撰稿
本文将分为四个部分对下一代视频编码标准Versatile Video Coding(VVC)的变化模块进行介绍。第一部分简单介绍一下视频编码的发展历程以及VVC的编码框架;第二部分重点介绍VVC变换相比于以往的视频编码标准(HEVC、AVC)所新增加的一些特性;第三部分介绍了国内外对VVC变换硬件设计的研究现状;第四部分总结了我们当前的研究思路。
- 背景介绍
![4186efcccbb8c8037f10eb59f0afae77.png](https://i-blog.csdnimg.cn/blog_migrate/0bc68767555b61e97a7d225218642bed.jpeg)
上图展示了视频编码国际标准的发展历程,我们可以看到目前主要以VVC、AV1和AVS3为主流发展趋势。人们对高分辨率视频(4K、8K)的需求越来越大,因此需要更加高效的视频压缩标准来提升压缩效率降低带宽压力。按照下图所示的压缩率提升规律,编码效率每提升50%以上就会成为新一代标准,如早前的H.261、HAV1等,其性能基本持平所以我们将其称为第一代。而像AVS和H.264等比前一代提升50%就可称其为第二代,至于AVS2、H.265等相对于第二代的提升达到50%我们就将其称为第三代。现在我们正在探索的AVS3/VVC/H.266则会成为最新一代的压缩标准。
![ec2e6f09b5bef5534d175773839680f6.png](https://i-blog.csdnimg.cn/blog_migrate/12e134a8192f3731b6910a37cb23e778.jpeg)
和之前的标准类似,VVC采用基于块结构的混合编码框架,融合了帧内和帧间预测、变化编码和熵编码等模块。如下图:
![632303f92d3365bd9e4fe3b966d232b0.png](https://i-blog.csdnimg.cn/blog_migrate/d8b4cb76d524b827373e72823fdfc435.jpeg)
那么VVC有什么特别之处呢?我将VVC所引入的新技术以及其带来的性能提升整理成下表,我们可以看到蓝色与红色高亮的技术所带来的性能提升非常显著,但毫无疑问,这也带来了巨大的计算复杂度,从编码时间的增加上就可以看出。
![7c0cad5c06b19bea1691707674914a08.png](https://i-blog.csdnimg.cn/blog_migrate/5712f5503f6f96225720fc85f851cef6.png)
2. VVC变换的新特性
这一节我们重点来介绍VVC变换所增加的新特性,其可以概括为三个方面:1)更灵活的变换尺寸;2)舍弃高频变换系数;3)多变换核选择(Multiple Transform Selection, MTS)。首先,我们先简单介绍一下变换原理。
对于2D变换,都可以拆分为行方向和列方向上的1D变换。所有变换类型的1D变换计算公式如下:
![d10c8efac4c1d3e4809138223ba6bd46.png](https://i-blog.csdnimg.cn/blog_migrate/8058c8bc01d612b8aa3e98b1630222d9.png)
其中X是表示一帧图像的输入行向量(1×N),TN是N×N整数变换矩阵,Y是经过变换计算所获得的输出列向量(N×1)。那么我们可以知道变换的实质就是矩阵计算。
2.1 更灵活的变换尺寸
由于Multiple Type Tree(MTT)的引入,VVC支持四叉树+二叉树+三叉树划分(如图4),导致变换不仅支持正方形的尺寸(MxM)还支持长方形尺寸(MxN,M≠N)。除此之外,VVC还支持在行列方向上采用不同的变换类型。
![c808da4bb901d954ed49b4fc2c1007fd.png](https://i-blog.csdnimg.cn/blog_migrate/a1bc2600e2ccbbddef0e05794de2da03.png)
2.2 舍弃高频变换系数
在VVC的官方测试软件VTM中,允许变换的最大尺寸为64x64。对于长或宽等于64的大尺寸变换块,直接舍弃高频变换系数,仅保留低频变换系数。例如,对于长x宽为MxN的块,若M等于64,则只保留左边的32列,若N等于64,则只保留上方的32行。如果当前为变换跳过模式,则保留所有变换系数。
2.3 多变换核选择(MTS)
除了HEVC中的DCT-II变换,VVC引进了两种新的变换方式DST-VII 和DCT-VIII,帧内帧间编码块从这三种变换方式中进行选择。下表为三种变换方式的基函数。
![9121380a6b60b8ef036c22283dcaeca6.png](https://i-blog.csdnimg.cn/blog_migrate/b54506ee57f567855550cb3825179667.png)
为了控制MTS的复杂度,分别在帧内和帧间的SPS level对是否使用MTS进行标记,若SPS level标记表示可以使用MTS,则每个CU也有一个Flag标记当前CU是否使用MTS。MTS在CU级别的flag只有在满足以下两种情况时才会存在:
1)长和宽都小于等于32; 2)CBF Flag等于1;
这里值得注意的是,MTS仅仅适用于亮度分量。具体可参考链接:https://blog.csdn.net/baidu_28446365/article/details/90174414
3. 国内外研究现状
每一代视频编码标准的出现,都会促进其软件加速和硬件优化方面的研究。在残差编码、率失真优化(RDO)过程中,变换都是高频使用、计算量大的一个模块。目前,国内外有很多学者针对变换操作,提出了一些area-efficient、low-power的硬件架构。在过去几年里,大量的工作都是围绕HEVC的DCT-II展开的,而这些工作的核心都离不开Chen等人所提出的矩阵分解算法,这是一种迭代的分解方式,就是将DCT-II变换矩阵分解成两部分(偶部分AN/2和奇部分RN/2),AN/2可以按照上述继续分解,如下式所示。通过这种方式可以有效地降低计算复杂度,化大为小。
![0f1a30c84c8a3888f514921c1ec02fa4.png](https://i-blog.csdnimg.cn/blog_migrate/82b6d1b6b14cb9bd8278377ca0f19136.png)
由于VVC是一个正在发展、不断完善的新标准,目前针对VVC变换的相关研究很少。并且,由于变换尺寸和类型的差异,之前关于HEVC变换的相关工作无法直接应用于VVC变换。有少量研究是针对JEM(HEVC向VVC过渡的版本)做的,JEM变换包含五种可供选择的变换核,除VVC的三种外,增加了DCT-V和DST-I。
A. Kammoun等人【3】【4】面向五种变换核,使用无乘法器的多常量乘法(Multiplierless Multiple Constant Multiplication,MCM)为每一种变换核都设计了相应的1D 4-point和8-point计算单元,并且统计了所使用的加法器和移位操作数,发现硬件资源消耗有效降低。下图是他们给出的1D 8-point变换实现的整体框架。
![f8017691250fec28ff2b158dfb18728f.png](https://i-blog.csdnimg.cn/blog_migrate/ff21a8d454a189d128a66558ff8ce37c.jpeg)
A. C. Mert等人【5】首次实现了5种变换核的2D变换,并且可以根据输入信号(TR_Type_Vertical、TR_Type_Horizontal)选择变换类型进而对相应数据通路进行重构。这种可重构的架构大大减少了area,是一种高性能架构,美中不足的是变换尺寸仅支持4×4和8×8。
![27d49416560ea1319b602639cdd21dfe.png](https://i-blog.csdnimg.cn/blog_migrate/3ae202b65828a7d2eb7f45e0d3770b11.jpeg)
随后A. Kammoun等人【6】为五种变换核提出了一个统一的2D变换架构,可支持最大变换尺寸为32×32,采用折叠型框架并且设计了流水线,图8给出了4×4块变换的流水线处理时序图。该实现以大量的硬件资源消耗为代价来换取设计的统一完整性。
![72ce2537779076c1f05934f13fb4933e.png](https://i-blog.csdnimg.cn/blog_migrate/121b950775990fccb024342e54a838e2.png)
![a32cfccf95979c35179cb305d8991b91.png](https://i-blog.csdnimg.cn/blog_migrate/839b320a8ffb3d75f76e23e9d2027e5b.png)
4. 研究思路
在做变换模块的硬件设计时,如何减少硬件代价、降低能耗是研究的一个重点。我们的研究主要从以下几个方面开展:
1)降低计算单元的硬件复杂度。对于1D变换(实质就是矩阵乘法),我们需要设计核心计算单元(乘法块),而有效地减少计算单元的硬件资源消耗才能降低整个2D实现的area。我们发现MCM仅通过加法和移位操作就能完成乘法块的设计。而移位操作的硬件消耗很少,通过rewire就可以实现,那么如何减少加法器的数目就是研究之重。我们采用了RAG-n算法——一种有效减少加法器数目的算法来进行我们核心计算单元的设计。
2)支持长方形变换尺寸(M×N,M≠N)的中间数据存储。我们知道,2D变换过程可以分解为先行变换再列变换,那行变换得到的中间结果存至转置存储器,再由列变换读取数据进行计算最终完成2D变换。高效的数据存储模式可以大大提高计算效率,减少不必要的数据读取时间。我们针对了长方形变换块设计了对角线式的数据存储模式,使流水线设计成为可能。
3)支持混合块尺寸的流水线设计。我们知道变换块尺寸有大有小,形状各异,那么在混合的块尺寸输入下,如何使整个设计流水线化?我们通过下面这张图来说明。以(a)为例,当我们完成16×16块的行变换,并将数据存至转置存储器(Transpose Memory, TM)后,我们开始从TM中读数据并同时进行下一个块(32×32)的行变换,当我们完成了前一个块的列读取后,当前的32×32块并没有完成行变换,因此还不能读取列数据,需要等待(A timing gap)。而我们的设计以经过高频系数舍弃所支持的最大变换尺寸32×32为范围,进行流水化,当完成32×32块范围(可以由很多不同的子块组成)内的所有行变换再开启列变换,如(c)所示。
![c0e83d94a0fe1413c141717d47c5c7ab.png](https://i-blog.csdnimg.cn/blog_migrate/4c8409dc3e97e34ec77cd6b3cf1a414c.png)
![edfd448b4d2a5dfd95d57c67bcb36fd7.png](https://i-blog.csdnimg.cn/blog_migrate/28c2fd0e482a62c3ea5b7c8cc276489e.png)
![5d402a7f22050e480e00610159417748.png](https://i-blog.csdnimg.cn/blog_migrate/afefc9a2e1f2fe2f397dce2b1728a023.png)
4)寻找不同变换类型的共性。我们发现DST-VII和DCT-VIII之间有着非常奇妙的关系,与DST-VII变换矩阵(3)相比,DCT-VIII(4)的每一行都和它有着相同的系数,只是顺序相反,并且在第偶数行符号相反。这样的话,我们仅需反转输入顺序并分配合适的输出符号,便可以在不增加计算复杂度的基础上轻松在DST-VII架构中实现DCT-VIII变换。
![9a7fb86ba97994271d2d2e9a60f09a31.png](https://i-blog.csdnimg.cn/blog_migrate/ac443ab51e16c4062f9450554a650714.png)
如果想了解更多,欢迎阅读我们的论文:
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8794833
参考文献:
【1】Working Draft 4 of Versatile Video Coding, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC (JTC 1/SC 29/WG 11), JVET Doc. M1001-v7, 13th Meeting: Marrakech, MA, January 2019.
【2】W H Chen, C Smith, S Fralick, "A Fast Computational Algorithm for the Discrete Cosine Transform," IEEE Transactions on Communications, vol. 25, no. 9, pp. 1004-1009, 1977.
【3】A. Kammoun, S. Ben Jdidia, F. Belghith, W. Hamidouche, J. F. Nezan, and N. Masmoudi, "An Optimized Hardware Implementation of 4-point Adaptive Multiple Transform design for post-HEVC," in Int. Conf. on ATSIP, Sousse, 2018, pp. 1-6.
【4】S. Ben Jdidia, A. Kammoun, F. Belghith, and N. Masmoudi, "Hardware implementation of 1-D 8-point adaptive multiple transform in post- HEVC standard," in Int. Conf. on STA, Monastir, 2017, pp. 146-151.
【5】A. C. Mert, E. Kalali, and I. Hamzaoglu, "High performance 2D transform hardware for future video coding," IEEE Trans. Consum. Electron., vol. 62, no. 2, pp. 117-125, May 2017.
【6】A. Kammoun, W. Hamidouche, F. Belghith, J. F. Nezan, and N. Masmoudi, "Hardware Design and Implementation of Adaptive Multiple Transforms for the Versatile Video Coding Standard," IEEE Trans. Consum. Electron., vol. 64, no. 4, pp. 424-432, November 2018.
【7】Y, Voronenko and M. Puschel, "Multiplierless Multiple Constant Multiplication," ACM Trans. on Algorith., vol. 3, no. 2, Article 11, May 2007.
【8】VTM Reference Software. Accessed: Mar. 5, 2019. [Online]. Available: https://vcgit.hhi.fraunhofer.de/ jvet/VVCSoftware_VTM/release