一种基于神经网络的视频编码框架的制作方法

文档序号:19221365发布日期:2019-11-26 02:09阅读:225来源:国知局
一种基于神经网络的视频编码框架的制作方法

本发明属于信号与信息处理领域,具体涉及一种视频编码框架。



背景技术:

20世纪80年代末以来,国际电信联盟电信标准化部门的视频编码专家组以及国际标准化组织/国际电工委员会的动态图像专家组联合颁布了一系列有关视频编码的国际标准,其中主要的标准是h.264/avc标准、h.265/hevc标准和h.266/vvc标准。

这些标准都是基于预测编码和变换编码的混合编码框架,其中框架中的每个模块(帧内预测、帧间预测、变换、量化、反变换、反量化、熵编码、环路滤波)都需要大量精细的人工设计

近年来,人工神经网络(ann)发展到了深度学习阶段。深度学习使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象,其强大的表达能力使得其在机器学习中取到了很好的效果,在视频和图像处理上的表现也优于其它方法。

现有技术中,以下三个专利将深度学习技术应用在视频编码中。

专利(1):基于深度自动编码器的视频编解码装置及方法(国别:中国;申请号:201710068270;申请人:上海寒武纪信息科技有限公司)

该专利使用深度自动编码器,构建结构对称的编码端和解码端,直接对视频块进行编码。由于人工神经网络具有非线性的特征,通过将人工神经网络的参数作为秘钥,实现了视频数据的压缩加密一体化;视频数据的编码结果包含了视频数据的特征,便于视频数据的分类与搜索;利用深度自动编码器自动提取数据特征的功能,减少人工干预,实现编码过程的自动化。

专利(2):基于深度神经网络的视频压缩方法(国别:中国;;申请号:cn201710758241;申请人:南京大学)

该专利使用神经网络替代了传统编码框架中的帧内预测和残差的压缩,其中残差压缩需要对帧内预测残差和帧间预测残差设计不同的网络模型。

专利(3):基于学习的视频编解码框架(国别:中国;申请号:cn201810064012;申请人:中国科学技术大学)

该发明公开了一种基于学习的视频编解码框架,包括:空时域重构内存,用于存储经编码与解码之后的重构视频内容;空时域预测网络,用于利用重构视频内容的空时域相关性,通过卷积神经网络以及循环神经网络对其建模,输出当前编码块的预测值。该编码框架,通过基于学习的voxelcnn(空时域预测网络)实现了空时域的预测,并用残差迭代编码的方法实现视频编码率失真优化的控制。

现有传统视频编码框架在发展的过程中,用大量的编码时间复杂度来换取更低的码率,随着对高分辨率视频的要求越来越高,传统编码越来越难以满足视频业务的迅速发展。

基于神经网络的视频编码框架虽然解决了一些传统视频编码框架的缺陷,但是,前述专利(1)仅将视频分块,对每个视频块进行独立的编解码,导致严重的空域块效应和时域块效应,且没有充分考虑到视频序列中极大的时间冗余度,压缩效率较低。专利(2)仅使用神经网络替换传统编码框架中的帧内编码和残差编码,而帧间编码依然是传统方式,未能利用到神经网络在帧间编码展现出的巨大潜能。专利(3)丢弃了传统编码框架,完全采用了基于神经网络的编解码方式,因此压缩效率较低。



技术实现要素:

为了克服现有技术的不足,本发明提供了一种基于神经网络的视频编码框架,将神经网络与传统视频编码框架有效地结合起来,既能利用到传统框架中已有的精细设计,也能发挥神经网络在数据压缩领域的作用。在本发明所述的编码流程中,可以采用神经网络方式,自适应地根据编码码率去选择编码方式,整个框架灵活且有效。

为达到上述目的,本发明采用以下技术方案:

一种基于神经网络的视频编码框架,包括时域下采样模块、帧内编解码模块、帧间编解码模块、时域上采样模块;时域下采样模块、帧内编解码模块或帧间编解码模块、时域上采样模块从输入到输出顺序连接,帧内编解码模块和帧间编解码模块为并列关系;

所述时域下采样模块将原始帧率视频序列每跳过k帧保留1帧,保留的视频帧组成低帧率视频序列;

所述时域上采样模块利用插帧神经网络,输入低帧率视频序列,输出原始帧率视频序列,输出的视频序列为解码视频序列;

所述帧内编解码模块包括块划分模块、空域下采样模块、帧内编码子模块、神经网络自编码器子模块、残差编码模块、空域上采样模块;块划分模块、空域下采样模块、帧内编码子模块或神经网络自编码器子模块、残差编码模块、空域上采样模块从输入到输出顺序连接,帧内编码子模块或神经网络自编码器子模块为并列关系;

所述帧间编解码模块包括块划分模块、空域下采样模块、预测模块、帧间编码子模块、神经网络帧间编码子模块、残差编码模块、空域上采样模块;块划分模块、空域下采样模块、预测模块、帧间编码子模块或神经网络帧间编码子模块、残差编码模块、空域上采样模块从输入到输出顺序连接,帧间编码子模块和神经网络帧间编码子模块为并列关系;

其中,块划分模块、空域下采样模块、残差编码模块和空域上采样模块四个模块是帧内编解码模块和帧间编解码模块共用的模块;

所述空域下采样模块用于对视频帧或图像块进行尺寸下采样,以视频帧或图像块作为输入,通过卷积神经网络,输出原分辨率二分之一或四分之一的重建视频帧或重建图像块;

所述空域上采样模块用于将被空域下采样模块下采样后的视频帧或图像块使用超分辨网络方法,输出原始分辨率的视频帧或图像块;

所述块划分模块用于将视频帧使用h.266/vvc中的ctu/cu划分方式划分为图像块,块划分模块的输入为一个视频帧,输出为多个图像块;

所述残差编解码模块采用熵编码技术或者自编码器技术用于实现预测残差与二进制码流间的转换;

所述帧内编码子模块采用预测编码或变换编码或熵编码技术,实现原始图像与二进制码流之间的转换;

所述神经网络自编码器子模块采用神经网络技术,实现原始图像与二进制码流之间的转换;

所述预测模块采用前向预测或后向预测或双向预测技术对输入视频帧的下一帧进行预测;

所述帧间编码子模块利用运动搜索或运动补偿术在帧间帧中寻找到与当前输入图像块均方误差最小的图像块,编码该均方误差最小的图像块的运动矢量,得到二进制码流;

所述神经网络帧间编码子模块采用神经网络技术,根据输入的帧间重建视频帧或帧间重建图像块信息,预测下一个帧间视频帧或帧间图像块。

进一步地,一种采用基于神经网络的视频编码框架的视频编码方法,包括以下步骤:

步骤1:在原始视频序列中,将第一个视频帧指定为帧内帧,之后每间隔n个视频帧指定一个帧内帧,帧内帧之外的视频帧作为帧间帧;

步骤2:对原始视频序列,如果其帧率大于60fps,则使用时域下采样模块将原始视频序列每跳过k帧选取1帧,得到低帧率视频序列;否则当帧率小于或等于60fps时帧率保持不变;

步骤3:对每一个视频帧,使用块划分模块将该视频帧划分为图像块;

步骤4:对每一个视频帧或图像块,计算使用空域下采样模块将视频帧或图像块压缩到原分辨率的二分之一或四分之一之后的率失真性能值a,并和未使用空域下采样模块压缩的视频帧或图像块的率失真性能值b进行比较;如果a>b,则使用空域下采样模块将视频帧或图像块压缩到原分辨率的二分之一或四分之一;否则如果a≤b,则保持视频帧或图像块不变;

步骤5:对于帧内帧,使用帧内编解码模块将帧内帧转换为二进制码流,再将二进制码流解码得到重建帧;对于帧间帧,使用帧间编解码模块将帧间帧转换为二进制码流,再将二进制码流解码得到重建帧;对于预测残差,使用残差编码模块将预测残差转换成二进制码流,再将二进制码流解码得到重建残差;

步骤6:对于由低帧率视频序列产生的重建帧,采用时域上采样模块,输入低帧率视频序列重建帧,利用插帧神经网络,输出原始帧率视频序列,得到解码视频;

步骤7:对于由原始帧率视频序列产生的重建帧,采用空域上采样模块,输入重建帧,使用超分辨网络,输出原始分辨率的视频帧,得到解码视频。

本发明的有益效果是由于采用了本发明的基于神经网络的视频编码框架,能减少大量人工设计编码器的繁琐,将大部分工作交给神经网络来完成,并当硬件环境满足条件时,达到相当的性能。本发明中的编码框架组合较为灵活,每个编码组件都可以基于传统方式或神经网络方式。在基于整帧的编码中,神经网络预测器的输入输出都以帧为单位,能够避免传统编码中的块效应。

附图说明

图1是本发明的视频编码框架结构图。

图2是帧内编解码模块结构图。

图3是帧间编解码模块结构图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

如图1所示,本发明提供了一种基于神经网络的视频编码框架,将神经网络与传统视频编码框架有效地结合起来,既能利用到传统框架中已有的精细设计,也能发挥神经网络在数据压缩领域的作用。在本发明所述的编码流程中,每个步骤都可以自由的采用传统方式或神经网络方式,或者自适应地根据编码码率去选择其中一种编码方式,整个框架灵活且有效。

为达到上述目的,本发明采用以下技术方案:

一种基于神经网络的视频编码框架,包括时域下采样模块、帧内编解码模块、帧间编解码模块、时域上采样模块;时域下采样模块、帧内编解码模块或帧间编解码模块、时域上采样模块从输入到输出顺序连接,帧内编解码模块和帧间编解码模块为并列关系;

所述时域下采样模块将原始帧率视频序列每跳过k帧保留1帧,保留的视频帧组成低帧率视频序列;

所述时域上采样模块利用插帧神经网络,输入低帧率视频序列,输出原始帧率视频序列,输出的视频序列为解码视频序列;

所述帧内编解码模块包括块划分模块、空域下采样模块、帧内编码子模块、神经网络自编码器子模块、残差编码模块、空域上采样模块;块划分模块、空域下采样模块、帧内编码子模块或神经网络自编码器子模块、残差编码模块、空域上采样模块从输入到输出顺序连接,帧内编码子模块或神经网络自编码器子模块为并列关系;

所述帧间编解码模块包括块划分模块、空域下采样模块、预测模块、帧间编码子模块、神经网络帧间编码子模块、残差编码模块、空域上采样模块;块划分模块、空域下采样模块、预测模块、帧间编码子模块或神经网络帧间编码子模块、残差编码模块、空域上采样模块从输入到输出顺序连接,帧间编码子模块和神经网络帧间编码子模块为并列关系;

其中,块划分模块、空域下采样模块、残差编码模块和空域上采样模块四个模块是帧内编解码模块和帧间编解码模块共用的模块;

所述空域下采样模块用于对视频帧或图像块进行尺寸下采样,以视频帧或图像块作为输入,通过卷积神经网络,输出原分辨率二分之一或四分之一的重建视频帧或重建图像块;

所述空域上采样模块用于将被空域下采样模块下采样后的视频帧或图像块使用超分辨网络方法,输出原始分辨率的视频帧或图像块;

所述块划分模块用于将视频帧使用h.266/vvc中的ctu/cu划分方式划分为图像块,块划分模块的输入为一个视频帧,输出为多个图像块;

所述残差编解码模块采用熵编码技术或者自编码器技术用于实现预测残差与二进制码流间的转换;

所述帧内编码子模块采用预测编码或变换编码或熵编码技术,实现原始图像与二进制码流之间的转换;

所述神经网络自编码器子模块采用神经网络技术,实现原始图像与二进制码流之间的转换;

所述预测模块采用前向预测或后向预测或双向预测技术对输入视频帧的下一帧进行预测;

所述帧间编码子模块利用运动搜索或运动补偿术在帧间帧中寻找到与当前输入图像块均方误差最小的图像块,编码该均方误差最小的图像块的运动矢量,得到二进制码流;

所述神经网络帧间编码子模块采用神经网络技术,根据输入的帧间重建视频帧或帧间重建图像块信息,预测下一个帧间视频帧或帧间图像块。

进一步地,一种采用基于神经网络的视频编码框架的视频编码方法,包括以下步骤:

步骤1:在原始视频序列中,将第一个视频帧指定为帧内帧,之后每间隔n个视频帧指定一个帧内帧,帧内帧之外的视频帧作为帧间帧;

步骤2:对原始视频序列,如果其帧率大于60fps,则使用时域下采样模块将原始视频序列每跳过k帧选取1帧,得到低帧率视频序列;否则当帧率小于或等于60fps时帧率保持不变;

步骤3:对每一个视频帧,使用块划分模块将该视频帧划分为图像块;

步骤4:对每一个视频帧或图像块,计算使用空域下采样模块将视频帧或图像块压缩到原分辨率的二分之一或四分之一之后的率失真性能值a,并和未使用空域下采样模块压缩的视频帧或图像块的率失真性能值b进行比较;如果a>b,则使用空域下采样模块将视频帧或图像块压缩到原分辨率的二分之一或四分之一;否则如果a≤b,则保持视频帧或图像块不变;

步骤5:对于帧内帧,使用帧内编解码模块将帧内帧转换为二进制码流,再将二进制码流解码得到重建帧;对于帧间帧,使用帧间编解码模块将帧间帧转换为二进制码流,再将二进制码流解码得到重建帧;对于预测残差,使用残差编码模块将预测残差转换成二进制码流,再将二进制码流解码得到重建残差;

步骤6:对于由低帧率视频序列产生的重建帧,采用时域上采样模块,输入低帧率视频序列重建帧,利用插帧神经网络,输出原始帧率视频序列,得到解码视频;

步骤7:对于由原始帧率视频序列产生的重建帧,采用空域上采样模块,输入重建帧,使用超分辨网络,输出原始分辨率的视频帧,得到解码视频。

在对一段视频序列进行编码时,视频的所有帧可以分为两种类型:帧内帧(i帧)和帧间帧(b帧),每两个i帧之间存在多个b帧。

i帧:编码时不能参考其他视频帧,它只能利用该帧在空间位置上相邻像素的信息。它由关键帧检测来得到,或每隔固定数量的帧设置一个i帧。i帧使用帧内编解码模块来完成编解码。

b帧:可以在编码时参考其它视频帧的重建帧,用于消除时间冗余度。b帧使用帧间编解码模块来完成编解码。

对于每个i帧,其编码的决策流程分为以下三步:

①决定其编码级别:其编码级别可以是帧级或块级;②决定其编码的空间分辨率模式:对于每种编码级别,其空间分辨率上可以采用全分辨率编码模式或下采样编码模式;③决定具体编码实现方式:对于每种空间分辨率模式,可以采用帧内编码方式或自编码器方式来实现,如图2所示。

编码级别中的帧级是指以每个完整的一帧为单位进行编码,不做图像块的划分;块级是指使用帧内块划分子模块,将一帧视频帧划分为多个图像块,然后分别对每个图像块进行编码。所述块划分子模块的输入为整个i帧,输出为多个大小不一的图像块区域。

全分辨率模式是指不对帧或块的空间分辨率做操作,直接对原始图像进行编码;帧内空域下采样子模块以原始的帧或块作为输入,使用传统滤波器或卷积神经网络,输出更小分辨率(1/2、1/4等)的图像;空域上采样子模块以重建帧或重建块作为输入,使用传统滤波器或超分辨网络,输出原始分辨率的图像。

帧内编解码子模块包含预测编码、变换编码、熵编码等技术,它的编码器端以原始的帧或块作为输入,输出二进制码流,解码器端以二进制码流为输入,输出重建的帧或块。自编解码器子模块的编码端以原始的帧或块作为输入,输出二进制码流,解码端以二进制码流为输入,输出重建的帧或块。

对于一组b帧,其编码的决策流程分为以下五步:

①决定时间分辨率:其时间分辨率上可以是全帧率模式或低帧率模式;②对于这组b帧中的每一个b帧,决定其编码级别:其编码级别可以是帧级或块级;③对于每个帧或块,决定其空间分辨率:其空间分辨率可以是全分辨率模式或下采样模式;④决定参考方向:其参考方向可以是前向、后向或双向;⑤决定参考方向的实现形式:对于每种参考方向,其实现形式可以是传统的帧间编码方式或基于神经网络的方式,如图3所示。

全帧率模式是指不对帧率做操作,直接进行编码;低帧率模式是指使用时域下采样子模块对原始序列每跳过k帧选取1帧,生成低帧率视频序列,对该低帧率视频序列进行编码,然后使用时域上采样子模块利用插帧神经网络,输入低帧率视频序列,输出原始帧率视频序列,得到解码视频序列。

参考方向中,前向是指当前帧/块通过“历史帧”(即发生在当前帧之前的帧)来预测得到;后向是指当前帧/块通过“未来帧”(即发生在当前帧之后的帧)来预测得到;双向是指将参考“历史帧”与参考“未来帧”的预测加权得到。

参考方向的实现形式中,帧间编码子模块利用运动搜索、运动补偿技术寻找到与当前块最相似的块,编码其运动矢量,得到二进制码流。神经网络帧间编码子模块是特定的时域预测网络,即根据已有的重建帧/块的信息,直接预测出当前的帧/块。

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