发明内容
本申请实施例的目的在于提供一种模型训练方法、视频插帧方法及对应装置,以改善上述技术问题。
为实现上述目的,本申请提供如下技术方案:
第一方面,本申请实施例提供一种模型训练方法,包括:获取第一视频帧、第二视频帧以及所述第一视频帧和所述第二视频帧的参考中间帧;基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流;以及,基于所述第一视频帧和所述第二视频帧,利用第二神经网络获得第二中间帧光流;利用所述第一中间帧光流对所述第一视频帧和所述第二视频帧进行映射,获得第一映射视频帧和第二映射视频帧,并融合所述第一映射视频帧和所述第二映射视频帧,获得第一中间帧;以及,利用所述第二中间帧光流对所述第一视频帧和所述第二视频帧进行映射,获得第三映射视频帧和第四映射视频帧,并融合所述第三映射视频帧和所述第四映射视频帧,获得第二中间帧;计算表征所述第一中间帧和所述参考中间帧的差异的第一图像损失,以及表征所述第一中间帧光流和所述第二中间帧光流的差异的光流损失,并根据所述第一图像损失和所述光流损失更新所述第一神经网络的参数;以及,计算表征所述第二中间帧和所述参考中间帧的差异的第二图像损失,并根据所述第二图像损失更新所述第二神经网络的参数。
上述方法中的第一神经网络为实际进行视频插帧时用来估计中间帧光流的网络,第二神经网络仅在模型训练阶段使用。上述方法在训练第一神经网络时,除了利用参考中间帧作为监督信号,还利用第二神经网络预测的中间帧光流作为监督信号,使得第一神经网络不仅能够自主学习中间帧光流的预测,还能够学习第二神经网络对中间帧光流的预测,从而可以改善第一神经网络的光流预测精度,进而提高利用光流重建的中间帧的图像质量。并且,该方法并不依赖于人工标注的光流数据,从而提供了一种在缺少光流数据标注的情况下进行模型训练、实现高质量视频插帧的解决方案。
在第一方面的一种实现方式中,所述基于所述第一视频帧和所述第二视频帧,利用第二神经网络获得第二中间帧光流,包括:基于所述第一视频帧、所述第二视频帧和所述参考中间帧,利用所述第二神经网络获得第二中间帧光流。
在上述实现方式中,第一神经网络和第二神经网络的输入是非对称的,第二神经网络的输入除了第一视频帧和第二视频帧之外,还包括参考中间帧,从而第二神经网络在中间帧光流的预测准确性上,大概率要优于第一神经网络,因此将其输出的光流预测结果作为监督信号,有利于提高第一神经网络的光流预测精度。
在第一方面的一种实现方式中,所述基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流,包括:基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络预测得到所述第一视频帧和所述参考中间帧之间的光流、以及所述第二视频帧和所述参考中间帧之间的光流。
第一中间帧光流包括第一视频帧和参考中间帧之间的光流、以及所述第二视频帧和参考中间帧之间的光流,在上述实现方式中,这两个光流都利用第一神经网络来预测,可以提高光流的预测精度。注意,在此种实现方式下,第二神经网络也要对这两个光流进行预测。
在第一方面的一种实现方式中,所述基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流,包括:基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络预测得到所述第一视频帧和所述参考中间帧之间的光流,并将该光流的相反光流确定为所述第二视频帧和所述参考中间帧之间的光流;或者,基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络预测得到所述第二视频帧和所述参考中间帧之间的光流,并将该光流的相反光流确定为所述第一视频帧和所述参考中间帧之间的光流。
第一中间帧光流包括第一视频帧和参考中间帧之间的光流、以及所述第二视频帧和参考中间帧之间的光流。若视频帧中的物体近似为匀速直线运动(若第一视频帧和第二视频帧间隔时间较短,该条件容易满足),则这两个光流互为相反光流,即光流方向相反,大小相同。此时,可以只用第一神经网络预测其中一个光流,另一个光流则通过计算出的光流取反得到,这样可以节约一定的运算量,提高光流估计的效率。注意,在此种实现方式下,第二神经网络也只需对这两个光流中的一个进行预测,另一个光流则通过取反运算得到。
在第一方面的一种实现方式中,所述基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流,包括:基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络获得第一中间帧光流和第一融合掩膜;所述融合所述第一映射视频帧和所述第二映射视频帧,获得第一中间帧,包括:利用所述第一融合掩膜融合所述第一映射视频帧和所述第二映射视频帧,获得第一中间帧;所述方法还包括:计算表征所述第一融合掩膜和第二融合掩膜的差异的融合权重损失,并根据所述融合权重损失更新所述第一神经网络的参数;其中,所述第二融合掩膜是基于所述第一视频帧和所述第二视频帧,利用所述第二神经网络获得的。
在上述实现方式中,通过融合掩膜来实现第一映射视频帧和第二映射视频帧的融合,融合掩膜通过学习得到,从而有利于改善融合效果。此时,第二神经网络预测的融合掩膜也可以作为第一神经网络预测的融合掩膜的监督信号,改善第一神经网络对融合掩膜的预测精度。
在第一方面的一种实现方式中,所述第二神经网络在规模上大于所述第一神经网络。
在上述实现方式中,第二神经网络实现为一个较大的网络(例如,卷积层个数更多、卷积核个数更多),第一神经网络实现为一个较小的网络,从而第二神经网络在中间帧光流的预测准确性上,大概率要优于第一神经网络,因此将其输出的光流预测结果作为监督信号,有利于提高第一神经网络的光流预测精度。
在第一方面的一种实现方式中,所述第一神经网络和所述第二神经网络均采用编解码器结构。
编解码器结构即编码器和解码器串联的结构,其中,编码器将输入图像下采样,而解码器将下采样后的图像恢复为输入图像的分辨率。采用编解码器结构一方面能够提高特征图的感受野,从而捕捉较大的物体运动,改善中间帧光流的估计精度,一方面也有利于降低运算量。
在第一方面的一种实现方式中,所述第一神经网络和所述第二神经网络共用一个解码器,所述方法还包括:计算表征第一特征图和第二特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,所述第一特征图为所述第一神经网络的编码器输出,所述第二特征图为所述第二神经网络的编码器输出。
在上述实现方式中,将第二神经网络中编码器输出的特征图作为第一神经网络中编码器输出的特征图的监督信号,可以使第一神经网络的编码器学习第二神经网络的编码器的特征提取方式,从而改善第一神经网络对中间帧光流的预测精度。
在第一方面的一种实现方式中,所述第一神经网络和所述第二神经网络共用一个解码器,所述方法还包括:计算表征多个第三特征图和对应的多个第四特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,每个第三特征图为所述第一神经网络的编码器的一个卷积层输出,每个第四特征图为所述第二神经网络的编码器的一个卷积层输出。
在上述实现方式中,将第二神经网络中编码器提取的特征图(包括输出的特征图和中间的特征图)作为第一神经网络中编码器提取的特征图的监督信号,可以使第一神经网络的编码器学习第二神经网络的编码器的特征提取方式,从而改善第一神经网络对中间帧光流的预测精度。
在第一方面的一种实现方式中,在获得所述第一中间帧和所述第二中间帧之后,所述方法还包括:确定所述第一中间帧和所述第二中间帧中的学习区域,所述学习区域为所述第二中间帧与所述参考中间帧的差异小于所述第一中间帧与所述参考中间帧的差异的区域;所述计算表征所述第一中间帧光流和所述第二中间帧光流的差异的光流损失,包括:仅在所述第一中间帧和所述第二中间帧中的所述学习区域内,计算表征所述第一中间帧光流和所述第二中间帧光流的差异的光流损失。
在上述实现方式中,光流损失并非在整个中间帧(第一中间帧和第二中间帧)上都进行计算,而是只在第二神经网络预测更准确的那些区域(第一中间帧和第二中间帧中的学习区域)上进行计算,即第一神经网络对第二神经网络的学习具有选择性,只学习第二神经网络在光流预测上表现较好的区域,相当于在学习过程中融合了两个神经网络的优势,从而有利于提高第一神经网络的光流预测精度。类似的,对于融合权重损失、特征图损失,都可以采取这种选择性计算的方式。
在第一方面的一种实现方式中,所述基于所述第一视频帧和所述第二视频帧,利用第二神经网络获得第二中间帧光流,包括:对所述第一视频帧和所述第二视频帧进行至少一种变换,得到至少一组变换后的第一视频帧和第二视频帧;分别基于所述第一视频帧和所述第二视频帧、以及所述至少一组变换后的第一视频帧和第二视频帧,利用所述第二神经网络获得多个原始第二中间帧光流;计算所述多个原始第二中间帧光流的均值,获得所述第二中间帧光流。
在上述实现方式中,针对每一组第一视频帧和第二视频帧(包括未变换的和变换后的),都用第二神经网络预测一个原始的第二中间帧光流,再对这些原始的第二中间帧光流取平均得到最终的第二中间帧光流,有利于削弱不同输入对于中间帧光流预测结果的影响,使得第二神经网络的对中间帧光流的预测精度显著提高,进而在其监督下,第一神经网络对中间帧光流的预测精度也随之提高。
在第一方面的一种实现方式中,所述分别基于所述第一视频帧和所述第二视频帧、以及所述至少一组变换后的第一视频帧和第二视频帧,利用所述第二神经网络获得多个原始第二中间帧光流,包括:分别基于所述第一视频帧和所述第二视频帧、以及所述至少一组变换后的第一视频帧和第二视频帧,利用所述第二神经网络获得多个原始第二中间帧光流以及多个原始第二融合掩膜;所述方法还包括:计算所述多个原始第二融合掩膜的均值,获得第二融合掩膜;计算表征第一融合掩膜和所述第二融合掩膜的差异的融合权重损失,并根据所述融合权重损失更新所述第一神经网络的参数;其中,所述第一融合掩膜是基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络获得的。
在上述实现方式中,针对每一组第一视频帧和第二视频帧(包括未变换的和变换后的),都用第二神经网络预测一个原始的第二融合掩膜,再对这些原始的第二融合掩膜取平均得到最终的第二融合掩膜,有利于削弱不同输入对于融合掩膜预测结果的影响,使得第二神经网络对融合掩膜的预测精度显著提高,进而在其监督下,第一神经网络对融合掩膜的预测精度也随之提高,插帧效果也随之得到改善。
在第一方面的一种实现方式中,所述第一神经网络和所述第二神经网络均采用编解码器结构,且所述第一神经网络和所述第二神经网络共用一个解码器,所述方法还包括:计算多个原始第二特征图的均值,获得第二特征图;其中,所述多个原始第二特征图为所述第二神经网络中的编码器分别针对于所述第一视频帧和所述第二视频帧、以及至少一组变换后的第一视频帧和第二视频帧的输出;计算表征第一特征图和所述第二特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,所述第一特征图为所述第一神经网络的编码器输出。
在上述实现方式中,针对每一组第一视频帧和第二视频帧(包括未变换的和变换后的),都用第二神经网络中的编码器提取一个原始的第二特征图,再对这些原始的第二特征图取平均得到最终的第二特征图,有利于削弱不同输入对于特征图提取结果的影响,使得第二神经网络中的编码器对特征的提取能力显著增强,进而在其监督下,第一神经网络对特征提取能力也随之提高,插帧效果也随之得到改善。
在第一方面的一种实现方式中,所述第一神经网络和所述第二神经网络均采用编解码器结构,且所述第一神经网络和所述第二神经网络共用一个解码器,所述方法还包括:计算多组原始第四特征图的均值,获得多个第四特征图;其中,每组原始第四特征图包括多个原始第四特征图,每组原始第四特征图为所述第二神经网络中的编码器的一个卷积层分别针对于所述第一视频帧和所述第二视频帧、以及至少一组变换后的第一视频帧和第二视频帧的输出;计算表征多个第三特征图和对应的所述多个第四特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,每个第三特征图表征所述第一神经网络的编码器的一个卷积层输出。
在上述实现方式中,针对每一组第一视频帧和第二视频帧(包括未变换的和变换后的),都用第二神经网络中的编码器提取一组原始的第四特征图,再对这多组原始的第四特征图取平均得到最终的一组第四特征图,有利于削弱不同输入对于特征图提取结果的影响,使得第二神经网络中的编码器对特征的提取能力显著增强,进而在其监督下,第一神经网络对特征提取能力也随之提高,插帧效果也随之得到改善。
在第一方面的一种实现方式中,对所述第一视频帧和所述第二视频帧进行的变换包括以下至少一种:对所述第一视频帧和所述第二视频帧进行垂直翻转;对所述第一视频帧和所述第二视频帧进行水平翻转;交换所述第一视频帧和所述第二视频帧。
上述实现方式给出的几种变换并不会实质性地改变第一视频帧和第二视频帧(图像的像素值没有改变、比例也没有改变),也就是说理想情况下,若只采用这几种变换方式,利用第二神经网络得到的多个原始第二中间帧光流应该是相同的。当然,实际中网络的参数大概率不具有对称性,因此所得到的多个原始第二中间帧光流大概率是不相同的,通过计算第二中间帧光流的均值可以在一定程度上消除这种由于网络本身带来的差异性,得到更精确的光流估计结果。
第二方面,本申请实施例提供一种视频插帧方法,包括:获取第三视频帧和第四视频帧;基于所述第三视频帧和所述第四视频帧,利用第一方面或第一方面的任意一种可能的实现方式提供的方法训练得到的第一神经网络获得第三中间帧光流;利用所述第三中间帧光流对所述第三视频帧和所述第四视频帧进行映射,获得第五映射视频帧和第六映射视频帧,并融合所述第五映射视频帧和所述第六映射视频帧,获得用于插入到所述第三视频帧和所述第四视频帧之间的第三中间帧。
上述方法由于利用了第一方面或第一方面的任意一种可能的实现方式提供的方法训练得到的第一神经网络来预测中间帧光流,因此得到的第三中间帧光流具有较高的精度,进而有利于提高第三中间帧的图像质量,改善视频插帧效果。
第三方面,本申请实施例提供一种模型训练装置,包括:第一帧获取模块,用于获取第一视频帧、第二视频帧以及所述第一视频帧和所述第二视频帧的参考中间帧;第一光流估计模块,用于基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流;以及,基于所述第一视频帧和所述第二视频帧,利用第二神经网络获得第二中间帧光流;第一帧计算模块,用于利用所述第一中间帧光流对所述第一视频帧和所述第二视频帧进行映射,获得第一映射视频帧和第二映射视频帧,并融合所述第一映射视频帧和所述第二映射视频帧,获得第一中间帧;以及,利用所述第二中间帧光流对所述第一视频帧和所述第二视频帧进行映射,获得第三映射视频帧和第四映射视频帧,并融合所述第三映射视频帧和所述第四映射视频帧,获得第二中间帧;参数更新模块,用于计算表征所述第一中间帧和所述参考中间帧的差异的第一图像损失,以及表征所述第一中间帧光流和所述第二中间帧光流的差异的光流损失,并根据所述第一图像损失和所述光流损失更新所述第一神经网络的参数;以及,计算表征所述第二中间帧和所述参考中间帧的差异的第二图像损失,并根据所述第二图像损失更新所述第二神经网络的参数。
第四方面,本申请实施例提供一种视频插帧装置,包括:第二帧获取模块,用于获取第三视频帧和第四视频帧;第二光流估计模块,用于基于所述第三视频帧和所述第四视频帧,利用第一方面或第一方面的任意一种可能的实现方式提供的方法训练得到的第一神经网络获得第三中间帧光流;第二帧计算模块,用于利用所述第三中间帧光流对所述第三视频帧和所述第四视频帧进行映射,获得第五映射视频帧和第六映射视频帧,并融合所述第五映射视频帧和所述第六映射视频帧,获得用于插入到所述第三视频帧和所述第四视频帧之间的第三中间帧。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第六方面,本申请实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在介绍本申请的具体方案之前,首先介绍一下利用中间帧光流实现视频插帧的基本原理,其主要过程如图1所示。
视频插帧的基本任务是根据两个实际视频帧计算一个实际中不存在的中间帧,该中间帧在时间上可以位于两个实际视频帧的采集时刻的中点,当然也可以位于其他位置,在后文中主要以位于中点的情况为例。参照图1中黑色横线上面的部分,两个实际视频帧分别记为N1和N2,视频插帧即基于N1和N2,利用某种方法计算得到一个实际中不存在的中间帧Nmid。
基于中间帧光流进行视频插帧的流程则可以参照图1中黑色横线下面的部分,插帧过程大概分为以下三个阶段:
(1)中间帧光流估计
基于N1和N2预测出中间帧光流,中间帧光流包括两个,分别是Nmid到N1的光流,记为Fmid→1,以及Nmid到N2的光流,记为Fmid→2。在一种实现方式中,可以通过训练好的神经网络进行中间帧光流的预测,本申请的方案也属于这种方式。
(2)后向映射(backward warping)
后向映射是指利用中间帧光流,将实际视频帧向中间帧对齐的一种操作,也称为remap操作。例如,在图1中,利用Fmid→1对N1做后向映射,得到N1→nid,即N1向Nmid对齐的结果,利用Fmid→2对N2做后向映射,得到N2→mid,即N2向Nmid对齐的结果。
(3)视频帧融合
将后向映射的结果N1→mid和N2→mid融合为中间帧Nmid,即用于插入到N1和N2之间的视频帧。视频帧具体融合的方式不限:例如,可以直接求平均融合;又例如,可以预测一个融合掩膜进行融合,详见后文给出的例子。
需要指出,在一种实现方式中,阶段(1)的中间帧光流也可以计算N1到Nmid的光流,记为F1→mid,以及N2到Nmid的光流,记为F2→mid。其中,Fmid→1和F1→mid也可以统称为N1和Nmid之间的光流,Fmid→2和F2→mid则可以统称为N2和Nmid之间的光流。在这些实现方式中,相应地,阶段(2)应采取前向映射(forward warping)的方式将N1和N2分别对齐到Nmid,即分别利用F1→mid对N1做前向映射,利用F2→mid对N2做前向映射,在阶段(3)中则通过融合两个前向映射结果得到中间帧Nmid。在后文中,为简单起见,主要以后向映射为例进行阐述。
图2示出了本申请实施例提供的模型训练方法的一种可能的流程,图3则示出了该方法中可以采用的一种网络架构,供阐述模型训练方法时参考。图2中的方法所要训练的模型包括第一神经网络模型和第二神经网络模型,其中训练好的第一神经网络模型可用于执行实际的视频插帧任务,第二神经网络模型则只在训练阶段用于辅助第一神经网络的训练,不用于实际的视频插帧。该方法可以但不限于由图7示出的电子设备执行,关于该电子设备的结构,可以参考后文关于图7的阐述。参照图2,该方法包括:
步骤S110:获取第一视频帧、第二视频帧以及第一视频帧和第二视频帧的参考中间帧。
第一视频帧、第二视频帧以及第一视频帧和第二视频帧的参考中间帧构成训练集中的一个训练样本,该样本可以从训练集中读取,不妨将三者分别记为I1、I2和Imid。I1和I2可以是一个视频(例如,拍摄的视频或者通过计算机视觉算法生成的视频)中的两个实际的视频帧,而Imid则是位于I1和I2中间的一个实际的视频帧。例如,I1、I2和Imid可以分别是视频的第1帧、第2帧和第3帧,也可以是视频的第1帧、第3帧和第5帧等等。
每个训练样本的处理方式基本相同,在后文中仅以一个样本的处理过程为例,多个样本批量训练的情况也是类似的,无非是将一批样本的损失求和后进行网络参数的更新。
步骤S120:基于第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流;以及,基于第一视频帧和第二视频帧,利用第二神经网络获得第二中间帧光流。
第一神经网络和第二神经网络是预先构建好的两个神经网络,其具体结构不限,例如可以由若干卷积层组成。第一神经网络和第二神经网络存在差异,例如,参考后文,可能是网络的输入不同,或者网络的规模不同,等等。
根据对图1的介绍,I1和I2的中间帧光流包括两个,分别是Imid和I1之间的光流以及Imid和I2之间的光流,在步骤S120中分别利用第一神经网络和第二神经网络对这两个光流进行预测,得到两组预测结果。其中,利用第一神经网络得到的预测结果称为第一中间帧光流,第一中间帧光流包括和两个光流,前者是对Imid和I1之间的光流的预测,后者是对Imid和I2之间的光流的预测;利用第二神经网络得到的预测结果称为第二中间帧光流,第二中间帧光流包括和两个光流,前者是对Imid和I1之间的光流的预测,后者是对Imid和I2之间的光流的预测。
在一种实现方式中,可以将I1和I2输入到第一神经网络(例如,可以将两帧拼接后输入),利用第一神经网络预测出和以及将I1和I2输入到第二神经网络,利用第二神经网络预测出和在此种实现方式中,由于两个光流都利用神经网络来预测,因此可以提高光流的预测精度。
在另一种实现方式中,假设视频帧中的物体在I1和I2之间做匀速直线运动或者近似做匀速直线运动,则可以得到和互为相反光流且和互为相反光流(前提是Imid位于I1和I2中点)。其中,所谓相反光流,可以指两个光流的方向相反,大小相同。若I1和I2的间隔时间较短(例如,二者之间只隔一个或几个视频帧或视频的帧率较高等),上述假设容易成立,因为大多数物体的运动都可以分解为大量局部的匀速直线运动。
从而,在这种实现方式下,也可以将I1和I2输入到第一神经网络,利用第一神经网络预测出然后通过计算的的相反光流得到即此时,第二神经网络也采取类似的处理方式,即将I1和I2输入到第二神经网络,利用第二神经网络预测出然后通过计算的的相反光流得到此种实现方式由于只需利用神经网络预测一个光流,因此有利于节约运算量,加快训练速度。
在一种替代方案中,也可以由第一神经网络先预测然后通过计算相反光流得到以及,由第二神经网络先预测然后通过计算相反光流得到
当然,不排除少数运动方式,例如,物体的缩放变化,不符合上述匀速直线运动的假设,因此若视频帧中大量出现这类运动,可以考虑采用前一种方式计算中间帧光流。
步骤S130:利用第一中间帧光流对第一视频帧和第二视频帧进行映射,获得第一映射视频帧和第二映射视频帧,并融合第一映射视频帧和第二映射视频帧,获得第一中间帧;以及,利用第二中间帧光流对第一视频帧和第二视频帧进行映射,获得第三映射视频帧和第四映射视频帧,并融合第三映射视频帧和第四映射视频帧,获得第二中间帧。
根据可以对I1做后向映射,将其对齐到Imid,即 其中为第一映射视频帧;根据可以对I2做后向映射,将其对齐到Imid,即其中为第二映射视频帧。
将第一中间帧记为融合和可以通过多种方式:例如,直接将和求平均得到又例如,可以利用一个融合掩膜(mask)将和融合为等等。对于后一种融合方式,后文会给出具体的例子。
根据可以对I1做后向映射,将其对齐到Imid,即 其中为第三映射视频帧;根据可以对I2做后向映射,将其对齐到Imid,即其中为第四映射视频帧。融合和可以得到第二中间帧,记为具体的融合方式与融合的方式一致。
步骤S140:计算第一图像损失和光流损失,并根据第一图像损失和光流损失更新第一神经网络的参数;以及,计算第二图像损失,并根据第二图像损失更新第二神经网络的参数。
其中,第一图像损失表征和Imid的差异,从而,利用第一图像损失更新第一神经网络的参数,可以使基于第一神经网络得到的逐渐接近于Imid(即Imid作为的监督信号)。由于Imid是实际的视频帧,因此越接近于Imid,表明第一神经网络的光流预测精度越高。
第一图像损失的损失函数形式不限,例如,可以采用L1损失、L2损失等等。假设采用L1损失,第一图像损失的计算方式可以表示为基于第一图像损失更新第一神经网络的参数可采用反向传播算法。
光流损失表征第一中间帧光流和第二中间帧光流的差异,即和的差异,以及和的差异。从而,利用光流损失更新第一神经网络的参数,可以使基于第一神经网络得到的第一中间帧光流逐渐接近于基于第二神经网络得到的第二中间帧光流(即第二中间帧光流作为第一中间帧光流的监督信号)。由于第二神经网络和第一神经网络具有差异,二者对光流的预测方式存在不同,因此,第一中间帧光流接近第二中间帧光流,表明第一神经网络学习到了第二神经网络的某些光流预测方式,进而有利于改善第一神经网络对中间帧光流的预测精度。特别地,在某些实现方式中,可将第二神经网络设计为性能优于第一神经网络(这里指理论上的性能,网络的实际性能需要测试才能确定,可能的设计方式参考后文的例子),这样第一神经网络可以学习到一些较好的光流预测方式。
光流损失的损失函数形式不限,例如,可以采用L1损失、L2损失等等。假设采用L1损失,光流损失的计算方式可以表示为 基于光流损失更新第一神经网络的参数可采用反向传播算法。
第二图像损失表征和Imid的差异,其含义和计算方式都与第一图像损失类似,不再详细阐述。假设采用L1损失,第二图像损失的计算方式可以表示为基于第二图像损失更新第二神经网络的参数可采用反向传播算法。
若一个神经网络对应多项损失,例如,第一神经网络对应第一图像损失和光流损失(根据后文内容,在某些实现方式中还可能包括融合权重损失、特征图损失),可以先对这些损失加权求和(直接求和视为加权求和的特例),然后根据算出的总损失更新第一神经网络的参数,加权求和的权重表示不同的损失对网络参数的影响程度。
综上所述,上述实施例中的模型训练方法在训练第一神经网络时,除了利用参考中间帧作为监督信号,还利用第二神经网络预测的中间帧光流作为监督信号,使得第一神经网络不仅能够自主学习中间帧光流的预测,还能够学习第二神经网络对中间帧光流的预测,从而可以改善第一神经网络的光流预测精度,进而提高利用光流重建的中间帧的图像质量。并且,该方法并不依赖于人工标注的光流数据,从而该方法提供了一种在缺少光流数据标注的情况下进行模型训练、实现高质量视频插帧的解决方案。
前文已经提到,可将第二神经网络设计为性能优于第一神经网络,使第一神经网络可以学习到一些较好的光流预测方式。下面介绍两种能够实现该目的第二神经网络的设计方式:
方式1:
将I1、I2和Imid作为第二神经网络的输入,利用第二神经网络获得第二中间帧光流(包括和),而第一神经网络仍然以I1和I2为输入,如图3所示。
在方式1中,第一神经网络和第二神经网络的输入是非对称的,由于第二神经网络相较于第一神经网络,在预测时的参考依据更多(输入多出了Imid一项),从而第二神经网络在中间帧光流的预测准确性上,大概率要优于第一神经网络,因此将其输出的光流预测结果作为监督信号,有利于提高第一神经网络的光流预测精度。
方式2:
将第二神经网络设计为在规模上大于第一神经网络。例如,第二神经网络可以包括比第一神经网络更多的卷积层,和/或,卷积层包含更多的卷积核个数。
在方式2中,由于第一神经网络实现为一个较小的网络,第二神经网络实现为一个较大的网络,从而第二神经网络在中间帧光流的预测准确性上,大概率要优于第一神经网络,因此将其输出的光流预测结果作为监督信号,有利于提高第一神经网络的光流预测精度。
对于方式2,第二神经网络由于具有较大的规模,相应地其进行预测的运算量也会提高。对于方式1,由于改变了网络输入,可以使得第二神经网络不必设计得很大,有利于降低网络的运算量。可以理解的,在某些实现方式中,方式1和方式2也可以叠加在一起,即第二神经网络的输入比第一神经网络更多,规模也比第一神经网络更大。
在阐述步骤S130时已经提到,可以通过一个融合掩膜融合和不妨将该融合掩膜记为mask1,类似的,可以通过一个融合掩膜融合和不妨将该融合掩膜记为mask2。
以mask1为例,掩膜中的每个像素值均表示一个融合权重,例如,该权重可取[0,1]中的数值,从而,和的融合过程可以用公式表示为:当然,在替代方式中,该公式也可能是
下面,在以上实施的基础上,介绍得到mask1的两种可能的方式:
方式a:设置一个单独的神经网络(不同于第一神经网络和第二神经网络)用来预测mask1。例如,该网络可以以和等信息作为输入。
方式b:利用第一神经网络,基于I1、I2预测得到mask1,如图3所示。
方式a和方式b中的融合掩膜都是通过学习得到的,并非是预先设定好的,从而融合得到的图像质量较高(更接近于Imid)。可以理解的,得到mask2可以采取和得到mask1一致的方式,不再重复说明。
若通过第一神经和第二神经网络分别预测得到了mask1和mask2,则还可以计算一项新的损失:融合权重损失。融合权重损失表征mask1和mask2的差异,从而,利用融合权重损失更新第一神经网络的参数,可以使基于第一神经网络得到的mask1逐渐接近于基于第二神经网络得到的mask2(即mask2作为mask1的监督信号)。由于第二神经网络和第一神经网络具有差异,二者对掩膜的预测方式存在不同,因此,mask1接近mask2,表明第一神经网络学习到了第二神经网络的某些掩膜预测方式,进而有利于改善第一神经网络对掩膜的预测精度。特别地,若将第二神经网络设计为性能优于第一神经网络,这样第一神经网络可以学习到一些较好的掩膜预测方式。
融合权重损失的损失函数形式不限,例如,可以采用L1损失、L2损失等等。假设采用L1损失,融合权重损失的计算方式可以表示为Loss_mask=L1_loss(mask1,mask2)。根据融合权重损失更新第一神经网络模型的参数,更新时可采用反向传播算法。
下面,在以上实施的基础上,继续介绍第一神经网络和第二神经网络可能的内部结构。
在一种实现方式中,第一神经网络和第二神经网络均采用编解码器结构,编解码器网络由编码器(网络)和解码器(网络)串联而成,如图3所示。其中,编码器将输入图像下采样,而解码器将下采样后的图像恢复为输入图像的分辨率。在编解码器结构中,由于编码器对输入图像进行了下采样,因此一方面能够提高特征图的感受野,从而捕捉较大的物体运动,改善中间帧光流的估计精度,另一方面也有利于降低光流估计的运算量。
本申请的方案不限定编解码器网络内部具体如何设计。例如,在一种简单的设计方式中,第一神经网络中的编码器可以包括4个卷积层,每个卷积层采用3×3的卷积核,步长设置为2(即下采样倍数为2),各卷积层的输出通道数分别为32、64、128、256(按2倍递增,目的是为了使各卷积层的运算量不要相差太大)。假设输入图像(I1和I2)的形状为3×H×W,其中H和W分别为图像的高和宽,3为通道数(例如,可以是RGB三个颜色通道),则上述编码器输出的特征图形状为256×(H/16)×(W/16)。对于解码器,可采用4个反卷积层,每个反卷积层采用3×3的卷积核,步长设置为2(即上采样倍数为2),各层的输入通道数和编码器对称,即256、128、64、32,最后输出的第一中间帧光流(和)的形状为2×H×W(因为每个光流值是一个向量,需要用2个数值表达,所以通道数为2)。
当然,编解码器网络还可以采用更复杂的设计,例如,可以参考图像分割网络(如UNet、SegNet等)中编解码器的设计方式,不再详细说明。
进一步的,在一种实现方式中,第一神经网络和第二神经网络可以共用一个解码器,从而第一神经网络只有编码器的参数需要向第二神经网络的编码器学习。在此种实现方式下,可以通过计算特征图损失,并根据特征图损失更新第一神经网络的参数,使第一神经网络的编码器学习第二神经网络的编码器对输入图像的编码方式(编码方式体现为编码器提取的特征图)。下面列举两种特征图损失的计算方式:
方式A:
根据第一神经网络的编码器输出的特征图(简称第一特征图)和第二神经网络的编码器输出的特征图(简称第二特征图)计算特征图损失。将第一特征图记为Feature1,第二特征图记为Feature2,在方式A中,特征图损失表征的是Feature1和Feature2的差异。从而,利用特征图损失更新第一神经网络的参数,可以使基于第一神经网络的编码器输出的Feature1逐渐接近于基于第二神经网络的编码器输出的Feature2(即Feature2作为Feature1的监督信号)。由于第二神经网络和第一神经网络的编码器具有差异,二者对特征图的预测方式存在不同,因此,Feature1接近Feature2,表明第一神经网络学习到了第二神经网络的某些特征编码方式,进而改善第一神经网络对中间帧光流的预测精度(提取的特征图决定后续的光流预测结果)。特别地,若将第二神经网络设计为性能优于第一神经网络,这样第一神经网络可以学习到一些较好的特征编码方式。
在方式A中,特征图损失的损失函数形式不限,例如,可以采用L1损失、L2损失等等。假设采用L2损失,特征图损失的计算方式可以表示为Loss_mask=L2_loss(Feature1,Feature2)。根据特征图损失更新第一神经网络模型的参数,更新时可采用反向传播算法。
方式B:
根据第一神经网络的编码器提取的多个特征图(简称第三特征图)和第二神经网络的编码器提取的多个对应的特征图(简称第四特征图)计算特征图损失。其中,每个第三特征图可以是第一神经网络的编码器的一个卷积层输出,每个第四特征图可以是第二神经网络的编码器的一个卷积层输出。
以第一神经网络的编码器和第二神经网络的编码器结构相同的情况为例,可以将第三特征图记为第四特征图记为其中,L表示编码器中用于计算特征图损失的卷积层个数,L≤Lmax,Lmax表示编码器中卷积层的总个数。显然中也可以包含Feature1,中也可以包含Feature2。
在方式B中,特征图损失表征的是对应(指i相同)的和的差异。从而,利用特征图损失更新第一神经网络的参数,可以使基于第一神经网络的编码器提取的每个特征图逐渐接近于基于第二神经网络的编码器提取的对应特征图(即作为的监督信号)。由于第二神经网络和第一神经网络的编码器具有差异,二者对特征图的预测方式存在不同,因此,接近表明第一神经网络学习到了第二神经网络的某些特征编码方式,进而改善第一神经网络对中间帧光流的预测精度。特别地,若将第二神经网络设计为性能优于第一神经网络,这样第一神经网络可以学习到一些较好的特征编码方式。
在方式B中,特征图损失的损失函数形式不限,例如,可以采用L1损失、L2损失等等。假设采用L2损失,特征图损失的计算方式可以表示为根据特征图损失更新第一神经网络模型的参数,更新时可采用反向传播算法。
相较而言,方式B的监督信号更多,训练得到第一神经网络也具有更高的预测精度,但方式A的运算量更少,二者各有优势。
下面,在以上实施的基础上,继续介绍一种选择性学习方式。所谓选择性学习,概括来说,就是第一神经网络只学习第二神经网络比自己表现好的部分,对于第二神经网络比自己表现差的部分则不进行学习。
具体而言,假设已经获得了和在计算光流损失Loss_flow之前,可以先确定和中的学习区域,学习区域为和中公共的区域,在学习区域中和Imid的差异小于和Imid的差异,差异的度量方式不限。
由于第一图像损失Loss_rec1表征的恰好是和Imid的差异,第二图像损失Loss_rec2表征的恰好是和Imid的差异,因此在一种实现方式中,可以在计算图像损失的同时顺便算出在每个像素位置和Imid的差异值(可视为每个像素位置处的第一图像损失),以及,在每个像素位置和Imid的差异值(可视为每个像素位置处的第二图像损失),然后比较对应像素位置处的差异值,即可以确定学习区域包含哪些像素。应当理解,若采用其他方式(指除图像损失以外的方式)度量上述差异,则确定学习区域的步骤也可以单独执行,无需和计算图像损失的步骤同时执行。
确定了学习区域之后,在计算Loss_flow时,只需在学习区域中进行计算,其他区域无需计算。参考前文的公式,可以表示为: 其中,R表示和中的学习区域。
根据学习区域的定义可知,在学习区域中第二神经网络的光流预测结果好于第一神经网络(图像质量更好是由于光流预测结果更好导致的),因此,在第二神经网络预测更准确的那些区域上计算光流损失,而不在第一神经网络预测更准确的那些区域上计算光流损失,可以使得第一神经网络在学习过程中融合两个神经网络的优势,从而有利于提高其光流预测精度。类似的,对于融合权重损失、特征图损失,都可以采取这种选择性计算的方式,不再重复说明。
下面,在以上实施例的基础上,继续介绍一些优化神经网络的光流预测精度的策略。
策略1:
首先,对I1和I2进行至少一种变换,得到至少一组变换后的I1和I2。其中,两个视频帧进行变换的方式应相同,具体的变换方式不限,例如,可以是翻转、旋转、缩放、改变亮度,等等。对应于每种变换,都可以得到一组变换后的I1和I2。
然后,分别基于I1和I2、以及至少一组变换后的I1和I2,利用第二神经网络获得多个原始第二中间帧光流。在步骤S120中,已经说明了第二神经网络可以基于I1和I2(还可能会用到Imid)直接得到第二中间帧光流和策略1中第二神经网络基于每一组I1和I2(还可能会用到Imid)得到一个原始第二中间帧光流,方法上是类似的,不再重复阐述。假设共有M组I1和I2(包括变换前的和变换后的),则可以对应得到M个原始第二中间帧光流,其中第j个原始第二中间帧光流可以记为和
最后,计算多个原始第二中间帧光流的均值,获得第二中间帧光流。这里如何计算均值的方式不限,例如,可以是算术平均、加权平均、几何平均等。以算术平均为例,公式可以表示为以及
策略1可以视为步骤S120的另一种实现方式,在得到第二中间帧光流后,后续步骤可以参考前文,不再重复阐述。由于第二中间帧光流的计算方式有所改变,因此对后续的图像损失的计算、光流损失的计算均有影响,进而会影响第二神经网络和第一神经网络的参数更新。需要指出,在策略1中,第一神经网络的输入仍然只包括变换前的I1和I2,因此第一中间帧光流的计算方式相较于前文没有改变,图像损失、融合权重损失的计算公式也可以继续沿用。
在策略1中,由于第二中间帧光流是利用多个原始第二中间帧光流取平均得到的,相当于削弱了不同输入(包括变换前的输入和变换后的输入)对于第二神经网络预测中间帧光流的影响。从而,基于这样计算出的第二中间帧光流进行后续的损失计算及参数更新,有利于改善第二神经网络的泛化能力,提高其对中间帧光流的预测精度,进而在第二神经网络的监督下,第一神经网络对中间帧光流的预测精度也随之提高,最终会改善插帧结果。
策略2:
考虑第一神经网络和第二神经网络均需要预测融合掩膜的情况,在策略1的基础上,对于多组I1和I2(包括变换前的和变换后的),第二神经网络除了会预测出多个原始第二中间帧光流以外,还会预测出多个原始第二融合掩膜。在步骤S130中,已经说明了第二神经网络可以基于I1和I2直接得到第二融合掩膜mask2,策略2中第二神经网络基于每一组I1和I2得到一个原始第二融合掩膜,方法上是类似的,不再重复阐述。假设共有M组I1和I2,则可以对应得到M个原始第二融合掩膜,其中第j个原始第二融合掩膜可以记为(mask2)j,j=1,2,…,M。
计算多个原始第二融合掩膜的均值,可以得到第二融合掩膜。这里如何计算均值的方式不限,例如,可以是算术平均、加权平均、几何平均等。以算术平均为例,公式可以表示为
策略2可以视为计算第二融合掩膜mask2的另一种实现方式,在得到mask2后,后续步骤可以参考前文,不再重复阐述。由于mask2的计算方式有所改变,因此对后续的图像损失的计算、融合权重损失的计算均有影响,进而会影响第二神经网络和第一神经网络的参数更新。需要指出,在策略2中,第一神经网络的输入仍然只包括变换前的I1和I2,因此第一融合掩膜mask1的计算方式相较于前文没有改变,图像损失、融合权重损失的计算公式也可以继续沿用。
在策略2中,由于第二融合掩膜是利用多个原始第二融合掩膜取平均得到的,相当于削弱了不同输入(包括变换前的输入和变换后的输入)对于第二神经网络预测融合掩膜的影响。从而,基于这样计算出的第二融合掩膜进行后续的损失计算及参数更新,有利于改善第二神经网络的泛化能力,提高其对融合掩膜的预测精度,进而在第二神经网络的监督下,第一神经网络对融合掩膜的预测精度也随之提高,最终会改善插帧结果。
策略3
考虑第一神经网络和第二神经网络均包括编解码器、且二者共用解码器的情况,在策略1或2的基础上,对于多组I1和I2(包括变换前的和变换后的),第二神经网络中的编码器会输出多个原始第二特征图。前文在介绍神经网络的编解码器结构时,已经说明了第二神经网络的编码器可以基于I1和I2提取出第二特征图Feature2,策略3中第二神经网络的编码器基于每一组I1和I2得到一个原始第二特征图,方法上是类似的,不再重复阐述。假设共有M组I1和I2,则可以对应得到M个原始第二特征图,其中第j个原始第二特征图可以记为(Feature2)j,j=1,2,…,M。
计算多个原始第二特征图的均值,可以得到第二特征图。这里如何计算均值的方式不限,例如,可以是算术平均、加权平均、几何平均等。以算术平均为例,公式可以表示为
策略3可以视为计算第二特征图Feature2的另一种实现方式,在得到Feature2后,后续步骤可以参考前文,不再重复阐述。由于Feature2的计算方式有所改变,因此对后续的图像损失的计算、光流损失、融合权重损失、特征图损失的计算均有影响,进而会影响第二神经网络和第一神经网络的参数更新。需要指出,在策略2中,第一神经网络的输入仍然只包括变换前的I1和I2,因此第一特征图Feature1的计算方式相较于前文没有改变,图像损失、光流损失、融合权重损失、特征图损失的计算公式也可以继续沿用。
在策略3中,由于第二特征图是利用多个原始第二特征图取平均得到的,相当于削弱了不同输入(包括变换前的输入和变换后的输入)对于第二神经网络中的编码器提取特征图的影响。从而,基于这样计算出的第二特征图进行后续的损失计算及参数更新,有利于改善第二神经网络的泛化能力,提高其对特征的提取能力,进而在第二神经网络的监督下,第一神经网络对特征的提取能力也随之提高,最终会改善插帧结果。
策略4
考虑第一神经网络和第二神经网络均包括编解码器、且二者共用解码器的情况,在策略1或2的基础上,对于多组I1和I2(包括变换前的和变换后的),第二神经网络中的编码器会输出多组原始第四特征图。其中,每组原始第四特征图为第二神经网络中的编码器的一个卷积层针对一组I1和I2的输出。
前文在介绍神经网络的编解码器结构时,已经说明了第二神经网络的编码器可以基于I1和I2提取出L个第四特征图L表示编码器中用于计算特征图损失的卷积层个数。策略4中基于每一组I1和I2得到也可以得到L个原始第四特征图,方法上是类似的,不再重复阐述。假设共有M组I1和I2,则可以对应得到M×L个原始第四特征图,其中,由编码器的第i个卷积层(指上述L个卷积层中的第i个)提针对第j组I1和I2取出的原始第四特征图可以记为将这M×L个原始第四特征图中由同一个卷积层提取出的原始第四特征图分为一组,就可以得到L组原始第四特征图。
计算多组原始第四特征图中每组的均值,可以得到多个第四特征图。这里如何计算均值的方式不限,例如,可以是算术平均、加权平均、几何平均等。以算术平均为例,公式可以表示为
策略4可以视为计算第四特征图的另一种实现方式,在得到后,后续步骤可以参考前文,不再重复阐述。由于的计算方式有所改变,因此对后续的图像损失的计算、光流损失、融合权重损失、特征图损失的计算均有影响,进而会影响第二神经网络和第一神经网络的参数更新。需要指出,在策略4中,第一神经网络的输入仍然只包括变换前的I1和I2,因此第三特征图的计算方式相较于前文没有改变,图像损失、光流损失、融合权重损失、特征图损失的计算公式也可以继续沿用。
在策略4中,由于每个第四特征图都是利用一组第四特征图取平均得到的,相当于削弱了不同输入(包括变换前的输入和变换后的输入)对于第二神经网络中的编码器中的卷积层提取特征图的影响。从而,基于这样计算出的多个第四特征图进行后续的损失计算及参数更新,有利于改善第二神经网络的泛化能力,提高其对特征的提取能力,进而在第二神经网络的监督下,第一神经网络对特征的提取能力也随之提高,最终会改善插帧结果。
相较策略3而言,策略4的监督信号更多,训练得到第一神经网络也具有更高的预测精度,但方式3的运算量更少,二者各有优势。
在一种实现方式中,策略1-4中对I1和I2进行的变换可以是以下至少一种:
(1)对I1和I2进行垂直翻转。
以策略1为例,根据垂直翻转后的I1和I2,利用第二神经网络可以预测出两个中间帧光流,不妨记为和然后再对和做一次垂直翻转,就可以得到原始第二中间帧光流。但应当理解,此时计算出的原始第二中间帧光流和第二神经网络直接基于I1和I2计算出的原始第二中间帧光流不一定相同。
(2)对I1和I2进行水平翻转。
以策略1为例,根据水平翻转后的I1和I2,利用第二神经网络可以预测出两个中间帧光流,不妨记为和然后再对和做一次水平翻转,就可以得到原始第二中间帧光流。但应当理解,此时计算出的第二中间帧光流和第二神经网络直接基于I1和I2计算出的第二中间帧光流不一定相同。
(3)交换I1和I2
交换后的I1为原来的I2,交换后的I2为原来的I1。以策略1为例,根据交换后的I1和I2,利用第二神经网络可以预测出两个中间帧光流,不妨记为和然后再对和做一次交换,就可以得到原始第二中间帧光流。但应当理解,此时计算出的第二中间帧光流和第二神经网络直接基于I1和I2计算出的第二中间帧光流不一定相同。
上述实现方式给出的变换(1)-(3)并不会实质性地改变I1和I2(图像的像素值没有改变、图像宽高比例也没有改变),也就是说理想情况下,若只采用这几种变换方式,利用第二神经网络得到的多个原始第二中间帧光流应该是相同的。当然,实际中网络的参数大概率不具有对称性,因此所得到的多个原始第二中间帧光流大概率是不相同的,从而,通过计算第二中间帧光流的均值可以在一定程度上消除这种由于网络本身带来的差异性,得到更精确的光流估计结果。对于融合掩膜、特征图,采用上述几种变换方式带来的有益效果也可以类似分析,不再重复阐述。
图4示出了本申请实施例提供的视频插帧方法的一种可能的流程。图4中的方法可以但不限于由图7示出的电子设备执行,关于该电子设备的结构,可以参考后文关于图7的阐述。参照图4,该方法包括:
步骤S210:获取第三视频帧和第四视频帧。
步骤S220:基于第三视频帧和第四视频帧,利用第一神经网络获得第三中间帧光流。
步骤S230:利用第三中间帧光流对第三视频帧和第四视频帧进行映射,获得第五映射视频帧和第六映射视频帧,并融合第五映射视频帧和第六映射视频帧,获得第三中间帧。
其中,步骤S220中使用的第一神经网络是利用本申请上述各实施例提供的模型训练方法训练得到的,训练过程前文已经阐述,步骤S230中得到的第三中间帧即用于插入到第三视频帧和第四视频帧之间的视频帧。
步骤S210、S220以及S230可以分别参考前文的步骤S110、S120以及S230,不再重复说明。由于该视频插帧方法利用了本申请实施例提供的模型训练方法训练得到的第一神经网络来预测中间帧光流,因此获得的第三中间帧光流具有较高的精度,进而有利于提高第三中间帧的图像质量,改善视频插帧效果。
图5示出了本申请实施例提供的模型训练装置300的功能模块图。参照图5,模型训练装置300包括:
第一帧获取模块310,用于获取第一视频帧、第二视频帧以及所述第一视频帧和所述第二视频帧的参考中间帧;
第一光流估计模块320,用于基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流;以及,基于所述第一视频帧和所述第二视频帧,利用第二神经网络获得第二中间帧光流;
第一帧计算模块330,用于利用所述第一中间帧光流对所述第一视频帧和所述第二视频帧进行映射,获得第一映射视频帧和第二映射视频帧,并融合所述第一映射视频帧和所述第二映射视频帧,获得第一中间帧;以及,利用所述第二中间帧光流对所述第一视频帧和所述第二视频帧进行映射,获得第三映射视频帧和第四映射视频帧,并融合所述第三映射视频帧和所述第四映射视频帧,获得第二中间帧;
参数更新模块340,用于计算表征所述第一中间帧和所述参考中间帧的差异的第一图像损失,以及表征所述第一中间帧光流和所述第二中间帧光流的差异的光流损失,并根据所述第一图像损失和所述光流损失更新所述第一神经网络的参数;以及,计算表征所述第二中间帧和所述参考中间帧的差异的第二图像损失,并根据所述第二图像损失更新所述第二神经网络的参数。
在模型训练装置300的一种实现方式中,第一光流估计模块320基于所述第一视频帧和所述第二视频帧,利用第二神经网络获得第二中间帧光流,包括:基于所述第一视频帧、所述第二视频帧和所述参考中间帧,利用所述第二神经网络获得第二中间帧光流。
在模型训练装置300的一种实现方式中,第一光流估计模块320基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流,包括:基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络预测得到所述第一视频帧和所述参考中间帧之间的光流、以及所述第二视频帧和所述参考中间帧之间的光流。
在模型训练装置300的一种实现方式中,第一光流估计模块320基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流,包括:基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络预测得到所述第一视频帧和所述参考中间帧之间的光流,并将该光流的相反光流确定为所述第二视频帧和所述参考中间帧之间的光流;或者,基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络预测得到所述第二视频帧和所述参考中间帧之间的光流,并将该光流的相反光流确定为所述第一视频帧和所述参考中间帧之间的光流。
在模型训练装置300的一种实现方式中,第一光流估计模块320基于所述第一视频帧和所述第二视频帧,利用第一神经网络获得第一中间帧光流,包括:基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络获得第一中间帧光流和第一融合掩膜;第一帧计算模块330融合所述第一映射视频帧和所述第二映射视频帧,获得第一中间帧,包括:利用所述第一融合掩膜融合所述第一映射视频帧和所述第二映射视频帧,获得第一中间帧;参数更新模块340还用于:计算表征所述第一融合掩膜和第二融合掩膜的差异的融合权重损失,并根据所述融合权重损失更新所述第一神经网络的参数;其中,所述第二融合掩膜是基于所述第一视频帧和所述第二视频帧,利用所述第二神经网络获得的。
在模型训练装置300的一种实现方式中,所述第二神经网络在规模上大于所述第一神经网络。
在模型训练装置300的一种实现方式中,所述第一神经网络和所述第二神经网络均采用编解码器结构。
在模型训练装置300的一种实现方式中,所述第一神经网络和所述第二神经网络共用一个解码器,参数更新模块340还用于:计算表征第一特征图和第二特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,所述第一特征图为所述第一神经网络的编码器输出,所述第二特征图为所述第二神经网络的编码器输出。
在模型训练装置300的一种实现方式中,所述第一神经网络和所述第二神经网络共用一个解码器,参数更新模块340还用于:计算表征多个第三特征图和对应的多个第四特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,每个第三特征图为所述第一神经网络的编码器的一个卷积层输出,每个第四特征图为所述第二神经网络的编码器的一个卷积层输出。
在模型训练装置300的一种实现方式中,参数更新模块340还用于:在第一帧计算模块330获得所述第一中间帧和所述第二中间帧之后,确定所述第一中间帧和所述第二中间帧中的学习区域,所述学习区域为所述第二中间帧与所述参考中间帧的差异小于所述第一中间帧与所述参考中间帧的差异的区域;参数更新模块340计算表征所述第一中间帧光流和所述第二中间帧光流的差异的光流损失,包括:仅在所述第一中间帧和所述第二中间帧中的所述学习区域内,计算表征所述第一中间帧光流和所述第二中间帧光流的差异的光流损失。
在模型训练装置300的一种实现方式中,第一光流估计模块320基于所述第一视频帧和所述第二视频帧,利用第二神经网络获得第二中间帧光流,包括:对所述第一视频帧和所述第二视频帧进行至少一种变换,得到至少一组变换后的第一视频帧和第二视频帧;分别基于所述第一视频帧和所述第二视频帧、以及所述至少一组变换后的第一视频帧和第二视频帧,利用所述第二神经网络获得多个原始第二中间帧光流;计算所述多个原始第二中间帧光流的均值,获得所述第二中间帧光流。
在模型训练装置300的一种实现方式中,第一光流估计模块320分别基于所述第一视频帧和所述第二视频帧、以及所述至少一组变换后的第一视频帧和第二视频帧,利用所述第二神经网络获得多个原始第二中间帧光流,包括:分别基于所述第一视频帧和所述第二视频帧、以及所述至少一组变换后的第一视频帧和第二视频帧,利用所述第二神经网络获得多个原始第二中间帧光流以及多个原始第二融合掩膜;参数更新模块340还用于:计算所述多个原始第二融合掩膜的均值,获得第二融合掩膜;计算表征第一融合掩膜和所述第二融合掩膜的差异的融合权重损失,并根据所述融合权重损失更新所述第一神经网络的参数;其中,所述第一融合掩膜是基于所述第一视频帧和所述第二视频帧,利用所述第一神经网络获得的。
在模型训练装置300的一种实现方式中,所述第一神经网络和所述第二神经网络均采用编解码器结构,且所述第一神经网络和所述第二神经网络共用一个解码器,参数更新模块340还用于:计算多个原始第二特征图的均值,获得第二特征图;其中,所述多个原始第二特征图为所述第二神经网络中的编码器分别针对于所述第一视频帧和所述第二视频帧、以及至少一组变换后的第一视频帧和第二视频帧的输出;计算表征第一特征图和所述第二特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,所述第一特征图为所述第一神经网络的编码器输出。
在模型训练装置300的一种实现方式中,所述第一神经网络和所述第二神经网络均采用编解码器结构,且所述第一神经网络和所述第二神经网络共用一个解码器,参数更新模块340还用于:计算多组原始第四特征图的均值,获得多个第四特征图;其中,每组原始第四特征图包括多个原始第四特征图,每组原始第四特征图为所述第二神经网络中的编码器的一个卷积层分别针对于所述第一视频帧和所述第二视频帧、以及至少一组变换后的第一视频帧和第二视频帧的输出;计算表征多个第三特征图和对应的所述多个第四特征图的差异的特征图损失,并根据所述特征图损失更新所述第一神经网络的参数;其中,每个第三特征图表征所述第一神经网络的编码器的一个卷积层输出。
在模型训练装置300的一种实现方式中,对所述第一视频帧和所述第二视频帧进行的变换包括以下至少一种:对所述第一视频帧和所述第二视频帧进行垂直翻转;对所述第一视频帧和所述第二视频帧进行水平翻转;交换所述第一视频帧和所述第二视频帧。
本申请实施例提供的模型训练装置300,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
图6示出了本申请实施例提供的视频插帧装置400的功能模块图。参照图6,视频插帧装置400包括:
第二帧获取模块410,用于获取第三视频帧和第四视频帧;
第二光流估计模块420,用于基于所述第三视频帧和所述第四视频帧,利用本申请实施例提供的模型训练方法(包括其任意一种实现方式)训练得到的第一神经网络获得第三中间帧光流;
第二帧计算模块430,用于利用所述第三中间帧光流对所述第三视频帧和所述第四视频帧进行映射,获得第五映射视频帧和第六映射视频帧,并融合所述第五映射视频帧和所述第六映射视频帧,获得用于插入到所述第三视频帧和所述第四视频帧之间的第三中间帧。
本申请实施例提供的视频插帧装置400,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
图7示出了本申请实施例提供的电子设备500的一种可能的结构。参照图7,电子设备500包括:处理器510、存储器520以及通信接口530,这些组件通过通信总线540和/或其他形式的连接机构(未示出)互连并相互通讯。
其中,处理器510包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器510可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network ProcessingUnit,简称NPU)、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuits,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器510为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
存储器520包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,简称EEPROM)等。
处理器510以及其他可能的组件可对存储器520进行访问,读和/或写其中的数据。特别地,在存储器520中可以存储一个或多个计算机程序指令,处理器510可以读取并运行这些计算机程序指令,以实现本申请实施例提供的模型训练方法和/或视频插帧方法。
通信接口530包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口530可以包括进行有线和/或无线通信的接口。
可以理解,图7所示的结构仅为示意,电子设备500还可以包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。图7中所示的各组件可以采用硬件、软件或其组合实现。电子设备500可能是实体设备,例如PC机、笔记本电脑、平板电脑、手机、服务器、智能穿戴设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,电子设备500也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的模型训练方法和/或视频插帧方法。例如,计算机可读存储介质可以实现为图7中电子设备500中的存储器520。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。