矩阵加权帧内预测 MIP
-
将深度学习技术应用到 VVC 中在在 2018 年 3 月份 JVET-J0034 提案中提出了 [AHG9: CNN-based driving of block partitioning for intra slices encoding],即利用 CNN 驱动帧内编码块进行预测分区。
-
矩阵加权预测 MIP(Matrix weighted intra prediction)是深度学习在 VVC 中的进一步应用, 是在 VVC 中首次提出的技术,在 2018 年 3 月份 JVET-J0037 提案中 [Intra Prediction Modes based on Neural Networks] 提出的技术。
-
此外在 2019 年 3 月中 JVET-N0217 提案 [Affine linear weighted intra prediction] 中也涉及到,此时技术命名还叫 ALWIP 技术,最终标准才改成 MIP 技术。MIP技术在VTM5.0软件中已经更新,并且只运用于帧内的亮度预测,在VTM5.0 代码中的模式名称为Mip模式。
-
该技术的核心就是利用深度学习训练矩阵,当前的亮度预测块的相邻采样点首先进行平均操作减少采样点数目,构成一个向量,然后该向量和视频序列集训练的一个参数矩阵相乘,通过该矩阵和向量相乘得到一个部分预测值的散点阵列,最后通过双线性插值生成出最终的预测值。
-
对于 WxH 块进行 MIP 操作,需要用到左侧 H 个重建像素和上方 W 个重建 像素,如果重建像素不可用则其生成方法和帧内预测一样。通过 MIP 生成预测信号需要三步:平均、矩阵向量相乘、线性插值。如图 9 所示 8x8 块示意图。
- 8x4 块的示意图:
- 16x16 块的示意图:
- 4x4 块示意图:
- 8x4 块的示意图:
-
领域像素平均:MIP 技术需要首先从左侧和上方参考行邻域像素通过邻域平均法获取参考样点;当 W=H=4 时,左边取 2 个上方取 2 个 共 4 个参考样点,其他情况左边取 4 个,上方取 4 个共 8 个参考样点。输入的原邻域上边界 bdrytop 和左边界 bdryleft 通过邻域平均法下采样得到 bdrytopred 和 bdryleftred。然后将bdrytopred 和 bdryleftred连接成向量。对于 4x4 块的向量长度为 4,其他块的向量长度为 8;向量连接方法如下,其中 mode 指的是 MIP-mode。
-
矩阵向量相乘:通过上一步得到的向量和预先利用深度学习得到的矩阵相乘,再加上偏移量即得到预测信号;如下公式。
p r e d r e d = A . b d r y r e d + b pred_{red} = A.bdry_{red} + b predred=A.bdryred+b-
其中 A 是一个预先训练好的矩阵,行数为 Wred.Hred;如果 W=H=4,则列数为 4,否则为 8;其中 W 和 H 为原始块的宽和高;Wred 和 Hred的定义如下:
-
矩阵 A 和偏移量 b 是从训练好的集合S0、S1、S2 中获取;根据块尺寸从不同的集合中获取 A 和 b,如下。
-
S0 里含有 16 个 16x4 矩阵 Ai0,i∈ { 0 , … , 15 },和 16 个 16 维的向量 bi0,i∈ { 0 , … , 15 };用于 4x4 的块。
-
S1 里含 8 个 16x8 的 矩 阵Ai0,i∈ { 0 , … , 7 },和 8 个 16 维的向量bi0,i∈ { 0 , … , 7 },用于 4x8,8x4,8x8块。
-
S2 里 含 6 个 64 x 8 的矩阵Ai0,i∈ { 0 , … , 5 },和 6 个 64 维的向量bi0,i∈ { 0 , … , 5 },用于其他块。
-
注意:在 H.266 最终标准中矩阵向量相乘中没有了偏移量 b,且S2里含 6 个 64x7 的矩阵。
-
-
线性插值:插值是一个上采样过程,矩阵向量相乘后的预测信号 predred 是一个 Wred.Hred 维的向量,首先将向量转为 Wred.Hred 矩阵,此时该矩阵的宽高是小于 W 和 H 的,最后需要利用线性插值使其维度恢复为 WxH;先水平插值再垂直插值,如图 9 的后半部分。
-
MIP 技术涉及到的语法元素:
- predModeIntra:帧内每个 CU 都需要在码流中传输的标志位,标识是否采用 MIP 技术。
- isTransposed:标识是否使用转置。
- modeId:标识使用哪种矩阵 A。
-
MIP 技术收益:在 VTM9.0 中可以达到 0.34% 的收益。
-
在 VVenC 编码器中在 IntraSearch.cpp 文件中
estIntraPredLumaQT
函数应用 MIP 技术相关配置,并将配置变量赋值给xEstimateLumaRdModeList
函数。
-
在 VVenC 编码器中在 IntraSearch.cpp 文件中
xEstimateLumaRdModeList
函数中关于 MIP 的具体算法实现逻辑。其中initIntraMip
函数用来对参考像素进行下采样,getNumModesMip
函数用来获取当前 CU 的不同 MIP 模式数目,predIntraMip
函数用来矩阵运算、上采样并计算得到最终的预测像素。