基于学习的编码(一):使用CNN进行环路滤波

155 篇文章 138 订阅
66 篇文章 23 订阅

基于学习的编码(一):使用CNN进行环路滤波

本文介绍一种在VVC环路滤波中使用CNN的技术,该算法来自于JVET-O0056

CNNLF

该卷积网络模型称为CNNLF,用于VVC的环路滤波的ALF阶段之后,如下图所示。

 

CNNLF的输入是ALF的输出,我们称之为重建像素。CNNLF的输出我们称之为修复像素。

为了减少传输CNN参数的压力和降低CNNLF解码时间,CNNLF网络只包括三层,亮度分量和色度分量使用同一个网络。如下图所示。

 

每层网络的参数MxNxPxQ的含义如下:

  • M:该通道滤波器的水平宽度

  • N:该通道滤波器的垂直高度

  • P:输入的通道数

  • Q:该层网络的滤波器数

每层的操作包括卷积、Batch Normalization、添加偏置和ReLU。其中最后一层例外,它不含ReLU。

CNNLF操作

每个CTU独立进行CNNLF操作。在Packing阶段产生CNN的输入,它的6个通道由4个重建亮度块和2个重建色度块生成。4个亮度块是通过对CTB的亮度分量进行4次2x2的下采样生成,得到4个1/4尺寸的子块,每个子块和色度块尺寸相同。这4个亮度子块和2个色度块构成了一个6通道的CNN输入,如下图所示。

 

经过三层CNN之后,数据尺寸仍为64x64x6。在Unpacking阶段,前4个通道组成亮度CTB,后两个通道分别形成两个色度CTB。最终CNNLF的输出为Unpacking的输出加上ALF的输出得到。

CNN参数传输

CNN的参数在每个RAS(大约1秒)的I帧内传输。如下图所示。

 

CNN的参数仅使用RAS内时域第0层和第1层的图像训练。为了提高效率,当编码器决定不对I帧使用CNNLF时,则不需要传输CNN参数,RAS内剩余的图像设置为CNNLF-off。

对于每个颜色分量,可以在图像级、CTB级和32x32块级决定是否使用CNNLF。对于一幅图像,每个颜色通道可以传输一个语法元素{PictureAllOff, PictureAllOn, CTBOnOff}表示是否开启CNNLF。PictureAllOff表示对当前图像的当前通道不使用CNNLF。PictureAllOn表示对当前图像的当前通道的所有像素都使用CNNLF。CTBOnOff表示是否使用CNNLF由CTB自己的语法元素决定。在CTB级也有三个语法元素{CTBAllOff, CTBAllOn, BlockOnOff},CTBAllOff表示对当前CTB的当前通道不使用CNNLF。CTBAllOn表示对当前CTB的当前通道的所有像素都使用CNNLF。BlockOnOff表示是否使用CNNLF由每个32x32块自己的语法元素决定。为了减少解码时间,在图像级如果对亮度分量使用PictureAllOff则Cr和Cb都使用PictureAllOff。在CTB级,如果对亮度CTB使用CTBAllOff,则Cr和Cb都使用CTBAllOff

训练阶段

为了减少复杂度,仅使用时域第0层和第1层的图像训练CNN参数。也就意味着,只有这些图像需要编码两次。第一次编码用于生产CNN的训练数据,第二次编码生成最终码流。训练信息如下表:

 

推理阶段

编码器和解码器不需要依赖其他框架,下图是推理阶段的信息。

 

实验结果

下图是在VTM5.0在使用CNNLF的实验结果。

 

在VTM5.0的RA配置下1.20% (Y), -14.17% (Cb)和14.11% (Cr) BD-rates, 117% 解码时间增加 。

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

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值