基于学习的编码(二):使用CNN对intra frame进行环路滤波
本文算法来自JVET-O0157
介绍
为了取代VVC环路滤波中的去方块滤波(DBF)提出来一种下采样的CNN滤波器。该CNN滤波器在降低神经网络复杂度的同时能保持编码效率。它是一个轻量级CNN网络,能够高效的控制CNN滤波强度以应对不同量化参数。只用于intra frame。
滤波过程
下图展示了针对intra frame加入CNN后的环路滤波过程,DBF被CNN替换了。对于inter frame环路滤波和VTM中一样。
网络结构
下图展示了该CNN的网络结构。其中N表示下采样步长,M表示卷积核通道数。核心思想是通过下采样减少计算量,通过控制强度使单个网络可以用于不同QP。
CNN过程:
-
(N,N,M)卷积层(N倍下采样)用于提取特征。
-
将特征传给多个residual block来加强滤波。
-
(3,3,NxN)卷积层输出NxN的特征图,DepthToSpace 函数将特征图映射为和输入图像尺寸一致。
滤波强度
网络中除以和乘以Qstep 的目的是控制滤波强度。
对不同Qstep 进行round操作会造成不同水平的失真。所以重建图像在传给CNN之前除以正则化的Qstep 来控制失真水平,CNN处理后乘以正则化的Qstep。
正则化的Qstep求解过程如下:
训练
使用DIV2K数据集(含800幅图像)生成训练数据。首先将每幅图像由RGB转为YUV。然后禁用VTM5.0的环路滤波在All Intra(AI)配置下生成重建图像。然后在Y分量随机裁剪800000块,UV分量随机裁剪800000块,训练两组参数。
实验结果
下面是N=4,M=32下的测试结果:
下面是一个主观比较,可以看到脖子处的块效应被消除了。
该方法在VTM5.0中用预训练的CNN模型取代DBF,在AI配置下Y、U、V的BD-Rate分别-1.44%,-2.51%,-3.39%。解码时间为1040%。
感兴趣的请关注微信公众号Video Coding