用于光流预测的方法、装置、设备以及可读存储介质与流程

文档序号:17940985发布日期:2019-06-18 23:05阅读:192来源:国知局
用于光流预测的方法、装置、设备以及可读存储介质与流程

本公开涉及人工智能领域,具体的涉及一种用于光流预测的方法、装置、设备以及可读存储介质。



背景技术:

光流(opticalflow)可以表示图像中光照模式的变化情况。在计算机视觉领域,所述光流可以用于表示视频图像中各个像素点随时间的运动情况。由于光流具有丰富的运动信息,使得光流预测在运动估计、自动驾驶和行为识别等方面都有广泛应用。一般地,光流预测可以包括基于两幅具有时间相关性的图像,例如视频图像中的相邻两帧图像,确定其中一幅图像中的像素点在另一幅图像中的位置,计算该像素点的运动位移。随着深度学习技术在计算机视觉领域取得的发展,存在基于神经网络来实现光流预测的尝试,得到的光流预测结果可以应用于诸如行为识别、辅助驾驶、视频增强等与人工智能相关的应用。



技术实现要素:

根据本公开的一方面,提供了一种用于光流预测的方法,包括:利用神经网络根据输入图像生成第一光流预测数据;将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据;扩展所述第二光流预测数据,以获得第三光流预测数据,其中,所述第三光流预测数据中的数据点的数目与所述第一光流预测数据中的数据点的数目相同;以及基于所述第三光流预测数据对所述神经网络进行训练,利用经过所述训练的神经网络根据所述输入图像生成第四光流预测数据,作为光流预测结果。

根据本公开实施例,将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据包括:按照光流一致性和光照一致性中的至少一种,将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据,其中所述光流一致性表示输入图像中的像素点的坐标值与基于第一光流预测数据计算得到的像素点的坐标值之间的差异,以及所述光照一致性表示输入图像中的像素点的像素值与基于第一光流预测数据计算得到的像素点的像素值之间的差异。

根据本公开实施例,将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据还包括:将所述第一光流预测数据中的一部分数据点划分为多个数据块,对于所述多个数据块中的每一个,按照所述光流一致性和光照一致性中的至少一种,将所述数据块中的一部分数据点确定为第二光流预测数据。

根据本公开实施例,扩展所述第二光流预测数据包括:对所述第二光流预测数据进行插值,以使得获得的第三光流预测数据中的数据点的数目与所述第一光流预测数据中的数据点的数目相同。

根据本公开实施例,对所述第二光流预测数据进行插值包括:基于输入图像的边缘信息,对所述第二光流预测数据进行插值。

根据本公开实施例,所述训练包括:以减小所述第一光流预测数据与第三光流预测数据之间的差异的方式来训练所述神经网络。

根据本公开实施例,所述输入图像包括具有时间相关性的第一图像和第二图像。

根据本公开的另一方面,提供了一种用于光流预测的装置,包括:神经网络单元,配置成根据输入图像生成第一光流预测数据;确定单元,配置成将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据;扩展单元,配置成扩展所述第二光流预测数据,以获得第三光流预测数据,其中,所述第三光流预测数据中的数据点的数目与所述第一光流预测数据中的数据点的数目相同;训练单元,配置成基于所述第三光流预测数据对所述神经网络进行训练,所述神经网络单元还配置成利用经过所述训练的神经网络根据所述输入图像生成第四光流预测数据,作为光流预测结果。

根据本公开实施例,所述确定单元按照光流一致性和光照一致性中的至少一种,将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据,其中,所述光流一致性表示输入图像中的像素点的坐标值与基于第一光流预测数据计算得到的像素点的坐标值之间的差异,以及所述光照一致性表示输入图像中的像素点的像素值与基于第一光流预测数据计算得到的像素点的像素值之间的差异。

根据本公开实施例,所述确定单元将所述第一光流预测数据中的一部分数据点划分为多个数据块,对于所述多个数据块中的每一个,按照所述光流一致性和光照一致性中的至少一种,将所述数据块中的一部分数据点确定为第二光流预测数据。

根据本公开实施例,所述扩展单元对所述第二光流预测数据进行插值,以使得获得的第三光流预测数据中的数据点的数目与所述第一光流预测数据中的数据点的数目相同。

根据本公开实施例,所述扩展单元基于输入图像的边缘信息,对所述第二光流预测数据进行插值。

根据本公开实施例,所述训练单元以减小所述第一光流预测数据与第三光流预测数据之间的差异的方式来训练所述神经网络。

根据本公开的又一方面,提供了一种用于光流预测的设备,包括:一个或多个处理器;和一个或多个存储器,其中,所述存储器中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器运行时,执行如上所述的用于光流预测的方法。

根据本公开的又一方面,提供了一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如上所述的用于光流预测的方法。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了经可视化处理的光流预测数据的示意图;

图2示出了基于神经网络的光流预测方法的示意图;

图3示出了根据本公开实施例的用于光流预测的方法的流程图;

图4示出了pwcnet网络的示意图;

图5示出了根据本公开实施例的基于光流一致性确定一部分数据点的示意图;

图6示出根据本公开实施例的划分数据块的示意图;

图7示出了根据本公开实施例的对第二光流预测数据进行插值的示意图;

图8示出了根据本公开实施例的方法训练神经网络的整体流程图;

图9示出了根据本公开实施例的方法训练神经网络的框图;

图10示出了根据本公开实施例的用于光流预测的装置的示意图;

图11示出了根据本公开实施例的用于光流预测的设备的示意图;

图12示出了根据本公开实施例的一种示例性的计算设备的架构的示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。

本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步。

在人的眼睛观察运动物体时,物体的影像就在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的图像不断“流过”视网膜(即图像平面),像是光的流动,即形成光流(opticalflow)。所述光流可以用来表达物体随时间的运动情况,包含了物体的运动信息。在计算机视觉领域,可以将相机理解为人的眼睛,通过相机获取的物体的图像包含上述光流。

所述图像的光流可以由该图像的光流数据表示,所述图像的光流数据包括一个或多个数据点,每个数据点表示图像中的像素点的光流数据。即,图像的光流数据由一个或多个像素点的光流数据组成,其中,每个像素点的光流数据可以由该像素点相对于另一图像的运动位移表示。例如,可以将该像素点所在的图像称为第一图像,将该另一图像称为第二图像,则,可以利用第一图像中的该像素点相对于第二图像的运动位移来表示该像素点的光流数据。

具体的,第一图像中的像素点的光流数据可以由(u,v)表示,其中,u为该像素点在x方向上相对于第二图像的运动位移,v为该像素点在y方向上相对于第二图像的运动位移。

所述图像的光流数据中包括的数据点的数目可以与该图像中的像素点的数目相同,可以将其称为稠密光流数据。通过计算图像中的每个像素点的光流数据可以获得该图像的稠密光流数据。或者,所述图像的光流数据中包括的数据点的数目也可以少于该图像中的像素点的数目,可以将其称为稀疏光流数据。通过计算图像中的一部分像素点的光流数据可以获得该图像的稀疏光流数据。例如,可以指定图像中具有某种图像特征的一部分像素点,并计算指定的像素点的光流数据。

下面,以第一图像中的一个像素点为例,描述计算像素点的光流数据的过程。例如,所述第一图像可以是视频图像中的第t帧图像,所述第二图像可以是该视频图像中的第t+m帧图像,其中,m是正整数。即,所述第一图像与第二图像之间存在时间相关性。对于第t帧图像中的像素点a,其像素坐标表示为(x1,y1),可以在第t+m帧图像中确定与该像素点a对应的像素点b,其像素坐标表示为(x2,y2),然后可以计算得到该像素点a相对于第t+m帧图像的运动位移(u,v)=(x2,y2)-(x1,y1),并将该运动位移确定为该像素点a的光流数据。在此种情况下,由于像素点a所在的第t帧图像在时间上先于第t+m帧图像,可以将相对于第t+m帧图像确定的像素点a的光流数据称为前向光流数据。相应地,可以将相对于第t-n帧图像确定的像素点a的光流数据称为后向光流数据,其中,n为正整数。

如上所述地,通过计算图像中的每个或者一部分像素点的光流数据,则可以获得该图像的光流数据。所述图像的光流数据可以应用于多种应用场景。例如,所述图像的光流数据可以适用于诸如视频增强、辅助驾驶、行为识别等与人工智能相关的应用。

例如,在视频增强应用中,假设已知第t-1帧图像的图像特征,则可以通过计算第t帧图像相对于第t-1帧图像的运动位移,来确定第t帧图像的光流数据。然后,可以基于所述光流数据来将该第t-1帧图像中的图像特征扭曲形变(warp)到第t帧图像,得到特征增强的第t帧图像。例如,可以基于以下公式(1)中的对应关系来实现上述warp处理:

it(x1,y1)=it-1(x1+u,y1+v)(1)

其中,it表示第t帧图像,it(x1,y1)表示第t帧图像中像素坐标为(x1,y1)的像素点,it-1表示第t-1帧图像,(u,v)表示第t帧图像中的像素点(x1,y1)的光流数据。即,第t帧图像中的像素点(x1,y1)对应于基于该像素点的光流数据确定的第t-1帧图像中的像素点(x1+u,y1+v)。

如上所述地,实时计算的光流数据可以为视频增强算法提供输入信息,从而提升视频增强效果,使得可以优化诸如低分辨率、噪点、抖动、色彩灰暗等低质视频的图像质量,提升用户的观看体验。此外,所述光流数据还可以在视频内容业务中得到应用,为用户提供清晰度可控的定制服务。又例如,在辅助驾驶应用中,实时地计算光流数据可以提供丰富的运动信息,从而实现对于车、行人等运动物体的检测,为辅助车辆的驾驶提供信息。具体的,可以基于车辆行驶过程中获取的图像来计算图像的光流数据,并基于图像的光流数据来预测在时间上可能发生的运动趋势,比如,车辆是否与障碍物发生碰撞等。

再例如,在智能监控应用中,实时地计算光流数据,还可以为行为识别算法提供输入信息,结合具体的行为识别算法来实现特定行为的检测预警功能。

计算得到的光流数据不仅可以用于实现机器对于运动信息的感知,例如通过如上所述的辅助驾驶、行为检测等的应用,还可以将所述光流数据用于实现机器对于三维空间的感知能力。具体的,通过计算图像的光流数据可以将图像中的物体分为运动物体和静止物体,其中,所述运动物体可以由图像中的多个像素点组成,所述多个像素点的光流数据可以不为零,即表示该物体相对于另一图像存在位移,所述静止物体中包含的像素点的光流数据可以为零,即表示该物体相对于该另一图像没有位移。然后可以对所述运动物体和静止物体分别进行建模,即可以在获得图像的运动信息的同时得到深度信息,所述深度信息可以将机器的感知范围扩展到三维空间。

为了直观地查看计算得到的光流数据,可以对所述光流数据进行可视化处理。例如,可以通过利用颜色编码运动方向的方式来实现上述可视化处理。具体的,对于第t帧图像中的每个像素点的光流数据,可以利用颜色来表示运动方向,利用强度表示运动速度,从而将光流数据由直观地颜色表现出来。

图1中示出了经可视化处理的光流预测数据的示意图。在图1中示出了第一图像、第二图像和光流数据。其中,所述光流数据为第一图像的光流数据,其由第一图像中的像素点相对于第二图像的运动位移表示。在图1中示出的光流数据中,位于最左侧的椅子为蓝色,这表示该椅子在向左运动,位于最右侧的椅子为紫色,这表示该椅子在向右上方向运动,并且颜色越深,表示在该运动方向上的运动速度越大。

目前,存在利用神经网络来计算图像的光流数据的尝试,其中,所述神经网络具有可以进行光流预测的网络结构。具体的,所述神经网络可以对输入的图像进行处理,生成图像的光流数据。本文中,可以将利用神经网络生成的光流数据称为光流预测数据。

图2示出了基于神经网络的光流预测方法的示意图。如图2所示,可以将具有时间相关性的两幅图像i1和i2作为神经网络的输入。例如,图像i1可以是视频中的第t帧图像it,图像i2可以是该视频中的第t-1帧图像it-1。所述神经网络可以对图像i1和i2进行处理,并输出图像i1的光流预测数据。由于所述光流预测数据是基于图像i1和i2计算得到的,其表示图像i1中的像素点相对于图像i2的运动位移。

可以将所述神经网络表示为mof,所述神经网络的参数为θ,将该神经网络对输入的图像i1和i2进行处理得到的光流预测数据表示为mof(θ,i1,i2),该光流预测数据mof(θ,i1,i2)是图像i1的光流预测数据。相应地,该神经网络对输入的图像i2和i1进行处理得到的光流预测数据表示为mof(θ,i2,i1),该光流预测数据mof(θ,i2,i1)是图像i2的光流预测数据。

利用光流预测训练数据库可以对所述神经网络进行训练,即优化该神经网络的参数,从而提高神经网络进行光流预测的准确性。对于图像i1中的像素点a(x1,y1),神经网络能在图像i2中找到与像素点a对应的像素点b(x2,y2),由此可以计算得到像素点a相对于图像i2的运动位移(u,v)=(x2,y2)-(x1,y1)。确定的像素b越准确,得到的运动位移则越准确,则生成的光流预测数据的准确性越高。

对神经网络进行训练来使其能生成准确的光流预测数据的过程通常需要大量的训练数据来完成,即需要构建数据量庞大的光流预测训练数据库,其中包含有已知光流真实数据的图像。例如,对于光流预测训练数据库中的一幅图像i1,已知其相对于另一幅图像i2的光流真实数据为(ut,vt),将图像i1和i2输入至神经网络,利用该神经网络生成光流预测数据(u,v),可以以减少光流预测数据(u,v)与光流真实数据为(ut,vt)之间的差异的方式来优化所述神经网络的参数,从而提高该神经网络进行光流预测的准确性。为了不断提高神经网络的准确性,以使其输出满足准确性要求的光流预测数据,需要大量的如上所述的已知光流真实数据的训练图像。

然而,在实际应用中,很难获得满足训练数据量要求的训练图像,并且,在真实世界中,也难以获得自然图片的光流真实数据。即使以牺牲图像真实性为代价,采用人工生成训练图像的方式来构建满足数据量要求的光流预测训练数据库,仍需要花费大量的前期数据处理工作来完成上述生成训练图像的过程。基于此,在利用神经网络来实现光流预测的应用中,构建光流预测训练数据库的过程将耗费大量的时间以及繁重的图像数据处理操作。

本公开提供了一种用于光流预测的方法,利用神经网络基于输入图像生成第一光流预测数据,从生成的第一光流预测数据中筛选出一部分的光流预测数据点,例如,可以基于光流一致性原理筛选出一部分满足准确性要求的光流预测数据点,作为第二光流预测数据。然后,通过对所述第二光流预测数据进行插值来获得具有与输入图像中的像素点数目相同的第三光流预测数据,其中既包含有筛选出来的准确性较高的数据点,也包含有通过插值得到的数据点,并所述第三光流预测数据作为光流“真实”数据(也可以称为“伪标签”)来对所述神经网络进行上述训练,从而优化该神经网络的参数。换句话说,用于训练神经网络的训练数据是基于神经网络自身输出的第一光流预测数据得到的。然后,可以利用经过所述训练的神经网络再次基于输入图像来生成新的第一光流预测数据,并循环上述过程,则可以实现基于神经网络自身输出的光流预测数据来循环地训练提升该神经网络的预测准确性,从而可以避免构建光流预测训练数据库的复杂的处理过程。

具体的,图3示出了根据本公开实施例的用于光流预测的方法的流程图。

首先,在步骤s101,利用神经网络根据输入图像生成第一光流预测数据。其中,所述神经网络可以对输入图像进行处理,来生成光流预测数据,其中所述第一光流预测数据的准确性较低,需要对该神经网络进行训练,以优化其参数,提高其预测准确性。所述输入图像可以包括具有时间相关性的第一图像和第二图像,例如,视频图像中的第t帧图像和第t+1帧图像。所述第一光流预测数据可以包括第一前向光流预测数据和第一后向光流预测数据中的至少一种。如上所述,前向光流预测数据和后向光流预测数据与输入图像之间的时间顺序相关。根据本公开的用于预测光流的方法可以适用于所述前向光流预测数据和后向光流预测数据。例如,以下描述的步骤s102中将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据可以表示为将所述第一前向光流预测数据中的一部分数据点确定为第二前向光流预测数据,以及将所述第一后向光流预测数据中的一部分数据点确定为第二光后向流预测数据。

在根据本公开的一个实施例中,所述神经网络可以是pwcnet网络。图4示出了所述pwcnet网络的示意图。

如图4所示出的,pwcnet网络可以包括特征提取101、光流预测器102、内容网络103三部分。其中,特征提取101部分可以提取输入图像中的特征图像,特征提取101部分可以包括多层卷积网络,经过不同层卷积网络处理得到的特征图像具有不同的尺寸,其中,所述特征图像的尺寸表示该特征图像中包括的像素点的数目。可以将经过不同层卷积网络处理得到的图像特征表示为图4中所示出的具有金字塔结构的特征金字塔,其中,特征金字塔1表示基于输入的i1提取的图像特征,特征金字塔2表示基于输入的i2提取的图像特征。以图4中示出的特征金子塔为例,表示该神经网络中包括三层卷积网络。

所述光流预测器102可以对特征金字塔中处于不同级的特征图像进行处理,并计算该级特征图像的光流预测数据。以光流预测器102当前正在进行处理的以生成该层特征图像的光流预测数据的过程称为本级光流预测,将得到的光流数据表示为本级光流预测数据。类似地,可以将针对上一级特征图像生成的光流预测数据表示为上一级光流预测数据。如图4中示出的,上一级特征图像的尺寸小于本级特征图像的尺寸,由此,光流预测器102生成的上一级光流预测数据的尺寸也小于本级光流预测数据的尺寸,其中,所述光流预测数据的尺寸表示该光流预测数据中包括的数据点的数目。

所述内容网络103可以对光流预测器120输出的光流预测数据进行细化处理,以增加更多的细节信息。

进一步地,图4中示出的pwcnet网络中还包括基于上一级光流预测数据对本级特征图像进行扭曲形变处理的扭曲形变层(warping层)。该warping层可以使得pwcnet网络增强对于图像中物体形状变化的鲁棒性。如上所述,由于上一级光流预测数据的尺寸小于本级光流预测数据的尺寸,可以先通过上采样处理来使得上一级光流预测数据的尺寸等于本级光流预测数据的尺寸。

图4中示出的pwcnet网络还包括成本体量层(costvolumn层),用于通过对warping层输出的结果计算成本体量的值来计算特征图像之间的相关性。

对于包括warping层和costvolumn层的pwcnet网络中的光流预测器120,其可以接收由costvolumn层计算得到的costvolumn值、本级特征图像以及上一级光流预测数据,并基于上述接收的数据来进行本级光流预测,从而生成本级光流预测数据。

可替代地,在根据本公开的其他实施例中,所述神经网络还可以是例如flownet、flownet2等用于进行光流预测的神经网络。

接着,如图3所示,在步骤s102,可以将所述神经网络基于输入图像输出的第一光流预测数据中的一部分数据点确定为第二光流预测数据。其中,第一光流预测数据是由未经本轮训练处理的神经网络输出的光流预测数据,需要经过训练处理来提高该神经网络的预测准确性。在第一光流预测数据中,例如,可以通过设定预定标准,以筛选的方式来确定第一光流预测数据中满足预定标准的数据点,将其作为第二光流预测数据。由于经筛选的数据点具有较高的预测准确性,可以作为训练该神经网络的光流“真实”数据。

具体的,可以按照光流一致性和光照一致性中的至少一种,来将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据,即实现从第一光流预测数据中筛选出满足预定标准的数据点。

根据本公开的一个实施例,可以基于所述光流一致性和光照一致性两者来实现上述筛选的过程。需要注意的是,在根据本公开的其他实施例中,还可以只依据光流一致性或者只依据光照一致性来筛选满足预定标准的数据点。

所述光流一致性可以表示输入图像中的像素点的坐标值与基于第一光流预测数据计算得到的像素点的坐标值之间的差异。图5示出了根据本公开实施例的基于光流一致性确定一部分数据点的示意图。在图5中,输入图像包括具有时间相关性的图像i1和i2,其中,i1可以为图像序列中的第t帧图像,i2可以为图像序列中的第t+1帧图像,即在时间顺序上,图像i1先于图像i2。如上所述,分别将图像(i1,i2)以及图像(i2,i1)输入至所述神经网络,例如pwcnet网络,可以分别得到图像i1的光流预测数据和图像i2的光流预测数据。基于图像i1和图像i2之间的时间关系,将图像i1的光流预测数据称为前向光流预测数据f以及将图像i2的光流预测数据称为后向光流预测数据b。

如图5所示,所述前向光流预测数据f中的数据点(u1,v1)可以是图像i1中的一个像素点(x1,y1)相对于图像i2的运动位移。后向光流预测数据b中的数据点(u2,v2)可以是图像i2中与像素点(x1,y1)真实对应的像素点(x2,y2)相对于图像i1的运动位移。在神经网络输出的光流预测数据是准确的情况下,数据点(u1,v1)和(u2,v2)应满足前向-后向光流一致性。

具体的,可以按照以下公式(2)来基于像素点坐标(x1,y1)和数据点(u1,v1)计算得到图像i2中与像素点(x1,y1)预测对应的像素点(x2',y2'):

其中,像素坐标值(x1,y1)为整数,位移(u1,v1)可以为连续的小数,通过加入(0.5,0.5)以及四舍五入处理(由符号表示)可以计算得到整数坐标值(x2',y2')。

在此种情况下,如果输出的运动位移(u1,v1)具有较高的准确性,则认为计算得到的坐标(x2',y2')应满足以下公式(3):

其中,(x2',y2')+(u2,v2)可以表示为由后向光流预测数据计算得到的、图像i1中与像素点(x2',y2')对应的像素点,可以将其表示为点(x1',y1')。即|(x2',y2')+(u2,v2)-(x1,y1)|表示输入图像中的像素点的坐标值(x1,y1)与基于第一光流预测数据计算得到的像素点的坐标值(x1',y1')之间的差异。上述公式(3)表示通过比较所述差异和(u1,v1)的比值与ε1之间的关系来判断神经网络的预测准确性。在(u1,v1)=0时,可以将其设置为0.5,以避免分母为零的情况。

如果光流预测结果f和b均是准确的,则点(x1',y1')与点(x1,y1)之间的距离应接近,甚至重合。由此,可以设置ε1,来确定满足预定标准的数据点,例如,可以将其设置为ε1=0.05,该值可以基于需要达到的预期准确性来调整。例如,在期望光流预测数据准确性较高的情况下,可以将其减小为诸如0.03,以使得筛选的预测标准更加严格,而在期望光流预测数据准确性偏低的情况下,可以将其增加为诸如0.08,以使得筛选的预测标准降低。

所述光照一致性可以表示输入图像中的像素点的像素值与基于第一光流预测数据计算得到的像素点的像素值之间的差异。

具体的,可以按照以下公式(4)来计算所述光照一致性:

其中,表示像素点(x1,y1)在图像i1中的像素值,可以为灰度值或者彩色值,表示图像i2中位于计算得到的点(x2',y2')处的像素值。在光流预测准确的情况下,像素点(x1,y1)与(x2',y2')的像素值应当接近。由此,可以设置ε2来作为预定标准,从而确定满足预定标准的数据点,例如,可以将其设置为ε2=10,该值可以如上所述的基于需要达到的预期准确性来调整。

此外,为了在图像中保留尽量宽阔的色域和丰富的色彩,还可以采用lab颜色模型来表示图像i1和i2中的像素值,此时,可以按照以下公式(5)来计算所述光照一致性:

其中,表示像素点(x1,y1)在图像i1中的lab颜色数值,表示图像i2中位于计算得到的点(x2',y2')处的lab颜色数值,并可以如上所述的通过设置ε2来确定满足预定标准的数据点,例如,可以将其设置为20。

基于以上光流一致性以及光照一致性原理,可以将第一光流预测数据中的满足预定标准的一部分像素点确定为第二光流预测数据,例如,可以将第一光流预测数据中同时满足光照一致性和光流一致性的数据点确定为第二光流预测数据。并且,由于第二光流预测数据中的数据点是从第一光流预测数据中通过预定标准筛选出来的,则可以认为,第二光流预测数据中的数据点的准确性较高。

根据本公开实施例,所述将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据还包括将所述第一光流预测数据中的一部分数据点划分为多个数据块,对于所述多个数据块中的每一个,按照所述光流一致性和光照一致性中的至少一种,将所述数据块中的一部分数据点确定为第二光流预测数据。

图6示出了通过划分数据块来筛选数据点的示意图。如图6中下方放大图像所示出的,可以将得到的第二光流预测数据划分为多个数据块,所述多个可以为2个也可以为3个及以上。每个数据块包含h*w个数据点,以数据块为单位,利用如上所述的基于光流一致性和光照一致性的方法从数据块中进一步的筛选出符合第二预定标准的数据点来作为第二光流预测数据,即对第二光流预测数据进行再次的筛选处理,去掉数据块中不满足第二预定标准的数据点。

例如,可以以数据块为单位,对数据块内的数据点再次基于所述光流一致性和光照一致性,筛选出符合第二预定标准的前个数据点。例如,τ可以设置为0.05,h和w可以设置为8。所述第二预定标准可以设置成与上述预定标准相同,也可以不相同。从而进一步提高第二光流预测数据中每个数据块的数据点的光流预测准确性。

或者,还可以以数据块为单位,对数据块内的数据点进行采样,以减少其中包括的数据点的数目,从而减少第二光流预测数据中的数据点的数目。减少了数据点数目的第二光流数据可以减少下文中提到的生成第三光流预测数据的时间,还可以降低硬件负担。

接着,如图3所示出的,在步骤s103,扩展第二光流预测数据,以获得第三光流预测数据,其中,所述第三光流预测数据中的数据点的数目与所述第一光流预测数据中的数据点的数目相同。例如,可以通过对第二光流预测数据进行插值来执行上述扩展。

根据本公开实施例,可以对所述第二光流预测数据进行插值处理,以使得获得的第三光流预测数据中的数据点数目与所述第一光流预测数据中的数据点数目相同。具体的,可以基于输入图像的边缘信息来进行所述插值处理。

图7示出了基于边缘信息实现光流预测数据插值的示意图。其中,可以依据边缘提取算法来从输入图像中提取出所述边缘信息。在根据本公开的一个实施例中,可以采用epicflow算法来进行上述基于边缘信息的光流插值处理,从而基于稀疏且具有较高预测准确性的第二光流预测数据以及边缘信息来对第二光流预测数据进行插值,获得用于对神经网络进行训练的第三光流预测数据。

epicflow是一种基于边缘信息的光流插值算法,其一方面可以保留图像的运动边界,同时也可以针对存在遮挡的像素点获得准确的光流预测数据点。具体的,已知稀疏的第二光流预测数据和输入图像的边缘信息,通过插值来计算得到第二光流预测数据中缺失的数据点,从而获得稠密的第三光流预测数据。在通过相邻数据点进行插值时,epicflow可以在计算欧式距离的同时,还考虑图像的边缘信息,从而得到准确的插值数据点。

上述通过插值得到的第三光流预测数据可以称为“伪标签”。之所以将其称为伪标签,是因为该伪标签是基于上述步骤s102和s103得到的,而并不表示输入图像之间的光流真实数据。经过上述步骤s102和s103的处理,使得伪标签中的数据点的光流预测准确性高于当前参数的神经网络输出的第一光流预测数据的准确性,从而使得可以基于生成的伪标签来训练当前参数的神经网络。

接着,如图3中所示出的,在步骤s104,基于所述第三光流预测数据对所述神经网络进行训练,利用经过所述训练的神经网络根据所述输入图像生成第四光流预测数据,作为光流预测结果。

所述训练包括利用训练数据以减小神经网络输出的结果(例如,第一光流预测数据)与训练标签(例如,第三光流预测数据,即作为伪标签)之间的差异的方式来改善神经网络的参数,使得神经网络输出的光流预测数据更接近伪标签。

根据本公开实施例,可以按照损失函数,以减小所述第一光流预测数据与第三光流预测数据之间的差异的方式来优化所述神经网络的参数。

根据本公开实施例,可以采用以下公式(6)来作为所述神经网络的损失函数:

其中,f(xi)可以是mof(θ,i1,i2),b(xi)可以是mof(θ,i1,i2),xi表示数据f、b中的数据点。其中,mof(θ,i1,i2)代表参数为θ的神经网络mof基于输入图像(i1,i2)生成的光流预测数据,可以称为由神经网络输出的前向第一光流预测数据,mof(θ,i2,i1)代表参数为θ的神经网络mof基于输入图像(i2,i1)生成的光流预测数据,可以称为由神经网络输出的后向第一光流预测数据。

相应地,表示为前向第三光流预测数据,表示为后向第三光流预测数据。即,上述公式(6)表示第一光流预测数据中的各个数据点与预测准确性更高的第三光流预测数据中各个数据点之间的差异,通过减少上述差异,来优化神经网络的参数,提升光流预测准确性,从而实现对神经网络进行训练的效果。

经过上述处理的神经网络的参数以第三光流预测数据为基础得到了训练,即,具有了更好光流预测准确性。循环执行上述步骤s101-s104可以循环对神经网络的参数进行训练,从而不断地提升神经网络的光流预测准确性。在训练的过程中,用于训练神经网络的伪标签是在神经网络生成的第一光流预测数据的基础上,利用步骤s102-s103获得的,从而避免了为了训练神经网络而构建光流训练数据库的复杂步骤,简化神经网络的训练过程,可以快速地实现对神经网络的训练,得到符合预期准确性标准的神经网络。

接着,在步骤s104中可以利用经过所述训练的神经网络根据所述输入图像生成第四光流预测数据,作为光流预测结果。

根据本公开实施例,在完成了对于神经网络的训练后,可以利用该神经网络,基于输入图像来生成如下公式(7)-(8)所示的第四光流预测数据:

f=mof(θk,i1,i2)(7)

b=mof(θk,i1,i2)(8)

其中,θk表示经过k轮如图3中示出的处理得到的神经网络的参数,所述第四光流预测数据具有较高的光流预测准确性,并可以应用于如上所述的诸如视频增强、自动驾驶等的应用场景。

如上描述了根据本公开的用于光流预测的方法,通过如上所述的方法,可以实现基于神经网络生成的光流预测数据,通过步骤s102和s103的筛选和扩展的处理,获得用于训练神经网络的伪标签,并基于该伪标签对神经网络进行训练,从而提升该神经网络的光流预测准确性,然后基于经过训练得到的神经网络来计算得到光流预测结果,避免了构建光流预测训练数据库的复杂处理,快速地获得符合预期准确性标准的神经网络。

根据本公开的实施例,在进行步骤s101之前,还可以对神经网络,例如pwcnet神经网络进行初始化处理。所述初始化处理可以是针对pwcnet进行初始训练,使得神经网络的参数θ具有一定的光流预测能力。所述一定的光流预测能力可以根据需求来设定,例如,可以表示为在神经网络输出的光流预测数据中,诸如50%的数据点满足预定标准,可以如上所述的利用光流一致性和光照一致性中的至少一种来设置所述预定标准。

例如,可以基于dstflow算法来进行对于所述神经网络的初始化处理。所述dstflow算法可以按照如下公式(9)-(12)所示的目标函数来训练所述神经网络,从而优化神经网络的参数:

ldst=ldata+αlsmooth(9)

其中,目标函数ldst由数据项ldata和光滑项lsmooth组成。由于上述目标函数的公式中包含对于图像数据的求导运算,则在采用如图4中示出的pwcnet网络进行光流预测的情况下,可以基于可导的双线性插值算法来实现warp层的扭曲形变处理,从而使得神经网络生成光流预测数据的整个过程均可求导,保持神经网络与训练的一致性。在上述基于dstflow算法的初始化处理过程中,例如可以采用kitti数据库(自动驾驶数据库)中的原(raw)数据,来实现针对自动驾驶场景的光流预测的训练。

可替代地,还可以采用不同于dstflow算法的方法来进行对于所述神经网络的初始化处理。

图8示出了根据本公开实施例的方法训练神经网络的整体流程图,图9示出了根据本公开实施例的方法训练神经网络的框图,以下将结合图8和图9描述根据本公开实施例的方法训练所述神经网络的过程。

如图8和图9中所示出的,首先,在步骤s201,获取输入图像i1和i2、边缘信息、神经网络mof,并设置循环次数k。例如,可以将循环训练的总次数k设置为10,其中,神经网络mof可以是具有一定光流预测能力的pwcnet网络。

接着,在步骤s202,可以通过dstflow算法来所述pwcnet网络进行初始化处理,可以将初始化后的神经网络表示为mof(θ0),θ0为该神经网络的参数。所述经过初始化处理的光流预测网络mof(θ0)可以基于输入图像(i1,i2)和(i2,i1)分别生成第一前向光流预测数据f和第一后向光流预测数据b。

接下来,可以开始循环的提升光流网络的预测能力。在步骤s203,判断当前训练次数k是否满足设置的总次数k。如果k≤k,则进行后续的步骤s204。

在步骤s204中,对于当前第k次训练循环,可以利用第k-1次训练循环中得到的光流预测网络mof(θk-1)在对输入图像(i1,i2)和(i2,i1)分别生成前向光流预测数据fk和后向光流预测数据bk。

接着,在步骤s205,基于光流一致性和光照一致性中的至少一种来设置预定标准,用于从fk和bk中筛选出预测准确性符合预定标准的数据点,作为第二前向光流预测数据和第二后向光流预测数据

然后,在步骤s206,通过基于边缘信息的插值算法来扩展所述第二光流预测数据,以获得第三光流预测数据。例如,可以根据epicflow算法,利用预先得到的边缘信息和筛选出的第二光流预测数据通过基于边缘信息的插值算法,得到更为准确的稠密的第三光流预测数据,可以将步骤s206得到的光流预测数据称为伪标签,表示为

最后,在步骤s207,利用对神经网络进行第k次训练,优化神经网络的参数,从而得到经过k次循环训练的网络mof(θk)。经过多次循环训练是,神经网络的预测能力不断提升,并最终得到满足预测准确性要求的神经网络。

根据本公开的用于光流预测的方法,通过使用自生成的伪标签来代替真实的训练标签,避免了训练神经网络过程中对大量训练数据的需求问题,简化神经网络的训练过程,可以快速地实现满足预测准确性要求的神经网络,而无需构建大量的训练数据库。在获取伪标签的过程中,通过基于边缘信息的插值算法,在保证了清晰的图像边界信息的同时,还改善了对于图像中遮挡区域中的像素点的光流预测准确性。经过训练得到的神经网络可以用于基于输入图像来计算光流数据,作为光流预测结果用于如上所述的诸如辅助驾驶、运动识别、视频增强等的领域。

本公开还提供了一种用于光流预测的装置。图10示出了根据本公开实施例的用于光流预测的装置100的示意图。

如图10所示,所述用于光流预测的装置100可以包括神经网络单元1000、确定单元1010,扩展单元1020以及训练单元1030。其中,所述神经网络单元1000配置成根据输入图像生成第一光流预测数据;所述确定单元1010配置成将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据;所述扩展单元1020配置成扩展所述第二光流预测数据,以获得第三光流预测数据,其中,所述第三光流预测数据中的数据点数目与所述第一光流预测数据中的数据点数目相同;所述训练单元1030配置成基于所述第三光流预测数据对所述神经网络进行训练,以优化所述神经网络的参数。以及,所述神经网络单元1000还配置成利用经过所述训练的神经网络根据所述输入图像生成第四光流预测数据,作为光流预测结果。

根据本公开实施例,其中,所述确定单元1010可以按照所述确定单元按照光流一致性和光照一致性中的至少一种,将所述第一光流预测数据中的一部分数据点确定为第二光流预测数据,其中,所述光流一致性表示输入图像中的像素点的坐标值与基于第一光流预测数据计算得到的像素点的坐标值之间的差异,以及所述光照一致性表示输入图像中的像素点的像素值与基于第一光流预测数据计算得到的像素点的像素值之间的差异。

根据本公开实施例,所述确定单元将所述第一光流预测数据中的一部分数据点划分为多个数据块,对于所述多个数据块中的每一个,按照所述光流一致性和光照一致性中的至少一种,将所述数据块中的一部分数据点确定为第二光流预测数据。

根据本公开实施例,所述扩展单元1020对所述第二光流预测数据进行插值,以使得获得的第三光流预测数据中的数据点的数目与所述第一光流预测数据中的数据点的数目相同。所述扩展单元1030基于输入图像的边缘信息,对所述第二光流预测数据进行插值。

根据本公开实施例,所述训练单元1030可以按照损失函数,以减小所述第一光流预测数据与第三光流预测数据之间的差异的方式来来训练所述神经网络。

如上所述的用于光流预测的方法和装置可以提供云端以及终端的光流预测服务,以为用户提供便捷的光流预测服务,用户可以基于上述光流预测的方法和装置来根据自身应用需求进行神经网络的训练,并实现快速地利用经过训练的神经网络来获得光流预测数据,并应用于期望的应用场景中。

此外,如上所述的用于光流预测的方法和装置还可整合到智能监控、视频增强、自动驾驶等的应用中。例如,在云端,通过用户上传输入到服务器端,在服务器端进行光流的预测然后将预测后的光流预测数据返回给用户来进行相应地应用处理。又例如,在终端,可以通过安装在例如终端设备的应用程序,对用户拍摄的画面进行实时地光流预测。此外,还可以实现终端离线实时光流预测,例如,在用户终端设备上安装了应用程序中包含压缩后的精简模型。

本公开还提供了一种用于光流预测的设备2000。图11示出了根据本公开实施例的设备2000的示意图。

如图11所示,所述设备2000可以包括一个或多个处理器2010,和一个或多个存储器2020,其中,所述存储器2020中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器2010运行时,可以执行如上所述的用于光流预测的方法。

根据本公开实施例的方法或装置也可以借助于图12所示的计算设备3000的架构来实现。如图12所示,计算设备3000可以包括总线3010、一个或多个cpu3020、只读存储器(rom)3030、随机存取存储器(ram)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如rom3030或硬盘3070可以存储本公开提供的用于光流预测的方法的处理和/或通信使用的各种数据或文件以及cpu所执行的程序指令。计算设备800还可以包括用户界面3080。当然,图12所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图12示出的计算设备中的一个或多个组件。

本公开的实施例也可以被实现为计算机可读存储介质。根据本公开实施例的计算机可读存储介质上存储有计算机可读指令。当所述计算机可读指令由处理器运行时,可以执行参照以上附图描述的根据本公开实施例的用于光流预测的方法。所述计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。

本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。

此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。所述单元仅是说明性的,并且所述系统和方法的不同方面可以使用不同单元。

本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。

除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。

以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。

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