基于学习的编码(三):ACNNLF

基于学习的编码(三):ACNNLF

本文算法来自JVET-M0566提案,介绍了一种adaptive convolution neural network loop filter(ACNNLF)网络进行环路滤波。

介绍

ACNNLF方法会为YUV每个分量分别训练一个CNN,每个CNN只包含2层,共692个参数。编码器在编码CTB时会选择对应的CNN进行处理。ACNNLFs的网络参数会在I帧的slice header中传输,每个CTB只需传输使用的ACNNLF的索引。

ACNNLF的设计思想主要是减少CNNLF的网络参数,增加CNNLFs的模型数量以适应不同视频内容。有以下特点:

  1. CNN模型小,只包含2个隐藏层。

  2. 为YUV分别在线(online)训练一组模型以适应视频内容,其中三个亮度ACNNLFs,三个色度ACNNLFs。

  3. 编码器为亮度和色度CTB选择最优的ACNNLF进行编码,并将ACNNLFs模型参数和选择的ACNNLF索引传到解码端。

  4. 解码器收到ACNNLFs参数和CTB使用的对应索引,选择对应的ACNNLF进行处理。

如下图所示,ACNNLF用在ALF阶段之后。

基于学习的编码(三):ACNNLF_第1张图片

 

网络结构

 

基于学习的编码(三):ACNNLF_第2张图片

上图是亮度ACNNLF的网络结构,其packing和unpacking操作和基于学习的编码(一):使用CNN进行环路滤波一样。

  1. 输入输出块尺寸N(默认32)可以随帧的尺寸变化。例如对尺寸大的帧(2K、4K、1080P)可以选择N=32或16,对尺寸小的帧可以选择N=16或8。

  2. 第一个卷积层滤波器尺寸为L1xL1,L1等于1或3(默认为1)。在第一层后要进行ReLU处理。

  3. 第二个卷积层滤波器尺寸为L2xL2,L2等于1或3或5(默认为3)。在第二层后不进行ReLU处理。

  4. 第一个卷积层处理后数据通道数变为M(默认16),M可以随帧的尺寸变化,对尺寸大的帧(2K、4K、1080P)可以选择M=32或16,对尺寸小的帧可以选择M=16或8。

下图是色度分量ACNNLF的网络结构,和亮度ACNNLF同理,只不过输出变为2通道。

基于学习的编码(三):ACNNLF_第3张图片

 

训练

ACNNLF使用在线训练,训练数据直接来源于要编码的视频。使用每个RAS(random access sequence)的进行训练,共使用N帧数据(I帧+之前的N-1帧)训练。

基于学习的编码(三):ACNNLF_第4张图片

 

如上图所示,每个RAS都有训练ACNNLF,训练数据为当前的I帧和上一个RAS的最后N-1帧。由于训练用到了上一个RAS的数据,所以对于RAS0不允许使用ACNNLF。

对于被选中训练的帧,其亮度和色度的原始帧和重建帧都要参与训练,这些帧被分为NxN的图像块进行训练。

基于学习的编码(三):ACNNLF_第5张图片

 

训练过程如下:

  1. 首先训练一个ACNNLF模型。

  2. 在训练集上应用ACNNLF1,将在ACNNLF1上表现好的块划分到ACNNLF1 gain set,表现不好的块划分到loss set。

  3. 使用loss set训练ACNNLF2。

  4. 在整个训练集上应用ACNNLF1和ACNNLF2,将训练集划分为ACNNLF1 gain set,ACNNLF2 gain set和loss set。

  5. 使用上面的loss set训练ACNNLF3。

  6. 持续上面的过程直到ACNNLFs模型数量已经够了或训练数据用完了。

  7. 将ACNNLFs用于整个训练集,将其划分为4个子集:ACNNLF1最高增益子集、ACNNLF2最高增益子集、ACNNLF3最高增益子集、在任何ACNNLF上都没有增益的子集。然后将每个ACNNLF在其最高增益子集上再次训练。

语法元素

ACNNLF参数在slice header上传输。在RA配置下,仅RAS的I slice传输参数。可以在slice级或CTB级决定其亮度或色度分量是否开启ACNNLF功能。

在slice header中acnnlf_luma_slice_enable_flagacnnlf_chroma_slice_enable_flag标志位表示当前slice是否使用ACNNLF。在CTB级,用2比特标志位acnnlf_luma _ctb_idcacnnlf_chroma _ctb_idc 分别表示CTB的亮度和色度是否使用ACNNLF。

实验

在实验中使用8帧训练模型,RAS的I帧和前一个RAS的后7帧。QP为{22, 27, 32, 37}。

 

基于学习的编码(三):ACNNLF_第6张图片

 

基于学习的编码(三):ACNNLF_第7张图片

在VTM3.0的RA配置下使用结果如下:

 

基于学习的编码(三):ACNNLF_第8张图片

模型的训练和调用在tensorflow中完成,编解码在VTM3.0中完成。上面的时间不报告模型训练时间但是包括了调用tensorflow接口的返回时间。

感兴趣的请关注微信公众号Video Coding

基于学习的编码(三):ACNNLF_第9张图片

 

你可能感兴趣的:(H.266/VVC,视频编码,深度学习,环路滤波,视频编码,深度学习,ACNNLF)