稀疏光流估计的制作方法

文档序号:34397695发布日期:2023-06-08 13:51阅读:54来源:国知局
稀疏光流估计的制作方法
稀疏光流估计
1.领域
2.本公开一般涉及光流估计。在一些示例中,本公开的各方面涉及执行稀疏光流估计。
3.背景
4.许多设备和系统允许通过生成场景的图像(或帧)和/或视频数据(包括多个帧)来捕获该场景。例如,相机或包括相机的设备可以捕获场景的帧序列(例如,场景的视频)。在一些情形中,帧序列可以被处理以用于执行一个或多个功能、可以被输出以用于显示、可以被输出以用于由其他设备处理和/或消耗、以及其他用途。
5.对帧序列执行的一种常见类型处理是运动估计,这涉及跟踪对象或点跨多帧的运动。例如,运动估计可以包括确定光流图,该光流图描述帧中的像素相对于先前帧中的对应像素的位移。运动估计可以用于各种应用中,包括计算机视觉系统、扩展现实(xr)系统、数据压缩、图像分割、自主交通工具操作、以及其他应用。
6.概述
7.描述了用于例如基于帧内的像素子集和/或区域来执行对帧的稀疏光流估计的系统和技术。在一个解说性示例中,提供了一种一个或多个帧之间的光流估计的方法。该方法包括:确定第一帧和第二帧中的至少一者的像素子集;生成指示该像素子集的掩模;基于该掩模来确定与至少该第一帧和该第二帧的该像素子集相关联的一个或多个特征;确定该第一帧的该像素子集与该第二帧的对应像素之间的光流向量;以及使用该光流向量来生成该第二帧的光流图。
8.在另一示例中,提供了一种用于编码视频数据的装置,该装置包括存储器以及耦合到该存储器的一个或多个处理器(例如,在电路系统中实现)。在一些示例中,一个以上处理器可以耦合到该存储器并且可以被用于执行本文所描述的一个或多个操作。该一个或多个处理器被配置成:确定第一帧和第二帧中的至少一者的像素子集;生成指示该像素子集的掩模;基于该掩模来确定与至少该第一帧和该第二帧的该像素子集相关联的一个或多个特征;确定该第一帧的该像素子集与该第二帧的对应像素之间的光流向量;以及使用该光流向量来生成该第二帧的光流图。
9.在另一示例中,提供了一种用于编码视频数据的、其上存储有指令的非瞬态计算机可读介质,这些指令在由一个或多个处理器执行时使得该一个或多个处理器:确定第一帧和第二帧中的至少一者的像素子集;生成指示该像素子集的掩模;基于该掩模来确定与至少该第一帧和该第二帧的该像素子集相关联的一个或多个特征;确定该第一帧的该像素子集与该第二帧的对应像素之间的光流向量;以及使用该光流向量来生成该第二帧的光流图。
10.在另一示例中,提供了一种用于编码视频数据的设备。该设备包括:用于确定第一帧和第二帧中的至少一者的像素子集的装置;用于生成指示该像素子集的掩模的装置;用于基于该掩模来确定与至少该第一帧和该第二帧的该像素子集相关联的一个或多个特征的装置;用于确定该第一帧的该像素子集与该第二帧的对应像素之间的光流向量的装置;
以及用于使用该光流向量来生成该第二帧的光流图的装置。
11.在一些方面,上述方法、装置和计算机可读介质包括:使用机器学习算法来确定至少该第一帧和该第二帧的该像素子集。
12.在一些方面,确定至少该第一帧和该第二帧的该像素子集可以包括:标识该第一帧的对应于第一感兴趣区域的第一像素;标识该第一帧的对应于第二感兴趣区域的第二像素;以及将该第一像素包括在该像素子集内并将该第二像素从该像素子集中排除。
13.在一些方面,确定至少该第一帧和该第二帧的该像素子集包括:标识与两个对象之间的边界相对应的至少一个像素。
14.在一些方面,确定至少该第一帧和该第二帧的该像素子集包括:对该第一帧内预定数目的像素进行采样。
15.在一些方面,至少该第一帧和该第二帧的该像素子集包括具有未被包括在该像素子集中的毗邻像素的至少一个像素。在一些情形中,基于该掩模来确定该一个或多个特征包括:确定与该至少一个像素的毗邻像素相对应的特征信息;以及与该至少一个像素相关联地存储与该毗邻像素相对应的该特征信息。在一些示例中,上述方法、装置和计算机可读介质包括:使用与该毗邻像素相对应的该特征信息来确定该至少一个像素与该第二帧的对应像素之间的光流向量。
16.在一些方面,上述方法、装置和计算机可读介质包括:确定包括该第一帧和该第二帧的帧序列内的帧的重要性值;以及基于该重要性值来选择该帧序列内的用于执行光流估计的帧。在一些情形中,上述方法、装置和计算机可读介质包括:基于确定该第二帧的重要性值超过阈值重要性值来选择该第二帧以用于执行光流估计。
17.在一些方面,该装置是移动设备(例如,移动电话或所谓的“智能电话”或其他移动设备)、扩展现实(xr)设备(例如,虚拟现实(vr)设备、增强现实(ar)设备、或混合现实(mr)设备)、个人计算机、膝上型计算机、服务器计算机、相机、交通工具或者交通工具的计算设备或组件、可穿戴设备、电视机(例如,联网电视机)、或其他设备,是上述设备的一部分或包括上述设备。在一些方面,该装置包括用于捕获一个或多个帧或图像的一个或多个相机。在一些方面,该装置包括用于显示一个或多个帧或图像、视频内容、通知和/或其他可显示数据的显示器。在一些方面,上述装置可包括一个或多个传感器。
18.本概述既非旨在标识出要求保护的主题内容的关键特征或必要特征,亦非旨在单独用于确定要求保护的主题内容的范围。本主题内容应当参考本专利的整个说明书的合适部分、任何或所有附图、以及每项权利要求来理解。
19.前述内容以及其他特征和示例将在参考以下说明书、权利要求书和所附附图时变得更明显。
20.附图简述
21.本技术的解说性示例在下文参照以下附图进行了详细的描述。
22.图1是解说根据一些示例的示例光流估计系统的框图;
23.图2a是根据一些示例的掩模的解说;
24.图2b是根据一些示例的针对掩模内的像素的光流估计的解说;
25.图3是解说根据一些示例的示例光流估计系统的框图;
26.图4a和图4b是解说根据一些示例的光流估计稀疏性的变化的表;
27.图5是解说根据一些示例的用于执行稀疏光流估计的过程的示例的流程图;
28.图6是解说根据一些示例的深度学习神经网络的示例的示图;
29.图7是解说根据一些示例的卷积神经网络的示例的示图;以及
30.图8是解说用于实现本文所描述的某些方面的系统的示例的示图。
31.详细描述
32.下文提供了本公开的某些方面和示例。这些方面和示例中的一些可以独立应用并且它们中的一些可以组合应用,这对本领域技术人员来说是显而易见的。在下面的描述中,出于解释的目的,阐述了具体细节以便提供对本技术的主题内容的透彻理解。然而,显然的是,可以在没有这些具体细节的情况下实践各个示例。各附图和描述不旨在是限制性的。
33.以下描述仅提供了解说性示例,并且并不旨在限定本公开的范围、适用性或配置。确切而言,以下描述将向本领域技术人员提供用于实现解说性示例的赋能描述。应当理解,在不脱离所附权利要求书中阐述的本技术的精神和范围的情况下,可以对元件的功能和布置作出各种改变。
34.运动估计(本文中也被称为光流估计)是跟踪一个或多个区域(例如,对象或对象的一部分、实例或实例的一部分、场景的背景部分或该背景部分的一部分等等)跨帧序列的移动的任务。例如,光流估计系统可以标识初始帧的与现实世界对象的一部分相对应的像素。光流估计系统可以确定后续帧内的对应像素(例如,描绘现实世界对象的相同部分的像素)。光流估计系统可以通过确定与初始帧中的像素与后续帧中的对应像素之间的位移和/或距离相对应的光流向量来估计对象在各帧之间的运动。例如,光流向量可以指示对应于初始像素的坐标与对应于后续像素的坐标之间的位移(例如,对应于移动方向和距离)。
35.光流图可以包括与两个帧之间的运动相对应的一个或多个光流向量。在一些情形中,光流估计系统可确定包括用于帧内的每个像素(或近似每个像素)的光流向量的光流图。此类光流图可以被称为密集光流图。在一些情形中,可能需要大量时间和/或计算功率来生成密集光流图,这可能对运动估计的许多应用是有害的。利用运动估计的应用的示例包括其中涉及像素运动(对应于对象运动)的各种计算机视觉任务和相机应用。这种应用的示例包括视频识别、自主驾驶、视频压缩、对象和/或场景跟踪、视觉惯性里程表(vio)、视频对象分割、扩展现实(xr)(例如,虚拟现实(vr)、增强现实(ar)、和/或混合现实(mr))等等。期望供在芯片和/或设备中执行的光流估计的较高性能,包括较高的准确性、较低的计算复杂性、较低的等待时间、较低的功耗、较小的存储器大小要求等等。
36.如所描述的,光流可以包括一对帧或图像之间的密集对应性估计问题。现有的解决方案一般计算整个帧或图像(例如,帧或图像中的所有像素)的密集光流,这会导致各种问题。第一问题是跨视频序列中的所有像素和所有帧的统一(或同质)处理可能导致不必要的高计算复杂性、高等待时间、高功耗、和/或高存储器使用/要求(例如,可能需要大存储器)。另一问题是跨帧或图像中的所有像素的统一(同质)处理会导致降级的准确度性能降级。例如,可由于平滑区域中的过采样和边界或不连续区域中的欠采样而导致降级的准确度性能。
37.本文描述了用于执行针对帧的稀疏光流估计的系统、装置、方法和计算机可读介质(统称为“系统和技术”)。帧在本文中还可以被称为图像。在一些情形中,光流估计系统可以确定用于执行光流估计的像素子集。光流估计系统可以基于像素子集来生成稀疏光流
图。例如,光流估计系统可以执行差分和注意力场掩蔽技术来预测或标识在光流估计方面重要的空间区域或时间帧(例如,具有移动的区域)。使用场掩蔽技术来标识的像素可以使用掩模来标识,该掩模在一些情形中可以被称为场掩模或注意力场掩模。光流估计系统可以针对一个或多个帧的区域中由掩模指示的像素(例如,仅这些区域中的像素)进行光流估计。在一些示例中,掩模可以被精细化(例如,在分辨率方面)以指示供进一步流精细化的区域。
38.由于本文所描述的系统和技术针对比常规全帧光流估计显著更少的像素执行光流估计,因此这些系统和技术可以生成具有降低的等待时间和/或较少计算资源的光流图。例如,本文所描述的系统和技术可以导致对帧内50%的像素、帧内40%的像素、帧内5%的像素、帧内0%的像素(没有像素)、或基于本文所描述技术的任何其它数目执行光流估计。
39.如上面提到的,光流估计系统可以确定帧的要对其执行光流估计的像素子集。在一个示例中,像素子集可以对应于帧内的相关和/或重要特征。例如,像素子集可以对应于帧的前景中的对象、在帧内移动的对象、具有特定标签的对象、和/或帧内的其他对象。在另一示例中,像素子集可以对应于对象的边缘和/或各对象之间的边界。在一些情形中,光流估计系统可以使用一个或多个机器学习系统和/或算法来确定相关和/或重要像素。例如,如下面更详细描述的,基于神经网络的机器学习系统和/或算法(例如,深度神经网络)可以被用于确定帧的相关和/或重要像素。
40.关于用于稀疏光流估计的系统的进一步细节在本文中参照各个附图来提供。图1是解说可以执行光流估计过程的光流估计系统100的示例的示图。光流估计系统100包括各种组件,包括选择引擎102、光流向量引擎104、以及光流图引擎106。光流估计系统100的各组件可以包括电子电路或其他电子硬件,其可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、中央处理单元(cpu)、或其他合适的电子电路)、计算机软件、固件、或其任何组合,以执行本文所描述的各种操作。虽然光流估计系统100被示为包括某些组件,但普通技术人员将领会,光流估计系统100可以包括比图1中所示的那些组件更多或更少的组件。例如,在一些实例中,光流估计系统100还可包括图1中未示出的一个或多个存储器(例如,ram、rom、高速缓存等等)和/或处理设备。
41.光流估计系统100可以是计算设备或多个计算设备的一部分。在一些情形中,包括光流估计系统100的一个或多个计算设备还可以包括用于无线通信的一个或多个无线收发机和/或用于显示一个或多个帧或图像的显示器。在一些示例中,包括光流估计系统100的计算设备可以是电子设备,诸如相机(例如,数字相机、ip相机、视频相机、相机电话、视频电话、或其他合适的捕获设备)、移动或固定电话手持机(例如,智能电话、蜂窝电话等)、台式计算机、台式或笔记本计算机、平板计算机、xr设备、交通工具或者交通工具的计算设备或组件、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流送设备、或任何其它合适的电子设备。
42.光流估计系统100可以获得帧103作为输入。在一些示例中,光流估计系统100可以响应于一个或多个帧103由相机或包括相机的计算设备(例如,移动设备等)捕获而执行光流估计过程。帧103可以包括单个帧或多个帧。例如,帧103可以包括视频序列的视频帧或一组连续捕获的静止图像的静止图像。在一个解说性示例中,一组连续捕获的静止图像可以被捕获并作为处于相机视场中的场景预览向用户显示,这可以帮助用户决定何时提供使得
图像被捕获以供存储的输入。在另一解说性示例中,一组连续捕获的静止图像可以使用突发模式或捕获多个连续图像的其他类似模式来捕获。帧可以是每像素具有红色、绿色和蓝色分量的红绿蓝(rgb)帧;每像素具有亮度分量和两个色度(颜色)分量(红色色度和蓝色色度)的亮度、红色色度、蓝色色度(ycbcr)帧;或任何其他合适类型的彩色或单色图片。
43.在一些示例中,光流估计系统100可以捕获帧103。在一些示例中,光流估计系统100可以从帧源(图1中未示出)获得帧103。在一些情形中,帧源可以包括一个或多个图像捕获设备和/或一个或多个视频捕获设备(例如,数字相机、数字视频相机、具有相机的电话、具有相机的平板、或其他合适的捕获设备)、图像和/或视频存储设备、包含所存储图像的图像和/或视频存档、图像和/或视频服务器或提供图像和/或视频数据的内容提供方、从视频服务器或内容提供方接收图像的图像和/或视频馈送接口、用于生成计算机图形图像和/或视频图像的计算机图形系统、这些源的组合、或图像帧内容的其他源。在一些情形中,多个帧源可以向光流估计系统100提供帧。
44.在一些实现中,光流估计系统100和帧源可以是同一计算设备的一部分。例如,在一些情形中,相机、电话、平板、扩展现实(xr)设备(例如,虚拟现实(vr)设备、增强现实(ar)设备、混合现实(mr)设备等)、和/或包括帧或图像源(例如,相机、存储等等)的其他设备可以包括集成光流估计系统。在一些实现中,光流估计系统100和帧源可以是分开的计算设备的一部分。在一个解说性示例中,帧源可以包括一个或多个相机,并且包括光流估计系统100的计算设备可以包括移动或固定电话手持机、台式计算机、膝上型或笔记本计算机、平板计算机、或其他计算设备。
45.在一些示例中,由光流估计系统100执行的光流估计可以使用计算设备的单相机系统来执行。在其他示例中,由光流估计系统100执行的光流估计可以使用计算设备的双相机系统来执行。在一些情形中,相机系统中可以使用两个以上相机来执行光流估计。
46.光流估计系统100可以处理帧103以通过对帧103中的帧内的像素执行光流估计来生成光流图(例如,光流图108)。光流图108可以包括与像素在两个帧之间的移动相对应的一个或多个光流向量。在一些情形中,这两个帧可以是一系列帧内直接毗邻的帧。在一些情形中,这两个帧可以被一个或多个中间帧间隔开(其可以被称为非毗邻帧)。在一些情形中,光流图108可以包括与帧的像素子集相对应的光流向量。例如,光流图108可以是稀疏光流图,该稀疏光流图包括仅与帧内的一部分像素相对应的光流向量。在解说性示例中,光流图108可以包括针对帧内50%的像素的光流向量。普通技术人员将领会,光流图108可包括针对帧内的任何其他像素子集(诸如0%的像素、10%的像素、40%的像素、70%的像素、或其他数目)的光流向量。
47.选择引擎102可以处理帧以选择该帧的要对其执行光流估计的像素子集。像素子集可由掩模表示。例如,光流估计系统100可以对掩模内所包括的像素执行光流估计,而不对掩模外的像素执行光流估计。在一个示例中,选择引擎102可以通过对像素子集进行采样来确定掩模。例如,选择引擎102可以对帧的预定数目的像素(例如,10个像素、100个像素等)进行采样。在其他示例中,选择引擎102可以确定包括与帧的重要和/或相关特征相对应的像素的掩模。这些特征可以被称为关键特征。在一些情形中,这种关键特征与移动相关联(例如,通常与场景内的移动相关联的特征)。与一个或多个关键特征相对应的掩模可以被称为差分场掩模和/或注意力场掩模。例如,选择引擎102可以标识与场景前景中的对象(而
不是场景背景中的对象)相对应的像素。附加地或替换地,在另一示例中,选择引擎102可以标识与移动对象(而不是驻定对象)相对应的像素。附加地或替换地,在另一示例中,选择引擎102可以标识与两个对象之间的边界相对应的像素。附加地或替换地,在进一步示例中,选择引擎102可以选择与具有某些标签和/或分类的对象相对应的像素。例如,选择引擎102可以对帧内的对象进行分类和/或标记(例如,使用任何类型或形式的对象识别技术,诸如使用一个或多个分类神经网络)。基于分类和/或标签,选择引擎102可以确定与重要对象(例如,使用对象识别技术标识的人脸)相对应的像素。
48.在一些情形中,选择引擎102可以使用机器学习系统和/或算法来选择要被包括在掩模内的像素子集。例如,机器学习系统和/或算法可以是任何类型或形式的深度神经网络(dnn)。在解说性示例中,机器学习算法可以包括视觉几何组(vcg)算法。在另一解说性示例中,机器学习系统和/或算法可以包括残差神经网络(resnet)。可以使用任何其他机器学习系统和/或算法。机器学习系统和/或算法(例如,dnn,诸如vcg、resnet等)可以被训练以确定帧内对象的特征。这些特征可以包括对象标签、对象分类、对象边界、以及其他特征。在一些情形中,机器学习系统和/或算法可以通过向神经网络输入具有已知对象特征的许多帧或图像来训练(例如,使用具有反向传播的监督式训练)。在已充分训练神经网络之后,神经网络可以在推断期间确定输入到该神经网络的新帧(例如,帧103)的特征。神经网络的解说性示例和相关联训练在本文参照图6和图7进行了描述。
49.在一些示例中,选择引擎102可以确定掩模,该掩模包括对于准确光流估计而言足够的像素数目(例如,最小像素数目或近似最小像素数目)。例如,执行光流估计所需的时间和/或计算功率一般随着光流估计中所涉及的像素数目而增加。由此,减少掩模内的像素数目可能是有利的。为了减少掩模内的像素数目而不会显著地和/或不期望地降低光流估计的质量,选择引擎102可以确定对于光流估计最相关和/或有用的像素。在一些情形中,选择像素子集可以基于至少两个因素。作为第一因素的示例,选择引擎102可以基于感兴趣区域(或像素,无论是否连续)来执行选择。
50.作为第二因素的示例,选择引擎102可以在给定某些估计质量约束的情况下基于光流估计的充分性来执行选择。
51.选择引擎102可以在选择像素子集时考虑感兴趣区域(或像素)、估计质量约束、其组合、和/或其他因素。在一些示例中,选择技术可包括两个帧的差分场、强度平滑性(或不连续性)、对象区域和/或边界、语义区域(例如,前景对象与场景背景)、语义不确定性、活动的注意力区域、其任何组合、和/或其他属性。
52.例如,选择引擎102可以搜索与某些对象特征相对应的像素(例如,与移动对象的边缘相对应的像素)。在另一示例中,选择引擎102可以在帧的某些区域内搜索像素。例如,选择引擎102可以在已知为前景的帧区域内搜索像素。在另一示例中,选择引擎102可以选择在整个帧中具有近似均匀分布的像素子集。在一些情形中,选择引擎102可以搜索预定数目的像素。例如,选择引擎102可以确定帧的所有或一部分像素的重要性并选择预定数目或预定百分比的最重要像素。在其他情形中,选择引擎102可以动态地选择掩模内的像素数目。例如,选择引擎102可以选择包括相对大量移动对象和/或相对快速运动的帧的相对大量像素。在解说性示例中,选择引擎102可以使用动态编程来确定掩模的合适像素数目。例如,动态编程算法可以被用于求解受约束的一个或多个优化问题。在一个示例中,给定某些
可用计算资源(例如,在每时间区间的操作次数、某个允许的等待时间、某个允许功耗等方面),选择引擎102可以使用动态编程算法根据约束来寻找资源的最佳分配或调度以达成特定目标(例如,以确定合适数目的像素或掩模)。
53.光流估计系统100的光流向量引擎104可以确定与由掩模标识的像素相对应的光流向量。在一些情形中,光流向量可以指示像素移动的方向和幅度。例如,光流向量可以描述对应于初始帧内的像素位置的坐标与对应于后续帧内的像素位置的坐标之间的位移。光流向量引擎104可以使用任何类型或形式的光流估计技术来确定后续帧内的像素位置。在解说性示例中,光流向量引擎104可以使用差分运动估计技术(例如,泰勒级数近似)来确定光流向量。附加地或替换地,光流向量引擎104可以使用机器学习算法(例如,深度神经网络)来确定光流向量。在一些情形中,用于确定光流向量的机器学习算法可以与用于选择掩模的像素子集的机器学习算法不同。
54.在一些情形中,光流向量引擎104可以确定由掩模标识的帧(被称为源帧)中的每个像素与后续帧(被称为目标帧)的对应像素之间的光流向量。光流估计系统100的光流图引擎106可以基于光流向量来生成目标帧的光流图108的值。掩模的值可以指示后续目标帧内的像素相对于源帧的位移。在一些示例中,光流图引擎106可以使用针对由掩模标识的目标帧中的像素确定的光流向量来确定目标帧的光流图108的值。在一些示例中,光流图引擎106可以基于针对由掩模标识的像素确定的光流向量来估计目标帧中的其他像素的值。例如,可以执行流上采样技术来估计目标帧中其他像素的值。该流上采样技术在下文更详细地描述。
55.在一些示例中,光流图引擎106可以生成增量光流图,该增量光流图对应于两个毗邻帧之间的运动估计。在其他示例中,光流图引擎106可以生成累积光流图(在该情形中,光流图在每个帧进行调整或更新),该累积光流图对应于其间具有一个或多个中见帧的两个帧之间的运动估计。例如,光流图引擎106可以确定一系列帧内的所有或一部分直接毗邻帧之间的增量光流图。光流图引擎106可以使用增量光流图来更新该系列帧中的第一帧与该系列帧中的当前帧之间的累积光流图。为了更新累积光流图,光流图引擎106可以将当前帧与先前帧之间的增量光流向量与累积光流图的对应光流向量求和。
56.由光流图引擎106输出的光流图108可以被用于各种目的和/或任务。例如,如上面提到的,光流图可被用于各应用或系统中,包括计算机视觉系统、xr系统、数据压缩、图像分割、自主交通工具操作、以及其他应用。
57.图2a和图2b是解说可由图1的光流估计系统100执行的光流估计过程的示例的示图。图2a解说了帧序列中的第一帧201的示例。帧201可以对应于图1的帧103之一。帧201被示为具有w个像素宽度乘以h个像素高度(被表示为w
×
h)的维度。普通技术人员将理解,帧201可以包括比图2a中所解说的那些像素位置远远更多的像素位置。例如,帧201可以包括3840
×
2160像素分辨率下的4k(或超高清(uhd))帧、1920
×
1080像素分辨率下的hd帧、或具有另一分辨率的任何其他合适的帧。帧201包括像素p1、p2、p3、p4、p5、p6和p7。如图所示,像素p1具有位置202a。像素位置202a可以包括相对于最左上角像素位置(0,0)的(w,h)像素位置(3,1)。
58.在一个示例中,像素p1-p7被选择成被包括在掩模内。如图2a中所示,掩模内的像素可以彼此毗邻(例如,接触),或者像素可以彼此隔离和/或分开。例如,移动对象可对应于
帧内的像素区域。然而,所公开的稀疏光流估计系统可以能够对对象执行光流估计而无需确定区域内的每个像素的光流向量。在一些情形中,小数目的像素(例如,1个像素、3个像素等等)对于较大区域的准确光流估计可能是充足的。在解说性示例中,像素p1、p2和p3可对应于人的鼻尖,并且像素p5可对应于人脸与帧背景之间的边界。
59.图2b是解说帧序列中的第二帧203的示例的示图。第二帧203具有与第一帧201的像素位置(具有维度w
×
h)相同的对应像素位置,诸如第一帧201中的左上角像素(在像素定位或位置(0,0)处)对应于第二帧203中的左上角像素(在像素定位或位置(0,0)处)。如图所示,像素p1已从帧201中的像素位置202a移动到帧203中的经更新像素位置202b。经更新像素位置202b可以包括相对于最左上角像素位置(0,0)的(w,h)像素位置(4,2)。可以针对像素p1计算光流向量,从而指示像素p1从第一帧201到第二帧203的速度或光流。在一个解说性示例中,像素p1在帧201与203之间的光流向量是(1,1),从而指示像素p1已向右移动了一个像素位置并向下移动了一个像素位置。在一些情形中,光流估计系统100可以按类似方式确定掩模的其余像素p2-p7的光流向量(而不确定未被包括在掩模内的像素的光流向量)。
60.图3是解说光流估计系统300的示例的示图。在一些情形中,所有或一部分光流估计系统300可以对应于和/或被包括在图1的光流估计系统100内。例如,光流估计系统300的引擎(例如,掩蔽引擎302、特征提取引擎304、特征采样引擎306、相关量引擎308、光流计算引擎310、以及上采样引擎312)可被配置成:执行由光流估计系统100的引擎执行的所有或一部分功能和/或任何附加功能。如下面将更详细解释的,光流估计系统300可以执行被优化用于稀疏光流估计的功能。
61.如图3中所示,光流估计系统300可以接收源帧is和目标帧i
t
。在一个示例中,源帧is表示在目标帧i
t
之前接收的帧。例如,源帧is可与帧序列内的目标帧i
t
直接毗邻。源帧is和目标帧i
t
可以被输入到掩蔽引擎302和/或特征提取引擎304。如图3中所示,源帧is和目标帧i
t
在被传递给掩蔽引擎302和/或特征提取引擎304之前可以被级联或以其他方式被组合。
62.掩蔽引擎302可以执行掩模生成以促成像素和/或帧选择。例如,掩蔽引擎302可以生成一个或多个掩模(图3中被示为掩模a、掩模b、掩模c、掩模d和掩模e)。光流估计系统300可以将该一个或多个掩模应用于沿图3中所示的光流估计系统300的整个光流估计模型的一个或多个块。例如,在一些情形中,掩模a-e都可以被用于各个块中(例如,掩模a由特征提取引擎304使用,掩模b由特征采样引擎306使用,掩模c由相关量引擎308使用,掩模d由光流计算引擎310使用,以及掩模e由上采样引擎312使用)。在一些情形中,仅掩模a-e的子集可以由一个或多个块使用(例如,仅掩模a由特征提取引擎304使用)。
63.在一些示例中,该一个或多个掩模可以在空间上将离散点或连续点的一个或多个区域指示为来自源帧is和/或目标帧i
t
中的所有点的子集。在一些示例中,该一个或多个掩模可以在时间上指示与多个计算级别相关联的多个级别的帧。在一些情形中,被掩蔽像素的空间示例可以包括与对象边界、平滑性、不连续性、置信度和/或信息的关联。被掩蔽帧的时间示例可以包括帧在其运动和/或内容等的重要性方面的级别。在一些情形中,还可使用动态编程(如上所述)来执行掩蔽,藉此可以推导出或预测按对整个流估计的重要性和/或相关性的选择。
64.在一些情形中,为了支持稀疏和/或多级别(在重要性方面)流估计,特征提取引擎304可以执行特征提取,对于每个适用像素p(例如,由掩模a标识),该特征提取不仅提取p的
特征,而且还提取在空间和/或时间相关性和(预期)贡献方面与p相关的信息。相关信息可以从与围绕或毗邻于像素p的相邻像素、或者甚至相对于像素p的非本地像素相关联的信息(例如,特征)获得。相对信息还可包括相对于像素p的某些空间和/或时间上下文信息。相对于像素p的每个实例的此类信息可以针对每个像素p进行融合。特征提取引擎304的目标是对于每个适用p提取和收集将在后续处理阶段中利用的尽可能多的所需信息(例如,特征)。例如,对于每个适用像素p,特征提取引擎304可提取和收集特征并融合这些特征,如下所述。
65.例如,特征提取引擎304可以确定与源帧is和/或目标帧i
t
的像素相关联的上下文特征。在一个示例中,与像素相关联的上下文特征可以包括使用机器学习系统和/或算法从帧提取的特征向量。可以使用的机器学习系统和/或算法的示例是被训练用于特征提取的深度神经网络。深度神经网络的解说性示例在下文参照图6和图7进行描述。特征向量可以指示诸如像素的标签或分类、像素的视觉属性和/或特性、像素的语义特征之类的特征、以及其他特征。在一些情形中,特征向量可以包括与像素的空间特性相关的信息。空间特性可以包括像素与对象边界、像素的平滑性、关联于像素的不连续性、以及其他特性的关联。在一些情形中,空间特性可以包括与像素对整个光流估计的重要性和/或相关性相关联的空间置信度。例如,具有高空间置信度的像素可能对光流估计是高度重要和/或相关的(例如,高移动量)。在一些情形中,特征向量可以包括与像素的时间特性相关的信息。在一些情形中,像素的时间特性可以包括与像素的运动相关联的一个或多个特性,包括运动速度、运动加速度、以及其他特性。在一个示例中,时间特性可以包括与像素运动对整个光流估计的重要性和/或相关性相关联的置信度。例如,具有高时间置信度的像素可能对光流估计是高度重要和/或相关的。
66.在一些情形中,特征提取引擎304可以确定与帧相关联的多尺度上下文特征。多尺度上下文特征可以包括与各个尺度(例如,分辨率)下的帧相关联的特征。例如,特征提取引擎304可以确定与帧的高尺度(例如,全分辨率)版本相关联的上下文特征。附加地或替换地,特征提取引擎304可以确定与帧的一个或多个较低尺度(例如,降低的分辨率)版本相关联的上下文特征。在一些情形中,与不同尺度相关联的上下文特征可以被用于光流估计过程的不同步骤处。例如,利用低尺度特征向量可以提高一些光流估计步骤的效率,而利用高尺度特性向量可以提高其他光流估计步骤的质量和/或准确性。
67.在一些情形中,与像素相关联的上下文特征可以包括与该像素周围和/或附近的像素相关联的上下文特征,如上面提到的。例如,帧的每个像素可以表示被一个或多个邻居像素围绕的中心像素。在一个示例中,邻居像素可以指直接毗邻于(例如,水平地、垂直地、和/或对角地毗邻于)中心像素的任何像素。在其他示例中,邻居像素可以指与中心像素间隔开不超过阈值距离或阈值数目的像素(例如,2个像素、3个像素等)的像素。在进一步示例中,邻居像素可以是与像素具有高的空间和/或时间关联的像素。这些像素可以与中心像素毗邻、或者与中心像素不毗邻(例如,非本地)。特征提取引擎304可以确定与中心像素相关联的任何数目的邻居像素的上下文特征。例如,特征提取引擎304可以提取和收集光流估计处理的一个或多个步骤所需的尽可能多的上下文特征(下文更详细地解释)。特征提取引擎304还可以将邻居像素的上下文特征与中心像素进行关联。例如,特征提取引擎304可以在与中心像素相关联的数据结构内与中心像素的上下文特征相结合地级联、编群和/或以其
他方式存储邻居像素的上下文特征。该数据结构可以包括与中心像素的坐标相对应的索引。在一个示例中,特征提取引擎304可以通过加权、求和、级联和/或其他技术来融合与每个相关邻居像素相关联的上下文特征。例如特征提取引擎304可以根据式f
p,
,i∈{0,1,

,c-1},c∈r来确定经融合的上下文特征,以使得从像素p推导出特征f
p,

68.通过将邻居像素的上下文特征与中心像素的上下文特征进行关联,特征提取引擎304可以提高稀疏光流估计的准确性。例如,通过与中心像素相结合地确定和存储邻居像素的上下文特征,特征提取引擎304可以帮助光流估计系统300准确地标识后续帧内与中心像素相对应的像素。由于稀疏光流估计可能不涉及初始帧的每个像素与后续帧的每个像素之间的一对一映射,因此与邻居像素相关联的上下文信息可以帮助光流估计系统300从多个候选像素内准确地选择对应像素。
69.特征提取引擎304可以确定源帧is和目标帧i
t
的所有或一部分像素的上下文特征。在一个示例中,特征提取引擎304可以确定源帧is和目标帧i
t
的与掩模(例如,由掩蔽引擎302提供的掩模a)相对应的像素的上下文特征。例如,特征提取引擎304可以应用掩模a来确定要处理来自源帧is的哪些像素以提取上下文特征和/或要处理来自目标帧i
t
的哪些像素以提取上下文特征。例如,特征提取引擎304可以确定仅由掩模a标识的像素的上下文特征。在一些情形中,由掩模a标识的像素可至少部分地基于被训练成提取重要和/或关键特征的机器学习算法来选择。
70.在一些情形中,特征采样引擎306可以接收由特征提取引擎304提取的特征(例如,由一个或多个特征向量表示)。特征采样引擎306可以执行采样操作和/或对特征的采样点的重新编群操作。例如,特征采样引擎306可以对特征向量(或特征向量中的特征采样点)进行检索和/或编群以促成后续处理阶段。在一些情形中,特征采样引擎306可以根据掩模(例如,掩模b)来对特征向量进行采样。例如,特征采样引擎306可以应用掩模b以使得仅由掩模b标记的像素子集被指定为相关以供进一步计算。在此类示例中,未被掩模b标记的区域和/或像素可被忽略。在一些情形中,掩模b可以与掩模a相似或相同。在其他情形中,掩模b可被配置成与掩模a不同。例如,掩模b相比于掩模a可标识不同的像素子集。
71.相关量引擎308可以从特征采样引擎306接收经采样的特征向量。相关量引擎308可以对经采样的特征向量执行相关量计算。例如,使用来自两个输入帧(源帧is和目标帧i
t
)的经采样特征图的输出作为输入,相关量引擎308可以在数个成对组合中(例如,针对所有可能的成对组合)计算逐对相关性。每个相关性参量表示两个特征(每个帧一个特征(例如,来自源帧is的一个特征以及来自目标帧i
t
的一个特征))之间的相关性或者在一些情形中相似性。由相关量引擎308确定的相关量可以被(例如,被光流计算引擎310)用作后续光流估计的输入。在一个解说性示例中,根据掩模ms和m
t
的像素收集(例如,包括数据的张量)可以分别具有h
sws
c和h
twt
c的维度或形状,其中掩模ms是由掩蔽引擎302针对源帧is生成的掩模,m
t
是由掩蔽引擎302针对目标帧i
t
生成的掩模,h表示高度,w表示宽度,并且c表示用于掩蔽引擎302的神经网络中的通道数目(或者在一些情形中深度)。在一些示例中,相关量引擎308可以使用下式来计算相关量,其中fs,f
t
∈rc是分别针对源帧is和目标帧i
t
的像素收集中的个体像素的特征。在一些情形中,相关量引擎308可以根据光流掩模(例如,掩模c)来处理特征向量。例如,相关量引擎可以选择或确定仅由掩模c标记的相关性(在该情形中,未被掩模c标记的其余相关量被丢弃)。在一些情形中,掩模c可以与掩模a和/
或掩模b相似或相同。在其他情形中,掩模c可被配置成与掩模a和/或掩模b不同。
72.光流计算引擎310可以从相关量引擎308接收相关量计算。光流计算引擎310可以使用相关量计算中的特征来对掩模(例如,掩模a、掩模d或其他掩模)中所标识的像素执行逐点(例如,逐像素)光流估计。在一些情形中,光流计算引擎310可以使用一个或多个神经网络操作(例如,一个或多个卷积层、一个或多个残差卷积块、和/或其他网络操作)来精细化和/或调整光流估计。例如,光流计算引擎310可以根据一个或多个掩模(例如,掩模d)来确定特定特征向量的光流估计。在一个示例中,光流计算引擎310可以执行光流估计来确定由掩模d标识的像素或像素区域的光流向量。在一些情形中,掩模d可以与掩模a、b和/或掩模c相似或相同。在其他情形中,掩模d可被配置成与掩模a、b和/或掩模c不同。在一些示例中,对应于源帧is和目标帧i
t
的特征可以具有与源帧is和目标帧i
t
相同的分辨率。
73.上采样引擎312可以从光流计算引擎310接收光流估计。上采样引擎312可以对光流估计执行一个或多个上采样操作以增加经估计光流场的分辨率。在一些情形中,上采样引擎312可以基于用于光流估计的(诸)掩模内的像素格式和/或分布来选择特定的上采样操作。例如,上采样引擎312可以对包括连续像素区域的掩模执行第一上采样操作,对包括离散(例如,不连续)像素的掩模执行第二上采样操作,对包括帧内的每个(或近似每个)像素的掩模执行第三上采样操作、和/或执行任何其他上采样操作。
74.如上文提到的,特征提取引擎304可以确定与帧的像素相关联的多尺度上下文特征。在一些情形中,光流估计过程的各个步骤可以利用不同尺度的上下文特征。例如,光流计算引擎310可以利用多尺度的特征金字塔、具有一个或多个尺度的经级联和/或融合的特征、或其他特征组合形式的所提取特征。在一些示例中,光流计算引擎310可以基于在特定步骤处使用的上下文特征的尺度来选择该步骤的掩模。例如,具有低分辨率的掩模可以结合低分辨率的特征向量来使用。附加地或替换地,光流计算引擎310可以基于在特定步骤处执行的(诸)操作来选择该步骤的掩模。例如,由特征采样引擎306执行的特征采样可使用第一掩模来优化,而由相关量引擎308确定的相关量计算可使用第二掩模来优化。如此,在一些情形中,图3中所解说的掩模a、掩模b、掩模c、掩模d和/或掩模e可以包括变化和/或差异。然而,两个或更多个掩模可以相同或相似。此外,光流估计过程内的步骤可以利用多个掩模、或不利用掩模。
75.通过确定与帧内的关键特征相对应的像素子集,所公开的光流估计技术和系统可以基于该帧的空间特性来优化稀疏光流估计。在一些情形中,所公开的技术和系统可以基于一系列帧的时间特性来优化稀疏光流估计。例如,如上文提到的,光流估计系统300可以确定两个直接毗邻帧之间和/或被一个或多个中间帧间隔开的两个帧之间的光流估计。在一些情形中,光流估计系统300可以选择性地对特定帧执行光流估计。例如,光流估计系统300可以确定一系列帧内的所有或一部分帧的重要性值。具有满足或超过(大于)阈值重要性值的重要性值的帧可以被指定为要对其执行光流估计的关键帧。在一些情形中,光流估计系统300可以基于帧内的特征来确定该帧的重要性。例如,具有大量重要特征(例如,关键特征)的帧可具有高的重要性值。在另一示例中,相对于先前帧具有相对低运动的帧可具有低的重要性值。所公开的光流估计系统可以针对一个或多个帧的空间和/或时间特性的任何组合优化稀疏光流估计。
76.所描述的系统和技术提供掩蔽以标识用于稀疏光流估计(而不是执行密集同质估
计)的区域。例如,在执行光流估计时可以跳过不涉及运动的区域(例如,来自静止相机的图像背景),从而导致降低的计算成本以及较高的估计准确性。这种解决方案可以有益于许多不同领域,诸如作为一个解说性示例,自适应区域视频源压缩。在一些情形中,可能需要更复杂光流估计的所选区域或像素可以使用针对流精细化的智能掩蔽来确定或识别。例如,智能掩蔽可以包括基于深度学习神经网络的办法来确定一个或多个掩模。在一个解说性示例中,智能掩蔽引擎(例如,掩蔽引擎302)可以基于输入特征(或帧)、特征和/或帧的内容、与特征和/或帧相关联的活动、与特征和/或帧相关联的语义、一致性、以及其他因素来确定该一个或多个掩模。如本文所述,掩模可以被用于辅助(例如,由光流估计系统300的一个或多个块或引擎进行的)光流处理的后续阶段。如上所述,可在空间和/或时间维度中作出对区域或帧选择的掩蔽,从而影响供进行精细化的内容百分比或分辨率水平。在一些情形中,流网络设计策略可以在神经网络的前部融合多尺度和上下文特征,可以在网络的中部准备相关量,并且随后可以在网络的稍后部分或后部分配精细化,如图3中所示。
77.图4a和图4b解说了基于与一个或多个帧相关联的运动量来优化和/或调整光流估计数据的稀疏性的示例。例如,图4a解说了表402,该表402指示基于帧内的运动要对其执行光流估计的帧区域。在该示例中,帧包括前景中的球以及该球后面的背景。当球不处于运动并且背景中不存在运动时,光流估计系统100不对帧执行光流估计。当球处于运动时,光流估计系统100可以对与该球相对应的像素执行光流估计。当球处于运动并且背景中存在运动时,光流估计系统100可以对整个帧(或对帧的大部分,诸如80%、90%等)执行光流。
78.图4b解说了表404,该表404指示帧内的基于该帧内的运动要对其执行光流估计的像素百分比。如图4a和图4b中所示,由所公开的光流估计系统实现的掩模的大小和/或位置可以基于接收到的帧内的当前和/或检测到的运动水平来动态地调整和/或优化。例如,当球不处于运动并且背景中不存在运动时(根据图4a的第一行),光流估计系统100对0%的帧执行光流估计。当球处于运动时,光流估计系统100可以对50%的像素(其对应于球)执行光流估计。当球处于运动并且背景中存在运动时,在一个示例中光流估计系统100可以对100%的帧执行光流。
79.图5是解说使用本文所描述的一种或多种技术在一个或多个帧之间的光流估计的过程500的示例的流程图。在框502,过程500包括:确定第一帧和第二帧中的至少一者的像素子集。在框504,过程500包括:生成指示像素子集的掩模。在一些示例中,过程500可以包括:使用机器学习算法来确定至少第一帧和第二帧的像素子集。例如,光流估计系统300可以包括可以确定像素子集(例如,使用掩蔽引擎302)的机器学习系统和/或算法。
80.在一些示例中,过程500可以包括:标识第一帧的对应于第一感兴趣区域的第一像素,并标识第一帧的对应于第二感兴趣区域的第二像素。在一些示例中,第一感兴趣区域和/或第二感兴趣区域可以是或可以包括一个或多个对象(例如,汽车或其他交通工具、人、建筑物等)、对象的一部分(例如,汽车车轮、人的手臂或手、建筑物上的标志等)、和/或第一帧中所描绘的场景的其他部分。在一些示例中,第一感兴趣区域可包括移动感兴趣区域(例如,移动对象),并且第二感兴趣区域可包括驻定对象。在一些示例中,第一感兴趣区域可包括感兴趣对象(例如,用户的手,无论手在第一帧中是否在移动),并且第二感兴趣区域可包括不感兴趣的场景部分(例如,场景背景等等)。在一些示例中,过程500可以将第一像素(对应于第一感兴趣区域)包括在像素子集内并从像素子集中排除(不包括)第二像素(对应于
第二感兴趣区域)。
81.在一些示例中,过程500可以包括:通过标识与两个对象之间的边界相对应的至少一个像素来确定至少第一帧和第二帧的像素子集。例如,沿边界的像素可以被包括在像素子集中。
82.在一些示例中,过程500可以包括:通过对第一帧内预定数目的像素进行采样来确定至少第一帧和第二帧的像素子集。
83.在框506,过程500包括:基于掩模来确定与至少第一帧和第二帧的像素子集相关联的一个或多个特征。在一些示例中,至少第一帧和第二帧的像素子集包括具有未被包括在像素子集中的毗邻像素的至少一个像素。在此类示例中,过程500可以包括:通过确定与该至少一个像素的毗邻像素相对应的特征信息并与该至少一个像素相关联地存储与毗邻像素相对应的特征信息来基于掩模确定该一个或多个特征。在一些示例中,过程500可以包括:使用与毗邻像素相对应的特征信息来确定该至少一个像素与第二帧的对应像素之间的光流向量。
84.在框508,过程500包括:确定第一帧的像素子集与第二帧的对应像素之间的光流向量。在框510,过程500包括:使用光流向量来生成第二帧的光流图。
85.在一些示例中,过程500包括:确定包括第一帧和第二帧的帧序列内的帧的重要性值。过程500可以包括:基于重要性值来选择帧序列内的用于执行光流估计的帧。在一些情形中,过程500包括:基于确定第二帧的重要性值超过(或大于)阈值重要性值来选择第二帧以用于执行光流估计。
86.在一些示例中,本文所描述的过程(例如,过程500和/或本文所描述的其他过程)可以由计算设备或装置(诸如具有图8中所示的计算设备架构800的计算设备)来执行。在一个示例中,过程500可以由具有实现图3中所示的光流估计系统300的计算设备架构800的计算设备来执行。在一些示例中,该计算设备可以包括移动设备(例如,移动电话、平板计算设备等)、可穿戴设备、扩展现实(xr)设备(例如,虚拟现实(vr)设备、增强现实(ar)设备、或混合现实(mr)设备)、个人计算机、膝上型计算机、视频服务器、电视机、交通工具(或交通工具的计算设备)、机器人设备、和/或具有执行本文所描述的过程(包括过程500和/或本文所描述的其他过程)的资源能力的任何其它计算设备。
87.在一些情形中,该计算设备或装置可包括各种组件,诸如一个或多个输入设备、一个或多个输出设备、一个或多个处理器(例如,通用处理器、神经处理单元(npu)、数字信号处理器(dsp)、图形处理器、和/或其他处理器)、一个或多个微处理器、一个或多个微型计算机、一个或多个发射机、接收机或经组合的发射机-接收机(例如,被称为收发机)、一个或多个相机、一个或多个传感器、和/或被配置成执行本文所描述的过程的各步骤的(诸)其他组件。在一些示例中,计算设备可包括显示器、被配置成传达和/或接收数据的网络接口、其任何组合、和/或(诸)其他组件。网络接口可被配置成传达和/或接收基于网际协议(ip)的数据或其他类型的数据。
88.计算设备的各组件可以用电路系统来实现。例如,各组件可以包括电子电路或其他电子硬件(其可包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、中央处理单元(cpu)、神经处理单元(npu)和/或其他合适的电子电路))和/或可以用其实现,和/或可以包括计算机软件、固件、或其任何组合和/或可以用其
实现,以执行本文描述的各种操作。
89.过程500被解说为逻辑流程图,该逻辑流程图的操作表示能够以硬件、计算机指令、或其组合来实现的操作序列。在计算机指令的上下文中,各操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,这些指令在由一个或多个处理器执行时执行所叙述的操作。一般而言,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述各操作的顺序并不旨在被理解为是限制,并且任何数目的所描述操作可以按任何顺序被组合和/或并行进行以实现各过程。
90.附加地,本文所描述的过程(包括过程500和/或本文所描述的其他过程)可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用)、由硬件或其组合来执行。如以上提及的,代码可以被存储在计算机可读或机器可读存储介质上,例如以包括可由一个或多个处理器执行的多条指令的计算机程序的形式。计算机可读或机器可读存储介质可以是非瞬态的。
91.如上所述,本文所描述的光流估计系统和技术可以使用基于神经网络的机器学习系统来实现。可以使用的神经网络的解说性示例包括一个或多个卷积神经网络(cnn)、自动编码器、深度置信网络(dbn)、递归神经网络(rnn)、生成对抗网络(gan)、门控递归单元(gru)、其任何组合、和/或任何其他合适的神经网络。
92.图6是可以由对象检测器使用的深度学习神经网络600的解说性示例。输入层620包括输入数据。在一个解说性示例中,输入层620可包括表示输入视频帧的像素的数据。神经网络600包括多个隐藏层622a、622b至622n。隐藏层622a、622b至622n包括“n”个隐藏层,其中“n”是大于或等于一的整数。可以使隐藏层的数目包括给定应用所需要的尽可能多的层。神经网络600进一步包括提供由隐藏层622a、622b至622n执行的处理所得到的输出。在一个解说性示例中,输出层624可以提供针对输入视频帧中的对象的分类。该分类可以包括标识对象类型的类别(例如,人、狗、猫、或其他对象)。
93.神经网络600是互连节点的多层神经网络。每个节点可表示信息片段。与节点相关联的信息在不同层之间共享并且每一层在信息被处理时保留信息。在一些情形中,神经网络600可以包括前馈网络,在该情形中不存在网络的输出被反馈给自己的反馈连接。在一些情形中,神经网络600可以包括递归神经网络,其可以具有允许在读进输入时跨节点携带信息的环路。
94.可以在各节点之间通过各个层之间的节点到节点互连来交换信息。输入层620的节点可以激活第一隐藏层622a中的一组节点。例如,如图所示,输入层620的每个输入节点连接到第一隐藏层622a的每个节点。隐藏层622a、622b至622n的节点可以通过向这些信息应用激活函数来变换每个输入节点的信息。从该变换推导出的信息随后可以被传递并且可以激活下一隐藏层622b的节点,这些节点可以执行其自己的指定函数。示例函数包括卷积、上采样、数据变换、和/或任何其他合适的函数。隐藏层622b的输出随后可以激活下一隐藏层的节点,依此类推。最后隐藏层622n的输出可以激活输出层624的一个或多个节点,在该输出层624处提供输出。在一些情形中,虽然神经网络600中的节点(例如,节点626)被示为具有多个输出线,但节点具有单个输出并且所有线被示为从表示相同输出值的节点输出。
95.在一些情形中,每个节点或各节点之间的互连可以具有权重,该权重是从神经网
络600的训练推导出的参数集。一旦神经网络600被训练,它就可以被称为经训练的神经网络,其可被用于对一个或多个对象进行分类。例如,各节点之间的互连可以表示习得的与互连节点有关的信息片段。互连可以具有可以调谐(例如,基于训练数据集)的可调数值权重,从而允许神经网络600对输入自适应并且能够随着处理越来越多数据进行学习。
96.神经网络600被预训练以使用不同隐藏层622a、622b至622n来处理来自输入层620中的数据的特征,以便通过输出层624来提供输出。在其中神经网络600被用于标识图像中的对象的示例中,神经网络600可以使用包括图像和标签两者的训练数据来训练。例如,训练图像可以被输入到网络,其中每个输入图像具有指示每个图像中的一个或多个对象的类别的标签(基本上向网络指示这些对象是什么以及它们具有什么特征)。在一个解说性示例中,训练图像可以包括数字2的图像,在该情形中,针对图像的标签可以是[0 0 1 0 0 0 0 0 0 0]。
[0097]
在一些情形中,神经网络600可以使用被称为反向传播的训练过程来调整各节点的权重。反向传播可包括前向传递、损失函数、后向传递和权重更新。对一次训练迭代执行前向传递、损失函数、后向传递和参数更新。对于每组训练图像,该过程可以重复达某个次数的迭代,直到神经网络600被训练得足够好,以使得层的权重被准确地调谐。
[0098]
对于标识图像中的对象的示例,前向传递可以包括通过神经网络600传递训练图像。权重在训练神经网络600之前被初始随机化。图像可以包括例如表示图像像素的数字数组。数组中的每个数字可包括从0到255的值,其描述了数组中该位置的像素强度。在一个示例中,数组可包括具有28行和28列像素以及3个颜色分量(例如红色、绿色和蓝色、或者亮度和两个色度分量,等等)的28
×
28
×
3数字数组。
[0099]
对于神经网络600的第一次训练迭代,由于在初始化时随机选择权重,因此输出将可能包括不对任何特定类别给出偏好的值。例如,如果输出是具有对象包括不同类别的概率的向量,则针对每个不同类别的概率值可以相等或至少非常相似(例如,对于十个可能的类别,每个类别可具有0.1的概率值)。利用初始权重,神经网络600无法确定低级特征,并且由此不能准确地确定对象的分类可能是什么。损失函数可以被用于分析输出中的误差。可以使用任何合适的损失函数定义。损失函数的一个示例包括均方误差(mse)。mse被定义为其计算二分之一乘以实际答案(target)减去预测(输出(output))答案的平方的总和。损失可以被设置为等于e
total
的值。
[0100]
对于第一训练图像,损失(或误差)将是高的,因为实际值将与预测输出大不相同。训练的目标是最小化损失量,以使得预测输出与训练标签相同。神经网络600可以通过确定哪些输入(权重)对网络的损失贡献最大来执行反向传递,并且可以调整权重以使损失减少并最终最小化。
[0101]
可以计算损失相对于权重的导数(表示为dl/dw,其中w是特定层处的权重),以确定对网络的损失贡献最大的权重。在计算导数之后,可以通过更新过滤器的所有权重来执行权重更新。例如,可以更新权重,以使得它们在梯度的相反方向上变化。权重更新可被表示为其中w表示权重,wi表示初始权重,并且η表示学习率。学习率可被设置为任何合适的值,其中高学习率包括较大的权重更新,而较低值指示较小的权重更新。
[0102]
神经网络600可包括任何合适的深度网络。一个示例包括卷积神经网络(cnn),其
包括输入层和输出层,其中在输入层与输出层之间具有多个隐藏层。下面参照图9描述了cnn的示例。cnn的隐藏层包括一系列卷积层、非线性层、池化层(用于下采样)和全连接层。神经网络600可包括除cnn之外的任何其他深度网络,诸如自动编码器、深度置信网络(dbn)、递归神经网络(rnn)等。
[0103]
图7是卷积神经网络700(cnn 700)的解说性示例。cnn 700的输入层720包括表示图像的数据。例如,该数据可包括表示图像的像素的数字数组,其中该数组中的每个数字包括从0到255的值,其描述了在数组中该位置处的像素强度。使用来自以上的先前示例,数组可包括具有28行和28列像素以及3个颜色分量(例如,红色、绿色和蓝色、或者亮度和两个色度分量,等等)的28
×
28
×
3数字数组。该图像可以通过卷积隐藏层722a、可任选的非线性激活层、池化隐藏层722b和全连接隐藏层722c,以在输出层724处获得输出。虽然在图7中仅示出了每个隐藏层中的一者,但普通技术人员将领会,多个卷积隐藏层、非线性层、池化隐藏层和/或全连接层可被包括在cnn 700中。如先前描述的,输出可以指示对象的单个类别,或者可包括最好地描述图像中的对象的类别的概率。
[0104]
cnn 700的第一层是卷积隐藏层722a。卷积隐藏层722a分析输入层720的图像数据。卷积隐藏层722a的每个节点连接到输入图像的被称为感受野的节点(像素)区域。卷积隐藏层722a可以被认为是一个或多个过滤器(每个过滤器对应于不同的激活或特征图),其中过滤器的每个卷积迭代是卷积隐藏层722a的节点或神经元。例如,过滤器在每次卷积迭代处覆盖的输入图像区域将是过滤器的感受野。在一个解说性示例中,如果输入图像包括28
×
28阵列,并且每个过滤器(和对应的感受野)是5
×
5阵列,则在卷积隐藏层722a中将存在24
×
24个节点。节点和该节点的感受野之间的每个连接学习权重,并且在一些情形中,学习总体偏置,以使得每个节点学习分析其在输入图像中的特定局部感受野。隐藏层722a的每个节点将具有相同的权重和偏置(被称为共享权重和共享偏置)。例如,过滤器具有权重(数字)阵列以及与输入相同的深度。对于视频帧示例,过滤器的深度将为3(根据输入图像的三种颜色分量)。过滤器阵列的解说性示例大小为5
×5×
3,其对应于节点的感受野的大小。
[0105]
卷积隐藏层722a的卷积性质是由于卷积层的每个节点被施加到其对应的感受野。例如,卷积隐藏层722a的过滤器可以从输入图像阵列的左上角开始,并且可以围绕输入图像卷积。如以上提及的,过滤器的每次卷积迭代可以被认为是卷积隐藏层722a的节点或神经元。在每次卷积迭代中,过滤器的值与图像的对应数目的原始像素值相乘(例如,5
×
5过滤器阵列与输入图像阵列左上角的输入像素值的5
×
5阵列相乘)。来自每个卷积迭代的乘法可以相加在一起,以获得针对该迭代或节点的总和。接下来,根据卷积隐藏层722a中的下一节点的感受野,在输入图像中的下一位置处继续该过程。例如,过滤器可以移动步幅量到下一个感受野。步幅量可以被设置为1或其他合适的量。例如,如果步幅量被设置为1,则在每次卷积迭代中,过滤器将向右移动1个像素。在输入量的每个唯一位置处处理过滤器产生表示针对该位置的过滤器结果的数字,从而导致针对卷积隐藏层722a的每个节点确定总和值。
[0106]
从输入层到卷积隐藏层722a的映射被称为激活映射(或特征映射)。激活映射包括针对每个节点的表示输入量的每个位置处的过滤器结果的值。激活映射可包括阵列,该阵列包括从过滤器在输入量上的每次迭代得到的各种总和值。例如,如果将5
×
5过滤器应用
于28
×
28输入图像的每个像素(步幅量为1),则激活映射将包括24
×
24阵列。卷积隐藏层722a可包括若干个激活映射,以便标识图像中的多个特征。图7中所示的示例包括三个激活映射。使用三个激活映射,卷积隐藏层722a可以检测三种不同类型的特征,其中每个特征在整个图像上是可检测的。
[0107]
在一些示例中,可以在卷积隐藏层722a之后应用非线性隐藏层。非线性层可以被用于将非线性引入一直在计算线性运算的系统。非线性层的一个解说性示例是整流线性单元(relu)层。relu层可以将函数f(x)=max(0,x)应用于输入量中的所有值,这将所有负激活改变为0。relu由此可以增加网络700的非线性属性而不影响卷积隐藏层722a的感受野
[0108]
可以在卷积隐藏层722a之后(并且在使用时在非线性隐藏层之后)应用池化隐藏层722b。池化隐藏层722b被用于简化来自卷积隐藏层722a的输出中的信息。例如,池化隐藏层722b可以从卷积隐藏层722a获取每个激活映射输出,并使用池化函数生成密集激活映射(或特征映射)。最大池化是由池化隐藏层执行的函数的一个示例。其他形式的池化函数(诸如平均池化、l2范数池化或其他合适的池化函数)可由池化隐藏层722a使用。将池化函数(例如,最大池化过滤器、l2范数过滤器或其他合适的池化过滤器)应用于卷积隐藏层722a中包括的每个激活映射。在图7中所示的示例中,三个池化过滤器被用于卷积隐藏层722a中的三个激活映射。
[0109]
在一些示例中,可以通过将最大池化过滤器(例如,具有2
×
2的大小)以一步幅量(例如,等于过滤器的维度,诸如步幅量2)应用于从卷积隐藏层722a输出的激活映射来使用最大池化。来自最大池化过滤器的输出包括过滤器围绕其卷积的每个子区域中的最大数字。以2
×
2过滤器为例,池化层中的每个单元可以总结前一层中2
×
2节点的区域(其中每个节点是激活映射中的值)。例如,激活映射中的四个值(节点)将在过滤器的每次迭代中由2
×
2最大池化过滤器进行分析,其中这四个值中的最大值作为“最大”值被输出。如果将此类最大池化过滤器应用于来自维度为24
×
24节点的卷积隐藏层722a的激活过滤器,则来自池化隐藏层722b的输出将是12
×
12节点的阵列。
[0110]
在一些示例中,也可以使用l2范数池化过滤器。l2范数池化过滤器包括计算激活映射的2
×
2区域(或其他合适区域)中的值的平方和的平方根(而不是像在最大池化中那样计算最大值),并且使用计算出的值作为输出。
[0111]
直观地,池化函数(例如,最大池化、l2范数池化或其他池化函数)确定给定特征是否在图像的区域中的任何地方被发现,并且丢弃确切的位置信息。这可以在不影响特征检测结果的情况下完成,因为一旦发现了特征,该特征的确切位置就不如其相对于其他特征的近似位置重要。最大池化(以及其他池化方法)的益处是池化特征少得多,从而减少了cnn 700后面层中所需的参数数目。
[0112]
网络中的连接的最后一层是全连接层,其将来自池化隐藏层724b的每个节点连接到输出层724中的每个输出节点。使用以上示例,输入层包括编码输入图像的像素强度的28
×
28个节点,卷积隐藏层722a包括基于将5
×
5局部感受野(用于过滤器)应用于三个激活映射的3
×
24
×
24个隐藏特征节点,并且池化隐藏层722b包括基于将最大池化过滤器应用于跨三个特征映射中的每一者的2
×
2区域的3
×
12
×
12个隐藏特征节点的层。扩展该示例,输出层724可包括十个输出节点。在此类示例中,3
×
12
×
12池化隐藏层724b的每个节点连接到输出层724的每个节点。
[0113]
全连接层722c可以获得先前池化隐藏层722b的输出(其应当表示高级特征的激活映射),并且确定与特定类别最相关的特征。例如,全连接层722c可以确定与特定类别最强相关的高级特征,并且可包括针对高级特征的权重(节点)。可以计算全连接层722c与池化隐藏层722b的权重之间的乘积,以获得针对不同类别的概率。例如,如果cnn 700被用于预测视频帧中的对象是人,则在表示人的高级特征(例如,两条腿存在、脸存在于对象的顶部、两只眼睛存在于脸的左上和右上、鼻子存在于脸的中间、嘴存在于脸的底部、和/或人共有的其他特征)的激活映射中将出现较高值。
[0114]
在一些示例中,来自输出层724的输出可以包括m维向量(在先前示例中,m=10),其中m可以包括程序在对图像中的对象进行分类时必须从中选择的类别数目。还可以提供其他示例输出。n维向量中的每个数字都可以表示对象属于某一类别的概率。在一个解说性示例中,如果表示十个不同类别的对象的10维输出向量是[0 0 0.05 0.8 0 0.15 0 0 0 0],则该向量指示关于图像是第三类别的对象(例如,狗)存在5%的概率,关于图像是第四类别的对象(例如,人)存在80%的概率,并且关于图像是第六类别的对象(例如,袋鼠)存在15%的概率。针对一类别的概率可以被认为是对象是该类别的一部分的置信度水平。
[0115]
图8是解说用于实现本文技术的某些方面的系统的示例的示图。具体而言,图8解说了计算系统800的示例,该计算系统800可以是例如构成内部计算系统的任何计算设备、远程计算系统、相机、或其任何组件,其中该系统的各组件使用连接805彼此处于通信。连接805可以是使用总线的物理连接,或至处理器810的直接连接(诸如在芯片组架构中)。连接805还可以是虚拟连接、联网连接、或逻辑连接。
[0116]
在一些示例中,计算系统800是分布式系统,其中本公开中所描述的功能可以分布在数据中心、多个数据中心、对等网络等等内。在一些示例中,本文所描述的系统组件中的一个或多个系统组件表示许多此类组件,每个组件执行为该组件描述的一些或全部功能。在一些情形中,各组件可以是物理或虚拟设备。
[0117]
示例系统800包括至少一个处理单元(cpu或处理器)810以及将各个系统组件(包括系统存储器815,诸如只读存储器(rom)820和随机存取存储器(ram)825)耦合到处理器810的连接805。计算系统800可以包括与处理器810直接连接、紧邻处理器810、或集成为处理器810的一部分的高速存储器的高速缓存812。
[0118]
处理器810可以包括任何通用处理器和硬件服务或软件服务,诸如存储在存储设备830中、被配置成控制处理器810的服务832、834和836,以及专用处理器,其中软件指令被纳入实际处理器设计中。处理器810可以基本上是完全自包含计算系统,包含多个核或处理器、总线、存储器控制器、高速缓存等。多核处理器可以是对称的或非对称的。
[0119]
为了实现用户交互,计算系统800包括可以表示任何数目的输入机构的输入设备845,诸如用于语音的话筒、用于姿势或图形输入的触敏屏、键盘、鼠标、运动输入、语音等等。计算系统800还可以包括输出设备835,该输出设备835可以是数个输出机构中的一者或多者。在一些实例中,多模态系统可使得用户能够提供多种类型的输入/输出以与计算系统800通信。计算系统800可以包括通信接口840,其一般可以管控和管理用户输入和系统输出。通信接口可执行或促成使用有线和/或无线收发机接收和/或传输有线或无线通信,包括利用音频插孔/插头、话筒插孔/插头、通用串行总线(usb)端口/插头、括利用音频插孔/插头、话筒插孔/插头、通用串行总线(usb)端口/插头、端口/插头、以太网端口/插头、光纤端口/插头、专用有线端口/插头、
无线信号传输、低能量(ble)无线信号传输、无线信号传输、射频标识(rfid)无线信号传输、近场通信(nfc)无线信号传输、专用短程通信(dsrc)无线信号传输、802.11wi-fi无线信号传输、无线局域网(wlan)信号传输、可见光通信(vlc)、微波接入全球互通(wimax)、红外(ir)通信无线信号传输、公共交换电话网(pstn)信号传输、综合服务数字网(isdn)信号传输、3g/4g/5g/lte蜂窝数据网络无线信号传输、自组织网络信号传输、无线电波信号传输、微波信号传输、红外信号传输、可见光信号传输、紫外光信号传输、沿电磁频谱的无线信号传输、或其某种组合的那些通信。通信接口840还可包括一个或多个全球导航卫星系统(gnss)接收机或收发机,其被用于基于从与一个或多个gnss系统相关联的一个或多个卫星接收到一个或多个信号来确定计算系统800的位置。gnss系统包括但不限于基于美国的全球定位系统(gps)、基于俄罗斯的全球导航卫星系统(glonass)、基于中国的北斗导航卫星系统(bds)、以及基于欧洲的伽利略gnss。对在任何特定硬件布置上进行操作不存在任何限制,并且因此可以容易地替换此处的基础特征以随着它们被开发而获得改进的硬件或固件布置。
[0120]
存储设备830可以是非易失性和/或非瞬态和/或计算机可读存储器设备,并且可以是能够存储可由计算机访问的数据的硬盘或其他类型的计算机可读介质,诸如盒式磁带、闪存卡、固态存储器设备、数字多功能碟、卡带、软磁盘、软盘、硬盘、磁带、磁条/磁性条、任何其他磁存储介质、闪存、忆阻器存储器、任何其他固态存储器、压缩碟只读存储器(cd-rom)光碟、可重写压缩碟(cd)光碟、数字视频盘(dvd)光碟、蓝光碟(bdd)光碟、全息光盘、另一光学介质、安全数字(sd)卡、微型安全数字(microsd)卡、memory stick(存储器棒)卡、智能卡芯片、emv芯片、订户身份模块(sim)卡、迷你/微型/纳米/微微sim卡、另一集成电路(ic)芯片/卡、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存eprom(flasheprom)、高速缓存存储器(l1/l2/l3/l4/l5/l#)、电阻式随机存取存储器(rram/reram)、相变存储器(pcm)、自旋转移扭矩ram(stt-ram)、另一存储器芯片或盒、和/或其组合。
[0121]
存储设备830可以包括软件服务、服务器、服务等等,当定义此类软件的代码由处理器810执行时其使得系统执行功能。在一些示例中,执行特定功能的硬件服务可包括存储在与必要的硬件组件(诸如处理器810、连接805、输出设备835等)连接的计算机可读介质中的软件组件以执行功能。
[0122]
如本文所使用的,术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光存储设备、以及能够存储、包含或携带(诸)指令和/或数据的各种其他介质。计算机可读介质可包括其中可存储数据并且不包括载波和/或无线地或通过有线连接传播的瞬态电子信号的非瞬态介质。非瞬态介质的示例可包括但不限于磁盘或磁带、光学存储介质(诸如压缩碟(cd)或数字多功能碟(dvd))、闪存、存储器或存储器设备。计算机可读介质可具有存储于其上的代码和/或机器可执行指令,它们可表示规程、功能、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合。可通过传递和/或接收信息、数据、自变量、参数或存储器内容来将代码段耦合至另一代码段或硬件电路。信息、自变量、参数、数据等可以使用任何合适的手段来传递、转发或传送,这些手段包括存储器共享、消息传递、令牌传递、网络传输等。
[0123]
在一些示例中,计算机可读存储设备、介质和存储器可包括包含比特流等的线缆或无线信号。然而,在被提及时,非瞬态计算机可读存储介质明确排除诸如能量、载波信号、电磁波以及信号本身等介质。
[0124]
在以上描述中提供了具体细节以提供对本文提供的示例的详尽理解。然而,本领域普通技术人员将理解,没有这些具体细节也可以实践这些示例。为了清楚说明,在一些实例中,本发明的技术可以被呈现为包括各个功能框,它们包括包含设备、设备组件、以软件或者硬件和软件的组合实施的方法中的步骤或例程的功能框。可使用除了附图中示出和/或本文所描述的那些组件之外的附加组件。例如,电路、系统、网络、过程和其他组件可以用框图形式示为组件以避免使这些示例湮没在不必要的细节中。在其他实例中,可以在没有必要的细节的情况下示出公知的电路、过程、算法、结构和技术以避免混淆各示例。
[0125]
各个示例在上文可被描述为过程或方法,该过程或方法被描绘为流程图、流程示图、数据流图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但很多操作可以并行地或并发地执行。另外,可以重新排列操作的次序。当过程的操作完成时过程被终结,但是过程可具有附图中未包括的附加步骤。过程可对应于方法、函数、规程、子例程、子程序等。当过程对应于函数时,它的终止对应于该函数返回调用方函数或主函数。
[0126]
根据上述示例的过程和方法可使用被存储的计算机可执行指令或以其他方式从计算机可读介质可用的计算机可执行指令来实现。这些指令可包括例如致使或以其他方式将通用计算机、专用计算机或处理设备配置成执行某一功能或功能群的指令和数据。所使用的计算机资源的各部分可通过网络访问。计算机可执行指令可以是例如二进制文件、中间格式指令(诸如汇编语言)、固件、源代码等。可用于存储指令、在根据所描述的示例的方法期间所使用的信息和/或所创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、提供有非易失性存储器的usb设备、联网存储设备等。
[0127]
实现根据这些公开的各种过程和方法的设备可包括硬件、软件、固件、中间件、微代码、硬件描述语言、或其任何组合,并且可采用各种形状因子中的任一者。当以软件、固件、中间件或微代码实现时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可被存储在计算机可读或机器可读介质中。处理器可执行必要任务。各形状因子的典型示例包括:膝上型设备、智能电话、移动电话、平板设备、或其他小形状因子的个人计算机、个人数字助理、机架式设备、自立设备等。本文描述的功能性还可用外围设备或插卡来实施。作为进一步的示例,此类功能性还可被实现在在单个设备上执行的不同芯片或不同过程之中的电路板上。
[0128]
指令、用于传达这些指令的介质、用于执行它们的计算资源、以及用于支持此类计算资源的其他结构是用于提供本公开中所描述的功能的示例装置。
[0129]
在上述描述中,本技术的各方面参考其特定示例来描述,但是本领域技术人员将认识到本技术不限于此。因而,尽管本技术的解说性示例已经在本文中详细描述,但是要理解,各个发明概念可以以其他各种方式被实施和采用,并且所附权利要求书不旨在被解释为包括这些变型,除非受到现有技术的限制。上述申请的各个特征和方面可以单独地或联合地使用。此外,各示例可以在超出本文所描述的那些环境和应用的任何数目的环境和应用中来利用而不背离本说明书的更宽泛的精神和范围。相应地,本说明书和附图应被认为是解说性的而非限定性的。出于解说的目的,按照特定顺序来描述各方法。应当领会,在替
换示例中,各方法可以按与所描述的不同顺序来执行。
[0130]
普通技术人员将领会,本文所使用的小于(“《”)和大于(“》”)符号或术语可以分别用小于等于(“≤”)和大于等于(“≥”)符号来代替而不背离本说明书的范围。
[0131]
在各组件被描述为“被配置成”执行某些操作的情况下,可例如通过设计电子电路或其他硬件来执行操作、通过对可编程电子电路(例如,微处理器、或其他合适的电子电路)进行编程、或其任何组合来实现此类配置。
[0132]
短语“耦合到”指的是任何组件直接或间接地物理连接到另一组件,和/或任何组件直接或间接地与另一组件处于通信(例如,通过有线或无线连接和/或其他合适的通信接口连接到该另一组件)。
[0133]
权利要求语言或叙述集合中的“至少一者”和/或集合中的“一者或多者”的其他语言指示该集合中的一个成员或该集合中的多个成员(以任何组合)满足该权利要求。例如,叙述“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的集合中列举的项目。
[0134]
结合本文公开的示例所描述的各种解说性逻辑框、模块、电路、和算法步骤可被实现为电子硬件、计算机软件、固件、或其组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、块、模块、电路、以及步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离本技术的范围。
[0135]
本文所描述的技术还可用电子硬件、计算机软件、固件、或其任何组合来实现。这些技术可以用各种设备中的任一种来实现,诸如通用计算机、无线通信设备手持机、或具有多种用途的集成电路设备,这些用途包括无线通信设备手持机和其他设备中的应用。被描述为模块或组件的任何特征可以一起被实现在集成逻辑器件中或被单独实现为分立但可相互操作的逻辑器件。如果以软件来实现,则这些技术可以至少部分地由包括程序代码的计算机可读数据存储介质来实现,这些程序代码包括指令,这些指令在被执行时执行上述方法中的一者或多者。计算机可读数据存储介质可形成计算机程序产品的一部分,其可包括封装材料。计算机可读介质可包括存储器或数据存储介质,诸如随机存取存储器(ram)(诸如同步动态随机存取存储器(sdram))、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存、磁性或光学数据存储介质等等。这些技术附加地或替换地可至少部分地由携带或传达指令或数据结构形式的程序代码的计算机可读通信介质来实现,这些指令或数据结构可由计算机访问、读取、和/或执行,诸如传播的信号或波。
[0136]
程序代码可由处理器执行,该处理器可包括一个或多个处理器,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)、或其他等效的集成或分立逻辑电路系统。此类处理器可被配置成执行本公开中所描述的任何技术。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理
器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,dsp与微处理器的组合、多个微处理器、与dsp核心协同的一个或多个微处理器、或任何其他此类配置。相应地,如本文所使用的术语“处理器”可以指任何上述结构、上述结构的任何组合、或适于实现本文所描述的技术的任何其他结构或装置。另外,在一些方面中,本文所描述的功能性可在配置成用于编码和解码的专用软件模块或硬件模块内提供,或被纳入组合的视频编解码器(codec)中。
[0137]
本公开的解说性示例包括:
[0138]
示例1:一种用于一个或多个帧之间的光流估计的装置。该装置包括:存储器,该存储器被配置成:存储与该一个或多个帧相对应的数据;以及处理器,该处理器被配置成:确定第一帧和第二帧中的至少一者的像素子集;生成指示该像素子集的掩模;基于该掩模来确定与至少该第一帧和该第二帧的该像素子集相关联的一个或多个特征;确定该第一帧的该像素子集与该第二帧的对应像素之间的光流向量;以及使用该光流向量来生成该第二帧的光流图。
[0139]
示例2:如示例1的装置,其中,该处理器被配置成:使用机器学习算法来确定至少该第一帧和该第二帧的该像素子集。
[0140]
示例3:如示例1或2中任一者的装置,其中,该处理器被配置成通过以下操作来确定至少该第一帧和该第二帧的该像素子集:标识该第一帧的对应于第一感兴趣区域的第一像素;标识该第一帧的对应于第二感兴趣区域的第二像素;以及将该第一像素包括在该像素子集内并将该第二像素从该像素子集中排除。
[0141]
示例4:如示例1至3中任一者的装置,其中,该处理器被配置成通过以下操作来确定至少该第一帧和该第二帧的该像素子集:标识与两个对象之间的边界相对应的至少一个像素。
[0142]
示例5:如示例1至4中任一者的装置,其中,该处理器被配置成通过以下操作来确定至少该第一帧和该第二帧的该像素子集:对该第一帧内预定数目的像素进行采样。
[0143]
示例6:如示例1至5中任一者的装置,其中,至少该第一帧和该第二帧的该像素子集包括具有未被包括在该像素子集中的毗邻像素的至少一个像素。
[0144]
示例7:如示例6的装置,其中,该处理器被配置成通过以下操作来基于该掩模确定该一个或多个特征:确定与该至少一个像素的毗邻像素相对应的特征信息;以及与该至少一个像素相关联地存储与该毗邻像素相对应的该特征信息。
[0145]
示例8:如示例7的装置,其中,该处理器被配置成:使用与该毗邻像素相对应的该特征信息来确定该至少一个像素与该第二帧的对应像素之间的光流向量。
[0146]
示例9:如示例1至8中任一者的装置,其中,该处理器被配置成:确定包括该第一帧和该第二帧的帧序列内的帧的重要性值;以及基于该重要性值来选择该帧序列内的用于执行光流估计的帧。
[0147]
示例10:如示例9的装置,其中,该处理器被配置成:基于确定该第二帧的重要性值超过阈值重要性值来选择该第二帧以用于执行光流估计。
[0148]
示例11:如示例1至10中任一者的装置,其中,该处理器包括神经处理单元(npu)。
[0149]
示例12:如示例1至11中任一者的装置,其中,该装置包括移动设备。
[0150]
示例13:如示例1至12中任一者的装置,其中,该装置包括扩展现实设备。
[0151]
示例14:如示例1至13中任一者的装置,进一步包括显示器。
[0152]
示例15:如示例1至14中任一者的装置,其中,该装置包括被配置成捕获一个或多个帧的相机。
[0153]
示例16:一种一个或多个帧之间的光流估计的方法。该方法包括:确定第一帧和第二帧中的至少一者的像素子集;生成指示该像素子集的掩模;基于该掩模来确定与至少该第一帧和该第二帧的该像素子集相关联的一个或多个特征;确定该第一帧的该像素子集与该第二帧的对应像素之间的光流向量;以及使用该光流向量来生成该第二帧的光流图。
[0154]
示例17:如示例16的方法,进一步包括:使用机器学习算法来确定至少该第一帧和该第二帧的该像素子集。
[0155]
示例18:如示例16至17中任一者的方法,其中,确定至少该第一帧和该第二帧的该像素子集包括:标识该第一帧的对应于第一感兴趣区域的第一像素;标识该第一帧的对应于第二感兴趣区域的第二像素;以及将该第一像素包括在该像素子集内并将该第二像素从该像素子集中排除。
[0156]
示例19:如示例16至18中任一者的方法,其中,确定至少该第一帧和该第二帧的该像素子集包括:标识与两个对象之间的边界相对应的至少一个像素。
[0157]
示例20:如示例16至19中任一者的方法,其中,确定至少该第一帧和该第二帧的该像素子集包括:对该第一帧内预定数目的像素进行采样。
[0158]
示例21:如示例16至20中任一者的方法,其中,至少该第一帧和该第二帧的该像素子集包括具有未被包括在该像素子集中的毗邻像素的至少一个像素。
[0159]
示例22:如示例21的方法,其中,基于该掩模来确定该一个或多个特征包括:确定与该至少一个像素的毗邻像素相对应的特征信息;以及与该至少一个像素相关联地存储与该毗邻像素相对应的该特征信息。
[0160]
示例23:如示例22的方法,进一步包括:使用与该毗邻像素相对应的该特征信息来确定该至少一个像素与该第二帧的对应像素之间的光流向量。
[0161]
示例24:如示例16至23中任一者的方法,进一步包括:确定包括该第一帧和该第二帧的帧序列内的帧的重要性值;以及基于该重要性值来选择该帧序列内的用于执行光流估计的帧。
[0162]
示例25:如示例24的方法,进一步包括:基于确定该第二帧的重要性值超过阈值重要性值来选择该第二帧以用于执行光流估计。
[0163]
示例26:一种存储有指令的计算机可读存储介质,这些指令在被执行时使得一个或多个处理器执行根据示例16至25中任一者的任何操作。
[0164]
示例27:一种设备,包括用于执行如示例16至25的任何操作的装置。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1