掌桥专利:专业的专利平台
掌桥专利
首页

用于密集估计的具有相关表征的体积采样

文献发布时间:2024-04-18 20:01:30


用于密集估计的具有相关表征的体积采样

技术领域

本公开整体涉及光流估计。在一些示例中,本公开的各方面涉及以计算高效和存储器高效的方式使用相关量来执行光流估计。

背景技术

许多设备和系统允许通过生成场景的图像(或帧)和/或视频数据(包括多个帧)来捕获该场景。例如,相机或包括相机的设备可以捕获场景的帧序列(例如,场景的视频)。在一些情况下,帧序列可以被处理以用于执行一个或多个功能、可以被输出以用于显示、可以被输出以用于由其他设备处理和/或消耗、以及其他用途。

对帧序列执行的一种常见类型处理是运动估计,这涉及跟踪对象或点跨多帧的运动。例如,运动估计可以包括确定描述帧中的像素相对于先前帧中的对应像素的位移的光流图。运动估计可以用于各种应用中,包括计算机视觉系统、扩展现实系统、数据压缩、图像分割、自主车辆操作以及其他应用。

发明内容

描述了用于使用体积采样来执行帧的光流估计的系统和技术。根据至少一个例示性示例,提供了一种对一个或多个帧进行光流估计的方法。该方法包括:确定与多个帧相关联的光流预测;确定与第一帧相关联的至少一个特征的位置;基于至少一个特征在第一帧中的位置和光流预测来确定用于在第二帧中搜索至少一个特征的搜索区域的位置估计;以及从搜索区域内确定至少一个特征在第二帧中的位置。

在另一示例中,提供了一种用于对一个或多个帧进行光流估计的装置,该装置包括被配置为存储对应于一个或多个帧的数据的存储器和耦合到该存储器的一个或多个处理器(例如,在电路中实现)。该处理器被配置为并且可以:确定与多个帧相关联的光流预测;确定与第一帧相关联的至少一个特征的位置;基于至少一个特征在第一帧中的位置和光流预测来确定用于在第二帧中搜索至少一个特征的搜索区域的位置估计;以及从搜索区域内确定至少一个特征在第二帧中的位置。

在另一示例中,提供了一种非暂态计算机可读介质,该非暂态计算机可读介质上存储有指令,这些指令当由一个或多个处理器执行时使该一个或多个处理器:确定与多个帧相关联的光流预测;确定与第一帧相关联的至少一个特征的位置;基于至少一个特征在第一帧中的位置和光流预测来确定用于在第二帧中搜索至少一个特征的搜索区域的位置估计;以及从搜索区域内确定至少一个特征在第二帧中的位置。

在另一示例中,提供了一种用于处理一个或多个帧的装置。该装置包括:用于确定与多个帧相关联的光流预测的装置;用于确定与第一帧相关联的至少一个特征的位置的装置;用于基于至少一个特征在第一帧中的位置和光流预测来确定用于在第二帧中搜索至少一个特征的搜索区域的位置估计的装置;以及用于从搜索区域内确定至少一个特征在第二帧中的位置的装置。

在一些方面,确定搜索区域的位置估计包括将与第一帧相关联的至少一个特征的位置偏移与至少一个特征相关联的光流预测的光流预测值。

在一些方面,与至少一个特征相关联的光流预测值至少部分地基于与至少一个特征相关联的像素在第一帧中的位置来确定。

在一些方面,上文描述的方法、装置和计算机可读介质还包括:对至少一个特征执行对象检测以确定与该至少一个特征相关联的对象类型;以及基于与该至少一个特征相关联的对象类型来确定光流预测。

在一些方面,与第一帧相关联的多个特征包括对应于第一帧的像素的相应特征。

在一些方面,与第一帧相关联的至少一个特征包括第一帧中的对象的至少一部分的像素位置。

在一些方面,确定所述光流预测包括获得对应于对象的至少该部分的像素位置的光流向量。

在一些方面,搜索区域至少包括至少一个特征在第二帧中的估计像素位置。

在一些方面,估计像素位置在搜索区域内居中。

在一些方面,估计像素位置相对于搜索区域偏心。

在一些方面,搜索区域包括具有高度和宽度的矩形,其中该高度和该宽度不同。

在一些方面,第一帧在帧序列中处于第二帧之前。

在一些方面,上文描述的方法、装置和计算机可读介质还包括:针对第一帧中的多个特征中的每个特征,确定多个特征在第二帧中的对应估计位置。

在一些方面,光流预测包括流目标图。

在一些方面,对应于至少一个特征的光流预测基于至少第三帧,其中第三帧在帧序列中处于第一帧和第二帧之前。

在一些方面,装置是以下各者、是以下各者的一部分、和/或包括以下各者:移动设备(例如,移动电话或所谓的“智能电话”或其他移动设备)、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、服务器计算机、相机、车辆或车辆的计算设备或部件、可穿戴设备、电视机(例如,联网电视机)或其他设备。在一些方面,装置包括用于捕获一个或多个帧或图像的一个或多个相机。在一些方面,装置包括用于显示一个或多个帧或图像、虚拟内容、通知和/或其他可显示数据的显示器。在一些方面,上文描述的装置可以包括一个或多个传感器(例如,一个或多个惯性测量单元(IMU),诸如一个或多个陀螺仪、一个或多个加速度计、它们的任何组合和/或其他传感器)。

该发明内容不旨在标识所要求保护的主题的关键或必要特征,其也不旨在孤立地用于确定所要求保护的主题的范围。本主题应当参考本专利的整个说明书的合适部分、任何或所有附图、以及每项权利要求来理解。

在参考以下说明书、权利要求和附图之后,前述内容以及其他特征和示例将变得更加显而易见。

附图说明

下文参考以下附图详细描述了本申请的例示性示例:

图1是示出根据一些示例的示例性光流估计系统的框图;

图2是根据一些示例的针对像素的光流估计的图示;

图3A和图3B是根据一些示例的流目标图和流搜索区域的图示;

图4A和图4B是根据一些示例的相关量的图示;

图5是根据一些示例的示出使用体积采样的示例性光流估计系统的框图;

图6A、图6B、图6C和图6D是根据一些示例的示例性光流数据集的累积分布函数的图示;

图7A、图7B、图7C和图7D是根据一些示例的示例性光流搜索区域形状和初始估计像素位置的图示;

图8是根据一些示例的示出用于执行光流估计的过程的示例的流程图;

图9是根据一些示例的示出深度学习神经网络的示例的示图;

图10是根据一些示例的示出卷积神经网络的示例的示图;并且

图11是示出用于实现本文描述的某些方面的系统的示例的示图。

具体实施方式

下文提供了本公开的某些方面和示例。如对于本领域技术人员将显而易见的,这些方面和示例中的一些可以独立地应用,并且它们中的一些可以相结合地应用。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本申请的主题的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实施各个示例。各附图和描述不旨在是限制性的。

随后的描述仅提供了例示性示例,而不旨在限制本公开内容的范围、适用性或配置。确切而言,随后的描述将向本领域技术人员提供用于实现例示性示例的可行描述。应当理解的是,在不脱离如所附权利要求所阐述的本申请的实质和范围的情况下,可以对元素的功能和安排做出各种改变。

运动估计是跟踪一个或多个区域(例如,对象或对象的一部分、实例或实例的一部分、场景的背景部分或背景部分的一部分等)跨帧序列的移动的任务。在一些情况下,可以使用光流估计技术来执行运动估计。例如,光流估计系统可以识别帧(也称为源帧)的对应于现实世界对象的一部分的像素。光流估计系统可以确定后续帧(有时称为目标帧)内的对应像素(例如,描绘现实世界对象的相同部分的像素)。光流估计系统可以通过确定对应于源帧中的像素与目标帧中的对应像素之间的位移和/或距离的光流向量来估计对象在帧之间(例如,在源帧与目标帧之间)的运动。例如,光流向量可以指示对应于初始像素(来自源帧)的坐标与对应于后续像素(来自目标帧)的坐标之间的位移(例如,对应于移动的方向和距离)。

在一些情况下,光流估计系统可以确定一个或多个光流图。光流图可以包括对应于两个帧之间的运动的一个或多个光流向量。在一些示例中,光流图可以包括帧内每个像素(或近似每个像素)的光流向量。包括帧内每个像素(或近似每个像素)的光流向量的光流图可以称为密集光流图。

在一些情况下,可能需要大量的时间和/或计算能力来生成密集光流图,这对于运动估计的许多应用可能是有害的。利用运动估计的应用的示例包括其中涉及对象(像素)运动的各种计算机视觉任务和相机应用,包括视频识别、自动驾驶、视频压缩、对象和/或场景跟踪、视觉惯性测距(VIO)、视频对象分割、扩展现实(例如,虚拟现实、增强现实、和/或混合现实)等。期望在芯片和/或设备中执行更高性能的光流估计,这可以获得更高的准确性、更小的计算复杂性、更低的延迟、更低的功耗、更小的存储器大小要求以及其他益处。

如上所述,光流可以涉及一对帧或图像之间的密集对应关系估计问题。现有解决方案通常计算整个源帧或图像(例如,源帧或图像中的所有像素)的密集光流,并搜索整个目标帧或图像内的对应关系(例如,通过搜索目标帧或图像中的所有像素)。在目标帧的所有像素内搜索对应像素的方法可以导致显著大的搜索区域和/或搜索量(例如,相关量),这进而可以导致不必要的高计算复杂性、更高的延迟、更高的功耗和/或更高的存储器要求。

一些现有的光流估计系统通过在目标帧的N个像素中的每个像素内搜索源帧的N个像素中的每个像素之间的对应关系来执行光流估计。可以通过形成包含N×N个值的相关量来实现源帧的N个像素与目标帧的N个像素之间的相关。使用相关量的这种光流估计的一个示例在Zachary Teed等人在2020年发布的“RAFT:Recurrent All-Pairs FieldTransforms for Optical Flow”中有所描述,该文献全文据此全文且出于所有目的以引用方式并入。根据大O符号O(N

为了快速执行光流估计,诸如在实时光流估计中,可以将相关量存储在计算系统(例如,下文描述的计算系统1100)的低延迟存储器中。计算系统中的最低延迟存储器(有时称为紧密耦合存储器(TCM))可以在大小方面受到限制。例如,TCM可以包括在与计算系统的处理器相同的硅管芯上或相同的封装内,从而限制可以用于TCM的可用大小。在一些情况下,当相关量的大小超过TCM的大小时,相关量中的一些或全部可以存储在较慢存储器中,诸如可以由处理器通过直接存储器存取(DMA)存取的存储器。因此,需要可以减小相关量的所需大小的技术,其可以在具有有限可用TCM的系统中实现较快光流估计。

本文描述了用于使用体积采样来执行帧的光流估计的系统、装置、方法和计算机可读介质(统称为“系统和技术”)。在本文中,帧也可以称为图像。在一些情况下,光流估计系统可以确定目标帧的像素子集(在本文中称为流搜索区域)以用于执行源帧的每个像素的光流估计。在一些情况下,光流估计系统可以基于在目标帧的流搜索区域内搜索源帧的像素的对应关系(例如,通过将流搜索区域的像素包括在相关量内)来生成密集光流图。

光流估计系统可以在目标帧的流搜索区域中执行光流估计,该光流估计可以包含比常规全帧光流估计显著更少的像素。光流估计系统可以以减少的延迟和/或更少的计算资源生成光流图。例如,光流估计系统可以导致在包括目标帧的20%像素的流搜索区域、包括目标帧的10%像素的流搜索区域、包括目标帧的5%像素的流搜索区域、包括目标帧的2.5%像素的流搜索区域或基于本文描述的技术的任何其他数量的流搜索区域内执行光流估计。

在一些示例中,可以基于正在分析的视频数据的特性、基于物理学的运动限制、它们的组合和/或其他因素将目标帧中的流搜索区域的大小设置为恒定大小。光流估计系统可以在目标帧中的流搜索区域的恒定C个像素内搜索源帧的N个像素中的每个像素的对应关系。可以通过形成包含N×C个值的相关量来实现源帧的N个像素与每个源量的C个像素之间的相关。在下面的描述中,该技术可以称为体积采样。根据大O符号O(N),在恒定流搜索区域内执行光流估计所需的存储器量和计算工作量与输入源帧的大小成比例。随着源帧的像素数量N的增长,流搜索区域大小可以保持恒定,在这种情况下,增长不再二次方地缩放,而是相对于N线性地缩放。本文描述的体积采样技术可以与涉及使用相关量(或成本量)来执行对应关系估计的任何技术一起使用,诸如语义匹配估计、几何匹配估计、光流、场景流或采用类似技术的任何其他计算。

在一些方面,光流估计系统可以基于正在由光流估计系统分析的视频数据的特性来确定流搜索区域的大小。在一些示例中,可以基于由光流估计系统生成的光流向量值的累积分布函数(CDF)来确定视频数据的特性。在一些示例中,可以基于包括与光流估计系统被设计成解决的光流估计任务类似的数据的代表性数据集来生成CDF。例如,可以被配置为分析车辆交通数据的光流估计系统可以基于包含车辆交通的视频的数据集的CDF来设置其流搜索区域的大小。在一个例示性示例中,可以确定流搜索区域的大小,使得在每个运动方向的光流向量的98%将落入搜索区域内。例如,如果给定数据集中的光流向量的98%指示左边三个像素与右边两个像素之间的水平运动,则流搜索区域的宽度可以设置为五。在另一示例中,如果给定数据集中的光流向量的98%指示向上两个像素与向下八个像素之间的垂直运动,则流搜索区域的高度可以设置为十。在一些情况下,可以由基于神经网络的机器学习系统和/或算法(例如,深度神经网络)来确定流搜索区域的大小。

在一些方面,光流估计系统可以确定流目标图。流目标图可以提供像素在目标帧中的初始估计位置。在一些情况下,像素的初始估计位置可以包括在流搜索区域内。在一些示例中,初始估计像素位置可以在对应流搜索区域内居中。在一些方面,初始估计像素位置可以相对于流搜索区域的一个或多个维度偏心地定位。在一些方面,光流估计系统可以基于光流历史信息来确定流目标图。在一些具体实施中,光流历史信息可以包括关于由光流估计系统计算的先前光流图的信息。在一些具体实施中,光流历史信息可以包括关于在对应于光流图的帧中检测到的对象的信息,使得光流图向量可以与特定对象的运动相关。通过向光流估计系统提供对源像素在目标帧中的位置的良好初始估计,可以提高光流估计的准确性。在一些情况下,具有对像素的移动方向的初始估计意味着光流估计系统可以利用较小的流搜索区域。如下文更详细地描述的,基于神经网络的机器学习系统和/或算法(例如,深度神经网络)可以用于确定流目标图和/或目标帧内的流搜索区域。

在本文中相对于各个附图提供了关于用于使用体积采样进行光流估计的系统的另外的细节。图1是示出可以执行光流估计过程的光流估计系统100的示例的示图。光流估计系统100包括各种部件,包括流目标引擎102、搜索区域引擎104和光流图引擎106。光流估计系统100的部件可以包括电子电路或其他电子硬件,这些电子电路或其他电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、或其他合适的电子电路)、计算机软件、固件或它们的任何组合以执行本文描述的各种操作。虽然光流估计系统100被示出为包括某些部件,但是普通技术人员应当理解,光流估计系统100可以包括比图1所示的那些部件更多或更少的部件。例如,在一些情况下,光流估计系统100还可以包括图1中未示出的一个或多个存储器(例如,RAM、ROM、高速缓存、缓冲器等)和/或处理设备。

光流估计系统100可以是计算设备或多个计算设备的一部分。在一些情况下,包括光流估计系统100的一个或多个计算设备还可以包括用于无线通信的一个或多个无线收发机和/或用于显示一个或多个帧或图像的显示器。在一些示例中,包括光流估计系统100的计算设备可以是电子设备,诸如相机(例如,数字相机、IP相机、摄像机、相机电话、视频电话、或其他合适的捕获设备)、移动或固定电话手持机(例如,智能电话、蜂窝电话等)、台式计算机、膝上型计算机或笔记本计算机、平板电脑、扩展现实设备(例如,虚拟现实设备、增强现实设备和/或混合现实设备)、车辆或者车辆的计算设备或部件、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备、或任何其他合适的电子设备。

光流估计系统100可以获得帧103作为输入。在一些示例中,光流估计系统100可以响应于一个或多个帧103由相机或包括相机的计算设备(例如,移动设备等)捕获而执行光流估计过程。帧103可以包括单个帧或多个帧。在一些情况下,帧103可以包括视频序列的视频帧或一组连续捕获的静态图像中的静态图像。在一个例示性示例中,可以捕获一组连续捕获的静态图像并将其作为相机的视场中的场景的预览显示给用户,这可以帮助用户决定何时提供使图像被捕获以供存储的输入。在另一个例示性示例中,可以使用连拍模式或捕获多个连续图像的其他类似模式来捕获一组连续捕获的静态图像。帧可以是:每像素具有红色、绿色和蓝色分量的红-绿-蓝(RGB)帧;每像素具有亮度分量和两个色度(颜色)分量(色度红和色度蓝)的亮度、色度红、色度蓝(YCbCr)帧;或任何其他合适类型的彩色或单色图片。

在一些示例中,光流估计系统100可以捕获帧103。在一些示例中,光流估计系统100可以从帧源获得帧103。在一些情况下,帧源可以包括一个或多个图像捕获设备和/或一个或多个视频捕获设备(例如,数字相机、数字摄像机、具有相机的电话、具有相机的平板电脑或其他合适的捕获设备)、图像和/或视频存储设备(包括任何合适的存储设备,诸如下文图11中的存储设备1130)、包含所存储图像的图像和/或视频存档、提供图像和/或视频数据的图像和/或视频服务器或内容提供商、从视频服务器或内容提供商接收图像的图像和/或视频馈送接口、用于生成计算机图形图像和/或视频数据的计算机图形系统、此类源的组合、或图像帧内容的其他源。在一些情况下,多个帧源可以向光流估计系统100提供帧。

在一些具体实施中,光流估计系统100和帧源可以是同一计算设备的一部分。例如,在一些情况下,相机、电话、平板电脑、XR设备和/或具有帧或图像源的其他设备(例如,相机、存储装置等)可以包括集成的光流估计系统。在一些具体实施中,光流估计系统100和帧源可以是单独计算设备的一部分。在一个例示性示例中,帧源可以包括一个或多个相机,并且包括光流估计系统100的计算设备可以包括移动或固定电话手持机、台式计算机、膝上型计算机或笔记本计算机、平板电脑或其他计算设备。

在一些示例中,由光流估计系统100执行的光流估计可以使用计算设备的单相机系统来执行。在其他示例中,由光流估计系统100执行的光流估计可以使用计算设备的双相机系统来执行。在一些情况下,相机系统中可以使用两个以上相机来执行光流估计。

光流估计系统100可以处理帧103以通过对帧103中的一对帧内的像素执行光流估计来生成光流图(例如,光流图108)。光流图108可以包括对应于特征和/或像素在两个帧之间的运动的一个或多个光流向量。在一些情况下,这两个帧可以是一系列帧内的直接相邻帧。在一些情况下,这两个帧可以被一个或多个中间帧间隔开(其可以被称为非毗邻帧)。这两个帧之间在该系列帧中较早出现的帧可以称为源帧,并且在该系列帧中较晚出现的帧可以称为目标帧。

在一些示例中,光流估计系统100可以获得光流历史110作为输入。在一些情况下,光流历史110可以包括和/或基于由光流估计系统100在光流估计的一次或多次先前迭代中确定的光流图108。光流历史110还可以包括和/或基于在光流估计期间检测到的特征,诸如在对象检测、语义分割等期间提取的特征。除了来自先前帧的光流图108数据之外,包含在光流历史110内的任何数据在本文中将称为补充历史数据112。例如,光流图108可以指示位于像素位置L1处的像素具有光流值(例如,光流向量)V1。光流历史110中包括的补充历史数据112可以包括将像素P1分类为特定前景对象(诸如球)的一部分的数据。在一些情况下,除了光流图108之外,补充历史数据112可以由光流估计系统输出。

在一些情况下,光流历史110可以是未初始化的,这表示光流历史有时可以不包含历史光流信息,诸如当光流估计系统100尚未处理帧103中的任何帧时。在一些示例中,光流历史110可以包括最近确定的光流图108。在一些情况下,最近确定的光流图108可以对应于帧103中的最近处理的一对帧。在这种情况下,当前光流估计的源帧可以与来自由光流估计系统100执行的先前光流估计的目标帧相同。在一些情况下,在最近确定的光流图108与帧103中当前正在由光流估计系统100处理的帧之间可以存在时间间隙。在一些情况下,光流历史110可以包括来自对正在由光流估计系统100处理的当前目标帧之前的两个或更多个帧执行的光流估计的光流图108(并且在一些情况下,包括补充历史数据112)。

在一些示例中,光流历史110可以包括来自处于正在由光流估计系统100处理的目标帧之前的多个帧的信息。例如,光流历史110可以包含来自正在由光流估计系统100处理的当前帧之前的至少两个帧的信息。在一些示例中,光流历史110可以包括来自由光流估计系统处理的多个先前帧的光流图108。在这种情况下,光流历史110也可以包括对应于这些先前帧中的每个先前帧的补充历史。在一些情况下,光流历史110可以包含一个或多个光流图108,而没有补充历史信息。

在这种情况下,流目标引擎102可以应用光流历史中的可用信息来确定目标帧中的初始估计像素位置。例如,如果光流图108可以用于流目标引擎102,则流目标引擎可以通过将源帧中的每个像素位置偏移来自光流图108的流向量来确定目标帧中的初始估计像素位置。例如,光流图108可以指示先前源帧中的位置L1处的像素运动到先前目标帧中的位置L2。在这种情况下,流目标引擎102可以使用位置L2作为目标帧中的初始估计像素位置。当不存在可用的光流历史110信息时,流目标引擎102可能不能够提供初始估计像素位置偏移。在这种情况下,流目标引擎102可以使用源帧中的原始像素位置作为目标帧中的初始估计位置。例如,源帧中的位置L1处的像素可以具有目标帧中的初始估计像素位置L1。

在一些示例中,流目标引擎102可以将补充历史信息与光流图108组合以确定初始估计。例如,光流图108可以指示像素P3从先前源帧中的位置L3运动到先前目标帧中的位置L4。在一些具体实施中,从L3到L4的运动的此位移向量可以由光流图108的位置L3处的光流向量表示。补充历史信息可以指示先前源帧中的位置L3处的像素是跨多个帧从点A运动到点B的球的一部分。在这种情况下,流目标引擎102可以执行对象检测或语义分割,并且确定当前源帧中的位置L4处的像素是同一球的一部分。在这种情况下,属于球的像素可能已经跨先前的一对帧从位置L3运动到L4,因此目标图引擎知道属于球的像素的最后位置。流目标引擎102可以提供当前源帧中的位置L4处的像素将运动到当前目标帧中的位置L5的初始估计,其中位置L4与位置L5之间的偏移与光流估计系统的先前迭代中位置L3与L4之间的偏移相同。

流目标引擎102可以提供对源帧中的特征和/或像素将出现在正在由光流估计系统100处理的目标帧中何处的初始估计。在一些情况下,流目标引擎102可以访问对应于由光流估计系统100处理的多个先前帧的多个先前光流图108(例如,经由光流历史110)。例如,流目标引擎102可以对帧中的对象进行分类和/或加标签(例如,使用任何类型或形式的对象识别技术,诸如使用一个或多个分类神经网络)。基于分类和/或标签,流目标引擎102可以确定对应于对象(例如,人脸、球、车辆的一部分等)的像素。在一些具体实施中,流目标引擎102可以利用来自多个帧的光流历史110信息来确定对象跨多个帧的运动,以确定所检测对象的轨迹。例如,所检测对象可以是跨帧投掷的球。在第一帧与第二帧之间,球可以具有在光流图108中捕获并结合在光流历史110中的速度和/或位移。在一些情况下,还可以在第三帧中检测到球,并且在第二帧与第三帧之间生成的光流图108可以指示球的速度已经减慢。在一些情况下,流目标引擎102可以利用来自多个先前帧(例如,两个或更多个光流图)的光流历史110的信息来确定球的估计轨迹。在一些示例中,流目标引擎102可以包括确定像素和/或对象的估计轨迹的卡尔曼滤波器。在一些情况下,卡尔曼滤波器可以与对象识别结合使用以确定像素和/或对象的估计轨迹。对跨光流历史110的多个帧的对象运动的计算有时称为顺序流一致性或顺序流一致性计算。

在一些情况下,可以将多个帧的光流历史110存储在循环存储器中,该循环存储器存储最近Y个帧的光流历史信息,其中Y是整数,诸如3个帧、5个帧等。在一些情况下,流目标引擎102可以自适应地改变存储在循环存储器中的光流历史的帧的数量。例如,如果流目标引擎102正在使用光流历史的5个帧来计算顺序流一致性并且确定帧103的特定序列中的运动遵循线性一致模式,则流目标图可以减少存储在循环存储器中的光流历史110的帧的数量。例如,可以将光流历史的帧的数量减少到3。在另一示例中,流目标引擎102可以仅利用光流历史110的单个帧。例如,流目标引擎102可以将存储在先前帧的光流图108中的光流向量应用于当前源帧的像素。如果光流估计系统100和/或流目标引擎102确定光流估计的准确性正退化到准确性阈值以下,则流目标引擎102可以增加存储在循环存储器中并用于顺序流一致性计算的光流历史110的帧的数量。

在一些情况下,流目标引擎102可以使用机器学习系统和/或算法来确定目标帧中的初始估计像素和/或特征位置。例如,机器学习系统和/或算法可以是任何类型或形式的深度神经网络(DNN)。在一个例示性示例中,机器学习算法可以包括视觉几何组(VGG)算法。在另一例示性示例中,机器学习系统和/或算法可以包括残差神经网络(ResNet)。可以使用任何其他机器学习系统和/或算法。在一些情况下,神经网络可以被训练以确定帧内对象的特征。特征可以包括对象标签、对象分类、对象边界以及其他特征。在一些情况下,可以通过向神经网络中输入许多具有已知对象特征的帧或图像来训练神经网络。在一些情况下,还可以通过向神经网络中输入许多具有已知运动特性的帧或图像来训练神经网络以确定与所确定特征相关联的先前运动。在神经网络已被充分训练之后,神经网络可以确定与在推断期间输入到神经网络的新帧(例如,帧103)的所确定特征相关联的特征和/或运动。

在一些具体实施中,搜索区域引擎104可以确定用于在目标帧内搜索源帧的每个像素的流搜索区域。在一些示例中,搜索区域引擎104可以确定足以获得准确光流估计的搜索区域大小。在一些示例中,搜索区域引擎104可以将目标帧中的流搜索区域中的每个流搜索区域组合成相关量。可以基于正在由光流估计系统100处理的数据的特性来应用由搜索区域引擎104应用的流搜索区域的大小。例如,当光流估计系统100正在处理来自卡通动画的帧103时,对象的运动可以不受物理学限制,并且可以需要相对大的搜索区域。如上所述,可以根据正在由光流估计系统分析的数据集的特性来确定流搜索区域的大小。在一些情况下,可以基于如下文关于表1、表2、图6A、图6B、图6C和图6D所描述的示例性数据集的CDF来确定流搜索区域的大小。由搜索区域引擎104选择的流搜索区域的大小可以确定用于执行光流估计的计算和存储器要求。因此,搜索区域引擎104还可以至少部分地基于可用计算和存储器资源(例如,TCM的量)以及光流估计的处理速度要求(例如,光流估计是否需要实时发生)来确定流搜索的大小。在一些情况下,基于神经网络的机器学习系统和/或算法(例如,深度神经网络)可以用于确定流搜索区域的大小。

在一些示例中,可以基于光流历史110的年龄来调整与流目标引擎102估计的初始估计像素位置相关联的置信度水平。光流历史110的年龄可以是正在由光流估计系统100处理的当前目标帧与对应于光流历史110的先前目标帧之间的帧103的数量。例如,与基于紧挨着的前一帧的光流历史110相比,当光流历史110基于处于当前目标帧之前三十个帧的目标帧时,可以应用较低的置信度水平。在一些情况下,当置信度水平降低时,可以对光流历史应用较低的权重。在这种情况下,可以动态地增加由搜索区域引擎104应用的流搜索区域的大小以补偿较低的置信度水平。在一些情况下,当存储在光流历史110中的帧(或条目)存在较高的置信度水平时,可以动态地降低由搜索区域引擎104应用的流搜索区域的大小。例如,随着更多的光流历史信息变得可用和/或在光流历史信息来自紧挨着正在处理的当前帧的先前一个或多个帧的情况下,光流估计系统100可以利用更小的流搜索区域。在一些情况下,由流目标引擎102确定的初始估计像素位置可以存储在流目标图中。在一些情况下,光流估计系统100可以确定加权或滤波(利用系数)以在光流历史110中的可用帧(或条目)之中进行加权。例如,加权可以包括有限脉冲响应滤波器、无限脉冲响应滤波器、基于时间距离的单调递减权重、相等权重(boxcar)、它们的任何组合和/或其他加权。

光流估计系统100的光流图引擎106可以确定对应于帧103的源帧与目标帧之间的像素的光流向量。在一些情况下,光流向量可以指示像素的移动的方向和量值。例如,光流向量可以描述对应于像素在初始帧(例如,源帧)内的位置的坐标与对应于像素在后续帧(例如,目标帧)内的位置的坐标之间的位移。光流图引擎106可以使用任何类型或形式的光流估计技术来确定像素在目标帧内的位置。在一些情况下,光流图引擎106可以基于由搜索区域引擎104确定的流搜索区域来确定源帧中的每个像素与目标帧的像素之间的光流向量。例如,光流图引擎106可以在由搜索区域引擎104生成的相关量内执行所有对相关。附加地或另选地,光流图引擎106可以使用任何合适的机器学习算法(例如,深度神经网络)来确定光流向量。在一些情况下,用于确定光流向量的机器学习算法可以不同于用于选择初始估计像素位置的机器学习算法(例如,流目标引擎102)。

在一些情况下,所有对相关可以确定目标帧中的哪些特征对应于源帧中的特征。光流图引擎106可以基于光流向量生成用于目标帧的光流图108的值。在一些示例中,光流图引擎106可以生成对应于两个相邻帧之间的运动估计的增量光流图。在其他示例中,光流图引擎106可以生成累积光流图(在这种情况下,光流图在每个帧进行调整或更新),该累积光流图对应于其间具有一个或多个中见帧的两个帧之间的运动估计。例如,光流图引擎106可以确定一系列帧内的直接相邻帧的全部或一部分之间的增量光流图。光流图引擎106可以使用增量光流图来更新该系列帧的第一帧与该系列帧的当前帧之间的累积光流图。为了更新累积光流图,光流图引擎106可以将当前帧与先前帧之间的增量光流向量与累积光流图的对应光流向量相加。在一些情况下,光流图引擎106可以使用增量光流图来更新两个相邻帧之间的光流估计的多次迭代之间的累积光流图。

由光流图引擎106输出的光流图108可以用于各种目的和/或任务。例如,如上所述,光流图可以用于以下应用中,包括计算机视觉系统、扩展现实系统、数据压缩、图像分割、自主车辆操作以及其他应用。

图2是示出可以由图1的光流估计系统100执行的光流估计过程的示例的示图。图2示出了帧序列的第一帧201(也称为源帧)和第二帧203(也称为目标帧)的示例。帧201和203可以对应于图1的帧103中的一个帧。帧201被示出为具有W个像素宽乘H个像素高的维度(表示为W×H)。普通技术人员应当理解,帧201可以包括比图2所示的像素位置多得多的像素位置。例如,帧201可以包括3,840×2,160像素分辨率下的4K(或超高清(UHD))帧、1,920×1,080像素分辨率下的HD帧、或具有另一分辨率的任何其他合适的帧。帧201包括像素P1、P2、P3、P4、P5、P6和P7。如图所示,像素P1具有位置202A。像素位置202A可以包括相对于最左上角像素位置(0,0)的(W,H)像素位置(4,1)。在一个例示性示例中,像素P1、P2和P3可以对应于人的鼻尖,并且像素P5可以对应于人的面部与帧的背景之间的边界。

第二帧203具有与第一帧201的像素位置(具有维度W×H)相同的对应像素位置,诸如帧201中的左上角像素(在像素定位或位置(0,0)处)对应于第二帧203中的左上角像素(在像素定位或位置(0,0)处)。如图所示,像素P1已从第一帧201中的像素位置202A运动到第二帧203中的经更新的像素P1位置202B。在第二帧203中示出了来自第一帧201的像素P1的原始位置202C,以允许容易地可视化像素P1在第一帧201与第二帧203之间的位置变化。应当理解,帧203中的像素位置202C可以是第二帧203中由来自第一帧201的不同像素(例如,P2、P3、P4、P5、P6、P7或来自帧201的任何其他像素)占据的位置。在一些情况下,像素位置202C可以由不存在于帧201中的任何像素中的数据(例如,进入帧中的新对象)占据。

经更新的像素P1位置202B可以包括相对于最左上角像素位置(0,0)的(W,H)像素位置(5,2)。可以针对像素P1计算光流向量,从而指示像素P1从第一帧201到第二帧203的速度、位移或光流。在一个例示性示例中,像素P1在帧201与203之间的光流向量(由向量205示出)是(1,1),从而指示像素P1已向右运动了一个像素位置并向下运动了一个像素位置。在一些情况下,光流估计系统100可以确定总共W×H个光流向量,这些光流向量可以表示源帧中的每个像素位置的一个光流向量,包括确定剩余像素P2-P7的光流向量(为简单起见未示出)。W×H个光流向量可以存储在光流图中,诸如图1的光流图108。如上文和下文所述,用于确定光流图的W×H个光流向量的计算工作和存储器要求可以取决于用于定位目标帧中的每个像素的搜索区域(并且在一些情况下,取决于所得到的搜索量)的大小。

图3A是示出可以在光流估计系统(诸如图1的光流估计系统100)中利用的流目标图316以及流搜索区域326和328的示例的示图。图3A示出了两个帧:源帧310和目标帧322。源帧310和目标帧322可以具有宽度=W个像素并且高度=H个像素的维度,每个帧中有总共W×H个像素。在一些具体实施中,光流估计系统可以执行源帧310与目标帧322之间的光流估计。在一些具体实施中,流目标图316可以包括初始光流估计(例如,偏移向量),其可以表示源帧310的像素中的每个像素进入目标帧322的估计速度或移动。在一些示例中,如上所述,流目标图316中的初始光流估计可以基于光流历史,诸如图1的光流历史110。流目标图可以具有与源帧310和目标帧322相同的维度,诸如W×H个值。在光流估计期间,光流估计系统可以在目标帧322中搜索源帧310的每个像素。

在图3A的图示中,目标帧322中的初始估计像素位置324可以对应于源帧310的像素312,其偏移了流目标图316中的对应值318。如图所示,目标帧322的像素324被包括在流搜索区域326内。根据本公开的光流估计系统可以利用流搜索区域326来确定像素312在源帧310与目标帧322之间的光流。流搜索区域326可以是具有高度=h个像素和宽度=w个像素的矩形,并且与全目标帧322相比可以包含更小数量的像素。在一些情况下,在不脱离本公开的范围的情况下,本文描述的流搜索区域(包括流搜索区域326和328)可以是除了矩形之外的形状。类似地,目标帧的初始估计像素位置330可以对应于源帧310的像素314,其偏移了流目标图316的对应值320。如图所示,目标帧322的像素330被包括在流搜索区域328内。如通过图3A的图示应当理解,源帧310中的每个像素可以偏移流目标图316中的对应值以确定每个像素在目标帧322中的初始估计位置。目标帧322中的每个像素还可以具有目标帧322中的包含其初始估计位置的对应流搜索区域。在一些具体实施中,目标帧322中对应于源帧310的每个像素的搜索区域可以被级联以形成相关量332。在一些示例中,通过使每个像素的流搜索区域小于全帧,相关量的总大小可以小于针对源帧310中的每个像素包括像素(例如,对应于目标帧322的W×H个像素)的全帧价值的相关量。相关量的这种减小可以减小TCM的所需大小,以及将执行源帧310与目标帧322之间的光流估计所必需的总计算工作从O(N

虽然在二维源帧310和目标帧322的像素方面讨论了图3A的以上描述和本文提供的其他示例,但是同一技术可以更一般地应用于特征。在一个示例中,源帧310和目标帧322的图像像素可以被视为特征。在另一情况下,可以从源帧310和目标帧提取特征,如上文关于图1的流目标引擎102所描述的。另外,本文描述的技术不限于二维特征图。在流目标图316和流搜索区域中使用初始流估计可以更一般地应用于源特征图F

图3A中描述的二维特征图的一个例示性示例性形状是具有维度H×W的矩形。例如,源特征图F

光流估计系统可以确定F

包括针对光流估计的初始估计空间位移值的流目标图F

在一些情况下,光流历史可以包括多个先前帧的光流估计、语义分割结果和/或对象检测结果(例如,补充历史信息)。在这种情况下,光流估计系统可以基于光流历史的多个先前帧来导出对象运动模型(在本文中也称为顺序流一致性)。在一些情况下,基于神经网络的机器学习模型系统和/或算法(例如,深度神经网络)可以用于基于观察历史来确定一个或多个对象的轨迹。在一些情况下,可以利用卡尔曼滤波器基于多个先前帧的光流历史来确定一个或多个对象的轨迹。在一个示例中,视频中的帧序列可以包含从点A运动到点B的球。球可以例如由于重力而速度减慢或高度降低。光流估计系统(例如,使用流目标引擎102)可以产生球的估计轨迹并估计球在目标坐标系中的可能位置。在一些情况下,光流估计系统可以使用估计的轨迹(在本文中也称为顺序流一致性)来确定球的像素和/或特征的初始估计空间位移值。在一些情况下,顺序流一致性项可以表达为与先前光流图值Flow

图3B提供了源帧310的像素312和314与目标帧322中的对应初始估计像素位置338和344以及流搜索区域340和346之间的关系的另一图示。如图3B所示,像素312在目标帧322中具有初始估计像素位置338和对应的流搜索区域340。如图所示,初始估计像素位置338落入具有高度=h个像素和宽度=w个像素的流搜索区域340内。类似地,像素314具有对应的初始估计像素位置344,以及具有高度=h个像素和宽度=w个像素的对应的流搜索区域346。源帧310中的每个像素的初始估计像素位置可以存储在流目标图(例如,图3A的流目标图316)中。如上所述,流搜索区域340和346可以被包括在相关量(诸如图3A的相关量332)中。在一些现有的光流估计系统具体实施中,源帧310中的每个像素的流搜索区域可以包括全目标帧322的像素。在这种具体实施中,每个像素的流搜索区域可以具有宽度=W个像素和高度=H个像素。在这种具体实施中,可以从目标帧322的全帧像素形成相关量。

图4A示出了包括流搜索区域433A、433B至433N的相关量432的示例。相关量432可以类似于图3A的相关量332并且执行与之类似的功能。如图4A所示,流搜索区域433A、433B至433N中的每个流搜索区域可以具有宽度=w个特征和高度=h个特征,使得每个流搜索区域433A、433B至433N中的值(例如,特征值)的总数等于w×h个特征。如上文关于图3A所描述的,流搜索区域433A、433B至433N的宽度w和高度h可以小于全目标帧(例如,目标帧322)的对应宽度W和高度H。在一些具体实施中,源特征图(诸如特征图F

图4B示出了包括流搜索区域443A、443B至443N的相关量442的示例,该相关量可以在光流估计系统在目标帧的每个像素内搜索源帧的每个像素的情况下使用。在一些具体实施中,源特征图(诸如源特征F

表1

表2

表1提供了四个不同光流数据集Flying Chairs、Flying Things、Sintel和KITTI2015(“KITTI”)的相关量的示例性大小。表1中标记为H和W的列中的值表示对应数据集中的每个数据集内的帧的高度(H)和宽度(W)。例如,KITTI数据集中的帧具有288个像素的高度和960个像素的宽度。在一些情况下,可以仅对帧的子部分执行光流估计以减少光流操作的存储器和计算要求。表1中标记为H'和W'的列中的值表示相应数据集的高度H和宽度W的1/8。在一些示例中,可以对具有高度=H'和宽度=W'的中心裁剪(例如,视频帧的中心部分)执行光流估计。表1中标记为全量的列中的值表示使用目标帧的每个像素作为流搜索区域而形成的相关量的大小,诸如上文图4B中所示。在一些具体实施中,还可以将目标帧中心裁剪到H'×W'的维度。如从上文图4B的描述可以理解的,相关量大小可以等于H'×W'×H'×W'。在一个例示性示例中,对于利用维度为36×120的经裁剪的源图像和目标图像的KITTI数据集,所得到的相关量可以包括18,662,400个值。表1中标记为情况1的列中的值表示利用小于全目标帧的流搜索区域(诸如上文图3A的流搜索区域326和328)创建的相关量的相关量大小。情况1的光流搜索区域具有高度h=32和宽度w=32。情况1的所得到的相关量大小可以等于H'×W'×h×w。对于KITTI数据集,所得到的相关量可以包括2,298,240个值(例如,像素值)。因此,存储情况1对于KITTI数据集的相关量所需的存储器量是来自全量列的相关量的23.7%。

表2是表1的延续。表1的数据集和量列在表2中重复以便于表之间的交叉引用。表2中标记为情况2、情况3、情况4和情况5的列中的值表示利用小于全目标帧的流搜索区域(诸如上文图3A的流搜索区域326和328)创建的相关量的相关量大小。这四种情况的列标题中的每个列标题包括相应的光流搜索区域维度:高度=h和宽度=w。每种情况的光流搜索区域维度小于经裁剪的源帧或目标帧的对应维度H'和W'。例如,情况1列中的值表示针对每个数据集从具有高度=14和宽度=38的流搜索区域创建的量的大小。如表中所示,情况2、情况3、情况4和情况5对于KITTI数据集的相关量可以需要全量相关量所需的存储器的12.31%、6.37%、2.50%和1.67%。减少的相关量大小还可以导致针对相关量内的逐对相关性的计算工作的对应减少。在一些情况下,这些几乎一个数量级的存储器和计算节省可以在无需相对较低的准确性成本的情况下实现。例如,情况2和情况3的实验结果表明,当与全量情况相比时,所得到的光流图对于KITTI数据集覆盖了特征相关的97.25%,并且对于Sintel数据集覆盖了特征相关的97.41%。这表示由于减小了光流搜索区域,丢失了小于3%的光流信息。

如上表1所示,对于全量情况,对于源帧中的W'×H'=N个像素中的每个像素,在目标帧的流搜索区域内可以存在W'×H'=N个可能位置,这些位置被搜索以寻找像素在目标帧中的位置。因此,完成光流估计所需的存储器和计算工作量是O(N

图5是示出光流估计系统500的示例的示图。在一些情况下,光流估计系统500的全部或一部分可以对应于图1的光流估计系统100和/或包括在所述光流估计系统内。例如,光流估计系统500的引擎(例如,特征提取引擎502、流预测引擎504、特征采样引擎506、相关量引擎508和光流计算引擎510)可以被配置为执行由光流估计系统100的引擎执行的功能的全部或一部分和/或任何附加功能。如下文将更详细地解释的,光流估计系统500可以使用体积采样来执行针对光流估计优化的功能。

如图5所示,光流估计系统500可以接收源帧I

在一些示例中,特征提取引擎502可以确定与源帧I

在一些情况下,特征向量可以包括与像素的空间特性相关的信息。空间特性可以包括像素与对象边界的关联、像素的平滑度、与像素相关联的中断部分以及其他特性。在一些情况下,空间特性可以包括与像素对整个光流估计的重要性和/或相关性相关联的空间置信度。例如,具有高空间置信度的像素对于光流估计可以是高度重要和/或相关的(例如,大量移动)。在一些情况下,特征向量可以包括与像素的时间特性相关的信息。在一些情况下,像素的时间特性可以包括与像素的运动相关联的一个或多个特性,包括运动的速度、运动的加速度以及其他特性。在一个示例中,时间特性可以包括与像素的运动对整个光流估计的重要性和/或相关性相关联的置信度。例如,具有高时间置信度的像素可能对光流估计是高度重要和/或相关的。

在一些情况下,特征提取引擎502可以确定与帧相关联的多尺度上下文特征。多尺度上下文特征可以包括与处于各个尺度(例如,分辨率)的帧相关联的特征。例如,特征提取引擎502可以确定与帧的高尺度(例如,全分辨率)版本相关联的上下文特征。附加地或另选地,特征提取引擎502可以确定与帧的一个或多个较低尺度(例如,降低的分辨率)版本相关联的上下文特征。在一些情况下,与不同尺度相关联的上下文特征可以被用于光流估计过程的不同步骤处。例如,利用低尺度特征向量可以提高一些光流估计步骤的效率,而利用高尺度特征向量可以提高其他光流估计步骤的质量和/或准确性。

在一些情况下,与像素相关联的上下文特征可以包括与该像素周围和/或附近的像素相关联的上下文特征,如上面提到的。例如,帧的每个像素可以表示被一个或多个相邻像素围绕的中心像素。在一个示例中,相邻像素可以指代与中心像素直接相邻(例如,水平、垂直和/或对角相邻)的任何像素。在其他示例中,相邻像素可以指代与中心像素分开不超过阈值距离或像素数量的像素(例如,2个像素、3个像素等)。在其他示例中,相邻像素可以是与像素具有高空间和/或时间关联的像素。这些像素可以与中心像素相邻,或者与中心像素不相邻(例如,非局部)。特征提取引擎502可以确定与中心像素相关联的任何数量的相邻像素的上下文特征。例如,特征提取引擎502可以提取和收集与光流估计处理的一个或多个步骤所需的上下文特征同样多的上下文特征(下文更详细地解释)。特征采样引擎506还可以将相邻像素的上下文特征与中心像素相关联。例如,特征提取引擎502可以在与中心像素相关联的数据结构内与中心像素的上下文特征相组合地级联、分组和/或以其他方式存储相邻像素的上下文特征。数据结构可以包括对应于中心像素的坐标的索引。在一个示例中,特征提取引擎502可以通过加权、求和、级联和/或其他技术来融合与每个相关相邻像素相关联的上下文特征。例如,特征提取引擎502可以根据公式f

将相邻像素的上下文特征与中心像素的上下文特征进行关联可以提高光流估计的准确性。例如,与中心像素相组合地确定和存储相邻像素的上下文特征可以帮助光流估计系统500准确地标识后续帧内对应于中心像素的像素。与相邻像素相关联的上下文信息可以帮助光流估计系统500从多个候选像素内准确地选择对应像素。

流预测引擎504可以提供来自流目标图(例如,图3A的流目标图316)的初始流估计值。在一些情况下,流预测引擎504还可以包括可以由下文的相关量引擎508利用的流搜索区域的维度。在一些情况下,流预测引擎还可以提供补充历史数据,诸如上文图1的补充历史数据112。补充历史数据可以与由特征提取引擎502生成的特征组合以执行如上所述的顺序流一致性计算。例如,如果流预测引擎504包括关于球的轨迹的补充历史数据,则由特征提取引擎502提取的与源帧中的球相关的特征可以与补充历史信息组合以提供球在目标帧中的初始估计位置。

在一些情况下,特征采样引擎506可以接收由特征提取引擎502提取的特征(例如,由一个或多个特征向量表示)。特征采样引擎506可以执行对特征的采样点进行采样和/或重新分组的操作。例如,特征采样引擎506可以对特征向量(或特征向量中的特征采样点)进行检索和/或分组以促进后续处理阶段。

相关量引擎508可以从特征采样引擎506接收经采样的特征向量。相关量引擎508可以对经采样的特征向量执行相关量计算。例如,使用来自两个输入帧(和目标帧I

光流计算引擎510可以从相关量引擎508接收相关量计算(例如,所计算的相关量)。光流计算引擎510可以使用相关量计算中的特征来执行逐点(例如,逐像素)光流估计。在一些情况下,光流计算引擎510可以使用一个或多个神经网络操作(例如,一个或多个卷积层、一个或多个残差卷积块和/或其他网络操作)来精细化和/或调整光流估计。例如,光流计算引擎510可以确定特定特征向量的光流估计。在一个示例中,光流计算引擎510可以执行光流估计以确定像素或像素区域的光流向量。在一些示例中,对应于源帧I

由光流计算引擎510计算的光流F

其中Ff,T是(例如,如由流预测引擎504提供的)初始流目标图,并且ΔF

F

在一些情况下,光流计算引擎510可以仅执行单次迭代,在这种情况下,初始流目标向量将以单个值ΔF

如上所述,特征提取引擎502可以确定与帧的像素相关联的多尺度上下文特征。在一些情况下,光流估计过程的各个步骤可以利用不同尺度的上下文特征。例如,光流计算引擎510可以利用呈多个尺度的特征金字塔、具有一个或多个尺度的级联和/或融合的特征、或特征的其他组合的形式的提取特征。

在一些示例中,光流计算引擎510可以采用最近的像素级或补丁级(例如,针对像素和相关联的相邻像素)流(或位移)估计以在相关量中查找对应的相关性度量以及合适的邻域上下文(例如,与相邻像素的关联)。在这种示例中,所查找的度量可以被进一步馈送到前馈循环神经子网或(多个)卷积/滤波层中以估计和更新新的每像素或每补丁流或位移。

图6A和图6B示出了可以用于确定由图1的光流估计系统100使用的流搜索区域的形状和/或大小的第一示例性视频数据集的示例性累积分布函数。图6A的CDF 602示出了第一数据集的宽度维度(例如,左右移动)中的光流向量分量的CDF。图6A的CDF 602可以通过使用光流估计(诸如光流估计系统100)执行光流估计并绘制光流估计值的所得到的宽度维度分量来获得。累积分布函数的y轴值表示在宽度维度上具有小于绘图的对应x轴值的值的光流向量分量的值的百分比。如图6A所示,第一数据集的宽度维度上大约98%百分比(例如,第1百分位与第99百分位之间)的光流值落在-10与15之间。在一些情况下,可以使用对第一数据集的CDF的特性的了解来为光流估计系统进行的光流估计设置流搜索区域的宽度。在一个例示性示例中,用于光流估计的流搜索区域的宽度w可以设置为25以对应于图6A中示出的范围-10至15。

图6B示出了第一数据集的高度维度(例如,上下移动)中的光流向量分量的CDF604。图6B的CDF 604可以通过执行光流估计(诸如由光流估计系统100执行的光流估计)并绘制所得到的光流值的所得到的高度维度分量来获得。如图6B所示,第一数据集的高度维度上大约98%(例如,第1百分位与第99百分位之间)的光流值落在-5与6之间。在一个例示性示例中,用于光流估计的流搜索区域的宽度w可以设置为11以对应于图6B中示出的范围-5至6。如图6B所示,高度维度上的光流值相比负值偏向于具有较大的正值。

如针对图6A和图6B描述的宽度为25个像素和高度为11个像素的流搜索区域的例示性示例对应于上文相对于表2描述的情况3。基于从Sintel数据集获得的实验CDF导出例示性值。

图6C示出了第二数据集在宽度维度上的CDF 606。如图6C所示,第一数据集的宽度维度上大约98%百分比(例如,第1百分位与第99百分位之间)的光流值落在-16与22之间。在一个例示性示例中,用于光流估计的流搜索区域的宽度w可以设置为38以对应于图6C中示出的范围-16至22。

图6D示出了第二数据集在高度维度上的CDF 608。如图6D所示,第一数据集的高度维度上大约98%(例如,第1百分位与第99百分位之间)的光流值落在-4与10之间。在一个例示性示例中,用于光流估计的流搜索区域的宽度w可以设置为14以对应于图6D中示出的范围-4至10。

如针对图6C和图6D描述的宽度为38个像素和高度为14个像素的流搜索区域的例示性示例对应于上文相对于表2描述的情况2。基于从KITTI数据集获得的实验CDF导出例示性值。

图7A、图7B、图7C和图7D是示出可以由图1的光流估计系统100使用的示例性光流搜索区域的示图。如图7A、图7B、图7C和图7D所示,帧序列的源帧701中的第一像素位置702A可以在帧序列的目标帧703中具有对应像素位置702B。在例示的示例中,源帧701和目标帧703各自具有H个像素的高度和W个像素的宽度。一旦在搜索区域内找到对应像素位置702B,就可以通过确定像素的移动量来产生光流向量,如上文关于图2所描述的。

图7A示出了包括要搜索的目标帧的每个像素的流搜索区域720的示例。如上所述,光流估计系统(例如,光流估计系统100)可以在目标帧703内搜索源帧701的每个像素以生成光流图。在图7A所示的示例中,流搜索区域720包括等于目标帧703中的像素数量的W×H个总搜索位置。如上所述,利用全帧作为流搜索区域可以导致存储器和计算工作两方面的显著成本。例如,基于对目标帧的全帧搜索在相关量内执行点到点相关可以在计算和存储器成本方面以O(N

图7B示出了流搜索区域722的示例,其为具有三个像素的宽度和高度并且以目标帧703中的初始流目标732为中心的正方形。在一些情况下,当数据集在宽度维度和高度维度上都具有对称CDF时,可以使用正方形流搜索区域722。在一些示例中,当将由光流估计系统分析的视频数据的特性不可用并且不存在一个方向优于另一方向的优先搜索基础时,可以使用对称流搜索区域722。在一些方面,正方形流搜索区域722的宽度和高度可以根据正在被分析的视频数据的特性(例如,CDF的特性)而变化。另外,在一些方面,正方形流搜索区域722的宽度和高度可以根据是否存在可供光流估计系统使用的光流历史信息而变化。例如,当不存在可用光流历史信息时,可能需要较大的流搜索区域。相反,当光流历史的一个或多个帧可用时,可以使用较小的流搜索区域。在一个例示性示例中,当没有光流历史可用时,光流估计系统可以使用32×32像素的正方形流搜索区域722,并且当光流历史的一个或多个帧可用时,可以使用16×16像素的正方形流搜索区域。

图7C示出了宽度为三个像素并且高度为五个像素的矩形的示例性光流搜索区域724,以及在宽度维度和高度维度两者上都居中的初始流估计734。在一些情况下,当正在由光流估计系统处理的视频数据集在一个维度上与另一维度相比具有更大的光流值变化时,可以利用矩形光流搜索区域。例如,在例示的示例中,当CDF的高度和宽度接近对称时(诸如上文在图6A和图6B中示出的CDF 602和CDF 604),可以使用光流搜索区域724。

图7D示出了示例性光流搜索区域726,其具有与光流搜索区域724相同的形状,但是具有不在流搜索区域内居中的初始流估计736。在一些方面,当正在被处理的视频数据集在宽度和/或高度维度上的一个方向上与另一方向相比具有更大分布时,可以利用光流搜索区域726。例如,流搜索区域726可以对应于图6D所示的CDF 608,其在高度维度上具有偏向正值的分布,这可以对应于向下移动。图7D示出了初始流估计736上方的一行像素和初始流估计下方的三行像素。因此,与初始流估计上方相比,光流搜索区域726也可以在初始流估计736下方包括更多的像素。

所描述的系统和技术提供了使用来自目标帧的在流搜索区域中的像素和/或特征的子集来生成相关量的体积采样,这与使用基于目标帧的所有像素的相关量来执行相关形成对比。这种解决方案可以有益于在具有有限的计算和存储器资源(特别是低延迟存储器,诸如TCM)的设备上执行的光流估计。在一些情况下,光流估计还可以利用流目标图来提供像素和/或特征在目标帧中的初始估计位置。在一些情况下,流目标图可以基于单个先前光流估计,并且在一些情况下,流目标图可以基于多个先前光流估计。

通过确定小于全目标帧的大小但不显著退化光流估计准确性的流搜索区域,光流估计系统(例如,光流估计系统100和光流估计系统500)可以根据O(N)而不是O(N

图8是示出使用本文描述的技术中的一种或多种技术在一个或多个帧之间进行光流估计的过程800的示例的流程图。在框802处,过程800包括确定与多个帧相关联的光流预测。在一个例示性示例中,确定与多个帧相关联的光流预测包括执行相对于图1所示的流目标引擎102描述的功能。在一些情况下,光流预测包括流目标图。在一些情况下,流目标图可以包含先前帧的光流历史信息。

在框804处,过程800包括确定与第一帧相关联的至少一个特征的位置。在一些情况下,第一帧可以在帧序列中处于第二帧之前。例如,在一些情况下,过程800可以包括对至少一个特征执行对象检测以确定与该至少一个特征相关联的对象类型。例如,过程800可以确定至少一个特征与对象、车辆、人、道路标志、道路等相关联。过程800可以基于与至少一个特征相关联的对象类型来确定光流预测。在一个例示性示例中,确定与至少一个特征相关联的对象类型包括执行相对于图5所示的特征提取引擎502和/或特征采样引擎506描述的功能。在一些情况下,过程800可以基于与至少一个特征相关联的对象类型来确定光流预测。在一些情况下,与第一帧相关联的所述至少一个特征包括第一帧中的对象的至少一部分的像素位置。在一些情况下,与第一帧相关联的至少一个特征包括第一帧中的对象的至少一部分的像素位置。

在框806处,过程800包括基于至少一个特征在第一帧中的位置和光流预测来确定用于在第二帧中搜索至少一个特征的搜索区域的位置估计。例如,在一些情况下,过程800可以利用光流历史来确定至少一个特征在第二帧中的初始估计位置。在一些情况下,过程800可以包括利用补充历史数据来确定搜索区域的位置估计。在一些情况下,过程800包括:确定光流预测包括获得对应于第一帧中的对象的至少一部分的像素位置的光流向量。如上所述,第一帧可以在帧序列中处于第二帧之前。

在一些情况下,对应于至少一个特征的光流预测基于至少第三帧,其中第三帧在帧序列中处于第一帧和第二帧之前。在一些情况下,第三帧可以是紧挨在第一帧和第二帧之前的单个帧。在一些情况下,光流预测可以基于基于至少第三帧确定的光流图。在一些情况下,第三帧可以在帧序列中包括在第一帧和第二帧之前。在一些情况下,光流预测可以包括基于第三帧以及帧序列的处于第一帧和第二帧之前的一个或多个附加帧的光流历史信息。

在框808处,过程800包括从搜索区域内确定至少一个特征在第二帧中的位置。例如,在一些情况下,确定该至少一个特征在第二帧中的位置可以包括生成相关量。在一个例示性示例中,生成相关量包括执行相对于图5所示的相关量引擎508描述的功能。在一些情况下,过程800可以执行光流计算以确定至少一个特征在第二帧中的位置。在一个例示性示例中,光流计算可以包括相对于图5所示的光流计算引擎510描述的功能。在一些情况下,搜索区域至少包括至少一个特征在第二帧中的估计像素位置。估计像素位置可以在搜索区域内居中或者可以相对于搜索区域偏心。在一些情况下,搜索区域包括具有高度和宽度的矩形,其中高度和宽度不同。

在一些示例中,过程800包括:确定搜索区域的位置估计包括将与第一帧相关联的至少一个特征的位置偏移与该至少一个特征相关联的光流预测的光流预测值。在一些情况下,过程800可以包括:确定光流预测包括获得对应于对象的至少一部分的像素位置的光流向量。在一些示例中,第一帧可以包括多个特征,并且过程800可以包括确定这些特征在第二帧中的对应估计位置。

在一些示例中,本文描述的过程(例如,过程800和/或本文描述的其他过程)可以由计算设备或装置(诸如具有图1所示的计算系统1100的计算设备架构的计算设备)来执行。在一个示例中,过程800可以由具有实现图1所示的光流估计系统100的计算系统1100的计算设备架构的计算设备来执行。在一些示例中,计算设备可以包括移动设备(例如,移动电话、平板计算设备等)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备、或混合现实(MR)设备)、个人计算机、膝上型计算机、视频服务器、电视机、车辆(或车辆的计算设备)、机器人设备、和/或具有执行本文描述的过程(包括过程800)的资源能力的任何其他计算设备。

在一些情况下,计算设备或装置可以包括各种部件,诸如一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机、一个或多个发射器、接收器或组合的发射器-接收器(例如,称为收发器)、一个或多个相机、一个或多个传感器和/或被配置为执行本文描述的过程的步骤的其他(多个)部件。在一些示例中,计算设备可以包括显示器、被配置为传送和/或接收数据的网络接口、它们的任何组合和/或其他(多个)部件。网络接口可以被配置为传送和/或接收基于互联网协议(IP)的数据或其他类型的数据。

计算设备的部件可以在电路中实现。例如,部件可以包括电子电路或其他电子硬件,和/或可以使用电子电路或其他电子硬件来实现,这些电子电路或其他电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、神经处理单元(NPU)和/或其他合适的电子电路),和/或可以包括计算机软件、固件或其任何组合,和/或可以使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。

过程800被示出为逻辑流程图,该逻辑流程图的操作表示能够以硬件、计算机指令或它们的组合来实现的操作序列。在计算机指令的上下文中,各操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,这些指令在由一个或多个处理器执行时执行所叙述的操作。一般来讲,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、部件、数据结构等。操作以其描述的顺序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何顺序和/或并行地组合以实现过程。

另外,本文描述的过程(包括过程800和/或本文描述的其他过程)可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、通过硬件来实现,或它们的组合。如上所述,代码可以被存储在计算机可读或机器可读存储介质上,例如,以包括由一个或多个处理器可执行的多个指令的计算机程序的形式。计算机可读或机器可读存储介质可以是非暂态的。

如上所述,本文所描述的光流估计系统和技术可以使用基于神经网络的机器学习系统来实现。可以使用的神经网络的例示性示例包括一个或多个卷积神经网络(CNN)、自动编码器、深度信念网(DBN)、循环神经网络(RNN)、生成对抗网络(GAN)、门控循环单元(GRU)、它们的任何组合和/或任何其他合适的神经网络。

图9是可以由光流估计系统使用的深度学习神经网络900的例示性示例。输入层920包括输入数据。在一个例示性示例中,输入层920可以包括表示输入视频帧的像素的数据。神经网络900包括多个隐藏层922a、922b至922n。隐藏层922a、922b至922n包括“n”个隐藏层,其中“n”是大于或等于一的整数。可以使多个隐藏层包括给定应用所需要的尽可能多的层。神经网络900还包括输出层924,该输出层提供由隐藏层922a、922b至922n执行的处理产生的输出。在一个例示性示例中,输出层924可以提供输入视频帧中的对象的分类。分类可以包括标识对象的类型(例如,人、狗、猫或其他对象)的类别。

神经网络900是互连节点的多层神经网络。每个节点可以表示一条信息。与这些节点相关联的信息在不同的层之间共享,并且每个层在处理信息时保留信息。在一些情况下,神经网络900可以包括前馈网络,在前馈网络中,不存在网络的输出被反馈到其自身的反馈连接。在一些情况下,神经网络900可以包括循环神经网络,其可以具有允许在读入输入时跨节点携带信息的循环。

可以在各节点之间通过各个层之间的节点到节点互连来交换信息。输入层920的节点可以激活第一隐藏层922a中的节点集合。例如,如图所示,输入层920的输入节点中的每个输入节点连接到第一隐藏层922a的节点中的每个节点。隐藏层922a、922b至922n的节点可以通过向每个输入节点的信息应用激活函数来变换该信息。然后可以将从该变换导出的信息传递到下一隐藏层922b的节点并可以激活该下一隐藏层的该节点,该下一隐藏层的该节点可以执行其自己的指定功能。示例功能包括卷积、上采样、数据变换和/或任何其他合适的功能。然后,隐藏层922b的输出可以激活下一隐藏层的节点,并且以此类推。最后隐藏层922n的输出可以激活输出层924的一个或多个节点,在该一个或多个节点处提供输出。在一些情况下,虽然神经网络900中的节点(例如,节点926)被示出为具有多条输出线,但是节点具有单个输出,并且被示出为从节点输出的所有线表示相同的输出值。

在一些情况下,每个节点或节点之间的互连可以具有权重,该权重是从神经网络900的训练导出的参数集合。一旦神经网络900被训练,它就可以被称为经训练的神经网络,其可以用于对一个或多个对象进行分类。例如,节点之间的互连可以表示关于互连节点学习的一条信息。互连可以具有可被调整(例如,基于训练数据集)的可调整数字权重,从而允许神经网络900适应于输入并且能够随着越来越多的数据被处理而进行学习。

神经网络900被预训练,以使用不同的隐藏层922a、922b至922n处理来自输入层920中的数据的特征,以便通过输出层924提供输出。在神经网络900用于识别图像中的对象的示例中,可以使用包括图像和标签两者的训练数据来训练神经网络900。例如,可以将训练图像输入到网络中,其中每个训练图像具有指示每个图像中的一个或多个对象的类别的标签(基本上,向网络指示对象是什么以及它们具有什么特征)。在一个例示性示例中,训练图像可以包括数字2的图像,在这种情况下,图像的标签可以是[0 0 1 0 0 0 0 0 0 0]。

在一些情况下,神经网络900可以使用称为反向传播的训练过程来调整节点的权重。反向传播可以包括前向传递、损失函数、反向传递和权重更新。对一次训练迭代执行前向传递、损失函数、后向传递和参数更新。针对每个训练图像集合,该过程可以重复一定次数的迭代,直到神经网络900被训练得足够好,使得各层的权重被准确地调整。

对于识别图像中的对象的示例,前向传递可以包括将训练图像传递通过神经网络900。在训练神经网络900之前,最初使权重随机化。图像可以包括例如表示图像的像素的数字阵列。阵列中的每个数字可以包括从0到255的值,其描述阵列中该位置处的像素强度。在一个示例中,阵列可以包括28×28×3数字阵列,其具有28行和28列像素和3个颜色分量(例如红色、绿色和蓝色,或明度和两个色度分量、等等)。

对于神经网络900的第一次训练迭代,输出将可能包括由于在初始化时随机选择的权重而不优先考虑任何特定类别的值。例如,如果输出是具有对象包括不同类别的概率的向量,则针对不同类别中的每个类别的概率值可以相等或至少非常相似(例如,对于十个可能的类,每一类可以具有0.1的概率值)。利用初始权重,神经网络900不能确定低级特征,并且因此不能准确地确定对象的分类可能是什么。可以使用损失函数来分析输出中的误差。可以使用任何合适的损失函数定义。损失函数的一个示例包括均方误差(MSE)。MSE被定义为

对于第一次训练图像,损失(或误差)将是高的,因为实际值将与预测的输出大不相同。训练的目标是使损失量最小,从而使得预测的输出与训练标签相同。神经网络900可以通过确定哪些输入(权重)对网络的损失贡献最大来执行反向传递,并且可以调整权重以使得损失减小并最终减到最小。

可以计算损失相对于权重的导数(表示为dL/dW,其中W是特定层处的权重),以确定对网络的损失贡献最大的权重。在计算导数之后,可以通过更新滤波器的所有权重来执行权重更新。例如,可以更新权重,使得它们在梯度的相反方向上改变。权重更新可以表示为

神经网络900可以包括任何合适的深度网络。一个示例包括卷积神经网络(CNN),其包括输入层和输出层,在输入层和输出层之间具有多个隐藏层。在下文相对于图9描述了CNN的示例。CNN的隐藏层包括一系列卷积层、非线性层、池化层(用于下采样)和全连接层。神经网络900可以包括除了CNN之外的任何其他深度网络,诸如自动编码器、深度信念网(DBN)、循环神经网络(RNN)等。

图10是卷积神经网络1000(CNN 1000)的例示性示例。CNN 1000的输入层1020包括表示图像的数据。例如,数据可以包括表示图像的像素的数字阵列,其中阵列中的每个数字包括描述阵列中该位置处的像素强度的从0到255的值。使用来自上文的先前示例,阵列可以包括具有28行和28列像素和3个颜色分量(例如,红色、绿色和蓝色,或明度和两个色度分量等)的28×28×3数字阵列。图像可以传递通过卷积隐藏层1022a、可选的非线性激活层、池化隐藏层1022b和全连接隐藏层1022c,以在输出层1024处获得输出。虽然图10中仅示出了各个隐藏层中的一个隐藏层,但是普通技术人员将理解,多个卷积隐藏层、非线性层、池化隐藏层和/或全连接层可以包括在CNN 1000中。如前所述,输出可以指示对象的单个类别,或者可以包括最佳地描述图像中的对象的类别的概率。

CNN 1000的第一层是卷积隐藏层1022a。卷积隐藏层1022a分析输入层1020的图像数据。卷积隐藏层1022a的每个节点被连接到称为感受野的输入图像的节点(像素)的区域。卷积隐藏层1022a可以被认为是一个或多个滤波器(每个滤波器对应于不同的激活或特征图),其中滤波器的每次卷积迭代是卷积隐藏层1022a的节点或神经元。例如,滤波器在每次卷积迭代时覆盖的输入图像的区域将是滤波器的感受野。在一个例示性示例中,如果输入图像包括28×28阵列,并且每个滤波器(和对应的感受野)是5×5阵列,则在卷积隐藏层1022a中将存在24×24个节点。节点与该节点的感受野之间的每个连接学习权重,并且在一些情况下学习整体偏差,使得每个节点学习分析输入图像中的其特定局部感受野。隐藏层1022a的每个节点将具有相同的权重和偏差(被称为共享权重和共享偏差)。例如,滤波器具有权重(数字)阵列和与输入相同的深度。对于视频帧示例,滤波器将具有深度3(根据输入图像的三个颜色分量)。滤波器阵列的例示性示例大小是5×5×3,对应于节点的感受野的大小。

卷积隐藏层1022a的卷积性质是由于卷积层的每个节点被应用于其相应的感受野。例如,卷积隐藏层1022a的滤波器可以在输入图像阵列的左上角开始,并且可以围绕输入图像卷积。如上所述,滤波器的每次卷积迭代可以被认为是卷积隐藏层1022a的节点或神经元。在每次卷积迭代中,过滤器的值与图像的对应数目的原始像素值相乘(例如,5×5过滤器阵列与输入图像阵列的左上角的输入像素值的5×5阵列相乘)。可以将来自每次卷积迭代的乘法相加在一起以获得该迭代或节点的总和。接下来,根据卷积隐藏层1022a中的下一节点的感受野,在输入图像中的下一位置处继续该过程。例如,滤波器可以运动一个步进量到下一个感受野。步进量可以设置为1或其他合适的量。例如,如果步进量设置为1,则滤波器将在每次卷积迭代时向右运动1个像素。在输入体积的每个唯一位置处处理滤波器产生表示该位置的滤波器结果的数字,导致针对卷积隐藏层1022a的每个节点确定总和值。

从输入层到卷积隐藏层1022a的映射称为激活图(或特征图)。激活图包括表示输入体积的每个位置处的滤波器结果的针对每个节点的值。激活图可以包括阵列,该阵列包括由滤波器对输入体积的每次迭代产生的各种总和值。例如,如果将5×5滤波器应用于28×28输入图像的每个像素(步进量为1),则激活图将包括24×24阵列。卷积隐藏层1022a可以包括若干激活图,以便识别图像中的多个特征。图10中所示的示例包括三个激活图。使用这三个激活图,卷积隐藏层1022a可以检测三个不同种类的特征,其中每个特征在整个图像上是可检测的。

在一些示例中,可以在卷积隐藏层1022a之后应用非线性隐藏层。非线性层可以用于将非线性引入到已经计算线性运算的系统。非线性层的一个例示性示例是修正线性单元(ReLU)层。ReLU层可以将函数f(x)=max(0,x)应用于输入体积中的所有值,这将所有负激活改变为0。因此,ReLU可以增加CNN 1000的非线性特性,而不影响卷积隐藏层1022a的感受野。

可以在卷积隐藏层1022a之后应用(并且在使用时在非线性隐藏层之后应用)池化隐藏层1022b。池化隐藏层1022b用于简化来自卷积隐藏层1022a的输出中的信息。例如,池化隐藏层1022b可以获取从卷积隐藏层1022a输出的每个激活图,并使用池化函数生成浓缩的激活图(或特征图)。最大池化是由池化隐藏层执行的函数的一个示例。池化隐藏层1022a使用其他形式的池化函数,诸如平均池化、L2范数池化或其他合适的池化函数。将池化函数(例如,最大池化滤波器、L2范数滤波器或其他合适的池化滤波器)应用于卷积隐藏层1022a中包括的每个激活图。在图10所示的示例中,三个池化滤波器被用于卷积隐藏层1022a中的三个激活图。

在一些示例中,可以通过将具有步进量(例如,等于滤波器的维度,诸如步进量2)的最大池化滤波器(例如,具有2×2的大小)应用于从卷积隐藏层1022a输出的激活图来使用最大池化。来自最大池化滤波器的输出包括滤波器卷积的每个子区域中的最大数。使用2×2滤波器作为示例,池化层中的每个单元可以总结前一层中2×2节点的区域(其中每个节点是激活图中的值)。例如,激活图中的四个值(节点)将在滤波器的每次迭代时由2×2最大池化滤波器分析,其中四个值中的最大值被作为“最大”值输出。如果将这样的最大池化滤波器应用于来自卷积隐藏层1022a的具有24×24个节点的维度的激活滤波器,则来自池化隐藏层1022b的输出将是12×12个节点的阵列。

在一些示例中,也可以使用L2范数池化滤波器。L2范数池化滤波器包括计算激活图的2×2区域(或其他合适的区域)中的值的平方和的平方根(而不是如在最大池化中所进行的计算最大值),以及使用所计算的值作为输出。

直观地,池化函数(例如,最大池化、L2范数池化或其他池化函数)确定是否在图像的区域中的任何地方找到给定特征,并丢弃确切的位置信息。这可以在不影响特征检测的结果的情况下完成,因为一旦已经找到特征,特征的确切位置就不如其相对于其他特征的近似位置那么重要。最大池化(以及其他池化方法)提供了以下益处:池化特征少得多,从而减少了CNN 1000的后续层中所需的参数的数量。

网络中的最后一层连接是全连接层,其将来自池化隐藏层1022b的每个节点连接到输出层1024中的输出节点中的每个输出节点。使用上述示例,输入层包括对输入图像的像素强度进行编码的28×28个节点,卷积隐藏层1022a包括基于将5×5局部感受野(用于滤波器)应用于三个激活图的3×24×24个隐藏特征节点,并且池化层1022b包括基于将最大池化滤波器应用于三个特征图中的每个特征图上的2×2区域的3×12×12个隐藏特征节点的层。扩展该示例,输出层1024可以包括十个输出节点。在这样的示例中,3×12×12池化隐藏层1022b的每个节点连接到输出层1024的每个节点。

全连接层1022c可以获得先前池化层1022b的输出(其应该表示高级特征的激活图),并且确定与特定类别最相关的特征。例如,全连接层1022c层可以确定与特定类别最强相关的高级特征,并且可以包括针对高级特征的权重(节点)。可以计算全连接层1022c和池化隐藏层1022b的权重之间的乘积,以获得针对不同类别的概率。例如,如果CNN 1000被用于预测视频帧中的对象是人,则在表示人的高级特征的激活图中将存在高值(例如,存在两条腿,在对象的顶部存在面部,在面部的左上和右上存在两只眼睛,在面部的中间存在鼻子,在面部的底部存在嘴,和/或人常见的其他特征)。

在一些示例中,来自输出层1024的输出可以包括M维向量(在先前的示例中,M=10),其中M可以包括程序在对图像中的对象进行分类时必须从中选择的类别的数量。还可以提供其他示例输出。N维向量中的每个数字可以表示对象属于某个类别的概率。在一个例示性示例中,如果10维输出向量表示十个不同类别的对象是[0 0 0.05 0.8 0 0.15 0 0 00],则该向量指示图像是第三类别的对象(例如,狗)的概率为5%,图像是第四类别的对象(例如,人)的概率为80%,且图像是第六类别的对象(例如,袋鼠)的概率为15%。针对类别的概率可以被认为是对象是该类别的一部分的置信水平。

图11是示出用于实现本技术的某些方面的系统的示例的示图。具体地,图11示出了计算系统1100的示例,其可以是例如构成内部计算系统、远程计算系统、相机或它们的任何部件的任何计算设备,其中系统的部件使用连接1105彼此通信。连接1105可以是使用总线的物理连接,或者是到处理器1110中的直接连接,诸如在芯片组架构中。连接1105还可以是虚拟连接、联网连接或逻辑连接。

在一些示例中,计算系统1100是分布式系统,其中本公开中描述的功能可以分布在数据中心、多个数据中心、对等网络等内。在一些示例中,所描述的系统部件中的一个或多个系统部件表示许多此类部件,每个部件执行所述部件被描述用于的一些或全部功能。在一些情况下,这些组件可以是物理或虚拟设备。

示例性系统1100包括至少一个处理单元(CPU或处理器)1110和连接1105,该连接将包括系统存储器1115(诸如只读存储器(ROM)1120和随机存取存储器(RAM)1125)的各种系统部件耦合到处理器1110。计算系统1100可以包括与处理器1110直接连接、紧邻该处理器或集成为该处理器的一部分的高速存储器的高速缓存1112。

处理器1110可以包括任何通用处理器和硬件服务或软件服务,诸如存储在存储设备1130中的服务1132、1134和1136,它们被配置为控制处理器1110以及专用处理器,在专用处理器中,软件指令被并入到实际的处理器设计中。处理器1110可以基本上是完全独立的计算系统,包含多个核或处理器、总线、存储器控制器、高速缓存等。多核处理器可以是对称或非对称的。

为了实现用户交互,计算系统1100包括可以表示任何数量的输入机制的输入设备1145,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。计算系统1100还可以包括输出设备1135,该输出设备可以是许多输出机制中的一种或多种输出机制。在一些情况下,多模式系统可以使用户能够提供多种类型的输入/输出以与计算系统1100通信。计算系统1100可以包括通信接口1140,该通信接口通常可以支配和管理用户输入和系统输出。通信接口可执行或有利于使用有线和/或无线收发机接收和/或传输有线或无线通信,包括利用音频插孔/插头、话筒插孔/插头、通用串行总线(USB)端口/插头、

存储设备1130可以是非易失性和/或非暂态和/或计算机可读存储器设备,并且可以是硬盘或可以存储能够由计算机访问的数据的其他类型的计算机可读介质,诸如磁带盒、闪存卡、固态存储器设备、数字通用光盘、盒式磁带、软盘、柔性盘、硬盘、磁带、磁条/条带、任何其他磁存储介质、闪存、忆阻器存储器、任何其他固态存储器、压缩光盘只读存储器(CD-ROM)光盘、可重写压缩光盘(CD)光盘、数字视频光盘(DVD)光盘、蓝光光盘(BDD)光盘、全息光盘、另一光学介质、安全数字(SD)卡、微安全数字(microSD)卡、

存储设备1130可以包括软件服务、服务器、服务等,当定义这种软件的代码由处理器1110执行时,其使系统执行功能。在一些示例中,执行特定功能的硬件服务可以包括存储在与必要的硬件部件(诸如处理器1110、连接1105、输出设备1135等)连接的计算机可读介质中的软件部件以执行功能。

在一些方面,计算系统1100包括用于执行本文描述的操作的装置。这些装置可以包括系统1100的部件中的一个或多个部件。例如,用于执行本文描述的操作的装置可以包括(多个)处理器1110、(多个)连接1105、(多个)系统存储器1115、(多个)ROM 1120和/或(多个)RAM 1125。

在一些方面,系统1100可以包括用于执行以下操作的装置:确定与多个帧相关联的光流预测;确定与第一帧相关联的至少一个特征的位置;基于至少一个特征在第一帧中的位置和光流预测来确定用于在第二帧中搜索至少一个特征的搜索区域的位置估计;以及从搜索区域内确定至少一个特征在第二帧中的位置。在一些示例中,用于确定的装置可以包括(多个)处理器1110、(多个)系统存储器1115、(多个)ROM 1120和/或(多个)RAM 1125、它们的任何组合、或系统1100的其他部件。

如本文中所使用,术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光学存储设备以及能够存储、含有或携载(多个)指令和/或数据的各种其他介质。计算机可读介质可以包括非暂态介质,该非暂态介质中可以存储数据并且不包括无线地或通过有线连接传播的载波和/或暂态电子信号。非暂态介质的示例可以包括但不限于磁盘或磁带、诸如压缩盘(CD)或数字多功能盘(DVD)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质可以在其上存储有代码和/或机器可执行指令,其可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类,或者指令、数据结构或程序语句的任何组合。通过传递和/或接收信息、数据、自变量、参数或存储器内容,代码段可以耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以使用任何合适的手段来传递、转发或传输,这些手段包括存储器共享、消息传递、令牌传递、网络传输等。

在一些示例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,在被提及时,非暂态计算机可读存储介质明确排除诸如能量、载波信号、电磁波以及信号本身等介质。

在以上描述中提供了具体细节以提供对本文提供的示例的透彻理解。然而,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实施示例。为了清楚说明,在一些情况下,本技术可以被呈现为包括单独的功能块,包括包含设备、设备部件、以软件或硬件和软件的组合体现的方法中的步骤或例程的功能块。可以使用除了附图中所示和/或本文中所描述的那些之外的额外部件。例如,电路、系统、网络、过程和其他组件可以以框图形式被示为组件,以便不会在不必要的细节上模糊示例。在其他情况下,公知的电路、过程、算法、结构和技术可能被示为不具有不必要的细节,以便避免模糊示例。

上文可能将各个示例描述为过程或方法,该过程或方法被描绘为流程图、流程示意图、数据流程图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但是操作中的许多操作可以被并行或同时执行。另外,可以重新排列操作的次序。当过程的操作完成时过程被终结,但是过程可具有附图中未包括的附加步骤。过程可对应于方法、函数、规程、子例程、子程序等。当过程对应于函数时,它的终止对应于该函数返回调用方函数或主函数。

根据上述示例的过程和方法可使用被存储的计算机可执行指令或以其他方式从计算机可读介质可用的计算机可执行指令来实现。这些指令可包括例如致使或以其他方式将通用计算机、专用计算机或处理设备配置为执行某一功能或功能群的指令和数据。所使用的计算机资源的部分可通过网络访问。计算机可执行指令可以是例如二进制、中间格式指令,诸如汇编语言、固件、源代码等。可以用于存储指令、所使用的信息和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、具有非易失性存储器的USB设备、联网存储设备等。

实现根据这些公开内容的过程和方法的设备可以包括硬件、软件、固件、中间件、微代码、硬件描述语言或它们的任何组合,并且可以采取多种形状因子中的任何形状因子。当以软件、固件、中间件或微代码实现时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可被存储在计算机可读或机器可读介质中。(多个)处理器可执行必要任务。形状因子的典型示例包括膝上型电脑、智能电话、移动电话、平板设备或其他小形状因子个人计算机、个人数字助理、机架安装设备、独立设备等。本文中描述的功能也可以被体现在外围设备或内插式卡中。作为进一步的示例,此类功能性还可被实现在在单个设备上执行的不同芯片或不同过程之中的电路板上。

指令、用于传送这种指令的介质、用于执行它们的计算资源以及用于支持这种计算资源的其他结构是用于提供本公开内容中描述的功能的示例手段。

在前面的描述中,参考本申请的特定示例描述了本申请的各方面,但是本领域技术人员将认识到,本申请不限于此。因此,虽然本申请的例示性示例已经在本文中详细描述,但是应当理解,发明概念可以以其他各种方式被实施和采用,并且所附权利要求书旨在被解释为包括这些变型,除非受到现有技术的限制。上述应用的各种特征和方面可以单独地或联合地使用。进一步地,在不脱离本说明书的更宽泛的实质和范围的情况下,可以在除了本文描述的环境和应用之外的任何数量的环境和应用中利用各示例。因此,说明书和附图应当被认为是例示性的而非限制性的。出于例示的目的,按照特定顺序来描述各方法。应当明白的是,在另选的示例中,可以以与所描述的顺序不同的次序来执行所述方法。

本领域普通技术人员应当理解,在不脱离本说明书的范围的情况下,本文所使用的小于(“<”)和大于(“>”)符号或术语可以分别用小于等于(“≤”)和大于等于(“≥”)符号来代替。

在部件被描述为“被配置为”执行某些操作的情况下,这样的配置可以例如通过以下各项来实现:设计电子电路或其他硬件以执行操作、通过编程可编程电子电路(例如,微处理器或其他合适的电子电路)以执行操作、或它们的任何组合。

短语“耦合到”是指任何部件直接或间接物理连接到另一部件,和/或任何部件直接或间接与另一部件进行通信(例如,通过有线或无线连接和/或其他合适的通信接口连接到另一部件)。

记载集合“中的至少一个”和/或集合中的“一个或多个”的权利要求语言或其他语言指示集合中的一个成员或集合中的多个成员(以任何组合)满足权利要求。例如,叙述“A和B中的至少一个”的权利要求语言意指A、B或A和B。在另一示例中,叙述“A、B和C中的至少一个”的权利要求语言意指A、B、C、或A和B、或A和C、或B和C、或A和B和C。语言集合“中的至少一个”和/或集合中的“一个或多个”不将集合限制为集合中所列的项目。例如,叙述“A和B中的至少一个”的权利要求语言可以意指A、B或A和B,并且可以另外包括A和B的集合中未列出的项目。

结合本文公开的示例所描述的各种例示性逻辑框、模块、电路和算法步骤可被实现为电子硬件、计算机软件、固件或它们的组合。为了清楚地例示硬件和软件的这种可互换性,已经在其功能性方面大致描述了各种例示性组件、方框、模块、电路和步骤。将这种功能性实现为硬件还是软件取决于具体的应用和对整个系统提出的设计约束条件。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离本申请的范围。

本文中描述的技术还可以被实现在电子硬件、计算机软件、固件或它们的任何组合中。这样的技术可以在在多种设备中的任何设备中实现,多种设备诸如通用计算机、无线通信设备手持设备、或具有多种用途的集成电路设备,多种用途包括在无线通信设备手持设备和其他设备中的应用。被描述为模块或部件的任何特征可以一起被实现在集成逻辑设备中或分开地实现为分立但可互操作的逻辑设备。如果以软件来实现,则这些技术可以至少部分地由包括程序代码的计算机可读数据存储介质来实现,这些程序代码包括指令,这些指令在被执行时执行上述方法中的一者或多者。计算机可读数据存储介质可形成计算机程序产品的一部分,其可包括封装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(RAM)(诸如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁性或光学数据存储介质等。附加地或另选地,技术可以至少部分地由计算机可读通信介质来实现,该计算机可读通信介质携带或传送指令或数据结构形式的且可由计算机存取、读取和/或执行的程序代码,诸如传播的信号或波。

程序代码可以由处理器执行,该处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效集成或分立逻辑电路。这样的处理器可被配置为执行本公开内容中所描述的技术中的任何技术。通用处理器可以是微处理器;但在替换方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、一个或多个微处理器与DSP核心,或任何其他这样配置。因此,如本文中所使用的术语“处理器”可以指前述结构中的任何结构、前述结构的任何组合或适合于实现本文中所描述的技术的任何其他结构或装置。另外,在一些方面,本文中所描述的功能性可提供在被配置用于编码和解码的专用软件模块或硬件模块内,或并入组合的视频编码器-解码器(CODEC)中。

本公开内容的例示性实施例包括:

方面1:一种对一个或多个帧进行光流估计的方法,所述方法包括:确定与多个帧相关联的光流预测;确定与第一帧相关联的至少一个特征的位置;基于所述至少一个特征在所述第一帧中的所述位置和所述光流预测来确定用于在第二帧中搜索所述至少一个特征的搜索区域的位置估计;以及从所述搜索区域内确定所述至少一个特征在所述第二帧中的位置。

方面2:根据方面1所述的方法,其中确定所述搜索区域的所述位置估计包括将与所述第一帧相关联的所述至少一个特征的所述位置偏移与所述至少一个特征相关联的所述光流预测的光流预测值。

方面3:根据方面2所述的方法,其中与所述至少一个特征相关联的所述光流预测值至少部分地基于与所述至少一个特征相关联的像素在所述第一帧中的所述位置来确定。

方面4:根据方面1至3中任一项所述的方法,还包括:对所述至少一个特征执行对象检测以确定与所述至少一个特征相关联的对象类型;以及基于与所述至少一个特征相关联的所述对象类型来确定所述光流预测。

方面5:根据方面1至4中任一项所述的方法,其中与所述第一帧相关联的多个特征包括对应于所述第一帧的像素的相应特征。

方面6:根据方面1至5中任一项所述的方法,其中与所述第一帧相关联的所述至少一个特征包括所述第一帧中的对象的至少一部分的像素位置。

方面7:根据方面6所述的方法,其中确定所述光流预测包括获得对应于所述对象的至少所述部分的所述像素位置的光流向量。

方面8:根据方面1至7中任一项所述的方法,其中所述搜索区域至少包括所述至少一个特征在所述第二帧中的估计像素位置。

方面9:根据方面8所述的方法,其中所述估计像素位置在所述搜索区域内居中。

方面10:根据方面8所述的方法,其中所述估计像素位置相对于所述搜索区域偏心。

方面11:根据方面1至10中任一项所述的方法,其中所述搜索区域包括具有高度和宽度的矩形,其中所述高度和所述宽度不同。

方面12:根据方面1至11中任一项所述的方法,其中所述第一帧在帧序列中处于所述第二帧之前。

方面13:根据方面8所述的方法,还包括针对所述第一帧中的多个特征中的每个特征,确定所述多个特征在所述第二帧中的对应估计位置。

方面14:根据方面1至13中任一项所述的方法,其中所述光流预测包括流目标图。

方面15:根据方面1至14中任一项所述的方法,其中对应于所述至少一个特征的所述光流预测基于至少第三帧,其中所述第三帧在帧序列中处于所述第一帧和所述第二帧之前。

方面16:一种用于光流估计的装置,包括:存储器,所述存储器被配置为存储对应于一个或多个帧的数据;以及处理器,所述处理器耦合到所述存储器并且被配置为:确定与多个帧相关联的光流预测;确定与第一帧相关联的至少一个特征的位置;基于所述至少一个特征在所述第一帧中的所述位置和所述光流预测来确定用于在第二帧中搜索所述至少一个特征的搜索区域的位置估计;以及从所述搜索区域内确定所述至少一个特征在所述第二帧中的位置。

方面17:根据方面16所述的装置,其中确定所述搜索区域的所述位置估计包括将与所述第一帧相关联的所述至少一个特征的所述位置偏移与所述至少一个特征相关联的所述光流预测的光流预测值。

方面18:根据方面17所述的装置,其中与所述至少一个特征相关联的所述光流预测值至少部分地基于与所述至少一个特征相关联的像素在所述第一帧中的所述位置来确定。

方面19:根据方面16至18中任一项所述的装置,其中所述处理器被配置为:对所述至少一个特征执行对象检测以确定与所述至少一个特征相关联的对象类型;以及基于与所述至少一个特征相关联的所述对象类型来确定所述光流预测。

方面20:根据方面16至19中任一项所述的装置,其中与所述第一帧相关联的多个特征包括对应于所述第一帧的像素的相应特征。

方面21:根据方面16至20中任一项所述的装置,其中与所述第一帧相关联的所述至少一个特征包括所述第一帧中的对象的至少一部分的像素位置。

方面22:根据方面21所述的装置,其中确定所述光流预测包括获得对应于所述对象的至少所述部分的所述像素位置的光流向量。

方面23:根据方面16至22中任一项所述的装置,其中所述搜索区域至少包括所述至少一个特征在所述第二帧中的估计像素位置。

方面24:根据方面23所述的装置,其中所述估计像素位置在所述搜索区域内居中。

方面25:根据方面23所述的装置,其中所述估计像素位置相对于所述搜索区域偏心。

方面26:根据方面16至25中任一项所述的装置,其中所述搜索区域包括具有高度和宽度的矩形,其中所述高度和所述宽度不同。

方面27:根据方面16至26中任一项所述的装置,其中所述第一帧在帧序列中处于所述第二帧之前。

方面28:根据方面27所述的装置,其中所述处理器被配置为:针对所述第一帧中的多个特征中的每个特征,确定所述多个特征在所述第二帧中的对应估计位置。

方面29:根据方面16至28中任一项所述的装置,其中所述光流预测包括流目标图。

方面30:根据方面16至29中任一项所述的装置,其中对应于所述至少一个特征的所述光流预测基于至少第三帧,其中所述第三帧在帧序列中处于所述第一帧和所述第二帧之前。

方面31:一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有指令,所述指令当由一个或多个处理器执行时使所述一个或多个处理器执行根据方面1至30所述的操作中的任一操作。

方面32:一种装置,包括用于执行根据方面1至30所述的操作中的任一操作的装置。

技术分类

06120116561659