一种针对B帧和P帧的低复杂度神经网络滤波算法的制作方法

文档序号:20511225发布日期:2020-04-24 18:33阅读:530来源:国知局
一种针对B帧和P帧的低复杂度神经网络滤波算法的制作方法

本发明属于视频编码技术领域,具体涉及一种针对b帧和p帧的低复杂度神经网络滤波算法。



背景技术:

在视频编码领域,使用基于卷积神经网络的滤波技术以及被广泛地应用开来,神经网络滤波比传统的dbsaoalf取得了更加优异的滤波效果,但是其复杂度较高导致了其在实际应用中受限,而且尤其是在b帧和p帧中,重复使用神经网络滤波器会导致过模糊的问题,即对于一块区域反复进行平滑化,进行滤波会导致当前块的细节和高频信息丢失。

在过去的几年中,很多研究者提出了各种各样的解决方案,其主要是基于ctu级别的滤波思想,视频编码中的b帧和p帧是基于块来进行预测变换的,所以有些块会具有较大残差或者运动矢量,而有些则几乎和参考的已被滤波的帧一样。所以ctu级别的滤波通过对每一个ctu进行滤波判断,可以使得几乎每一个块都可以选择到最佳的滤波结果。当然额外的添加一个bit来表示每一个ctu是否选择使用是比较消耗码流的,因此有学者提出添加一个额外的分类器来帮助当前cu进行判断和决策是否使用神经网络滤波的方法。也有学者使用了反复训练神经网络的方法来减少这种过平滑,使得最终达到了一个全局最优的滤波效果。

事实上ctu滤波的缺陷也很明显,对于卷积神经网络而言,使用ctu滤波需要额外的补零或者填补重建像素,如果填补0的话,因为0带来的误差,会导致滤波性能明显下降。如果使用填补重建像素,则会显著提升神经网络的计算复杂度。因此我们提出了基于帧级的滤波。



技术实现要素:

本发明的目的是在于提出一种针对b帧和p帧的低复杂度神经网络滤波算法。

本发明提出的针对b帧和p帧的低复杂度神经网络滤波算法,区别于针对ctu级别进行的滤波,采用的是对整帧进行滤波,其具有更低的复杂度和更好的滤波效果,包括将视频编码器的输出重建像素和神经网络滤波的结果进行融合,实现最佳滤波,解决了反复使用神经网络滤波器带来的过平滑问题。

本发明提出的针对b帧和p帧的低复杂度神经网络滤波算法,具体步骤如下:

(1)在编码端,关闭掉hm的配置文件中db和sao的选项,对目标视频进行编码,得到重建像素x;在一帧编码结束之后,传统编码器使用dbsao等滤波器对整帧的重建像素r进行滤波,本发明则在这一步中关闭了db和sao,不使用传统滤波器对重建像素r进行滤波操作;

(2)对于未处理的重建像素r,使用神经网络滤波器对其进行滤波,得到滤波像素y。其中,神经网络滤波器的结参考文献【chaoliu,hemingsun,junanchen,zhengxuecheng,masarutakeuchi,jirokatto,xiaoyangzeng,andyibofan,“duallearningbasedvideocodingwithinceptiondenseblocks,”arxivpreprintarxiv:1911.09857,2019】;

(3)区别于在i帧中,可以直接使用y来替代掉r。因为直接使用y对b/p帧进行滤波会导致过模糊的问题,本发明使用滤波像素y和r的组合替代掉原始的重建像素r。从而实现对b/p帧的滤波;

的计算式为式(1),其依赖于一个新的语法元素λ。而λ决定了滤波器滤波的强弱,比如当λi为0时,表示完全不滤波,而当λi为1时,表示完全使用神经网络滤波器进行滤波;

(4)在编码器中遍历不同的超参λi,其值为计算式(2),参见图2所示,λi可以理解是将1等分为2n-1个区间,所以i每增加1,λi就增加从而实现了这个区间滤波强度就均匀增加的效果;

(5)不同的λi对应的不同的值对每一个都比较其和原始像素之间的均方误差值msei;

(6)找到最小msei,并记录其对应的λi,将其对应的i的二进制形式编入码流中;并将其滤波结果送入到帧缓存中去;

(7)对于解码器而言,其不需要遍历不同i下的λi,而是直接依据码流中的i来解码出滤波强度,从而实现最佳的滤波效果。

具体地,在解码端,可以在码流中通过对应的熵解码器解得i,根据码流中的i计算得到λi,然后将神经网络输出的结果y和原始重建像素r对应相加得到最终可以计算出所希望的滤波结果。一样地将其送入到帧缓存中,从而可以供后面待编码的帧进行参考,实现编解码端的完全匹配。

本发明中,设计了一个新的语法元素,称为帧级的语法元素,即对于每一帧的每一个分量而言都存在的语法元素,其由n比特构成,用于表征当前帧中神经网络输出的结果和视频编码器重建像素的融合程度。该语法元素的值越大,表示更多的选择使用神经网络滤波的结果作为最终的输出结果;该语法元素的值越小,则视频编码器更倾向于使用其自身原始的重建像素作为最终输出结果。本发明通过该语法元素实现一个自适应滤波强度的效果,从而有效解决了直接使用滤波器导致的过模糊过平滑问题。相较于之前方法设计的ctu级别的语法元素,直接使用帧级的滤波不会带来额外的人为边界,是一种性能优异且复杂度很低的算法。

附图说明

图1为本发明算法流程图示。

图2为i和λi的关系图示。

具体实施方式

下面以在hevc视频编码器为例,来对本发明做进一步描述。

首先关闭掉hm的配置文件中db和sao的选项,对目标视频进行编码,在每一帧编码结束之后放入帧缓存给下一帧来参考之前,我们可以获得重建像素x,使用神经网络滤波器对x进行滤波,得到滤波后的图片y。

设置一个参数值为λi,其大小依赖于i的值,如图2所示,按照式(1)计算得到不同i对应的λi。对不同的λi都计算式(2),得到多个中间结果其表示了暂存的滤波效果。然后比较暂存的滤波效果和原始像素之间的均方误差如式(3)所示,找到其中最小的均方误差msei对应的i和i的范围是从0到2n-1,所以恰好可以使用n位2进制来表示,从而作为一个新的语法元素编入码流中去,这里的熵编码模型可以采用旁路编码模式,mps的概率设置为0.5。而的值则会作为输出的滤波结果送入到帧缓存中去,用于给后续的帧做为参考帧。

事实上这个过程是一个率失真优化rdo过程,即找到最小的j的过程,其中j的计算方法如下所示:

j=d+kr(4)

其中,d表示失真,r表示码率,k是一个超参值,用于权衡码率和失真之间的关系;这里的环路滤波问题并不会影响到r,或者说不同的帧都使用了相同的额外bit数来表示码率,所以对这个问题的优化,只需要考虑最小的d即可实现rdo过程。于是,这里可以找到其中最小的均方误差msei对应的i和作为所希望保留的值。

对于这个帧级的滤波语法元素,其位置可以添加在原先db滤波语法元素的后面,因为db和本发明提出的算法都采用了相同的帧级滤波的概念。在读取db的bit之后,紧接着可以读取帧级神经网络滤波语法元素i,计算出λi来控制最终的滤波强度。

在解码端,可以在码流中通过对应的熵解码器解得i,根据码流中的i计算得到λi,然后将神经网络输出的结果y和原始重建像素r对应相加得到最终可以计算出所希望的滤波结果。一样地将其送入到帧缓存中,从而可以供后面待编码的帧进行参考,实现编解码端的完全匹配。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1