祗疼妳一个 发表于 2025-1-26 00:33:43

基于神经网络的视频编码NNVC(1):帧内猜测

在H.266/VVC发布后,基于传统编码框架提升压缩率越来越难,随着深度学习的发展,研究人员开始尝试将神经网络引入编码器。为此,JVET工作组在2020年成立AHG11小组来专门举行基于神经网络的视频编码的研究。
https://i-blog.csdnimg.cn/img_convert/0e9b83f64a1f1944305da50312f8a0bc.png
为了方便研究,工作组基于VTM-11.0开发了参考软件NNVC,包罗了编码器、解码器、练习、推理等相关代码。现在NNVC中集成了的神经网络相关的模块主要是loop filter、帧内猜测、超分辨率等。现在NNVC已经发展到4.0版本,相比于VTM-11.0在RA、low-delay和all-intra设置下{Y,Cb,Cr}的BD-rate分别达到{-11.94%,-21.86%,-22.59%},{-9.18%,-19.76%,-20.92%}和{-10.63%,-21.56%,-23.02%}。本文主要介绍其中的NN-Based Intra Prediction模块。
https://i-blog.csdnimg.cn/img_convert/9db5b53d050ef65b5e247e028193d8d2.png
Framework

NN-Based Intra Prediction共包罗7个模型,分别用于不同尺寸的块{4x4,4x8,4x16,4x32,8x8,8x16,16x16}。
https://i-blog.csdnimg.cn/img_convert/69b271394c27da966be311aa2f1d5086.png
对于wxh的块Y利用NN-Based Intra Prediction模型猜测的过程如Fig.1。起首获取Y的上下文X,X通过前处置处罚过程得到https://latex.csdn.net/eq?%5Ctilde%7BX%7D,然后作为NN模型https://latex.csdn.net/eq?f_%7Bh%2Cw%7D%28%20.%3B%5Ctheta%20_%7Bh%2Cw%7D%29的输入,模型输出https://latex.csdn.net/eq?%5Ctilde%7BY%7D,经过后处置处罚得到wxh的猜测块https://latex.csdn.net/eq?%5Chat%7BY%7D。其中Y的参考像素X由Y的上方https://latex.csdn.net/eq?n_%7Ba%7D%20%5Ctimes%20%28%20n_%7Bl%7D%20+2w+e_%7Bw%7D%29和左侧https://latex.csdn.net/eq?%28%202h+e_%7Bh%7D%29%20%5Ctimes%20n_%7Bl%7D的重建像素构成。NN模型的输出还包括grpIdx1、grpIdx2和repIdx,其中grpIdx和LFNST的参数选择有关。repIdx对应传统的67个帧内猜测模式和MPM构建相关。
NN-Based Intra Prediction中的模型都是全连接神经网络,不包罗卷积层。
If min⁡(h,w)≤8  && hw<256:
    n_a=n_l=min⁡(h,w)
otherwise:
    if h>8:
                n_a=h⁄2
    otherwise:
        n_a=h
    if w>8:
        n_l=w⁄2
    otherwise:
        n_l=w

If h≤8, e_h=4. Otherwise, e_h=0.
If w≤8, e_w=4. Otherwise, e_w=0.

前处置处罚和后处置处罚

在上面的流程中,上下文X经过前处置处罚后再输入NN模型,前处置处罚过程可分为4步:

[*] 当前块Y的上下文X可分为2个部分,可参考部分https://latex.csdn.net/eq?%5Coverline%7BX%7D和不可参考部分https://latex.csdn.net/eq?X_%7Bu%7D,如Fig.2,可参考部分减去其对应的均值u。
[*] 上下文X内的像素乘以https://latex.csdn.net/eq?%5Crho%20%3D1/%5Cleft%28%202%5E%7Bb-8%7D%5Cright%29,b是bitdepth,在VVC中是10。
[*] 所有不可参考像素https://latex.csdn.net/eq?X_%7Bu%7D置零。
[*] 上面得到的结果展平为一维向量,长度为https://latex.csdn.net/eq?n_%7Ba%7D%28%20n_%7Bl%7D%20&plus;2w&plus;e_%7Bw%7D%29%20&plus;%28%202h&plus;e_%7Bh%7D%29%20n_%7Bl%7D
https://i-blog.csdnimg.cn/img_convert/aaa04465d3b1f1cde6d21d9a74b89577.png
对于NN模型的输出的后处置处罚过程和前处置处罚过程相反,将一维向量reshape为wxh尺寸,像素除以p,可参考部分像素加上均值u,然后clip到正常像素范围,整个过程可以形貌如下:
https://latex.csdn.net/eq?%5Chat%7BY%7D%20%3Dmin%5Cleft%28%20max%5Cleft%28%5Cfrac%7Breshape%5Cleft%28%5Ctilde%7BY%7D%5Cright%29%7D%7B%5Crho%20%7D%20&plus;u%2C0%5Cright%29%20%2C2%5E%7Bb%7D%20-1%5Cright%29
注意上述前处置处罚和后处置处罚过程是浮点精度。对于signed-integers的NN模型,https://latex.csdn.net/eq?%5Crho%20%3D2%5E%7BQ_%7Bin%7D%20-b-8%7D,对于int16,Qin=7,对于int32,Qin=23。
MPM列表构建

利用MPM对intra模式举行猜测可以减少编码intra模式的码率,在VVC中MPM列表包罗6个候选项,来自当前块上方和左侧intra块的模式。在开启NN-Based Intra Prediction后,若当前块接纳传统intra模式,而其相邻块接纳NN-based模式,那如何构建当前块的MPM列表?这里就须要Fig.1中NN模型的输出repIdx,若相邻块接纳NN-based模式则将其输出的repIdx到场当前块的MPM列表。
上下文变更

前面提到NN-Based Intra Prediction共包罗7个模型,分别用于不同尺寸的块{4x4,4x8,4x16,4x32,8x8,8x16,16x16}。但是有的编码块可能不属于这7个尺寸,为了解决整个问题可以对其上下文X举行变更,变更后满足这7个尺寸,可以在垂直方向下采样δ和/或在水平方向下采样γ,还可以举行转置,NN模型处置处罚完后对后处置处罚的结果再举行上采样和转置得到终极猜测结果。表1中是各个尺寸块举行变更的详细参数,例如对于32x8的块在垂直方向举行2倍下采样然后转置得到8x16的块,利用8x16的模型对它处置处罚。对于不在表1中的尺寸的块(h,w)不答应利用NN模式。
https://i-blog.csdnimg.cn/img_convert/d6ef7cdb60306a50c878872da11599cd.png
NN-Based Intra Prediction模式的传输

亮度:对于不在表1中的尺寸不答应利用NN模式,对于表1中的尺寸的块设置标志位nnFlagY,nnFlagY=1表示利用NN模式,nnFlagY=0表示利用传统的intra模式。如Fig.3所示。
色度:在VVC中色度intra模式编码中,若色度模式和亮度模式相同则接纳DM模式否则须要编码色度模式。如果色度对应的亮度块利用NN模式且色度块满足表1的尺寸则DM模式表示NN模式否则DM模式表示PLANAR模式。如果亮度块不是NN模式且色度块满足表1尺寸,则须要编码标志位nnFlagC,nnFlagC=1表示利用NN模式,nnFlagC=0表示不利用NN模式。
注意如果利用NN模式但是当前块的上下文超出图像界限,如https://latex.csdn.net/eq?x%3C%20n_%7Bl%7D%20%7C%7Cy%3C%20n_%7Ba%7D,则当前块利用PLANAR模式。
https://i-blog.csdnimg.cn/img_convert/1c109f881daef1336393255ffdf1f9dc.png
练习

模型的练习须要举行4轮迭代练习:

[*] cycle0,利用VTM-11.0作为anchor生成练习须要的块Y和对应的上下文X组成数据对(Y,X)。将7个模型参数随机初始化然后在这些数据上练习。
[*] cycle1,VTM-11.0_nnvc利用cycle0的参数再次生成练习数据,7个模式利用cycle0的结果初始化参数然后再练习。
[*] cycle2,VTM-11.0_nnvc利用cycle1的参数再次生成练习数据,7个模式利用cycle1的结果初始化参数然后再练习。然后利用相同的练习数据,规复这7个神经网络的练习,这一次对它们的权重引入了希奇性约束
[*] cycle3,VTM-11.0_nnvc利用cycle2的参数再次生成练习数据,7个模式利用cycle2的结果初始化参数,然后在这7个神经网络中分别对计算grpIdx1和grpIdx2的部分举行练习
https://i-blog.csdnimg.cn/img_convert/648f3fc96cda71e26484f80d4ca9b233.png
NNVC的代码中包罗了这些练习代码。
推理

推理接纳SADL框架,SADL是工作组开发的框架用c++写成,它没有额外的依赖,可以直接集成进VTM中调用模型举行推理。
https://i-blog.csdnimg.cn/img_convert/e36ec37cc1959e43844756e65dbacd57.png
SADL既可以举行浮点推理也可以举行定点推理,下面是NNVC中的练习好的模型,可以看到每个尺寸既有float版本也有int16版本。
https://i-blog.csdnimg.cn/img_convert/9899fe1eb4da94388bbef1eb24e6e9e8.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 基于神经网络的视频编码NNVC(1):帧内猜测