视频编码的方法和装置

文档序号:172865 发布日期:2021-10-29 浏览:39次 >En<

阅读说明:本技术 视频编码的方法和装置 (Method and apparatus for video encoding ) 是由 刘家瑛 王晶 胡煜章 于 2020-04-29 设计创作,主要内容包括:本申请涉及人工智能领域中的视频编码技术,提供一种视频编码的方法和装置,能够生成更准确的预测帧,进而提高视频编码效率。该视频编码的方法包括:获取视频序列中待编码的第一视频帧之前的固定数量的第二视频帧的重建帧;根据所述第二视频帧的重建帧和所述视频序列的全局长期记忆,生成所述第一视频帧的合成参考帧,其中,所述全局长期记忆是根据所述视频序列中的所述第一视频帧之前的多个视频帧中的每个视频帧的重建帧和所述每个视频帧的合成参考帧确定的;根据所述第一视频帧的合成参考帧,对所述第一视频帧进行编码。由于该合成参考帧具有描述视频序列之间复杂的运动的能力,因此本申请实施例能够生成更准确的预测帧,提高视频编码效率。(The application relates to a video coding technology in the field of artificial intelligence, and provides a method and a device for video coding, which can generate more accurate prediction frames and further improve the video coding efficiency. The video coding method comprises the following steps: acquiring a reconstruction frame of a fixed number of second video frames before a first video frame to be coded in a video sequence; generating a composite reference frame of the first video frame from a reconstructed frame of the second video frame and a global long-term memory of the video sequence, wherein the global long-term memory is determined from a reconstructed frame of each video frame and a composite reference frame of each video frame in a plurality of video frames preceding the first video frame in the video sequence; encoding the first video frame according to the synthesized reference frame of the first video frame. Because the synthesized reference frame has the capability of describing complex motion between video sequences, the embodiment of the application can generate more accurate prediction frames and improve the video coding efficiency.)

视频编码的方法和装置

技术领域

本申请涉及人工智能领域中的视频编码技术,并且更具体的,涉及一种视频编码的方法和装置。

背景技术

随着用户对于高质量的视频的需求不断增加,不断有诸如高性能视频压缩编码(high efficiency video coding,HEVC)等新一代视频编码标准被提出。视频是由连续的视频帧组成的,而相邻视频帧之间具有很强的相关性。主流视频编码标准中的帧间预测正是利用该时域相关性实现数据压缩。通过将已编码完成的重建帧放入参考帧列表,作为下一帧编码的参考,利用块级别的运动估计来消除相邻帧之间的时域冗余。但是,传统的参考模式也存在着缺陷。例如,受限于块级别的线性运动搜索机制,传统的帧间预测难以刻画旋转运动等不规则的运动模式,从而阻碍了视频压缩效率的进一步提升。因此,如何改进帧间预测机制,使得其能够更好地处理帧序列之间的复杂运动,对于编码器的进一步发展具有重要意义。

近年来,深度学习技术发展迅速,并在计算机视觉领域展现出了很好的性能,因此也有工作尝试利用深度学习技术来提升帧间预测的效果。在视频编码器中,有一种低延迟(low delay)的编码配置。在这种配置下,帧的编码顺序和每一帧在视频序列中的编号是一致的,即视频帧的编码是从前往后顺序进行的。这种编码配置能够被应用于直播等使用场景。也因为这种编码结构,待编码的帧序列之间存在很强的时域连续性。因此,有方法借助深度学习技术,通过将已编码的若干帧作为神经网络的输入,从而输出下一帧的预测帧,并将该预测结果作为额外的参考帧用于下一帧的编码过程,从而提高视频编码效率。

但是,该方法在生成参考帧的过程中,仅仅将固定数量的帧输入至神经网络来进行预测帧的生成,其余已编码的帧所包含的信息并未得到利用。因此,如何进一步提高视频编码效率是亟待解决的问题。

发明内容

本申请提供一种视频编码的方法和装置,能够生成更准确的预测帧,进而提高视频编码效率。

第一方面,提供了一种视频编码的方法,该方法包括:

获取视频序列中待编码的第一视频帧之前的固定数量的第二视频帧的重建帧;

根据所述第二视频帧的重建帧和所述视频序列的全局长期记忆,生成所述第一视频帧的合成参考帧,其中,所述全局长期记忆是根据所述视频序列中的所述第一视频帧之前的多个视频帧中的每个视频帧的重建帧和所述每个视频帧的合成参考帧确定的;

根据所述第一视频帧的合成参考帧,对所述第一视频帧进行编码。

因此,本申请实施例通过根据视频序列中的待编码的第一视频帧之前固定数量的第二视频帧的重建帧,以及视频序列的全局长期记忆,生成该第一视频帧的合成参考帧,然后根据该合成参考帧对该第一视频帧进行编码。由于该合成参考帧具有描述视频序列之间复杂的运动的能力,因此本申请实施例能够生成更准确的预测帧,提高视频编码效率。

其中,第一视频帧之前固定数量的第二视频帧,例如可以是第一视频帧之前的前两个视频帧,或者是第一视频帧之前的前三个视频帧,或者是第一视频帧之前的前一个视频帧,本申请实施例对此不作限定。这里,第一视频帧之前的固定数量的第二视频帧的重建帧,包含了对第一视频帧进行编码之前的短期时域信息。

视频序列的全局长期记忆,可以是根据视频序列中的已编码的多个视频帧确定的,例如根据该多个视频帧中的每个视频帧的重建帧和该每个视频的合成参考帧确定的。示例性的,该多个视频帧,可以是该视频序列中的已编码的所有视频帧或部分视频帧,本申请实施例对此不作限定。

由于固定数量的第二视频帧的重建帧包含相邻视频帧之间很强的时域相关性,以及全局长期记忆包含视频序列的长期时域信息,因此根据该第一视频帧之前固定数量的第二视频帧的重建帧,以及视频序列的全局长期记忆来生成合成参考帧,作为该第一视频帧编码时的参考帧,能够有助于使得生成的合成参考帧具有描述视频序列之间复杂的运动(例如非线性运动、旋转运动)的能力。

需要说明的是,本申请实施例的视频编码的方法可以应用于low delay编码配置。在low delay编码配置下,视频帧的编码顺序与其帧号的顺序是相同的,即顺序编码。例如,对于第t帧(t>2)视频帧进行编码之前,第t-1帧和第t-2帧视频帧都已经编码完毕了。因此,在对该第t帧视频帧进行编码之前,首先可以获取第t-1帧以及第t-2帧视频帧的重建帧。这样,本申请实施例能够实现全局长期记忆和编码过程的同步推进。

结合第一方面,在第一方面的某些实现方式中,还包括:

获取所述第一视频帧的重建帧;

根据所述第一视频帧的重建帧和所述第一视频帧的合成参考帧的差值,更新所述全局长期记忆。这里,该差值可以认为是对第一帧视频帧进行编码过程中产生的误差。

因此,本申请实施例通过根据视频帧的重建帧和该视频帧的合成参考帧的差值,对全局长期记忆进行实时更新,能够实现迭代式地进行视频帧序列的编码,从而实现长期的时域信息的连续传递,使得视频序列中的每个视频帧的合成参考帧都具有描述视频序列之间辅助的运动的能力,从而进一步提升编码性能。例如,本申请能够从第一帧编码开始,直到最后一帧编码结束,始终动态更新该全局长期记忆,从而能够充分利用时域信息,生成更加准确的预测帧,提高视频编码效率。

在一些实施例中,可以由设置于参考帧生成模块内部模块或单元来获取该差值,并根据该差值,更新长期记忆。在另一些实施例中,还可以由专门的模块或单元,例如记忆更新模块来获取该差值,并根据该差值更新长期记忆,本申请实施例对此不作限定。

结合第一方面,在第一方面的某些实现方式中,还包括:

提取所述第二视频帧的重建帧的特征信息;

其中,所述根据所述第二视频帧的重建帧和所述视频序列的全局长期记忆,生成所述第一视频帧的合成参考帧,包括:

将所述第二视频帧的重建帧的特征信息和所述全局长期记忆输入参考帧生成网络模型,获取所述第一视频帧的合成参考帧,其中,所述参考帧生成网络模型是利用训练数据样本集训练得到的,所述训练数据样本集中包括多个视频序列样本,所述每个视频序列样本包括无损视频帧,以及对所述无损视频帧进行有损压缩获取的视频帧。

因此,本申请实施例可以通过深度学习,通过将视频序列中的待编码的第一视频帧之前固定数量的第二视频帧的重建帧,以及视频序列的全局长期记忆作为神经网络模型的输入,从而输出该第一视频帧的合成参考帧,然后根据该合成参考帧对该第一视频帧进行编码。由于该合成参考帧具有描述视频序列之间复杂的运动的能力,因此本申请实施例能够生成更准确的预测帧,提高视频编码效率。

结合第一方面,在第一方面的某些实现方式中,所述将所述第二视频帧的重建帧的特征信息和所述全局长期记忆输入参考帧生成网络模型,获取所述第一视频帧的合成参考帧,包括:

根据以下公式,获取所述第一视频帧的合成参考帧:

其中,表示所述第一视频帧的合成参考帧,t表示所述第一视频帧的帧号,i表示所述第一视频帧之前的第二视频帧的帧号,Ii表示第i帧视频的重建帧,表示深度学习中的局部卷积操作,Ki表示所述第一视频帧中所有像素的卷积核系数的集合,⊙表示像素级别的点乘操作,用于将对于输入帧进行局部卷积得到的结果的像素级别加权相加,其权值矩阵为Mi,εt表示对所述第一视频帧进行编码时的所述全局长期记忆,γt表示所述第二视频帧的重建帧的特征信息,t,i为正整数,且t>2。

因此,本申请实施例通过为每个像素分别生成卷积核系数的方式,即局部卷积的方式,这相对于为所有像素采用相同的回归方式而言,拥有更强的表达能力,因此能够达到更好的回归效果,从而有助于生成更准确的预测帧,进而提高视频编码效率。这里,回归,指的是生成合成参考帧的过程。

结合第一方面,在第一方面的某些实现方式中,所述第二视频帧包括所述第一视频帧的前两帧视频帧,其中,所述第一视频帧为所述视频序列中的第三帧视频帧,或所述第三帧视频帧之后的视频帧。

在一些实施例中,由于在对整个视频序列的第一帧和第二帧视频帧进行编码的时候,输入参考帧生成模块的重建帧的数量不足,因此此时参考帧生成模块可以不生成第一帧视频帧的合成参考帧,或者第二帧视频帧的合成视频帧。

之后,例如从第四帧视频帧开始,参考帧生成模块和编码器模块可以进入正常工作模式,即参考帧生成模块不断根据长期记忆、前两帧视频帧的重建帧生成合成参考帧,编码器模块独权该合成参考帧,并产生当前编码视频帧的重建帧。可选的,编码器模块可以获取视频帧的重建帧和参考合成帧的差值,使得参考帧生成模块能够根据该差值,完成长期记忆的更新。上述流程可以不断重复,直到视频帧序列中的所有视频帧全部编码完成。

结合第一方面,在第一方面的某些实现方式中,在所述第一视频帧为所述视频序列中的第三帧视频帧的情况下,所述全局长期记忆为0。另外,在对第三帧视频帧进行编码之前,可以将全局长期记忆置为0。

结合第一方面,在第一方面的某些实现方式中,所述根据所述第一视频帧的合成参考帧,对所述第一视频帧进行编码,包括:

获取所述第一视频帧的参考帧列表,所述参考帧列表中包括已编码完成的至少两个视频帧的重建帧;

将参考帧列表中与所述第一视频帧的帧号之差最大的帧号对应的重建帧移除,并将所述第一视频帧的合成参考帧加入到所述参考帧列表中的被移除的所述重建帧的位置;

根据所述参考帧列表,对所述第一视频帧进行编码。

因此,由于参考帧列表中与所述第一视频帧的帧号之差最大的帧号对应的重建帧与第一视频帧的时域相关性最弱,因此通过将参考帧列表中与所述第一视频帧的帧号之差最大的帧号对应的重建帧移除,并将所述第一视频帧的合成参考帧加入到所述参考帧列表,用作当前编码过程中的参考,从而利用不同帧之间的时域联系性,达到更好的压缩效果。

第二方面,提供了一种视频编码的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法,具体的,该设备包括用于执行上述第一方面或第一方面任意可能的实现方式中的方法的模块。

第三方面,提供了一种视频编码的装置,包括:存储器、处理器。其中,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该视频编码的装置执行第一方面或第一方面的任意可能的实现方式中的方法。

第四方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。

第五方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行第一方面或第一方面的任意一种可能的实现方式。

应理解,本申请的第二至第五方面及对应的实现方式所取得的有益效果参见本申请的第一方面及对应的实现方式所取得的有益效果,不再赘述。

附图说明

图1示出了本申请实施例提供的视频编码的系统的示意性框图。

图2示出了本申请实施例提供的一种视频编码的方法的示意性流程图。

图3示出了对第t帧视频帧进行编码的具体示例。

图4示出了本申请实施例提供的视频编码的一个具体例子。

图5示出了本申请实施例的视频编码的方案的PSNR曲线的一个示例。

图6示出了本申请实施例提供的一种视频编码的装置的示意性框图。

图7示出了本申请实施例提供的另一种视频编码的装置的示意性框图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

图1示出了本申请实施例提供的视频编码的系统100的示意性框图。示例性的,系统100可以设置在智能视频存储播放设备,比如具有摄像功能、视频播放功能或视频存储功能的电子产品(手机、电视、电脑等)上。如图1所示,该系统100包括参考帧生成模块110和编码器模块120。示例性的,参考帧生成模块110可以为长短期记忆网络(long short-termmemory,LSTM),编码器模块120可以为HEVC视频编码器。

其中,参考帧生成模块110用于根据视频序列中的已编码的视频帧,生成待编码的第一视频帧的合成参考帧。这里,该已编码的视频帧,包括第一视频帧之前的全部或部分已经编码完成的视频帧。例如,这些已经编码的视频帧中,除了第一视频帧之前的固定数量的已经编码完成的视频帧之外,还可以包含该固定数量的视频帧之前的已经编码完成的视频帧,本申请实施例对此不作限定。

一些实施例中,上述已编码的视频帧,可以包括当前待编码的第一视频帧之前固定数量的第二视频帧的重建帧,以及该视频序列的全局长期记忆(也可以称为长期记忆、全局记忆等,不作限定)。其中,重建帧指的编码端设备(例如上述系统100中的编码器模块120)模拟解码端设备来恢复视频帧,得到的视频帧。

其中,第一视频帧之前固定数量的第二视频帧,例如可以是第一视频帧之前的前两个视频帧,或者是第一视频帧之前的前三个视频帧,或者是第一视频帧之前的前一个视频帧,本申请实施例对此不作限定。这里,第一视频帧之前的固定数量的第二视频帧的重建帧,包含了对第一视频帧进行编码之前的短期时域信息。

视频序列的全局长期记忆,可以是根据视频序列中的已编码的多个视频帧确定的,例如根据该多个视频帧中的每个视频帧的重建帧和该每个视频的合成参考帧确定的。示例性的,该多个视频帧,可以是该视频序列中的已编码的所有视频帧或部分视频帧,本申请实施例对此不作限定。

例如,在当前待编码的视频帧为第一视频帧的情况下,输入到该参考帧生成模块110的全局长期记忆可以是根据视频序列中该第一视频帧之前的多个(例如所有)视频帧中的每个视频帧的重建帧和该每个视频帧的合成参考帧确定的。

由于固定数量的第二视频帧的重建帧包含相邻视频帧之间很强的时域相关性,以及全局长期记忆包含视频序列的长期时域信息,因此根据该第一视频帧之前固定数量的第二视频帧的重建帧,以及视频序列的全局长期记忆来生成合成参考帧,作为该第一视频帧编码时的参考帧,能够有助于使得生成的合成参考帧具有描述视频序列之间复杂的运动(例如非线性运动、旋转运动)的能力。

本申请实施例中,合成参考帧也可以称为参考帧、预测帧等,本申请实施例对此不作限定。

编码器模块120用于将该第一视频帧的合成参考帧作为额外的参考帧,用于该第一视频帧的编码过程,对该第一视频帧进行编码。

因此,本申请实施例通过根据视频序列中的待编码的第一视频帧之前固定数量的第二视频帧的重建帧,以及视频序列的全局长期记忆,生成该第一视频帧的合成参考帧,然后根据该合成参考帧对该第一视频帧进行编码。由于该合成参考帧具有描述视频序列之间复杂的运动的能力,因此本申请实施例能够生成更准确的预测帧,提高视频编码效率。

可选的,编码器模块120还可以获取第一视频帧的重建帧,例如模拟解码端设备来恢复第一视频帧,得到该第一视频帧的重建帧。

一些实施例中,系统100可以维护该全局长期记忆。例如在完成一个视频帧的编码之后,根据该视频帧的重建帧,更新该全局长期记忆。示例性的,在获取第一视频帧的重建帧之后,可以确定该第一视频帧的重建帧与第一视频帧的合成参考帧之间的差值,并根据该差值,更新该全局长期记忆。更新后的该全局长期记忆,可以用于第一视频帧的下一帧视频帧的合成参考帧的生成过程。具体的,该下一帧的合成参考帧的生成过程以及编码过程与第一视频帧的合成参考帧的生成过程和编码过程类似,不再赘述。

因此,本申请实施例通过根据视频帧的重建帧和合成参考帧之间的差值,对全局长期记忆进行实时更新,能够实现迭代式地进行视频帧序列的编码,从而实现长期的时域信息的连续传递,使得视频序列中的每个视频帧的合成参考帧都具有描述视频序列之间辅助的运动的能力,从而进一步提升编码性能。例如,本申请能够从第一帧编码开始,直到最后一帧编码结束,始终动态更新该全局长期记忆,从而能够充分利用时域信息,生成更加准确的预测帧,提高视频编码效率。

图2示出了本申请实施例提供的一种视频编码的方法200的示意性流程图。该方法200可以应用于图1中所示的视频编码的系统100。如图2所示,方法200包括步骤210至240。

210,获取视频序列中待编码的第一视频帧之前的固定数量的第二视频帧的重建帧。示例性的,该固定数据的第二视频帧可以参见上文中的描述,这里不再赘述。

图3示出了对第t帧视频帧进行编码的具体示例。这里,第t帧视频帧即上述第一视频帧的一个示例。如图3所示,第t帧视频帧之前的固定数量的第二视频帧可以为该第t帧视频帧的前两帧视频帧,即第t-1帧视频帧和第t-2帧视频帧。这里,t为正整数且t>2。此时,第二视频帧的重建帧即为的第t-1帧视频帧的重建帧(即图3中的t-1重建帧)和第t-2帧视频帧的重建帧(即图3中的t-2重建帧)。

需要说明的是,本申请实施例的视频编码的方法可以应用于low delay编码配置。在low delay编码配置下,视频帧的编码顺序与其帧号的顺序是相同的,即顺序编码。例如,对于第t帧(t>2)视频帧进行编码之前,第t-1帧和第t-2帧视频帧都已经编码完毕了。因此,在对该第t帧视频帧进行编码之前,首先可以获取第t-1帧以及第t-2帧视频帧的重建帧。

因此,本申请实施例可以针对low delay编码配置进行设计,并且在该配置下,帧的编码是按照顺序进行的,即编码顺序与帧序号保持一致,因此本申请实施例能够实现全局长期记忆和编码过程的同步推进。

220,根据所述第二视频帧的重建帧和所述视频序列的全局长期记忆,生成所述第一视频帧的合成参考帧,其中,所述全局长期记忆是根据所述视频序列中的所述第一视频帧之前的多个视频帧中的每个视频帧的重建帧和所述每个视频帧的合成参考帧确定的。其中,全局长期记忆以及合成参考帧可以参见上文中的描述,这里不再赘述。

示例性的,可以继续参考图3,在获取第t-1帧以及第t-2帧视频帧的重建帧之后,可以利用参考帧生成模块来生成该第t帧视频帧的合成参考帧(即图3中的t合成参考帧)。示例性的,此时参考帧生成模块的输入可以为第t-1帧以及第t-2帧视频帧的重建帧,以及视频序列的长期记忆。这里,将长期记忆与第t-1帧以及第t-2帧视频帧的重建帧共同作为参考帧生成模块的输入,能够保证更充分的时域信息的输入。

230,根据所述第一视频帧的合成参考帧,对所述第一视频帧进行编码。

示例性的,继续参考图3,在参考帧生成模块生成t合成参考帧之后,编码器模块可以读取该t合成参考帧。在一些可选的实施例中,编码器模块可以将该t合成参考帧放入该编码器模块中的参考帧列表,并根据该参考帧列表,完成第t帧视频帧的编码。其中,参考帧列表中可以包括至少两个视频帧,用作当前帧编码过程中的参考。

在一些实施例中,编码器模块在对每一帧视频进行编码的过程中,可以维护对应于该帧视频的参考帧列表。示例性的,在编码器模块还没有获取第t帧视频的合成参考帧之前,该第t帧对应的参考帧列表中可以存放已编码完成的若干视频帧的重建帧。在编码器模块获取了第t帧视频帧的合成参考帧之后,可以将参考帧列表中与当前编码的视频帧(例如第一视频帧,或第t帧视频帧)的帧号之差最大的帧号对应的重建帧移除,并将从参考帧生成模块获取的当前视频帧(例如第一视频帧,或第t帧视频帧)的合成参考帧加入到该参考帧列表,例如可以加入到参考帧列表中的被移除的重建帧的位置,本申请实施例对此不作限定。

由于参考帧列表中与所述第一视频帧的帧号之差最大的帧号对应的重建帧与第一视频帧的时域相关性最弱,因此通过将参考帧列表中与所述第一视频帧的帧号之差最大的帧号对应的重建帧移除,并将所述第一视频帧的合成参考帧加入到所述参考帧列表,用作当前编码过程中的参考,从而能够利用不同帧之间的时域联系性,达到更好的压缩效果。

因此,本申请实施例通过根据视频序列中的待编码的第一视频帧之前固定数量的第二视频帧的重建帧,以及视频序列的全局长期记忆,生成该第一视频帧的合成参考帧,然后根据该合成参考帧对该第一视频帧进行编码。由于该合成参考帧具有描述视频序列之间复杂的运动的能力,因此本申请实施例能够生成更准确的预测帧,提高视频编码效率。

在一些可选的实施例中,方法200还可以包括步骤240,获取所述第一视频帧的重建帧(t重建帧),并根据所述第一视频帧的重建帧和所述第一视频帧的合成参考帧的差值,更新所述全局长期记忆。

示例性的,继续参考图3,编码端设备(例如该编码器模块)可以模拟解码端,恢复t视频帧,从而获得上述t重建帧。在获取t重建帧之后,可以计算该t重建帧与t合成参考帧之间的差值。这里,该差值可以认为是对第t帧视频帧进行编码过程中产生的误差。获取该差值后,可以根据该差值,动态更新其维护的长期记忆,从而能够实现参考帧生成模块在未来的预测过程(即生成下一帧,例如t+1帧的合成参考帧的过程)中能够感知对第t帧视频帧进行编码过程中产生的该误差,从而有助于未来生成更加准确的合成参考帧,提高视频编码效率。

在一些实施例中,可以由设置于参考帧生成模块内部模块或单元来获取该差值,并根据该差值,更新长期记忆。在另一些实施例中,还可以由专门的模块或单元,例如记忆更新模块来获取该差值,并根据该差值更新长期记忆,本申请实施例对此不作限定。

需要说明的是,对于图3中的视频编码过程而言,由于在对整个视频序列的第一帧和第二帧视频帧进行编码的时候,输入参考帧生成模块的重建帧的数量不足,因此此时参考帧生成模块可以不生成第一帧视频帧的合成参考帧,或者第二帧视频帧的合成视频帧。

在对第三帧视频帧进行编码之前,已经生成了第一帧视频帧的重建帧和第二帧视频帧的重建帧,因此此时可以利用参考帧生成模块生成该第三帧视频帧的合成参考帧。这也在对整个视频帧进行编码的过程中,参考帧生成模块第一次生成合成参考帧,因此此时并不存在视频序列的长期记忆,在此之前参考帧生成模块可以将长期记忆置为0。此时,可以将该置为0的长期记忆、第一帧和第二帧视频帧的重建帧共同作为合成过程的输入,输出第三帧视频帧的合成参考帧。之后,即从第四帧视频帧开始,参考帧生成模块和编码器模块可以进入正常工作模式,即参考帧生成模块不断根据长期记忆、前两帧视频帧的重建帧生成合成参考帧,编码器模块独权该合成参考帧,并产生当前编码视频帧的重建帧。可选的,编码器模块可以获取视频帧的重建帧和参考合成帧的差值,使得参考帧生成模块能够根据该差值,完成长期记忆的更新。上述流程可以不断重复,直到视频帧序列中的所有视频帧全部编码完成。

下面,结合图4,详细描述本申请实施例提供的视频编码的一个具体例子。应注意,下面的例子仅仅是为了帮助本领域技术人员理解和实现本发明的实施例,而非限制本发明实施例的范围。本领域技术人员可以根据这里给出的例子进行等价变换或修改,这样的变换或修改仍然应落入本发明实施例的范围内。

示例性的,图4的系统架构可以是在配备有i7-9700K,32G内存,GTX1080Ti基于Ubuntu 18.04的平台上实现的。请参考图4,该系统中包括特征提取模块410、参考帧生成模块420、编码器模块430和记忆更新模块440。其中,特征提取模块410、参考帧生成模块420和记忆更新模块440可以由神经网络模块实现。此时,图4中的该系统也可以被称为神经网络模型,或神经网络系统。

在图4所示的例子中,可以利用特征提取模块410提取第一视频帧之前的固定数量的第二视频帧的重建帧(例如t-1重建帧It-1和t-2重建帧It-2)的特征信息,然后将提取到的该第二视频帧的重建帧的特征信息和全局长期记忆εt输入参考帧生成网络模型,获取第一视频帧的合成参考帧然后,编码器模块430可以根据该合成参考帧对第一视频帧进行编码。之后,编码器模块还可以获取并输出该第一视频帧的重建帧It,记忆更新模块440可以获取第一视频帧的重建帧It,并获取合成参考帧与重建帧It的差值Rt,再由记忆更新模块440中的记忆更新网络430根据该差值Rt对全局长期记忆εt进行更新。

其中,该图4中各神经网络模块可以是利用训练数据样本集训练得到的,该训练数据样本集中包括多个视频序列样本,每个视频序列样本包括无损视频帧,以及对所述无损视频帧进行有损压缩获取的视频帧。

下面描述图4系统中各神经网络模块的具体参数,其中,以对第t帧视频帧进行编码为例,假设输入神经网络模型的两帧图像的长宽分别是h,w。

特征提取模块410:

输入:之前两帧重建帧(即图4中的t-2重建帧It-2和t-1重建帧It-1)。其中,特征提取模块410的输入通道数可以为6,即为之前两帧重建帧在通道数上进行拼接(其中每一帧重建帧的输入通道数为3,即RGB三个输入通道)。

网络参数:如下表1所示:

表1

需要说明的是,表1中的序号为特征提取模块410中从左至右进行编号之后得到的名称,例如,特征提取模块410中最左边的卷积模块被称为卷积1,以此类推。虚线表示将两个部分的输出相加,比如将卷积1和上采样5的输出相加。这是自编码器中常见的skipconnection结构,用于传递低层(low level)信息。

参考帧生成模块420包括局部卷积参数生成网络421和权值生成网络422。

局部卷积参数生成网络421:

输入:

(1)特征提取模块410的卷积2与上采样2的输出之和,标记为γt

(2)长期记忆,标记为εt

输入整合方式:按照上述(1)和(2)的通道数进行拼接。

输出:通道数为51,长宽和输入图像相同的局部卷积系数。

网络参数:如下表2所示:

表2

权值生成网络422:

输入:上采样5与卷积1之和。

输出:通道数为1,长宽与输入图像相同的权值矩阵,即图4中所标记的Mt-1。另外,图4中的Mt-2可由全1矩阵减去Mt-1得到。

网络参数:如下表3所示:

表3

其中,合成参考帧的生成方式(即图4中虚线框423部分的运算方式)如下公式(1)所示:

其中,Ii表示输入的两帧视频的重建帧,表示深度学习中的局部卷积操作,Ki表示所述第一视频帧中所有像素的卷积核系数的集合,即包括为每一个像素点单独生成卷积核系数,⊙表示像素级别的点乘操作,用于将对于两个输入帧进行局部卷积得到的结果的像素级别加权相加,其权值矩阵为Mi

因此,本申请实施例通过为每个像素分别生成卷积核系数的方式,即局部卷积的方式,这相对于为所有像素采用相同的回归方式而言,拥有更强的表达能力,因此能够达到更好的回归效果,从而有助于生成更准确的预测帧,进而提高视频编码效率。这里,回归,指的是生成合成参考帧的过程。

记忆更新网络440:

输入:

(1)t重建帧It与合成参考帧的差值Rt,通道数为3,长宽和输入图片相同;

(2)LSTM之前一次循环的状态hi-1,ci-1

输出:下一时刻的ConvLSTM状态,即hi,ci,通道数均为32。

网络参数:如下表4所示:

表4

下面,描述图4中该神经网络模型的训练方式。

示例性的,本申请实施例可以采用Vimeo 90K数据集来训练该神经网络模型,在该数据集中,可以包括89800个视频序列,其中每个视频序列可以有7帧连续的无损视频帧,可以标记为{I1,I2,…,I1}。首先,可以对该数据集进行处理,例如对其中每个视频序列的每一帧进行有损压缩,从而得到降质的视频帧序列用于模拟真实编码过程中产生的图像质量损失现象。同时,该神经网络模型还设置有一个全局长期记忆ε,其中在第t帧视频帧的预测过程中,输入的全局长期记忆可以被标记为εt

以下是训练过程的一个示例:

步骤1:在降质的视频帧序列中,选取前两帧有损帧,即并将初始记忆ε3设置成0,对第三帧进行预测。将这三者输入参考帧生成模块,计算得到第三帧的预测帧接下来,计算预测帧与无损第三帧I3的损失函数,并将误差反向传播,更新网络参数。然后,计算预测帧与有损帧之间的预测误差,并将初始为0的长期记忆ε3更新为ε4,用于第四帧的预测。

步骤2:选择上一次网络前向传播的输入帧的接下来两帧以及上一次更新之后的长期记忆作为输入。举例而言,如果上一次循环过程中的输入是那么这一次的输入是有损帧同时,在上一次前向传播之后,长期记忆也已经被更新成了因此将以及一并输入网络,进行前向传播,得到预测帧并计算预测帧与无损帧It+3的损失函数,并将误差反向传播,更新网络参数。然后,计算预测帧与有损帧之间的预测误差,将长期记忆更新为

步骤3:重复步骤2,直到该视频序列中的所有帧都被使用。由于训练数据中,每个视频序列有连续的7帧,因此对于每个视频序列,步骤2会被重复4次。

步骤4:选择训练数据中其他的视频序列,重复进行上述三步,直到神经网络拟合。

图5示出了本申请实施例的视频编码的方案的峰值信噪比(peak signal tonoise ratio,PSNR)曲线的一个示例。示例性的,可以本申请的编码器在low delay编码配置下,在FourPeople测试序列上进行编码测试。如图5所示,相比于传统的HEVC方案,本申请实施例的记忆增强自回归网络(memory-augmented auto-regressive network,MAAR-Net)方案在BD-RATE(Bjontegaard rate)上能够有10.6%的性能提升。其中,在图5中,横坐标为码率(bitrate),单位为Kbps,纵坐标为亮度Y峰值信噪比(Y-peak signal to noiseratio,YPSNR),单位为dB。

因此,本申请实施例可以通过深度学习,通过将视频序列中的待编码的第一视频帧之前固定数量的第二视频帧的重建帧,以及视频序列的全局长期记忆作为神经网络模型的输入,从而输出该第一视频帧的合成参考帧,然后根据该合成参考帧对该第一视频帧进行编码。由于该合成参考帧具有描述视频序列之间复杂的运动的能力,因此本申请实施例能够生成更准确的预测帧,提高视频编码效率。

现有技术中一种视频编码的方案,在使用LSTM网络生成参考帧的过程中,仅仅将当前编码的视频帧之前的固定数量的重建帧输入网络进行参考帧的生成。以当前编码的视频帧之前的四帧输入为例,每次输入一帧,则更新一次LSTM状态,直到四帧重建帧全部输入完成,即LSTM的状态进行了四次更新,最终输出生成的当前编码的视频帧的参考帧。但是,在生成该参考帧的流程中,仅仅只有输入的四帧重建帧的信息被包含了,而其余已编码的重建帧所包含的信息并未得到利用。另外,每一次参考帧的生成过程都是独立的,即每次生成参考帧之前,都会重置网络的记忆,从而阻碍了长期时域信息的传递,从而无法生成准确的预测帧。

而在本申请实施例中,从对视频序列进行编码过程开始,一直维护着全局长期记忆,该全局长期记忆的时域跨度可能长达数百帧。例如,从第一帧的编码过程直到最后一帧的编码过程,始终动态更新该全局长期记忆,从而保证网络的输入中包含了足够长的时域跨度,进而能够充分利用时域信息,生成更加准确的预测帧,提高视频编码的效率。

需要说明的是,在视频播放设备上,本申请实施例提供的方案可以以硬件芯片的形态实现,也可以以软件代码的形态实现,本申请实施例对此不作限定。

本申请实施例还提供了一种视频编码的装置,请参见图6。示例性的,该视频编码的装置600可以为视频存储播放设备。本申请实施例中,装置600可以包括获取单元610,生成单元620和编码单元630。

获取单元610,用于获取视频序列中待编码的第一视频帧之前的固定数量的第二视频帧的重建帧。

生成单元620,用于根据所述第二视频帧的重建帧和所述视频序列的全局长期记忆,生成所述第一视频帧的合成参考帧,其中,所述全局长期记忆是根据所述视频序列中的所述第一视频帧之前的多个视频帧中的每个视频帧的重建帧和所述每个视频帧的合成参考帧确定的。

编码单元630,用于根据所述第一视频帧的合成参考帧,对所述第一视频帧进行编码。

在一些可能的实现方式中,还包括:

更新单元,用于获取所述第一视频帧的重建帧,并根据所述第一视频帧的重建帧和所述第一视频帧的合成参考帧的差值,更新所述全局长期记忆。

在一些可能的实现方式中,所述获取单元610还用于提取所述第二视频帧的重建帧的特征信息;

其中,所述生成单元620具体用于将所述第二视频帧的重建帧的特征信息和所述全局长期记忆输入参考帧生成网络模型,获取所述第一视频帧的合成参考帧,其中,所述参考帧生成网络模型是利用训练数据样本集训练得到的,所述训练数据样本集中包括多个视频序列样本,所述每个视频序列样本包括无损视频帧,以及对所述无损视频帧进行有损压缩获取的视频帧。

在一些可能的实现方式中,所述生成单元620具体用于根据以下公式,获取所述第一视频帧的合成参考帧:

其中,表示所述第一视频帧的合成参考帧,t表示所述第一视频帧的帧号,i表示所述第一视频帧之前的第二视频帧的帧号,Ii表示第i帧视频的重建帧,表示深度学习中的局部卷积操作,Ki表示所述第一视频帧中所有像素的卷积核系数的集合,⊙表示像素级别的点乘操作,用于将对于输入帧进行局部卷积得到的结果的像素级别加权相加,其权值矩阵为Mi,εt表示对所述第一视频帧进行编码时的所述全局长期记忆,γt表示所述第二视频帧的重建帧的特征信息,t,i为正整数,且t>2。

在一些可能的实现方式中,所述第二视频帧包括所述第一视频帧的前两帧视频帧,其中,所述第一视频帧为所述视频序列中的第三帧视频帧,或所述第三帧视频帧之后的视频帧。

在一些可能的实现方式中,在所述第一视频帧为所述视频序列中的第三帧视频帧的情况下,所述全局长期记忆为0。

在一些可能的实现方式中,所述编码单元630具体用于获取所述第一视频帧的参考帧列表,所述参考帧列表中包括已编码完成的至少两个视频帧的重建帧;将参考帧列表中与所述第一视频帧的帧号之差最大的帧号对应的重建帧移除,并将所述第一视频帧的合成参考帧加入到所述参考帧列表中的被移除的所述重建帧的位置;根据所述参考帧列表,对所述第一视频帧进行编码。

图7是本申请实施例的视频编码的装置700的硬件结构示意图。图7所示的装置700可以看成是一种计算机设备,装置700可以作为本申请实施例的视频编码的装置的一种实现方式,也可以作为本申请实施例的视频编码的方法的一种实现方式,装置700包括处理器701、存储器702、输入/输出接口703和总线705,还可以包括通信接口704。其中,处理器701、存储器702、输入/输出接口703和通信接口704通过总线705实现彼此之间的通信连接。

处理器701可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的处理媒体数据的装置中的模块所需执行的功能,或者执行本申请方法实施例的处理媒体数据的方法。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成本申请实施例的处理媒体数据的装置中包括的模块所需执行的功能,或者执行本申请方法实施例的处理媒体数据的方法。

存储器702可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器702可以存储操作系统以及其他应用程序。在通过软件或者固件来实现本申请实施例的处理媒体数据的装置中包括的模块所需执行的功能,或者执行本申请方法实施例的处理媒体数据的方法时,用于实现本申请实施例提供的技术方案的程序代码保存在存储器702中,并由处理器701来执行处理媒体数据的装置中包括的模块所需执行的操作,或者执行本申请方法实施例提供的处理媒体数据的方法。

输入/输出接口703用于接收输入的数据和信息,输出操作结果等数据。

通信接口704使用例如但不限于收发器一类的收发装置,来实现装置700与其他设备或通信网络之间的通信。可以作为处理装置中的获取模块或者发送模块。

总线705可包括在装置700各个部件(例如处理器701、存储器702、输入/输出接口703和通信接口704)之间传送信息的通路。

应注意,尽管图7所示的装置700仅仅示出了处理器701、存储器702、输入/输出接口703、通信接口704以及总线705,但是在具体实现过程中,本领域的技术人员应当明白,装置700还包括实现正常运行所必须的其他器件,例如还可以包括显示器,用于显示要播放的视频数据。同时,根据具体需要,本领域的技术人员应当明白,装置700还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当明白,装置700也可仅仅包括实现本申请实施例所必须的器件,而不必包括图7中所示的全部器件。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机程序,当其在计算机上运行时,使得该计算机执行上述方法实施例提供的方法。

本申请实施例还提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行上述方法实施例提供的方法。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

应理解,本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:具有旋转信息的360°图像/视频内处理方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类