一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

光流估计方法、模型训练方法及对应装置与流程

2021-10-24 11:57:00 来源:中国专利 TAG:估计 方法 装置 模型 训练


1.本发明涉及光流估计技术领域,具体而言,涉及一种光流估计方法、模型训练方法及对应装置。


背景技术:

2.稠密光流估计(后文简称光流估计)是视频处理和视频理解中的一个重要组成部分,稠密光流用于描述视频某一帧图像的每个像素向下一帧的运动矢量。近年来,基于深度学习的算法逐渐成为光流估计的主流算法。
3.因为实际拍摄的视频很难进行精确的光流标注,所以目前的光流估计算法的训练数据集大多是利用计算机图形学的方法生成。然而,由于制作高分辨率(如2k、4k分辨率)的数据集成本较高、且后期的存储、运算都将消耗巨大的资源,因此,目前广泛使用的训练数据集的分辨率往往比较低(如广泛使用的flyingchairs、flyingthings数据集,其分辨率通常低于720
×
1280)。从而,现有算法训练得到的模型通常也仅适用于较低分辨率视频的光流估计,当需要在较高分辨率的视频中估计光流时,一般有两种解决方法:
4.其一是先对视频帧进行下采样,然后再利用模型进行光流估计,但下采样必然造成图像信息损失,导致光流估计的精度降低;
5.其二是在训练时临时将训练图像的分辨率提高,但此举会使得图像内容变得模糊,从而训练效果不佳。
6.总之,现有算法基于低分辨率的数据集训练的光流估计模型,在针对高分辨率的视频进行光流估计时,估计结果较差。


技术实现要素:

7.本技术实施例的目的在于提供一种光流估计方法、模型训练方法及对应装置,以改善上述技术问题。
8.为实现上述目的,本技术提供如下技术方案:
9.第一方面,本技术实施例提供一种光流估计方法,包括:获取两帧推断图像;将所述两帧推断图像输入至光流估计模型,经所述光流估计模型中依次连接的多个光流估计模块进行运算,输出所述两帧推断图像之间的光流;其中,第一个光流估计模块的输入数据包括所述两帧推断图像以及初始光流,除第一个之外的光流估计模块的输入数据包括所述两帧推断图像以及上一个光流估计模块输出的光流;每个光流估计模块进行的运算包括:融合所述光流估计模块的输入数据,得到融合数据;对所述融合数据进行下采样,得到下采样结果;基于所述下采样结果计算得到初步光流;将所述初步光流上采样回所述输入数据的分辨率,得到所述光流估计模块输出的光流;其中,各光流估计模块的下采样倍数依次递减,第一个光流估计模块的下采样倍数为:所述推断图像与训练图像的分辨率的比值,或者,所述比值附近的值。
10.在上述方法中,每个光流估计模块输出的光流都可以视为对两帧推断图像之间的
光流的一个估计,由于各光流估计模块的输入数据均包括推断图像,且各光流估计模块的下采样倍数依次递减,因此各光流估计模块下采样所带来的图像信息损失依次递减,各光流估计模块对应的感受野也依次递减。从而,靠前的光流估计模块(特别是第一个光流估计模块)主要用于捕捉推断图像中物体的较大的运动,靠后的光流估计模块则主要用于捕捉推断图像中物体的较细节的运动,并且,由于各光流估计模块的输入数据均包括上一个光流估计模块输出的光流,因此该光流估计模型实现了对光流由粗到精的渐进式估计。
11.进一步的,由于第一个光流估计模块的下采样倍数为推断图像与训练图像的分辨率的比值(或者该比值附近的值),因此第一个光流估计模块在训练阶段基于训练图像(可以是低分辨率图像)所学习到的参数也能够很好地处理推断图像(可以是高分辨率图像),即能够较好地估计图像中物体的基本运动情况(即较大幅度的运动),在此基础上通过后续光流估计模块所估计的物体运动细节,不断优化第一个光流估计模块输出的光流,因此能够最终得到较高精度的光流估计结果。
12.在第一方面的一种实现方式中,所述融合所述光流估计模块的输入数据,得到融合数据,包括:利用所述输入数据中的光流将所述输入数据中的第二推断图像对齐到所述输入数据中第一推断图像,得到对齐后的第二推断图像;融合所述输入数据中的光流、所述第一推断图像以及所述对齐后的第二推断图像,得到融合数据。
13.第一推断图像可以是两帧推断图像中的任一帧,第二推断图像则是两帧推断图像中不同于第一推断图像的一帧。在上述实现方式中,将光流、原始的推断图像、利用光流对齐后的推断图像进行融合,由于考虑了多种信息对光流估计的贡献,因此基于此融合数据进行后续的光流估计可以获得较好的结果。
14.在第一方面的一种实现方式中,所述基于所述下采样结果计算得到初步光流,包括:利用至少一个卷积层对所述下采样结果进行处理,得到初步光流。
15.在上述实现方式中,利用卷积神经网络(即包含至少一个卷积层的神经网络)估计初步光流,可以取得较好的估计效果。
16.在第一方面的一种实现方式中,所述对所述融合数据进行下采样,得到下采样结果,包括:利用下采样层对所述融合数据进行下采样,得到下采样结果;所述将所述初步光流上采样回所述输入数据的分辨率,包括:利用上采样层将所述初步光流上采样回所述输入数据的分辨率;其中,所述下采样层和所述上采样层中不包括需要训练的参数。
17.在上述实现方式中,由于下采样层和上采样层不包括需要训练的参数,因此容易泛化到不同分辨率的图像上,无需进行参数改写。
18.在第一方面的一种实现方式中,所述下采样层下采样的方式包括以下之一:双线性插值、双三次插值以及最近邻插值;所述上采样层上采样的方式与所述下采样层对应。
19.上述实现方式中提供的几种插值算法运算简单,且支持采样倍数为小数,灵活性较高。
20.在第一方面的一种实现方式中,除第一个之外的光流估计模块的下采样倍数为:上一个光流估计模块的下采样倍数除以比例系数得到的数值,或者所述数值附近的值,所述比例系数大于1。
21.在上述实现方式中,可以按比例计算各光流估计模块应取的下采样倍数,计算方式简单并且使得下采样倍数的分布比较均匀,有利于提高光流估计精度。
22.在第一方面的一种实现方式中,所述数值附近的值是指所述数值的1/2到2倍之间的值。
23.在上述实现方式中,将下采样倍数的波动范围限定在[1/2,2]之间,这是一个比较合理的范围,若波动范围设置得过小,则导致下采样倍数的选择缺少灵活性,若波动范围设置得过大,则导致用于计算下采样倍数的比例系数的作用被削弱。
[0024]
在第一方面的一种实现方式中,所述光流估计模块的下采样倍数还与所述推断图像中物体的运动幅度相关。
[0025]
根据前文阐述,不同的光流估计模块用于捕捉推断图像中不同幅度的运动,因此在上述实现方式中,根据推断图像中物体的运动幅度确定光流估计模块的下采样倍数,有利于更精确地估计光流。
[0026]
在第一方面的一种实现方式中,第一个光流估计模块的下采样倍数与所述推断图像中物体的运动幅度正相关。
[0027]
根据前文阐述,第一个光流估计模块主要用于捕捉物体的大幅运动。在上述实现方式中,推断图像中物体的运动幅度越大,第一个光流估计模块的下采样倍数也越大,从而有利于扩大其感受野,有效捕捉物体的更大幅度的运动。推断图像中物体的运动幅度越小,第一个光流估计模块的下采样倍数也越小,从而有利于减小其感受野,有效捕捉物体的更小幅度的运动。总之,若第一个光流估计模块的下采样倍数与推断图像中物体的运动幅度正相关,可以使其感受野与物体的运动情况相匹配,从而提高光流估计精度。
[0028]
在第一方面的一种实现方式中,各个光流估计模块的下采样倍数均与所述推断图像中物体的运动幅度正相关。
[0029]
在上述实现方式中,推断图像中物体的运动幅度越大,各光流估计模块的下采样倍数也越大,从而有利于扩大其感受野,有效捕捉物体的较大幅度的运动。推断图像中物体的运动幅度越小,各光流估计模块的下采样倍数也越小,从而有利于减小其感受野,有效捕捉物体的较小幅度的运动。总之,若各光流估计模块的下采样倍数均与推断图像中物体的运动幅度正相关,可以使其感受野与物体的运动情况相匹配,从而提高光流估计精度。
[0030]
第二方面,本技术实施例提供一种模型训练方法,包括:获两帧训练图像;将所述两帧训练图像输入至光流估计模型,经所述光流估计模型中依次连接的多个光流估计模块进行运算,输出所述两帧训练图像之间的光流;其中,第一个光流估计模块的输入数据包括所述两帧训练图像以及初始光流,除第一个之外的光流估计模块的输入数据包括所述两帧训练图像以及上一个光流估计模块输出的光流;每个光流估计模块进行的运算包括:融合所述光流估计模块的输入数据,得到融合数据;对所述融合数据进行下采样,得到下采样结果;基于所述下采样结果计算得到初步光流;将所述初步光流上采样回所述输入数据的分辨率,得到所述光流估计模块输出的光流;各光流估计模块的下采样倍数依次递减;根据至少一个光流估计模块输出的光流以及光流标签计算光流估计损失,并根据所述光流估计损失更新所述光流估计模型的参数。
[0031]
上述模型训练方法训练得到的光流估计模型可用于第一方面或其任意一种实现方式提供的光流估计方法中,该模型可对高分辨率图像的光流进行有效估计,并且可使用低分辨率图像(即现有数据集)进行训练。
[0032]
在第二方面的一种实现方式中,所述方法还包括:在训练过程中改变各光流估计
模块的下采样倍数,改变下采样倍数的方式包括随机改变,或者,按固定方式改变。
[0033]
在上述实现方式中,通过改变各光流估计模块的下采样倍数的组合,使得光流估计模型能够有效处理不同分辨率的图像。在推断阶段,除第一个光流估计模块以外,其余光流估计模块的下采样倍数到底要选择多少并没有严格的规律,通过增强模型的泛化性能,在一定程度上削弱了这些下采样倍数的选择要求,即,即使这些下采样倍数没有采用最优的值,对光流估计结果也不会造成很大的影响。
[0034]
第三方面,本技术实施例提供一种光流估计装置,包括:推断图像获取单元,用于获取两帧推断图像;推断光流估计单元,用于将所述两帧推断图像输入至光流估计模型,经所述光流估计模型中依次连接的多个光流估计模块进行运算,输出所述两帧推断图像之间的光流;其中,第一个光流估计模块的输入数据包括所述两帧推断图像以及初始光流,除第一个之外的光流估计模块的输入数据包括所述两帧推断图像以及上一个光流估计模块输出的光流;每个光流估计模块进行的运算包括:融合所述光流估计模块的输入数据,得到融合数据;对所述融合数据进行下采样,得到下采样结果;基于所述下采样结果计算得到初步光流;将所述初步光流上采样回所述输入数据的分辨率,得到所述光流估计模块输出的光流;其中,各光流估计模块的下采样倍数依次递减,第一个光流估计模块的下采样倍数为:所述推断图像与训练图像的分辨率的比值,或者,所述比值附近的值。
[0035]
第四方面,本技术实施例提供一种模型训练装置,包括:训练图像获取单元,用于获两帧训练图像;训练光流估计单元,用于将所述两帧训练图像输入至光流估计模型,经所述光流估计模型中依次连接的多个光流估计模块进行运算,输出所述两帧训练图像之间的光流;其中,第一个光流估计模块的输入数据包括所述两帧训练图像以及初始光流,除第一个之外的光流估计模块的输入数据包括所述两帧训练图像以及上一个光流估计模块输出的光流;每个光流估计模块进行的运算包括:融合所述光流估计模块的输入数据,得到融合数据;对所述融合数据进行下采样,得到下采样结果;基于所述下采样结果计算得到初步光流;将所述初步光流上采样回所述输入数据的分辨率,得到所述光流估计模块输出的光流;各光流估计模块的下采样倍数依次递减;参数更新单元,用于根据至少一个光流估计模块输出的光流以及光流标签计算光流估计损失,并根据所述光流估计损失更新所述光流估计模型的参数。
[0036]
第五方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面、第二方面或这两方面的任意一种可能的实现方式提供的方法。
[0037]
第六方面,本技术实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面、第二方面或这两方面的任意一种可能的实现方式提供的方法。
附图说明
[0038]
为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0039]
图1示出了本技术实施例提供的光流估计方法的一种可能的流程;
[0040]
图2示出了本技术实施例提供的光流估计模型的一种可能的结构;
[0041]
图3示出了本技术实施例提供的光流估计模块的一种可能的结构;
[0042]
图4示出了本技术实施例提供的模型训练方法的一种可能的流程;
[0043]
图5示出了本技术实施例提供的光流估计装置的一种可能的结构;
[0044]
图6示出了本技术实施例提供的模型训练装置的一种可能的结构;
[0045]
图7示出了本技术实施例提供的电子设备的一种可能的结构。
具体实施方式
[0046]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0047]
术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0048]
术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0049]
图1示出了本技术实施例提供的光流估计方法的一种可能的流程。图2和图3则分别示出了该方法中所涉及的光流估计模型和光流估计模块的可能的结构,供阐述光流估计方法时参考。该方法可以但不限于由图7示出的电子设备执行,关于该电子设备的结构,可以参考后文关于图7的阐述。
[0050]
参照图1,该方法包括:
[0051]
步骤s110:获取两帧推断图像。
[0052]
基于深度学习的光流估计一般至少包括两个阶段:训练阶段和推断阶段,其中,训练阶段利用训练集中的训练图像(也称训练样本)训练光流估计模型,推断阶段则使用训练好的光流估计模型进行光流估计。步骤s110中所谓的推断图像是指推断阶段所使用的图像。
[0053]
不妨将两帧推断图像分别记为i1和i2,i1和i2具有一定的采集时间间隔,例如,可以是视频中连续或者间隔的两个视频帧。由于视频中通常包含大量的视频帧,因此若对视频中的光流进行估计,可以连续地应用本技术提出的光流估计方法,每次估计两个视频帧之间的光流。推断图像的获取方式不限:例如,可以一边采集视频,一边实时地根据视频帧进行光流估计;又例如,可以读取视频文件,从中提取出视频帧进行光流估计,等等。注意,以上所说的视频不限于实际采集的视频,也可以是根据计算机视觉算法生成的视频。
[0054]
光流估计方法的目标是估计i1和i2之间的光流,这样的光流有两个,分别是i1到i2的光流和i2到i1的光流,分别记为f1→2和f2→1,在后文中主要以估计f1→2的情况为例进行阐述。
[0055]
步骤s120:将两帧推断图像输入至光流估计模型,经光流估计模型中依次连接的多个光流估计模块进行运算,输出两帧推断图像之间的光流。
[0056]
光流估计模型包括多个光流估计模块,但也不排除包含其他网络结构。这些光流估计模块依次连接,形成串联结构,位于模型起始位置的光流估计模块称为第一个光流估计模块,第一个光流估计模块的下一个光流估计模块称为第二个光流估计模块,以此类推,位于模型末尾位置的光流估计模块称为最后一个光流估计模块。参照图2,图2中共示出了3个光流估计模块,为方便表示,分别记为光流估计模块1、光流估计模块2以及光流估计模块3。
[0057]
其中,第一个光流估计模块的输入数据包括i1、i2以及一个初始光流,不妨将其记为该初始光流可以取固定值,例如0向量,初始光流的取值可在光流估计方法执行以前预先设定好,也可以在开始执行光流估计方法之后再进行赋值。除第一个之外的光流估计模块的输入数据包括i1、i2以及上一个光流估计模块输出的光流,比如,将第i(i>1)个光流估计模块输出的光流记为则第i

1个光流估计模块输出的光流为会作为第i个光流估计模块的输入数据中的一项。最后一个光流估计模块输出的光流也就是光流估计模型估计出的光流f1→2。参照图2,光流估计模块1输出的作为光流估计模块2的一项输入数据,光流估计模块2输出的作为光流估计模块3的一项输入数据,光流估计模块3输出的
[0058]
进一步的,每个光流估计模块输出的光流都可以视为对f1→2的一个估计,从而,每个光流估计模块的估计结果都可以视为对上一个光流估计模块的估计结果的优化(第一个光流估计模块的估计结果可视为对初始光流的优化),从而该光流估计模型实现了对光流的渐进式估计。
[0059]
每个光流估计模块进行相似的运算以得到输出的光流,运算过程可以包括以下步骤:
[0060]
步骤a:融合光流估计模块的输入数据,得到融合数据。
[0061]
融合是指将输入数据中的几项信息整合为一项信息的操作,步骤a中融合输入数据的方式不限。下面列举其中两种方式:
[0062]
方式1:
[0063]
直接将输入数据中的光流以及两帧推断图像融合。比如对于第i个光流估计模块,可以将(i取1也成立,因为上文已经将初始光流表示为)、i1和i2直接拼接(concat)起来得到融合数据。其中的拼接也可以替换为其他运算,如加权求和。
[0064]
方式2:
[0065]
可以先利用输入数据中的光流将输入数据中的第二推断图像对齐到输入数据中第一推断图像,得到对齐后的第二推断图像,然后融合输入数据中的光流、第一推断图像以及对齐后的第二推断图像,得到融合数据。
[0066]
其中,第一推断图像可以是两帧推断图像中的任一帧,第二推断图像则是两帧推断图像中不同于第一推断图像的一帧。参照图3中的第i个光流估计模块,不妨假定第一推
断图像是i1,第二推断图像是i2,则可以先利用对i2做后向映射(backward warping),将其对齐到i1,对齐后的i2记为然后将i1和进行拼接,得到融合数据。当然,若各光流估计模块估计的是i2到i1的光流,即第i

1个光流估计模块输出的光流为此时将i2对齐到i1则可以采用前向映射(forward warping)。
[0067]
在方式2中,将光流、原始的推断图像、利用光流对齐后的推断图像进行融合,由于考虑了多种信息对光流估计的贡献,因此基于此融合数据进行后续的光流估计可以获得较好的结果。
[0068]
在输入数据中,光流和两帧推断图像都具有相同的分辨率,融合操作并不改变分辨率,即融合数据也具有和输入数据相同的分辨率。
[0069]
步骤b:对融合数据进行下采样,得到下采样结果。
[0070]
步骤c:基于下采样结果计算得到初步光流。
[0071]
步骤d:将初步光流上采样回输入数据的分辨率,得到光流估计模块输出的光流。
[0072]
步骤b、c、d结合在一起进行阐述。步骤b中的下采样倍数和步骤d中的上采样倍数是一致的,这样在步骤d中才能将步骤c中得到的初步光流还原回输入数据的分辨率。参照图3,第i个光流估计模块的下采样倍数是k
i
,则该模块的上采样倍数也是k
i

[0073]
不妨将光流估计模块中用于执行下采样操作的结构称为下采样层,用于执行上采样操作的结构称为上采样层。
[0074]
在一种实现方式中,下采样层和上采样层被设计为不含需要训练的参数(但可以包含其他参数,例如下采样倍数),这样训练得到的光流估计模型容易泛化到不同分辨率的图像上(即对于不同分辨率的图像都可以有效处理),无需进行参数改写。
[0075]
例如,下采样层下采样的方式可以采用双线性插值、双三次插值以及最近邻插值等方式之一。这几种插值算法运算简单,且支持下采样倍数为小数,灵活性较高。上采样层上采样的方式应与下采样层对应,比如,下采样层采用双线性插值,上采样层也应采用双线性插值。
[0076]
当然,在其他实现方式中,下采样层和上采样层也可能包含需要训练的参数,例如,下采样层采用卷积进行下采样,而上采样层采用反卷积进行上采样。
[0077]
步骤c实现光流估计模块的核心功能,即基于较低分辨率的下采样结果估计较低分辨率的光流,然后再通过步骤d得到较高分辨率的光流。在一种实现方式中,可以利用一个卷积神经网络估计初步光流,该卷积神经网络包括至少一个卷积层,但也不排除包含其他结构。参照图3,图3中的卷积神经网络实现为n(n>1)个连续的卷积层,这些卷积层步长(stride)为1,即不会改变下采样结果的分辨率,该网络结构简单,并且光流估计效果较好。当然,也不排除在步骤c中采用其他类型的神经网络或者其他算法进行初步光流的估计。
[0078]
在光流估计模型中,第一个光流估计模块的下采样倍数被设置为推断图像与训练图像的分辨率的比值,或者,该比值附近的值。并且,各光流估计模块的下采样倍数被设置为依次递减的。注意,这里所说的“设置”,可以是在光流估计方法执行之前预先设定好,也可以是在光流估计模块开始进行光流估计之前再临时进行设定,等等。后文中多处出现的“设置”一次,均可以参照此含义进行理解,不再一一说明。根据前文,由于上采样倍数和下采样倍数总是保持一致,所以下面仅讨论下采样倍数的设置。
[0079]
本技术实施例提出的光流估计方法主要针对推断图像的分辨率不低于训练图像的分辨率的情况(当然,若推断图像的分辨率低于训练图像的分辨率,该方法也可用),下面主要按照此前提进行举例及阐述。例如,推断图像的分辨率为2560
×
1440,训练图像的分辨率为640
×
480。所谓推断图像和训练图像的分辨率比值,可以定义为两帧图像宽度的比值,如2560/640=4,也可以定义为两帧图像高度的比值,如1440/480=3,也可以定义为上面两个比值的均值,如(4 3)/2=3.5,当然也不排除采取其他定义方式。
[0080]
至于分辨率比值附近的值,有多种定义方式:
[0081]
比如,可以是分辨率比值取整(包括上取整、下取整、四舍五入等方式)后的值。
[0082]
又比如,可以是包含分辨率比值的一个区间内的值。例如区间[x

δ,x δ]内的值,其中x表示分辨率比值,δ表示区间宽度,δ可取常数或者与x相关的值,如0.1x、0.5x等,但δ不宜取的太大(如大于0.5x),否则区间内的某些值不宜再称为x附近的值;又例如区间[x
×
μ,x/μ]内的值,其中x表示分辨率比值,μ表示缩放系数,0<μ<1,如可取0.5、0.9等,但μ不宜取的太小(如小于0.5),否则区间内的某些值不宜再称为x附近的值。
[0083]
上面所说的下采样倍数递减应理解为非严格的递减,即除第一个以外的光流估计模块的下采样倍数不得大于上一个光流估计模块的下采样倍数。特别地,在推断阶段,各光流估计模块的下采样倍数均相等的情况不属于上面所说的递减。例如,对于图2,若光流估计模块1的下采样倍数为4,则三个光流估计模块的下采样倍数可以是[4,2,1]、[4,2,2]、[4,1,1]等组合。
[0084]
下采样倍数的设置可以由人工运算和设置,也可以由计算机程序自动运算和设置,或者在计算机程序自动运算的基础上,由人工进行微调,等等。
[0085]
下面分析一下光流估计模块的下采样倍数按照上述要求进行取值的优点:
[0086]
首先,之前已经提到,每个光流估计模块输出的光流都可以视为对两帧推断图像之间的光流的一个估计,由于各光流估计模块的输入数据均包括两帧推断图像,且各光流估计模块的下采样倍数依次递减,因此各光流估计模块下采样所带来的图像信息损失依次递减,各光流估计模块对应的感受野也依次递减。其中,感受野越大直观理解就是光流估计模块可以“看到”推断图像中更大的范围,感受野越小直观理解就是光流估计模块可以“看到”推断图像中更小的范围。
[0087]
从而,靠前的光流估计模块(特别是第一个光流估计模块)主要用于捕捉推断图像中物体的较大的运动,靠后的光流估计模块则主要用于捕捉推断图像中物体的较细节的运动。其中,物体的运动的量化表现就是推断图像中的光流。由于各光流估计模块的输入数据均包括上一个光流估计模块输出的光流,因此整个光流估计模型的工作原理为:先估计推断图像中物体的基本运动情况,再进一步估计推断图像中物体的运动细节,通过不断优化各模块的光流估计结果,实现了对光流由粗到精的渐进式估计。
[0088]
进一步的,由于第一个光流估计模块的下采样倍数被设置为推断图像(可以是高分辨率图像)与训练图像(可以是低分辨率图像)的分辨率的比值(或者该比值附近的值),因此第一个光流估计模块在下采样之后,下采样结果的分辨率等于或接近于训练图像的分辨率,从而第一个光流估计模块在基于此下采样结果进行光流估计时,其在训练阶段基于训练图像所学习到的参数也能够很好地处理推断图像,即能够较好地估计图像中物体的基本运动情况。在此基础上,通过后续光流估计模块所估计的物体运动细节,不断优化第一个
光流估计模块输出的光流,能够最终得到较高精度的光流估计结果。
[0089]
上述光流估计方法的另一个特点是,可以根据推断图像的分辨率来对各光流估计模块的下采样倍数进行调整,即方法具有较强的泛化能力,而现有技术中,模型的参数一般在训练完成后就固定不变,不能有效地处理不同分辨率的图像。
[0090]
应当理解,该光流估计方法虽然能在训练图像分辨率低而推断图像分辨率高的情况下,精确地估计光流,但并不表示该方法中的推断图像必须是高清图像(如1080p、2k、4k),其也可以是标清的图像(如720p)甚至是低清图像(如480p)。即方法的适用范围较广,实用价值较高。
[0091]
下面在以上实施例的基础上,继续介绍各光流估计模块的下采样倍数的一些设置方式:
[0092]
在一种实现方式中,除第一个之外的光流估计模块的下采样倍数可以被设置为:上一个光流估计模块的下采样倍数除以比例系数得到的数值,或者该数值附近的值,为方便表述,后文将该数值称为初步采样倍数。其中,比例系数大于1,如可以取1.5、2、4等。
[0093]
以图2为例,假设光流估计模块1的下采样倍数设置为4,比例系数取2,则光流估计模块2和3的下采样倍数可以设置为2和1,或者,2和1附近的值。
[0094]
这种按比例系数计算下采样倍数的方式简单高效,并且使得下采样倍数的分布比较均匀,即各光流估计模块分别用于捕捉不同尺度下的物体运动,从而有利于提高光流估计精度。
[0095]
进一步的,初步采样倍数附近的值,有多种定义方式:
[0096]
比如,可以是初步采样倍数取整(包括上取整、下取整、四舍五入等方式)后的值。
[0097]
又比如,可以是包含初步采样倍数的一个区间内的值。例如区间[m

ε,m ε]内的值,其中m表示初步采样倍数,ε表示区间宽度,ε可取常数或者与m相关的值,如0.1m、0.5m等,但ε不宜取的太大(如大于0.5m),否则区间内的某些值不宜再称为m附近的值;又例如区间[m
×
β,m/β]内的值,其中m表示初步采样倍数,β表示缩放系数,0<β<1,如可取0.5、0.9等,但β不宜取的太小(如小于0.5),否则区间内的某些值不宜再称为m附近的值。
[0098]
将上述包含初步采样倍数的区间称为下采样倍数的波动范围,若波动范围设置得过小,则导致下采样倍数的设置缺少灵活性,若波动范围设置得过大,则导致用于计算下采样倍数的比例系数的作用被削弱,因此该波动范围需要合理设置,例如按照上面给出的例子进行设置。
[0099]
另外,还需要注意的是,不管下采样倍数的取值如何在初步采样倍数附近波动,都必须首先满足前面提到的下采样倍数递减的要求。
[0100]
在一种实现方式中,光流估计模块(部分或全部的)的下采样倍数在设置时,除了要满足前面提到的原则进行设置(下采样倍数递减要求、第一个光流估计模块的设置要求),还可以同时考虑推断图像中物体的运动幅度。根据前文阐述,不同的光流估计模块用于捕捉推断图像中物体的不同幅度的运动,因此在考虑推断图像中物体的运动幅度这一因素时所设置的下采样倍数,有利于光流估计模块更精确地估计光流。
[0101]
至于如何评估推断图像中物体的运动幅度,可以人工确定,例如根据推断图像的场景确定,比如,采集推断图像的摄像头距离运动目标较远,根据透视原理,该运动目标在推断图像中的运动幅度大概率是比较小的。当然也可以利用计算机程序计算得到。
[0102]
可以理解的,此种实现方式还可以和前面按照比例系数计算下采样倍数的实现方式相结合。
[0103]
下面用两个例子说明可以如何根据运动幅度设置下采样倍数:
[0104]
例1:
[0105]
将第一个光流估计模块的下采样倍数设置为与推断图像中物体的运动幅度正相关,其他光流估计模块的下采样倍数可以按需设置,具体不限定。
[0106]
可选的,可以先计算推断图像和训练图像的分辨率比值,然后再根据推断图像中物体的运动幅度适当调整比值计算结果,得到第一个光流估计模块的下采样倍数。应当理解,虽然可以调节比值计算结果,但调节后得到的下采样倍数也必须位于分辨率比值附近。
[0107]
根据前文阐述,第一个光流估计模块主要用于捕捉物体的大幅运动。在例1中,推断图像中物体的运动幅度越大,第一个光流估计模块的下采样倍数也越大,从而有利于扩大其感受野,有效捕捉物体的更大幅度的运动;推断图像中物体的运动幅度越小,第一个光流估计模块的下采样倍数也越小,从而有利于减小其感受野,有效捕捉物体的更小幅度的运动。总之,将第一个光流估计模块的下采样倍数设置为与推断图像中物体的运动幅度正相关,可以使其感受野与物体的运动情况相匹配,从而提高光流估计精度。
[0108]
例2
[0109]
将各个光流估计模块的下采样倍数均设置与推断图像中物体的运动幅度正相关。
[0110]
可选的,可以先计算推断图像和训练图像的分辨率比值,然后再根据推断图像中物体的运动幅度适当调整比值计算结果,得到第一个光流估计模块的下采样倍数,然后,根据一个比例系数依次计算其余光流估计模块的下采样倍数。在比例系数固定的情况下,若第一个光流估计模块的下采样倍数设置为与推断图像中物体的运动幅度正相关,其余各光流估计模块的下采样倍数自然也与推断图像中物体的运动幅度正相关。
[0111]
在例2中,推断图像中物体的运动幅度越大,各光流估计模块的下采样倍数也越大,从而有利于扩大其感受野,有效捕捉物体的较大幅度的运动。推断图像中物体的运动幅度越小,各光流估计模块的下采样倍数也越小,从而有利于减小其感受野,有效捕捉物体的较小幅度的运动。总之,将各光流估计模块的下采样倍数设置为均与推断图像中物体的运动幅度正相关,可以使其感受野与物体的运动情况相匹配,从而提高光流估计精度。
[0112]
在一种实现方式中,还可以根据光流估计模型的运算量设置光流估计模块(部分或全部的)的下采样倍数。其原因在于,光流估计模块的下采样倍数越大,进行光流估计时的运算量也就越小,反之,光流估计模块的下采样倍数越小,进行光流估计时的运算量也就越大。例如,为了加快光流估计速度,可以适当增大各光流估计模块的下采样倍数。
[0113]
可以理解的,此种实现方式还可以和前面按照比例系数计算下采样倍数的实现方式,和/或,按照物体的运动幅度计算下采样倍数的实现方式相结合。
[0114]
图4示出了本技术实施例提供的模型训练方法的一种可能的流程,该方法用于训练以上各实施例中的光流估计模型。该方法可以但不限于由图7示出的电子设备执行,关于该电子设备的结构,可以参考后文关于图7的阐述。参照图4,该方法包括:
[0115]
步骤s210:获两帧训练图像。
[0116]
步骤s220:将两帧训练图像输入至光流估计模型,经光流估计模型中依次连接的多个光流估计模块进行运算,输出两帧训练图像之间的光流。
[0117]
其中,第一个光流估计模块的输入数据包括两帧训练图像以及初始光流,除第一个之外的光流估计模块的输入数据包括两帧训练图像以及上一个光流估计模块输出的光流。每个光流估计模块进行的运算包括:融合光流估计模块的输入数据,得到融合数据;对融合数据进行下采样,得到下采样结果;基于下采样结果计算得到初步光流;将初步光流上采样回输入数据的分辨率,得到光流估计模块输出的光流。各光流估计模块的下采样倍数依次递减。
[0118]
不难看出,步骤s210和s220类似于步骤s110和s120(推断图像换成了训练图像),重复之处可以参考前文,不再阐述。不过需要指出两点区别:
[0119]
其一,步骤s220并不限定如何设置第一个光流估计模块的下采样系数。
[0120]
其二,步骤s220中递减一词的含义和步骤s120略有不同,在步骤s120中,各光流估计模块的下采样倍数相等的情况不属于递减,而在步骤s220中各光流估计模块的下采样倍数相等的情况属于递减。
[0121]
步骤s230:根据至少一个光流估计模块输出的光流以及光流标签计算光流估计损失,并根据光流估计损失更新光流估计模型的参数。
[0122]
步骤s230中的至少一个光流估计模块可以只是最后一个光流估计模块,即只根据最终的光流估计结果计算损失,或者说只对光流估计模型的整体表现进行监督。
[0123]
步骤s230中的至少一个光流估计模块可以是全部的光流估计模块,即根据最终的光流估计结果和全部的中间估计结果计算损失(总损失为各光流估计模块对应的损失加权求和),或者说要对光流估计模型中的每个光流估计模块的表现进行监督。此种计算损失的方式有利于提高模型的光流估计精度,但计算损失的运算量也会随之增大。
[0124]
可以理解,步骤s230中的至少一个光流估计模块也可以只是全部的光流估计模块中的一部分。
[0125]
除了步骤s230中提到的光流估计损失之外,还可以根据需求计算其他损失,例如,若该光流估计模型被用于执行视频插帧任务,还可以根据光流估计结果以及训练图像计算待插入的视频帧,然后根据待插入的视频帧和参考视频计算图像重建损失。
[0126]
步骤s230中的更新模型参数可采用反向传播算法,其具体过程可参考现有技术,此处不作阐述。
[0127]
上述模型训练方法训练得到的光流估计模型可对高分辨率图像的光流进行有效估计,并且可使用低分辨率图像(即现有技术中广泛使用的数据集)进行训练。当然,该光流估计模型也可以用于处理非高分辨率的图像。
[0128]
可选的,在训练过程中可以不断改变各光流估计模块的下采样倍数,使得光流估计模型能够有效处理不同分辨率的图像。在推断阶段,除第一个光流估计模块以外,其余光流估计模块的下采样倍数到底要设置成多少并没有严格的规律(只要求递减),通过在训练时增强模型的泛化性能,在一定程度上削弱了对这些下采样倍数的设置要求,也就是说,即使这些下采样倍数没有采用最优设置,对光流估计结果也不会造成很大的影响。
[0129]
改变下采样倍数的方式包括随机改变、按固定方式改变等方式,但需注意,无论如何改变,各光流估计模块的下采样倍数都应满足步骤s220中的递减要求。
[0130]
其中,按固定方式改变可以是按照设定好的下采样倍数改变,例如先设定好三组下采样倍数[4,2,1]、[4,2,2]、[4,1,1],初始时各光流估计模块的下采样倍数取第一组值
[4,2,1],改变一次后各光流估计模块的下采样倍数取第二组值[4,2,2],改变两次后各光流估计模块的下采样倍数取第三组值[4,2,2]。或者,按固定方式改变可以是按照设定好的规律改变下采样倍数,例如,初始时各光流估计模块的下采样倍数为[4,4,4],设定好的规律为固定光流估计模块1和2的下采样倍数4不变、按照2倍关系减小光流估计模块3的下采样倍数,按此规律,改变一次后各光流估计模块的下采样倍数为[4,4,2],改变两次后各光流估计模块的下采样倍数为[4,4,1]。
[0131]
例如,训练光流估计模型常采用分批次(batch)训练的方式,每次将一批训练图像输入到模型中,计算总损失并更新模型参数。从而,可以针对每批训练图像设置一组下采样倍数,即改变下采样倍数的频率被设置为一个批次的训练图像。当然,在其他一些实现方式中,该频率也可以设置为一帧训练图像,或者固定的时长,等等。
[0132]
图5示出了本技术实施例提供的光流估计装置300的功能模块图。参照图5,光流估计装置300包括:
[0133]
推断图像获取单元310,用于获取两帧推断图像;
[0134]
推断光流估计单元320,用于将所述两帧推断图像输入至光流估计模型,经所述光流估计模型中依次连接的多个光流估计模块进行运算,输出所述两帧推断图像之间的光流;
[0135]
其中,第一个光流估计模块的输入数据包括所述两帧推断图像以及初始光流,除第一个之外的光流估计模块的输入数据包括所述两帧推断图像以及上一个光流估计模块输出的光流;每个光流估计模块进行的运算包括:融合所述光流估计模块的输入数据,得到融合数据;对所述融合数据进行下采样,得到下采样结果;基于所述下采样结果计算得到初步光流;将所述初步光流上采样回所述输入数据的分辨率,得到所述光流估计模块输出的光流;其中,各光流估计模块的下采样倍数依次递减,第一个光流估计模块的下采样倍数为:所述推断图像与训练图像的分辨率的比值,或者,所述比值附近的值。
[0136]
在光流估计装置300的一种实现方式中,所述光流估计模块融合所述光流估计模块的输入数据,得到融合数据,包括:利用所述输入数据中的光流将所述输入数据中的第二推断图像对齐到所述输入数据中第一推断图像,得到对齐后的第二推断图像;融合所述输入数据中的光流、所述第一推断图像以及所述对齐后的第二推断图像,得到融合数据。
[0137]
在光流估计装置300的一种实现方式中,所述光流估计模块基于所述下采样结果计算得到初步光流,包括:利用至少一个卷积层对所述下采样结果进行处理,得到初步光流。
[0138]
在光流估计装置300的一种实现方式中,所述光流估计模块对所述融合数据进行下采样,得到下采样结果,包括:利用下采样层对所述融合数据进行下采样,得到下采样结果;所述光流估计模块将所述初步光流上采样回所述输入数据的分辨率,包括:利用上采样层将所述初步光流上采样回所述输入数据的分辨率;其中,所述下采样层和所述上采样层中不包括需要训练的参数。
[0139]
在光流估计装置300的一种实现方式中,所述下采样层下采样的方式包括以下之一:双线性插值、双三次插值以及最近邻插值;所述上采样层上采样的方式与所述下采样层对应。
[0140]
在光流估计装置300的一种实现方式中,除第一个之外的光流估计模块的下采样
倍数为:上一个光流估计模块的下采样倍数除以比例系数得到的数值,或者所述数值附近的值,所述比例系数大于1。
[0141]
在光流估计装置300的一种实现方式中,所述数值附近的值是指所述数值的1/2到2倍之间的值。
[0142]
在光流估计装置300的一种实现方式中,所述光流估计模块的下采样倍数还与所述推断图像中物体的运动幅度相关。
[0143]
在光流估计装置300的一种实现方式中,第一个光流估计模块的下采样倍数与所述推断图像中物体的运动幅度正相关。
[0144]
在光流估计装置300的一种实现方式中,各个光流估计模块的下采样倍数均与所述推断图像中物体的运动幅度正相关。
[0145]
本技术实施例提供的光流估计装置300,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
[0146]
图6示出了本技术实施例提供的模型训练装置400的功能模块图。参照图6,模型训练装置400包括:
[0147]
训练图像获取单元410,用于获两帧训练图像;
[0148]
训练光流估计单元420,用于将所述两帧训练图像输入至光流估计模型,经所述光流估计模型中依次连接的多个光流估计模块进行运算,输出所述两帧训练图像之间的光流;其中,第一个光流估计模块的输入数据包括所述两帧训练图像以及初始光流,除第一个之外的光流估计模块的输入数据包括所述两帧训练图像以及上一个光流估计模块输出的光流;每个光流估计模块进行的运算包括:融合所述光流估计模块的输入数据,得到融合数据;对所述融合数据进行下采样,得到下采样结果;基于所述下采样结果计算得到初步光流;将所述初步光流上采样回所述输入数据的分辨率,得到所述光流估计模块输出的光流;各光流估计模块的下采样倍数依次递减;
[0149]
参数更新单元430,用于根据至少一个光流估计模块输出的光流以及光流标签计算光流估计损失,并根据所述光流估计损失更新所述光流估计模型的参数。
[0150]
在模型训练装置400的一种实现方式中,所述装置还包括:倍数调节模块,用于在训练过程中改变各光流估计模块的下采样倍数,改变下采样倍数的方式包括随机改变,或者,按固定方式改变。
[0151]
本技术实施例提供的模型训练装置400,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
[0152]
图7示出了本技术实施例提供的电子设备500的一种可能的结构。参照图7,电子设备500包括:处理器510、存储器520以及通信接口530,这些组件通过通信总线540和/或其他形式的连接机构(未示出)互连并相互通讯。
[0153]
其中,处理器510包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器510可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、微控制单元(micro controller unit,简称mcu)、网络处理器(network processor,简称np)或者其他常规处理器;还可以是专用处理器,包括图形处理
器(graphics processing unit,gpu)、神经网络处理器(neural

network processing unit,简称npu)、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuits,简称asic)、现场可编程门阵列(field programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器510为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
[0154]
存储器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)等。
[0155]
处理器510以及其他可能的组件可对存储器520进行访问,读和/或写其中的数据。特别地,在存储器520中可以存储一个或多个计算机程序指令,处理器510可以读取并运行这些计算机程序指令,以实现本技术实施例提供的光流估计方法和/或模型训练方法。
[0156]
通信接口530包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口530可以包括进行有线和/或无线通信的接口。
[0157]
可以理解,图7所示的结构仅为示意,电子设备500还可以包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。图7中所示的各组件可以采用硬件、软件或其组合实现。电子设备500可能是实体设备,例如pc机、笔记本电脑、平板电脑、手机、服务器、智能穿戴设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,电子设备500也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
[0158]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本技术实施例提供的光流估计方法和/或模型训练方法。例如,计算机可读存储介质可以实现为图7中电子设备500中的存储器520。
[0159]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜