用于跨多个计算设备分布神经网络的系统和方法与流程

文档序号:28942174发布日期:2022-02-16 17:26阅读:110来源:国知局
用于跨多个计算设备分布神经网络的系统和方法与流程
用于跨多个计算设备分布神经网络的系统和方法
发明领域
1.本发明总体上涉及神经网络,包括但不限于在头戴式显示系统中实现的神经网络。
2.背景
3.本发明涉及神经网络。更具体地,本发明涉及在头戴式显示系统中实现神经网络。头戴式显示器可以用于增强现实和/或虚拟现实系统,并且通常包括处理电路。然而,由于尺寸和散热的限制,头戴式显示器本地的处理电路的处理能力可能受到限制。某些计算量大的过程可能难以在头戴式显示器的处理电路上本地执行。此外,将计算量大的过程卸载到外部处理单元会导致延迟,并且可能需要过多的能量来传输数据。
4.发明概述
5.本文公开的各种实施例涉及一种方法。在一些实施例中,该方法包括由配置有神经网络的第一一个或更多个层的第一设备接收输入数据,用于经由跨第一设备和第二设备实现的该神经网络进行处理。在一些实施例中,该方法包括由在第一设备上实现的神经网络的第一一个或更多个层输出相对于输入数据在尺寸上减小的数据集,同时识别输入数据的一个或更多个特征以供神经网络的第二一个或更多个层处理。在一些实施例中,该方法包括由第一设备将数据集传送到第二设备,用于经由在第二设备上实现的神经网络的第二一个或更多个层进行处理。
6.在一些实施例中,该方法还包括由第一一个或更多个层通过压缩用于经由网络传输到第二设备的数据集来减少数据集。
7.在一些实施例中,第二一个或更多个层检测输入数据内的一个或更多个特征中的特征。
8.在一些实施例中,该方法还包括由第一设备从第二设备接收特征被第二一个或更多个层检测到的指示。
9.在一些实施例中,该方法还包括由第一设备检测一个或更多个特征中的特征满足由第一设备采取动作的准确性阈值。
10.在一些实施例中,该方法还包括由第一设备响应于检测来执行关于特征的动作。
11.在一些实施例中,该方法还包括执行动作而不将数据集传送给第二设备。
12.本文公开的各种实施例涉及一种方法。在一些实施例中,该方法包括由可穿戴头部显示器的处理器接收由可穿戴头部显示器捕获的输入数据。在一些实施例中,该方法包括由在处理器上实现的神经网络的第一一个或更多个层生成相对于输入数据在尺寸上减小的数据集,同时识别输入数据的一个或更多个特征以供神经网络的第二一个或更多个层处理。在一些实施例中,该方法包括由处理器检测数据集中的一个或更多个特征中的特征。在一些实施例中,该方法包括由处理器响应于检测到特征来执行关于该特征的动作,而不将数据集传送到实现神经网络的第二一个或更多个层的第二设备。
13.在一些实施例中,该方法还包括由处理器检测准确度阈值内的特征。
14.在一些实施例中,该方法还包括执行动作,该动作包括修改经由可穿戴头部显示
器正在显示的图像。
15.在一些实施例中,该方法还包括由在处理器上实现的第一一个或更多个层生成相对于第二输入数据在尺寸上减小的第二数据集,同时识别第二输入数据中的第二一个或更多个特征。
16.在一些实施例中,该方法还包括由处理器确定第二一个或更多个特征中的第二特征在准确度阈值内不可检测。
17.在一些实施例中,该方法还包括由处理器响应于该确定,将第二数据集传送给实现神经网络的第二一个或更多个层的第二设备。
18.在一些实施例中,该方法还包括由处理器从第二设备接收第二一个或更多个层处理第二数据集的结果的指示。
19.本文公开的各种实施例涉及一种系统。在一些实施例中,该系统包括第一设备,该第一设备被配置为接收输入数据,用于经由跨第一设备和第二设备实现的神经网络进行处理。在一些实施例中,在第一设备上实现的神经网络的第一一个或更多个层被配置为输出相对于输入数据在尺寸上减小的数据集,同时识别输入数据的一个或更多个特征以供神经网络的第二一个或更多个层处理。在一些实施例中,第一设备被配置为将数据集传送到第二设备,用于经由在第二设备上实现的神经网络的第二一个或更多个层进行处理。
20.在一些实施例中,第一一个或更多个层还被配置为通过压缩用于经由网络传输到第二设备的数据集来减少数据集。
21.在一些实施例中,第二一个或更多个层还被配置为检测输入数据内的一个或更多个特征中的特征。
22.在一些实施例中,第一设备还被配置为从第二设备接收特征被第二一个或更多个层检测到的指示。
23.在一些实施例中,第一设备还被配置为检测一个或更多个特征中的特征满足由第一设备采取动作的准确度阈值。
24.在一些实施例中,第一设备还被配置为响应于该检测,执行关于特征的动作,并且不向第二设备传送数据集。
25.下面详细讨论这些和其他方面和实现。前述信息和以下详细描述包括各种方面和实现的说明性示例,并且提供了用于理解所要求保护的方面和实现的性质和特征的综述或框架。附图提供了对各种方面和实现的说明和进一步理解,并且被结合在本说明书中并构成本说明书的一部分。本发明在所附权利要求中定义。
26.附图简述
27.附图不意在按比例绘制。各个附图中相同的附图标记和名称表示相同的元件。为了清楚起见,并非每个部件都可以在每个图中进行标记。
28.图1a是根据本发明的示例实现的用于执行人工智能(ai)相关处理的系统的实施例的框图。
29.图1b是根据本发明的示例实现的用于执行人工智能(ai)相关处理的设备的实施例的框图。
30.图1c是根据本发明的示例实现的用于执行人工智能(ai)相关处理的设备的实施例的框图。
31.图1d是根据本发明的示例实现的计算环境的框图。
32.图2a是根据一些实施例的显示系统的框图。
33.图2b是根据一些实施例的头戴式显示器(hmd)系统的示意图。
34.图3a是根据一些实施例的控制器的系统的框图,这些控制器使用神经网络的部分来识别输入数据的特征并执行动作。
35.图3b是根据一些实施例的使用跨多个设备分布的神经网络来识别输入数据的一个或更多个特征并执行动作的过程的流程图。
36.图3c是根据一些实施例的具有附加设备的图3a的系统的框图。
37.详细描述
38.综述
39.在转向详细示出某些实施例的附图之前,应当理解,本发明不限于描述中阐述的或附图中示出的细节或方法。还应当理解,本文使用的术语仅仅是为了描述的目的,而不应该被认为是限制性的。
40.为了阅读下文对本发明的各种实施例的描述的目的,对说明书各部分及其各自内容的以下描述可能是有帮助的:
[0041]-a部分描述了对实践或实现本系统、方法和设备的实施例有用的环境、系统、配置和/或其他方面;和
[0042]-b部分描述了用于在头戴式显示环境中实现本系统、方法和设备的实施例的设备、系统和方法的实施例;和
[0043]-c部分描述了用于跨多个设备实现本系统、方法和设备的实施例的设备、系统和方法的实施例。
[0044]
总体上参考附图,根据一些实施例,示出了用于实现神经网络或用于跨多个设备实现多个神经网络的系统和方法。这些系统和方法可以被实现为通过跨多个设备分割计算来优化神经网络计算以节省能量。系统可以包括第一设备和第二设备。在一些实施例中,第一设备包括第一神经网络或神经网络的一个或更多个层的第一集合。第一设备可以是图形处理单元(gpu)、中央处理单元(cpu)等、或任何其他本地处理电路、控制器、处理器等。在一些实施例中,第一设备是头戴式显示器(hmd)、增强现实(ar)或虚拟现实(vr)系统的本地计算机设备。第二设备可以包括第二神经网络或神经网络的一个或更多个层的第二集合。在一些实施例中,第二设备是相对于第一设备的外部设备、远程设备、无线连接的处理单元、人工智能加速器、桌面单元、网络设备等。第一设备被配置为从一个或更多个传感器、外部控制器、外部计算机系统、预处理引擎等接收输入数据(例如,图像数据),并将输入数据提供给第一神经网络。第一神经网络可以识别输入数据的一个或更多个特征,作为第一神经网络的输出。在一些实施例中,第一设备还确定与输入数据的一个或更多个特征中的每个特征相关联或者与第一神经网络的一个或更多个输出中的每个输出相关联的误差或准确度。在一些实施例中,第一设备使用误差或准确度以及一个或更多个对应的阈值来确定是否需要第二设备来进一步分析输入数据。第一设备可以使用误差或准确度或其他逻辑来确定第一设备是否可以在不使用第二设备和神经网络的第二部分的情况下做出足够准确的确定。
[0045]
第一设备可以基于输入数据生成缩减数据集(reduced data set),并将缩减数据
集提供给第二设备作为第二设备上的神经网络的输入。在一些实施例中,缩减数据集作为第一设备上的神经网络的输出被生成。在一些实施例中,除了神经网络的输出(这些输出识别输入数据的一个或更多个特征)之外,第一设备上的神经网络还生成缩减数据集。在一些实施例中,当与输入数据相比,缩减数据集在尺寸上(例如,在存储大小上)更小。例如,如果输入数据是具有1200
×
1200像素的图像数据,则缩减数据集也可以是具有500
×
500像素尺寸的图像数据。在一些实施例中,响应于误差或准确度大于或小于对应的阈值,生成缩减数据集。在一些实施例中,不管第一设备的神经网络的一个或更多个输出的误差和/或准确度如何,都生成缩减数据集,但是仅响应于准确度小于对应的阈值或者响应于误差大于对应的阈值,将缩减数据集提供给第二设备。
[0046]
在一些实施例中,第一设备被配置为基于输入数据的一个或更多个识别特征来执行动作。在一些实施例中,第一设备被配置为基于输入数据的一个或更多个特征来执行一个或更多个动作。在一些实施例中,第一设备被配置为执行动作,同时向第二设备的神经网络提供缩减数据集。在一些实施例中,第一设备被配置为执行动作,而不向第二设备提供缩减数据集和/或不生成缩减数据集。在一些实施例中,响应于或基于第二设备的神经网络的输出来执行动作。在一些实施例中,第二设备的神经网络的输出是附加的识别特征。在一些实施例中,如果第一设备的神经网络无法准确地识别出输入数据的特征,则将缩减数据集提供给第二设备,用于识别输入数据的一个或更多个特征。
[0047]
有利地,本文描述的系统和方法有助于用于hmd显示系统、ar系统、vr系统等的更有效的处理系统。本文描述的系统和方法通过仅在第一设备上实现神经网络的一部分或者通过在第一设备上实现计算量较小的神经网络来降低第一设备的处理要求。如果第一设备能够准确地分析输入数据,则第一设备可以使用神经网络的结果来执行动作,例如在显示器上向用户提供影像(imagery),从而减少第一和第二设备之间的流量/数据传输并减少能量消耗。如果第一设备无法准确地分析输入数据,则第一设备可以生成缩减数据集并将其提供给第二设备,在第二设备中可以进一步分析缩减数据集。有利的是,这降低了第一设备和第二设备之间的数据传输频率,减小了第一和第二设备之间传输的数据的尺寸,并且有助于。
[0048]
a.人工智能相关处理的环境
[0049]
在讨论b部分中的系统、设备和/或方法的实施例的具体内容之前,讨论对实践或实现这些系统、设备和/或方法的某些实施例有用的环境、系统、配置和/或其他方面可能是有帮助的。现在参考图1a,描绘了用于执行人工智能(ai)相关处理的系统的实施例。简而言之,该系统包括一个或更多个ai加速器108,该一个或更多个ai加速器108可以使用输入数据110来执行ai相关处理。尽管被称为ai加速器108,但它有时也被称为神经网络加速器(nna)、神经网络芯片或硬件、ai处理器、ai芯片等。ai加速器108可以根据输入数据110和/或参数128(例如,权重和/或偏置信息)执行ai相关处理,以输出或提供输出数据112。ai加速器108可以包括和/或实现一个或更多个神经网络114(例如,人工神经网络)、一个或更多个处理器和/或一个或更多个存储设备126。
[0050]
上面提到的元件或部件中的每一个都以硬件或硬件和软件的组合来实现。例如,这些元件或部件中的每一个可以包括在硬件上执行的任何应用、程序、库、脚本、任务、服务、过程或任何类型和形式的可执行指令,该硬件例如为可以包括数字和/或模拟元件(例
如,一个或更多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件)的电路。
[0051]
输入数据110可以包括用于配置、调谐、训练和/或激活ai加速器108的神经网络114和/或用于由处理器124处理的任何类型或形式的数据。神经网络114有时被称为人工神经网络(ann)。配置、调谐和/或训练神经网络可以指或包括机器学习的过程,其中诸如历史数据的训练数据集(例如,作为输入数据110)被提供给神经网络以进行处理。调谐或配置可以指或包括对神经网络114的训练或处理,以允许神经网络提高准确度。例如,调谐或配置神经网络114可以包括使用已被证明对于神经网络114所期望的问题或目标类型是成功的架构来设计、形成、构建、合成和/或建立神经网络。在一些情况下,一个或更多个神经网络114可以在相同或类似的基线模型处启动,但是在调谐、训练或学习过程期间,神经网络114的结果可以明显不同,从而每个神经网络114可以被调谐以处理特定类型的输入,并且与处于基线模型或者针对不同目标或目的调谐或训练的不同神经网络相比,以更高水平的准确度和可靠性生成特定类型的输出。调谐神经网络114可以包括为每个神经网络114设置不同的参数128,为每个神经网络114不同地微调参数128,或者分配不同的权重(例如,超参数或学习速率)、张量流(tensor flow)等。因此,通过基于调谐或训练过程以及神经网络的目标和/或系统的目标为神经网络114设置适当的参数128,这可以提高整个系统的性能。
[0052]
ai加速器108的神经网络114可以包括任何类型的神经网络,包括例如卷积神经网络(cnn)、深度卷积网络、前馈神经网络(例如,多层感知器(mlp))、深度前馈神经网络、径向基函数神经网络、kohonen自组织神经网络、循环神经网络(recurrent neural network)、模块化神经网络、长/短期记忆神经网络等。神经网络114可以被部署或使用以执行数据(例如,图像、音频、视频)处理、对象或特征识别、推荐功能、数据或图像分类、数据(例如,图像)分析等,诸如自然语言处理。
[0053]
作为示例,以及在一个或更多个实施例中,神经网络114可以被配置为或包括卷积神经网络。卷积神经网络可以包括一个或更多个卷积单元(或池化层)和核(kernel),它们各自可以服务于不同的目的。卷积神经网络可以包括、结合和/或使用卷积核(有时被简称为“核”)。卷积核可以处理输入数据,并且池化层可以使用例如非线性函数(例如max)来简化数据,从而减少不必要的特征。包括卷积神经网络的神经网络114可以有助于图像、音频或任何数据识别或其他处理。例如,(例如,来自传感器的)输入数据110可以被传递到卷积神经网络的卷积层,这些卷积层形成漏斗,压缩输入数据110中检测到的特征。卷积神经网络的第一层可以检测第一特征,第二层可以检测第二特征,以此类推。
[0054]
卷积神经网络可以是一种深度前馈人工神经网络,其被配置为分析视觉影像、音频信息和/或任何其他类型或形式的输入数据110。卷积神经网络可以包括被设计为使用最少预处理的多层感知器。基于其共享权重架构和平移不变性(translation invariance)特征,卷积神经网络可以包括或被称为移位不变或空间不变的人工神经网络。由于与其他数据分类/处理算法相比,卷积神经网络可以使用相对较少的预处理,因此卷积神经网络可以自动学习可能为其他数据分类/处理算法手工设计的滤波器,从而提高与配置、建立或设置神经网络114相关联的效率,从而提供相对于其他数据分类/处理技术的技术优势。
[0055]
神经网络114可以包括神经元或节点的输入层116和输出层122。神经网络114还可以具有一个或更多个隐藏层118、119,隐藏层可以包括神经元或节点的卷积层、池化层、全
连接层和/或归一化层。在神经网络114中,每个神经元都可以从前一层中的某些位置接收输入。在全连接层中,每个神经元都可以从前一层的每个元素接收输入。
[0056]
神经网络114中的每个神经元可以通过对来自前一层中的感受野(receptive field)的输入值应用某种函数来计算输出值。应用于输入值的函数通过权重向量和偏置(通常为实数)指定。(例如,在训练阶段)神经网络114中的学习可以通过对偏置和/或权重进行增量调整来进行。权重向量和偏置可以被称为滤波器,并且可以表示输入的某个特征(例如,特定形状)。卷积神经网络的一个显著特征是许多神经元可以共享同一个滤波器。这减少了存储器占用,因为可以跨共享该滤波器的所有感受野使用单个偏置和单个权重向量,而不是每个感受野都有自己的偏置和权重向量。
[0057]
例如,在卷积层中,系统可以对输入层116应用卷积运算,将结果传递到下一层。卷积模拟了单个神经元对输入刺激的反应。每个卷积神经元可以仅针对其感受野处理数据。与全连接的前馈神经网络相比,使用卷积运算可以减少神经网络114中使用的神经元的数量。因此,卷积运算可以减少自由参数的数量,允许网络用更少的参数来更加地深入。例如,不管输入数据(例如,图像数据)尺寸如何,尺寸为5
×
5的图块区域(tiling region)(每个具有相同的共享权重)可以仅使用25个可学习的参数。以这种方式,具有卷积神经网络的第一神经网络114可以通过使用反向传播来解决在训练具有许多层的传统多层神经网络时的梯度消失或梯度爆炸问题。
[0058]
神经网络114(例如,配置有卷积神经网络)可以包括一个或更多个池化层。一个或更多个池化层可以包括局部池化层或全局池化层。池化层可以将一层的神经元簇的输出合并到下一层中的单个神经元中。例如,最大池化可以使用前一层的神经元簇中每个神经元的最大值。另一个示例是平均池化,其可以使用前一层的神经元簇中每个神经元的平均值。
[0059]
神经网络114(例如,配置有卷积神经网络)可以包括全连接层。全连接层可以将一层中的每个神经元连接到另一层中的每个神经元。神经网络114可以被配置为在卷积层中具有共享的权重,这可以指同一滤波器被用于该层中的每个感受野,从而减少存储器占用并提高第一神经网络114的性能。
[0060]
隐藏层118、119可以包括被调谐或配置为基于输入数据(例如,来自例如虚拟现实系统的传感器数据)检测信息的滤波器。当系统逐步通过神经网络114(例如,卷积神经网络)中的每一层时,系统可以转变(translate)来自第一层的输入,并将转换后的输入输出到第二层,以此类推。基于正在被检测、处理和/或计算的对象或信息的类型以及输入数据110的类型,神经网络114可以包括一个或更多个隐藏层118、119。
[0061]
在一些实施例中,卷积层是神经网络114(例如,被配置为cnn)的核心构建块。该层的参数128可以包括一组可学习的滤波器(或核),其具有小的感受野,但是延伸通过输入体积的整个深度。在前向传递期间,跨输入体积的宽度和高度对每个滤波器进行卷积,计算滤波器条目和输入之间的点积,并产生该滤波器的二维激活图。结果,神经网络114可以学习滤波器,当滤波器在输入中的某个空间位置处检测到某种特定类型的特征时滤波器会激活。沿着深度维度堆叠所有滤波器的激活图,形成卷积层的整个输出体积。因此,输出体积中的每个条目也可以解释为观察输入中的小区域并与同一激活图中的神经元共享参数的神经元的输出。在卷积层中,神经元可以从前一层的受限子区域接收输入。通常,子区域是正方形的形状(例如,尺寸为5
×
5)。神经元的输入区域被称为它的感受野。因此,在全连接
层中,感受野是整个前一层。在卷积层中,感受区可以小于整个前一层。
[0062]
第一神经网络114可以被训练为检测、分类、分割和/或转变输入数据110(例如,基于输入数据110,通过检测或确定对象、事件、词语和/或其他特征的概率)。例如,神经网络114的第一输入层116可以接收输入数据110,处理输入数据110以将数据转换成第一中间输出,并将第一中间输出转发到第一隐藏层118。第一隐藏层118可以接收第一中间输出,处理第一中间输出以将第一中间输出转换成第二中间输出,并将第二中间输出转发到第二隐藏层119。例如,第二隐藏层119可以接收第二中间输出,处理第二中间输出以将第二中间输出转换成第三中间输出,并将第三中间输出转发到输出层122。输出层122可以接收第三中间输出,处理第三中间输出以将第三中间输出转换成输出数据112,并且转发输出数据112(例如,可能转发到后处理引擎,用于渲染给用户、用于存储等等)。作为示例,输出数据112可以包括对象检测数据、增强的/转变的/补充的(augmented)数据、建议、分类和/或分割的数据。
[0063]
再次参考图1a,ai加速器108可以包括一个或更多个存储设备126。存储设备126可以被设计或实现为存储、保存或维护与ai加速器108相关联的任何类型或形式的数据。例如,数据可以包括由ai加速器108接收的输入数据110和/或(例如,在被输出到下一个设备或处理阶段之前的)输出数据112。数据可以包括用于或来自神经网络114和/或处理器124的任何处理阶段的中间数据。数据可以包括输入到神经网络114的神经元和在该神经元处处理的一个或更多个操作数,这些操作数可以从存储设备126读取或访问。例如,数据可以包括用于神经网络114的一个或更多个神经元(或节点)和/或层的输入数据、权重信息和/或偏置信息、激活函数信息和/或参数128,这些数据可以存储在存储设备126中并可以从存储设备126读取或访问。数据可以包括来自神经网络114的神经元的输出数据,该输出数据可以被写入和存储在存储设备126处。例如,数据可以包括用于神经网络114的一个或更多个神经元(或节点)和/或层的激活数据、细化或更新的数据(例如,来自例如训练阶段的权重信息和/或偏置信息、激活函数信息和/或其他参数128),这些数据可以被传递到或写入存储设备126并存储在存储设备126中。
[0064]
在一些实施例中,ai加速器108可以包括一个或更多个处理器124。一个或更多个处理器124可以包括用于预处理用于任何一个或更多个神经网络114或ai加速器108的输入数据和/或后处理用于任何一个或更多个神经网络114或ai加速器108的输出数据的任何逻辑、电路和/或处理部件(例如,微处理器)。一个或更多个处理器124可以提供用于配置、控制和/或管理神经网络114或ai加速器108的一个或更多个操作的逻辑、电路、处理部件和/或功能。例如,处理器124可以接收与神经网络114相关联的数据或信号,以(例如,通过对实现神经网络114的操作的电路进行时钟门控控制)控制或降低功耗。作为另一个示例,处理器124可以划分和/或重新布置数据,以用于单独的处理(例如,在ai加速器108的各个部件处,例如并行处理)、顺序处理(例如,在ai加速器108的同一部件上、在不同的时间或阶段),或者用于存储在存储设备的不同存储器片中或者存储在不同的存储设备中。在一些实施例中,处理器124可以将神经网络114配置为针对特定的上下文进行操作、提供特定类型的处理和/或处理特定类型的输入数据,例如,通过识别、选择和/或加载特定的权重、激活函数和/或参数信息到神经网络114的神经元和/或层。
[0065]
在一些实施例中,ai加速器108被设计和/或实现为处置或处理深度学习和/或ai
工作负载。例如,ai加速器108可以为人工智能应用提供硬件加速,人工智能应用包括人工神经网络、机器视觉和机器学习。ai加速器108可以被配置用于处置机器人相关、物联网(iot)相关以及其他数据密集型或传感器驱动型的任务的操作。ai加速器108可以包括多核(multi-core)或多处理元件(pe)设计,并且可以被结合在各种类型和形式的设备(例如人工现实(例如,虚拟、增强或混合现实)系统、智能手机、平板电脑和计算机)中。ai加速器108的某些实施例可以包括以下项或使用以下项来实现:至少一个数字信号处理器(dsp)、协处理器、微处理器、计算机系统、处理器的异构计算配置、图形处理单元(gpu)、现场可编程门阵列(fpga)和/或专用集成电路(asic)。ai加速器108可以是基于晶体管、基于半导体和/或基于量子计算的设备。
[0066]
现在参考图1b,描绘了用于执行ai相关处理的设备的示例实施例。简而言之,该设备可以包括或对应于ai加速器108,例如,具有以上结合图1a描述的一个或更多个特征。ai加速器108可以包括一个或更多个存储设备126(例如,诸如静态随机存取存储器(sram)设备的存储器)、一个或更多个缓冲器、多个处理元件(pe)电路或处理元件(pe)电路的阵列、其他逻辑或电路(例如,加法器电路)和/或其他结构或构造(例如,互连、数据总线、时钟电路、电源网络)。上面提到的元件或部件中的每一个都以硬件或至少以硬件和软件的组合来实现。硬件可以例如包括电路元件(例如,一个或更多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件和/或导线或导电连接器)。
[0067]
在ai加速器108中实现的神经网络114(例如,人工神经网络)中,神经元可以采取各种形式,并且可以被称为处理元件(pe)或pe电路。神经元可以被实现为对应的pe电路,并且可以在神经元处发生的处理/激活可以在pe电路处执行。pe被连接成特定的网络模式或阵列,不同的模式服务于不同的功能目的。人工神经网络中的pe是电操作的(例如,在半导体实现的实施例中),并且可以是模拟的、数字的或混合的。为了与生物突触的效果相比肩,可以给pe之间的连接分配乘法权重,这些权重可以被校准或“训练”以产生适当的系统输出。
[0068]
可以根据以下等式(例如,表示神经元的mcculloch-pitts模型)来定义pe:
[0069]
ζ=∑iwixiꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(i)[0070]
y=σ(ζ)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0071]
其中ζ是输入的加权和(例如,输入向量和抽头权重向量(tap-weight vector)的内积),且σ(ζ)是加权和的函数。当权重和输入元素形成向量w和x时,ζ加权和变成简单的点积:
[0072]
ζ=w
·
x
ꢀꢀ
(3)
[0073]
这可以被称为激活函数(例如,在阈值比较的情况下)或传递函数。在一些实施例中,一个或更多个pe可以被称为点积引擎。神经网络114的输入(例如,输入数据110)x可以来自输入空间,并且输出(例如,输出数据112)是输出空间的一部分。对于一些网络网络,输出空间y可以简单到{0,1},或者输出空间y可以是复杂的多维(例如,多通道)空间(例如,对于卷积神经网络)。神经网络往往在输入空间中每个自由度有一个输入,并且在输出空间中每个自由度有一个输出。
[0074]
在一些实施例中,pe可以被布置和/或实现为脉动阵列。脉动阵列可以是耦合的数据处理单元(dpu)(例如pe,被称为单元或节点)的网络(例如同构网络)。每个节点或pe可以
根据从其上游邻居接收的数据独立地计算部分结果,可以将结果存储在其内部,并且可以例如将结果传递到下游。脉动阵列可以是硬连线的,或者可以是为特定应用配置的软件。节点或pe可以是固定的和相同的,并且脉动阵列的互连可以是可编程的。脉动阵列可以依赖于同步数据传递。
[0075]
再次参考图1b,pe 120的输入x可以是从存储设备126(例如,sram)读取或访问的输入流132的一部分。输入流132可以被引导到一行(水平的排(bank)或组)pe,并且可以跨一个或更多个pe进行共享,或者被划分成多个数据部分(重叠或非重叠的数据部分)作为各个pe的输入。(例如,从存储设备126读取的)权重流134中的权重134(或权重信息)可以被引导到或提供给一列(垂直的排或组)pe。列中的每个pe可以共享相同的权重134或接收相对应的权重134。每个目标pe的输入和/或权重可以(例如,从存储设备126)被直接路由到目标pe(例如,不经过其他pe),或者可以通过一个或更多个pe(例如,沿着pe的行或列)被路由到目标pe。每个pe的输出可以被直接路由出pe阵列(例如,不经过其他pe),或者可以通过一个或更多个pe(例如,沿着pe的列)被路由离开pe阵列。每列pe的输出可以在相应列的加法器电路处求和或相加,并被提供给用于相应的pe列的缓冲器130。缓冲器130可以向存储设备126提供、传递、路由、写入接收到的输出和/或将接收到的输出存储到存储设备126。在一些实施例中,存储到存储设备126的输出(例如,来自神经网络的一层的激活数据)可以从存储设备126中检索或读取,并且稍后可以用作pe 120的阵列的输入以用于(神经网络的后续层的)处理。在某些实施例中,可以从存储设备126中检索或读取存储到存储设备126的输出,作为ai加速器108的输出数据112。
[0076]
现在参考图1c,描绘了用于执行ai相关处理的设备的一个示例实施例。简而言之,该设备可以包括或对应于ai加速器108,例如,具有以上结合图1a和图1b描述的一个或更多个特征。ai加速器108可以包括一个或更多个pe 120、其他逻辑或电路(例如加法器电路)和/或其他结构或构造(例如互连、数据总线、时钟电路、电源网络)。上面提到的元件或部件中的每一个都以硬件或至少以硬件和软件的组合来实现。硬件可以例如包括电路元件(例如,一个或更多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件和/或导线或导电连接器)。
[0077]
在一些实施例中,pe 120可以包括一个或更多个乘累加器(multiply-accumulate,mac)单元或电路140。一个或更多个pe有时可以(单独地或集体地)被称为mac引擎。mac单元被配置为执行乘累加运算。mac单元可以包括乘法器电路、加法器电路和/或累加器电路。乘累加运算计算两个数的乘积,并将该乘积加到累加器上。结合累加器操作数a以及输入b和c,mac运算可以表示如下:
[0078]a←
a+(b
×
c)
ꢀꢀ
(4)
[0079]
在一些实施例中,mac单元140可以包括以组合逻辑实现的乘法器、接下来的加法器(例如,包括组合逻辑(combinational logic))以及存储结果的累加器寄存器(例如,包括时序逻辑(sequential logic)和/或组合逻辑)。累加器寄存器的输出可以反馈到加法器的一个输入端,使得在每个时钟周期,乘法器的输出可以加到寄存器中。
[0080]
如上面所讨论的,mac单元140可以执行乘法和加法两项功能。mac单元140可以分两个阶段运算。mac单元140可以首先在第一阶段计算给定数(输入)的乘积,并将结果转发给第二阶段运算(例如,相加和/或累加)。n位的mac单元140可以包括n位的乘法器、2n位的
加法器和2n位的累加器。mac单元140的阵列或多个mac单元140(例如,在pe中)可以被布置成脉动阵列,以用于并行积分、卷积、相关、矩阵乘法、数据排序和/或数据分析任务。
[0081]
本文中描述的各种系统和/或设备可以在计算系统中实现。图1d示出了表示性计算系统150的框图。在一些实施例中,图1a的系统可以形成计算系统150的处理单元156的至少一部分。例如,计算系统150可以被实现为设备(例如消费设备(consumer device)),诸如智能手机、其他移动电话、平板计算机、可穿戴计算设备(例如,智能手表、眼镜、头戴式显示器)、台式计算机、膝上型计算机,或者计算系统150可以用分布式计算设备来实现。计算系统150可以被实现为提供vr、ar、mr体验。在一些实施例中,计算系统150可以包括传统的、专门的或定制的计算机部件,例如处理器156、存储设备158、网络接口151、用户输入设备152和用户输出设备154。
[0082]
网络接口151可以提供到局域网/广域网(例如,互联网)的连接,(本地或远程)服务器或后端系统的网络接口也连接到该局域网/广域网。网络接口151可以包括有线接口(例如以太网)和/或无线接口,该无线接口实现各种rf数据通信标准,例如wi-fi、蓝牙或蜂窝数据网络标准(例如3g、4g、5g、60ghz、lte等)。
[0083]
用户输入设备152可以包括用户可以通过其向计算系统150提供信号的任何设备(或多个设备);计算系统150可以将信号解释为指示特定用户请求或信息。用户输入设备152可以包括键盘、触摸板、触摸屏、鼠标或其他定点设备、滚轮、点击轮(click wheel)、拨号盘、按钮、开关、小键盘、麦克风、传感器(例如,运动传感器、眼睛跟踪传感器等)等中的任何一个或全部。
[0084]
用户输出设备154可以包括计算系统150可以通过其向用户提供信息的任何设备。例如,用户输出设备154可以包括显示器,以显示由计算系统150生成或传送到计算系统150的图像。显示器可以结合各种图像生成技术(例如液晶显示器(lcd)、包括有机发光二极管(oled)的发光二极管(led)、投影系统、阴极射线管(crt)等)以及支持电子器件(例如数模或模数转换器、信号处理器等)。可以使用既用作输入设备又用作输出设备的诸如触摸屏的设备。除了显示器之外或者代替显示器,可以提供输出设备154。示例包括指示灯、扬声器、触觉“显示”设备、打印机等。
[0085]
一些实现包括电子部件,例如微处理器、储存设备和存储器,其将计算机程序指令存储在计算机可读存储介质中。本说明书中描述的许多特征可以被实现为被指定为编码在计算机可读存储介质上的一组程序指令的过程。当这些程序指令由一个或更多个处理器执行时,它们使处理器执行程序指令中指示的各种操作。程序指令或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子部件或使用解释器的微处理器执行的高级代码的文件。通过适当的编程,处理器156可以为计算系统150提供各种功能,包括本文描述的由服务器或客户端执行的任何功能,或者与消息管理服务相关联的其他功能。
[0086]
应当理解,计算系统150是说明性的,并且变化和修改是可能的。结合本发明使用的计算机系统可以具有本文没有具体描述的其他能力。此外,虽然计算系统150是参考特定的块来描述的,但是应当理解,这些块是为了描述方便而定义的,并不旨在暗示组成部分的特定物理布置。例如,不同的块可以位于同一设施中、同一服务器机架中或同一主板上。此外,这些块不需要对应于物理上不同的部件。块可以被配置为例如通过对处理器编程或提供适当的控制电路来执行各种操作,并且根据如何获得初始配置,各个块可能是或可能不
是可重新配置的。本发明的实现可以在各种装置(包括使用电路和软件的任意组合实现的电子设备)中实现。《ai硬件的样板的结尾》
[0087]
b.用于头戴式显示器的系统、方法和设备
[0088]
ar系统可以使用hmd(也可以称为头戴式显示器(head-worn display,hwd))在适当的深度向用户呈现图像。hmd可以确定场景中的对象或特征的深度信息,并且在所确定的深度处(例如,至少部分地响应于深度信息)渲染那些对象和特征。例如,hmd可以用于呈现可以被立体地观看的图像,例如通过顺序地或同时地呈现左眼图像和右眼图像,使得用户能够感知3d环境。hmd或ar系统可以包括一个或更多个相机,这些相机从多个视角捕获图像(例如左眼图像和右眼图像)。
[0089]
hmd或ar系统可以使用眼睛跟踪操作来监视或跟踪hmd的用户的眼睛的位置和取向,该眼睛跟踪操作可以至少部分地由处理器、眼睛跟踪传感器或其组合来操作。例如,眼睛跟踪操作可以被用于确定用户凝视的方向。眼睛跟踪操作可以向用于呈现图像给用户的hmd或ar系统的部件提供方向信息,例如以确定图像相对于用户的眼睛将被显示在哪里。
[0090]
在一些实施例中,系统可以基于hmd或ar系统周围的场景或环境中对象的位置,例如通过使用来自相机或深度传感器的传感器数据,来确定场景理解。系统可以基于传感器数据确定用户正在与一个或更多个对象交互,例如通过确定用户正在握持或移动对象、凝视对象或读取与对象相关联的文本。系统可以基于对象是在用户的凝视方向的阈值范围内唯一的对象来确定用户正在与对象交互。系统可以基于音频提示,例如通过检测到对象正在输出声音,来确定用户正在与对象交互。系统可以使用凝视方向信息作为辐辏(vergence)提示来校准变焦系统,例如通过使用凝视方向或对象的位置来估计辐辏平面,以使得变焦系统可以调整焦点以匹配辐辏平面。系统可以操作机器学习模型来进行眼睛跟踪。系统可以使用眼睛跟踪校准来识别瞳孔位置,以校正hmd的渲染和投影仪输出,例如实现hmd的一个或更多个波导的动态均匀性校正。系统可以使用眼睛跟踪的校准来执行中央凹渲染(foveated rendering)。
[0091]
现在参考图2a,系统280可以包括多个传感器238a

n、处理电路250以及一个或更多个显示器264。系统280可以使用参考图2b描述的hmd系统200来实现。系统280可以使用参考图4描述的计算环境来实现。系统280可以结合vr系统的特征以及用于实现vr系统的特征。处理电路250的至少一部分可以使用gpu来实现。处理电路250的功能可以使用多个处理单元以分布式方式被执行。
[0092]
处理电路250可以包括一个或更多个电路、处理器和/或硬件部件。处理电路250可以实现任何逻辑、功能或指令来执行本文描述的任何操作。处理电路250可以包括可由任何电路、处理器或硬件部件执行的任何类型和形式的可执行指令。可执行指令可以是任何类型的,包括应用、程序、服务、任务、脚本、库进程和/或固件。对象位置检测器222、眼睛跟踪器244或图像渲染器260中的任何一个都可以是电路和可执行指令的任何组合或布置,以执行它们各自的功能和操作。处理电路250的至少一些部分可以用于实现由传感器238执行的图像处理。
[0093]
传感器238a

n可以是图像捕获设备或相机,包括摄像机。传感器238a

n可以是生成相对低质量(例如,相对低的清晰度、分辨率或动态范围)的图像的相机,这可以有助于减少系统280的swap。例如,传感器238a

n可以生成具有数百像素
×
数百像素的量级的分
辨率的图像。同时,如本文所述的由系统280执行的过程可用于生成显示图像以呈现给用户,该显示图像具有期望的质量特征,包括深度特征。
[0094]
传感器238a

n(本文中通常称为传感器238)可以包括任何类型的一个或更多个相机。相机可以是可见光相机(例如,彩色的或黑白的)、红外相机或其组合。传感器238a

n可以各自包括一个或更多个透镜226a

j(本文中通常称为透镜226)。在一些实施例中,传感器238可以包括用于每个透镜226的相机。在一些实施例中,传感器238包括具有多个透镜226a...j的单个相机。在一些实施例中,传感器238可以包括多个相机,每个相机具有多个透镜226。传感器238的一个或更多个相机可以被选择或被设计成预定分辨率和/或具有预定视场。在一些实施例中,一个或更多个相机被选择和/或被设计成具有用于检测和跟踪(例如在用于增强现实的hmd的视场中的)对象的分辨率和视场。一个或更多个相机可以用于多种目的,例如跟踪由图像捕获设备捕获的场景或环境中的对象以及执行本文描述的校准技术。
[0095]
传感器238的一个或更多个相机和透镜226可以被安装、被集成、被结合或被布置在hmd上,以对应于hmd的用户或穿戴者的左眼视图和该用户或穿戴者的右眼视图。例如,hmd可以包括第一相机和第二相机,第一相机具有第一透镜,其被面向前方安装在对应于或靠近穿戴者左眼的hmd的左侧,第二相机具有第二透镜,其被面向前方安装在对应于或靠近穿戴者右眼的hmd的右侧。左相机和右相机可以形成一对面向前方的相机,用于提供立体图像捕获。在一些实施例中,hmd可以具有一个或更多个额外的相机,例如在第一和第二相机之间的第三相机,其朝向hmd的顶部供给并且在第一、第二和第三相机之间形成三角形。该第三相机可以用于在执行本解决方案的深度缓冲器生成技术方面的三角测量技术,以及用于对象跟踪。
[0096]
系统280可以包括第一传感器238a(例如图像捕获设备)和第二传感器238b,第一传感器238a包括第一透镜226a,第一传感器238a被布置成捕获第一视图的第一图像234a,第二传感器238b包括第二透镜226b,第二传感器238b被布置成捕获第二视图的第二图像234b。第一视图和第二视图可以对应于不同的视角,使得能够从第一图像234a和第二图像234b提取深度信息。例如,第一视图可以对应于左眼视图,并且第二视图可以对应于右眼视图。系统280可以包括第三传感器238c,第三传感器238c包括第三透镜226c,第三传感器238c被布置成捕获第三视图的第三图像234c。如参考图2b所述,第三视图可以对应于与第一透镜226a和第二透镜226b之间的轴间隔开的俯视图,这可以使系统280能够更有效地处理利用第一传感器238a和第二传感器238b可能难以解决的深度信息,例如基本上平行于第一透镜226a和第二透镜226b之间的轴的边缘(例如,桌子的边缘)。
[0097]
要由传感器238a...n捕获的图像的光可以通过一个或更多个透镜226a...j被接收。传感器238a...n可以包括传感器电路,传感器电路包括但不限于电荷耦合器件(ccd)或互补金属氧化物半导体(cmos)电路,该传感器电路可以检测经由一个或更多个透镜226a...j接收的光,并基于接收到的光生成图像234a...k。例如,传感器238a...n可以使用传感器电路来生成对应于第一视图的第一图像234a和对应于第二视图的第二图像234b。一个或更多个传感器238a

n可以向处理电路250提供图像234a

k。一个或更多个传感器238a...n可以提供具有相应的时间戳的图像234a...k,这可以在对图像234a...k执行图像处理时便于图像234a...k的同步,以例如识别表示第一视图和第二视图并且具有相同时间
戳的特定的第一图像234a和第二图像234b,该特定的第一图像234a和第二图像234b应该彼此进行比较以计算凝视信息。
[0098]
传感器238可包括眼睛跟踪传感器238或头部跟踪传感器238,其可提供诸如hmd的用户(例如,穿戴者)的眼睛或头部的位置、取向或凝视方向之类的信息。在一些实施例中,传感器238是被配置为提供用于头部跟踪操作的图像的内向外跟踪相机(inside out tracking camera)。传感器238可以是眼睛跟踪传感器238,其提供眼睛跟踪数据248,例如对应于用户的一只或两只眼睛的位置或取向中的至少一个的数据。传感器238可以被取向为朝向用户的眼睛的方向(例如,与捕获hmd外部的环境的图像的传感器238相比)。例如,传感器238可以包括至少一个第四传感器238d(例如,如图2b所示),其可以被取向为朝向用户的眼睛,以检测关于用户眼睛的传感器数据。
[0099]
在一些实施例中,传感器238输出用户眼睛的图像,该图像可以被处理以检测眼睛的眼睛位置或凝视方向。在一些实施例中,传感器238处理关于用户眼睛的图像数据,并基于图像数据输出眼睛位置或凝视方向。在一些实施例中,传感器238光学地测量眼睛运动,例如通过朝向眼睛发射光(例如,红外光)并检测所发射的光的反射。
[0100]
如本文进一步讨论的,眼睛跟踪操作可以包括由系统280或其部件执行的任何功能、操作、例程、逻辑或指令,以跟踪关于用户眼睛的数据,例如在使用hmd期间当用户眼睛移动时用户眼睛的位置或取向(例如,凝视方向)。例如,眼睛跟踪操作可以使用一个或更多个传感器238或眼睛跟踪器244中的至少一个来执行。例如,眼睛跟踪操作可以处理来自传感器238的眼睛跟踪数据248,以确定用户的一只或两只眼睛的眼睛位置236。在一些实施例中,眼睛跟踪操作可以使用眼睛跟踪器244来执行,该眼睛跟踪器244使用处理电路250的一部分来实现,该处理电路250与一个或更多个传感器238耦合、安装到一个或更多个传感器238、与一个或更多个传感器238集成、使用与一个或更多个传感器238相同的电路板来实现、或以其他方式由一个或更多个传感器238提供(并且可以使用与对象位置检测器222或图像渲染器260中的至少一个不同的处理硬件来实现),该一个或更多个传感器238检测关于用户眼睛的传感器数据。在一些实施例中,眼睛跟踪操作可以使用眼睛跟踪器244来执行,眼睛跟踪器244通过有线或无线连接从一个或更多个传感器238接收传感器数据,传感器238被配置为检测关于用户眼睛的传感器数据(例如,用户眼睛的图像);例如,眼睛跟踪器244可以使用与对象位置检测器222或图像渲染器260中的至少一个相同的处理硬件来实现。传感器238的传感器硬件和/或处理电路250的处理硬件的各种这样的组合可以用于实现眼睛跟踪操作。
[0101]
眼睛跟踪器244可以以各种方式生成眼睛位置236。例如,眼睛跟踪器244可以处理眼睛跟踪数据248,以识别表示用户的一只或更多只眼睛的位置或取向中的至少一个的一个或更多个像素。眼睛跟踪器244可以使用眼睛跟踪数据248,基于与由用户的一只或更多只眼睛反射的光(例如,来自传感器238的光,诸如来自传感器238的红外光或近红外光,诸如850nm光眼睛跟踪)相对应的像素来识别眼睛位置236。眼睛跟踪器244可以使用来自hmd或ar系统中的各种照明源或反射的光,例如来自波导、组合器或透镜相机的光。眼睛跟踪器244可以通过确定用户的一只或更多只眼睛的瞳孔中心与对应的反射(例如,角膜反射)之间的向量来确定眼睛位置236或凝视方向。眼睛位置236可以包括位置数据,例如用户的一只或更多只眼睛中的每只眼睛的位置或取向中的至少一个。位置数据可以在三维空间中,
例如笛卡尔(cartesian)坐标系、球面坐标系或其他坐标系中的三维坐标。眼睛位置236可以包括位置数据,该位置数据包括用户的一只或更多只眼睛的凝视方向。
[0102]
在一些实施例中,眼睛跟踪器244包括机器学习模型。机器学习模型可用于基于眼睛跟踪数据248生成眼睛位置236。例如,眼睛跟踪数据248可以用作机器学习模型的输入,机器学习模型可以输出眼睛位置236(或者眼睛位置236的凝视方向)。可以使用训练数据来训练机器学习模型,该训练数据包括历史眼睛跟踪数据248和对应的历史或标记的眼睛位置236(例如被确定为对应于眼睛跟踪数据248的眼睛位置236)。可以使用眼睛跟踪数据248连续地更新机器学习模型,以实现眼睛跟踪操作的连续校准。可以通过监控由机器学习模型生成的候选输出与历史眼睛位置236之间的差异、并修改机器学习模型以减小该差异,来训练机器学习模型。例如,可以使用该差异来评估目标函数或成本函数,并且可以使用目标函数或成本函数来修改机器学习模型。在一些实施例中,机器学习模型包括神经网络。神经网络可以包括多个层,每个层包括一个或更多个节点(例如,神经元、感知器),例如第一层(例如,输入层)、第二层(例如,输出层)和一个或更多个隐藏层。神经网络可以包括诸如与可以在层的节点之间执行的计算相关联的权重和偏置的特征,处理电路250可以修改这些特征以使用训练数据训练神经网络。
[0103]
传感器238可以捕获传感器238周围环境的图像234。例如,传感器238可以捕获在hmd的用户的视场中或视场周围的环境的图像234。图像234可以是环境的表示,例如表示从环境中捕获的光的参数(例如,颜色、亮度、强度)的像素的彩色或灰度阵列或矩阵。环境可以是室内或室外环境,包括天然结构和人造结构两者、地形或其他对象(包括天空、云、道路、建筑物、街道、行人或骑自行车的人)。环境可以包括一个或更多个对象(例如,现实世界对象),这些对象可以由传感器捕获的图像234表示。
[0104]
处理电路250可以包括对象位置检测器222。对象位置检测器222可以从传感器238接收图像234。对象位置检测器222可以处理图像234或其部分,以检测由图像234表示的一个或更多个对象。例如,对象位置检测器222可以通过处理图像234的元素(例如像素或像素组(group of pixels)),例如通过处理指示颜色、形状、边缘、像素或像素组之间的对比度以及像素之间的空间关系的像素或像素组,来检测或识别由图像234表示的对象。对象位置检测器222可以通过执行空间滤波器、分割或被训练为检测对象的机器学习模型来检测对象。对象位置检测器222可以从图像234中识别候选对象(例如表示边缘的像素组),将候选对象与一个或更多个模板对象(例如,对象数据库中的模板对象或其特征)进行比较,并且基于匹配模板对象的候选对象来识别图像234的对象。对象位置检测器222可以应用各种对象识别算法或模型来识别对象。对象可以是现实世界对象或模拟的对象。
[0105]
在一些实施例中,对象位置检测器222不具体识别图像234中的对象的类型、类别或其他标识符。对象位置检测器222可以从传感器238接收对象已经被传感器238检测到的指示。例如,对象位置检测器222可以接收特定图像234表示对象的指示(在这种情况下,对象位置检测器222可以处理图像234以识别对应于对象的一个或更多个像素)。在一些实施例中,指示可以包括对应于对象的一个或更多个像素。
[0106]
在一些实施例中,对象位置检测器222使用对象数据库来检测对象,该对象数据库可以包括各种对象、建筑物、结构、道路或其他室内和室外特征的位置数据。例如,对象位置检测器222可以与将对象或对象的特征映射到位置数据的对象数据库通信。对象数据库还
可以维护关于对象的语义或文本信息,例如关于与对象有关的类型、类别、形状、颜色、尺寸或其他特征的信息。对象数据库可以基于使用图像数据的环境重建(其可以使用由传感器238检测到的图像234来更新)。对象数据库可以由远离系统280的服务器维护、处理(例如,以生成语义或文本信息或描述符)和更新,系统280可以与该服务器通信以访问对象数据库。对象位置检测器222可以(例如,从参考图2b描述的位置传感器220)接收关于hmd或ar系统的位置的数据,并使用该数据从对象数据库中检索一个或更多个候选对象。对象位置检测器222可以将传感器数据与一个或更多个候选对象以及由对象数据库维护的关于一个或更多个候选对象的信息进行比较,以识别对象(例如,通过将传感器数据与从对象数据库接收的信息进行匹配)。
[0107]
对象位置检测器222可以使用从传感器238接收的信息(例如,图像234表示对象的指示、或图像234)来确定对象的位置。例如,对象位置检测器222可以识别对应于对象的一个或更多个像素。在一些实施例中,对象位置检测器222将对象的位置确定为图像234的图像空间中的位置,例如通过将对应于对象的一个或更多个像素分配为对象的位置。在一些实施例中,对象位置检测器222将对象的位置确定为三维空间(例如,现实世界空间、ar或vr空间、hmd或ar系统周围环境中的空间)中的位置,例如通过使用深度信息来确定对象的位置。
[0108]
对象位置检测器222可以使用对象的位置来确定凝视方向,例如朝向对象的位置的凝视方向。例如,对象位置检测器222可以识别用户眼睛的预期位置,并确定从用户眼睛到对象的位置的向量(反之亦然)。在一些实施例中,预期位置包括左眼位置和右眼位置,并且对象位置检测器222可以使用左眼位置和右眼位置来确定凝视方向,例如通过平均左眼位置和右眼位置、或者平均从左眼位置到对象的位置以及从右眼位置到对象的位置的各个向量。
[0109]
处理电路250可以检测用户正在凝视对象。例如,处理电路250可以使用关于用户的眼睛的传感器数据或场景理解(例如上下文信息)来检测用户正在凝视对象(例如,与对象位置检测器222没有确定位置的其他对象相比)。处理电路250可以使用传感器数据的任何组合来检测用户正在凝视对象,例如通过为每个对象分配关于用户是否正在凝视该对象的置信度得分,并且根据传感器数据的贡献将置信度得分确定为加权平均值。处理电路250可以将置信度得分与阈值置信度进行比较,并且响应于置信度得分满足或超过阈值置信度而检测到用户正在凝视对象。在一些实施例中,处理电路250基于对象是场景中(例如,在hmd的视场中)最多阈值数量个对象中的一个,为对象分配相对较高的置信度得分。例如,如果对象是场景中唯一的对象,则用户正在凝视该对象的可能性更大。如果检测到对象是面部或包括面部,例如另一个人在说话,则用户正在凝视该对象的可能性更大。
[0110]
处理电路250可以包括图像渲染器260。图像渲染器260可以是3d图像渲染器。图像渲染器260可以使用图像相关输入数据来处理、生成和渲染显示或呈现图像,以例如经由hmd在一个或更多个显示设备上显示或呈现。图像渲染器260可以生成或创建场景或视图的2d图像,用于在显示器264上显示并以3d方式表示场景或视图。要渲染的显示或呈现数据可以包括场景或视图中的3d对象的几何模型。图像渲染器260可以确定、计算或运算要渲染的显示或图像数据的像素值,以提供期望的或预定的3d图像(一个或更多个),例如由传感器238捕获的图像234的3d显示数据。图像渲染器260可以接收图像234并接收眼睛位置236,并
使用图像234和眼睛位置236生成显示图像,例如基于眼睛位置236(或对应于眼睛位置236的凝视方向)来确定将用于由显示器264呈现的增强现实信息定位在何处。
[0111]
图像渲染器260可以基于时间和/或空间参数将显示数据的帧渲染到一个或更多个显示器264。图像渲染器260可以按时间(例如对应于传感器238捕获图像的时间)顺序地渲染图像数据的帧。图像渲染器260可以基于传感器238的位置和/或取向(例如hmd的位置和取向)的变化,来渲染显示数据的帧。图像渲染器260可以基于左眼视图和右眼视图渲染显示数据的帧,例如在显示左眼视图之后显示右眼视图,反之亦然。
[0112]
图像渲染器260可以使用关于捕获图像234a

k的传感器238a

n的移动的运动数据来生成显示图像。例如,传感器238a...n可能由于穿戴包括传感器238a...n的hmd(例如,如参考图2b的hmd系统200所描述的)的用户的头部的移动而在位置或取向中的至少一个上改变。处理电路250可以从位置传感器(例如,参考图2b描述的位置传感器220)接收运动数据。图像渲染器260可以使用运动数据来计算在图像234a...k被捕获的第一时间点和显示图像将被显示的第二时间点之间位置或取向中的至少一个的变化,并且使用计算的变化来生成显示图像。图像渲染器260可以使用运动数据来相对于图像234a...k内插(interpolate)和/或外推(extrapolate)显示图像。
[0113]
虽然图像渲染器260被示出为处理电路250的一部分,但是图像渲染器可以被形成为单独设备或部件(例如,例如在hmd内的显示设备)的其他处理电路的一部分。
[0114]
系统280可以包括一个或更多个显示器264。一个或更多个显示器264可以是任何类型和形式的电子视觉显示器。显示器可以具有或被选择成具有预定的分辨率、刷新率和尺寸。一个或更多个显示器可以具有任何类型的技术,例如基于lcd、led、eled或oled的显示器。一个或更多个显示器的形状因子可以配合在作为眼镜或护目镜的hmd内,其中显示器是在眼镜或护目镜的框架内的倾斜件(leans)。显示器264可以具有与处理电路250或图像渲染器260或传感器238的刷新率或帧速率相同或不同的刷新率。显示器264可以包括一个或更多个波导(例如,参考图2b描述的波导228),使得眼睛跟踪操作的校准可以被用于使用通过眼睛跟踪指示的瞳孔位置更准确地控制波导的操作。
[0115]
现在参考图2b,在一些实现中,hmd系统200可以用于实现系统280。hmd系统200可以包括hmd主体202、左传感器238a(例如,左图像捕获设备)、右传感器238b(例如,右图像捕获设备)和显示器264。hmd主体202可以具有各种形状因子,例如眼镜或头戴装置(headset)。传感器238a、238b可以安装到hmd主体202或集成在hmd主体202中。左传感器238a可以捕获对应于第一视图(例如,左眼视图)的第一图像,并且右传感器238b可以捕获对应于第二视图(例如,右眼视图)的图像。
[0116]
hmd系统200可以包括顶部传感器238c(例如,顶部图像捕获设备)。顶部传感器238c可以捕获对应于不同于第一视图或第二视图的第三视图的图像。例如,顶部传感器238c可以位于左传感器238a和右传感器238b之间,并且在左传感器238a和右传感器238b之间的基线上方。这可以使顶部传感器238c能够捕获具有深度信息的图像,该深度信息可能不容易从由左传感器238a和右传感器238b捕获的图像中提取获得。例如,在边缘(例如,桌子的边缘)平行于左传感器238a和右传感器238b之间的基线的情况下,可能难以从由左传感器238a和右传感器238b捕获的图像中有效地提取深度信息。与左传感器238a和右传感器238b相比,与基线间隔开的顶部传感器238c可以捕获具有不同视角的第三图像,并因此使
得能够从第三图像中提取不同的深度信息。
[0117]
hmd系统200可以包括处理电路250,处理电路250可以执行参考图2a描述的至少一些功能,包括从传感器238a、238b和238c以及眼睛跟踪传感器238接收传感器数据,以及处理接收的图像以校准眼睛跟踪操作。
[0118]
hmd系统200可以包括通信电路204。通信电路204可用于向客户端设备208或服务器212中的至少一个发送电子通信信号和从其接收电子通信信号。通信电路204可以包括有线或无线接口(例如,插孔(jack)、天线、发射器、接收器、收发器、有线终端),用于与各种系统、设备或网络进行数据通信。例如,通信电路204可以包括以太网卡和端口,用于经由基于以太网的通信网络发送和接收数据。通信电路204可以经由局域网(例如,建筑物lan)、广域网(例如,互联网、蜂窝网络)进行通信,和/或进行直接通信(例如,nfc、蓝牙)。通信电路204可以进行有线和/或无线通信。例如,通信电路204可以包括一个或更多个无线收发器(例如,wi-fi收发器、蓝牙收发器、nfc收发器、蜂窝收发器)。例如,通信电路204可以与客户端设备208或服务器212中的至少一个建立有线或无线连接。通信电路204可以与客户端设备208建立usb连接。客户端设备208可以包括处理电路216a,以便于客户端设备208和通信电路204之间的通信。类似地,服务器212可以包括处理电路216b,以便于服务器212和通信电路204之间的通信。在一些实施例中,处理电路216与通信电路204和/或处理电路250相同或类似。处理电路216可以被配置为执行在下面参考图3a-图3c更详细描述的设备302的任何功能、过程、技术、数据处理等。
[0119]
hmd系统200可以使用不同的架构进行部署。在一些实施例中,hmd(例如,hmd主体202和附接到hmd主体202的部件)包括处理电路250,并且是独立的(self-contained)便携式单元。在一些实施例中,hmd具有处理电路250的部分,这些部分与具有处理电路或其部分的任何类型的便携式或移动计算设备或伴随设备(例如以分级设备、移动电话或可穿戴计算设备的形式)协作地或结合地工作。在一些实施例中,hmd具有处理电路250的与桌面计算设备的处理电路或其部分协作地或结合地工作的部分。在一些实施例中,hmd具有处理电路250的与服务器计算设备的处理电路或其部分协作地或结合地工作的部分,服务器计算设备可以远程部署在数据中心或云计算环境中。在任何上述实施例中,hmd或结合hmd工作的任何计算设备可以在执行本文描述的任何功能和操作时与一个或更多个服务器通信。
[0120]
客户端设备208可以是以任何形状因子的任何类型和形式的通用或专用计算设备,例如,移动设备或便携式设备(电话、平板电脑、膝上型电脑等)、或者桌面或个人计算(pc)设备。在一些实施例中,客户端设备可以是专用设备,例如分级设备的形式,其可以具有处理电路或其部分。专用设备可以被设计成由用户在穿戴hmd时携带,例如通过经由任何类型和形式的辅助附件将客户端设备208附接到衣服或身体。客户端设备208可以用于执行结合图1和图3描述的图像和渲染处理流水线的任何部分。hmd可以执行图像和渲染处理流水线的一些或其他部分,例如图像捕获和渲染到显示器264。hmd可以与客户端设备208一起发送和接收数据,以利用客户端设备208的计算能力和资源,这些计算能力和资源可以具有比hmd的计算能力和资源更高的规格。
[0121]
服务器212可以是向一个或更多个客户端设备208或充当客户端的其他设备提供应用、功能或服务的任何类型形式的计算设备。在一些实施例中,服务器212可以是客户端设备208。服务器212可以部署在可经由一个或更多个网络访问的数据中心或云计算环境
中。hmd和/或客户端设备208可以使用和利用服务器212的计算能力和资源。hmd和/或客户端设备208可以实现结合图1和图3描述的图像和渲染处理流水线的任何部分。服务器212可以实现结合图1和图3描述的图像和渲染处理流水线的任何部分,并且在一些情况下,可以实现不由客户端设备208或hmd执行的图像和渲染处理流水线的任何部分。服务器212可以用于用对hmd和/或客户端设备208上的应用、软件、可执行指令和/或数据的任何更新来更新hmd和/或客户端设备208。
[0122]
系统200可以包括位置传感器220。位置传感器220可以输出主体202的位置或取向中的至少一个。由于图像捕获设备238a、238b、238c可以固定到主体202(例如,在相对于位置传感器220的预定位置),位置传感器220可以输出每个传感器238a、238b、238c的位置或取向中的至少一个。位置传感器220可以包括惯性测量单元(imu)、加速度计、陀螺仪或磁力计(例如,磁罗盘)中的至少一个。
[0123]
系统200可以包括变焦系统224。变焦系统224可以具有可变焦距,使得变焦系统224可以随着焦距或放大率的改变而改变焦点(例如,聚焦的点或平面)。变焦系统224可以包括机械透镜、液体透镜或偏振光束板中的至少一种。
[0124]
在一些实施例中,显示设备264包括一个或更多个波导228。波导228可以从一个或更多个投影仪232接收(例如,耦合入)与要由显示器264显示的显示图像对应的光,并输出(例如,耦合入)显示图像,例如供hmd的用户观看。波导228可以执行接收到的光的水平或垂直扩展,从而以适当的比例输出显示图像。波导228可以包括一个或更多个透镜、衍射光栅、偏振表面、反射表面或其组合,以基于接收到的光提供显示图像。投影仪232可以包括各种投影设备中的任何一种,例如lcd、led、oled、dmd或lcos设备等,以产生提供给一个或更多个波导228的光。投影仪232可以从处理电路250(例如,从图像渲染器260)接收显示图像。一个或更多个波导228可以通过显示表面(例如玻璃)提供,该显示表面可以是至少部分透明的,以作为组合器操作(例如,将来自hmd周围的现实世界环境的光与输出的显示图像的光组合)。
[0125]
可以响应于眼睛跟踪操作的校准来修改或控制显示器264及其部件(例如一个或更多个波导228或一个或更多个投影仪232)的操作。例如,处理电路250可以基于经校准的眼睛跟踪操作,使一个或更多个投影仪232基于对应于用户每只眼睛的瞳孔位置使用一个或更多个波导228来提供显示图像。处理电路250可以使用经校准的眼睛跟踪操作来校正一个或更多个波导228的均匀性,使得经由一个或更多个波导228提供的显示图像与用户的眼睛的凝视方向对齐。
[0126]
显示器264可以基于经校准的眼睛跟踪操作来执行中央凹渲染,这可以指示对应于由眼睛跟踪操作生成的凝视方向的凝视点。例如,处理电路250可以基于凝视点来识别显示器264的fov的中心区域(例如,距凝视点阈值距离内的多个像素)和显示器264的fov的外围区域(例如,由显示图像的多个像素表示的外围区域,该多个像素在显示图像的边缘的阈值距离内或距凝视点大于阈值距离)中的至少一个。处理电路250可以生成在外围区域比在中心区域具有更低的质量(例如,分辨率、像素密度、帧速率)的显示图像,这可以减少与hmd系统200的操作相关联的处理需求。
[0127]
c.用于跨多个设备分布神经网络的系统、方法和设备
[0128]
现在参考图3a,根据一些实施例,系统300包括第一设备302a和第二设备302b。在
一些实施例中,第一设备302a是上面参考图2a-图2b更详细描述的hmd和/或ar系统。在一些实施例中,第一设备302a是上面参考图2a-图2b更详细描述的hmd和/或ar系统的计算机设备。例如,第一设备302a可以是上面参考图2a-图2b更详细描述的hmd和/或ar系统的中央处理单元(cpu)或gpu。在一些实施例中,第一设备302a是客户端设备(例如,客户端设备208)、移动计算机设备、具有比第二设备302b更低/更少的处理能力的计算机、ai加速器108等。在一些实施例中,第二设备302b是远程设备、外部设备、hmd和/或ar系统的本地但独立的处理单元、ai加速器108、移动计算设备、云中的服务器等、或除第一设备302a之外的任何设备。例如,第二设备302b可以是服务器212、台式计算机、外部计算机、网络计算机、远程计算机等。在一些实施例中,第二设备302b是除了第一设备302a之外的具有比第一设备302a更大或更多的处理能力的任何计算机或计算设备。在一些实施例中,第一设备302a和第二设备302b是类似的计算设备。在一些实施例中,图3a和图3c所示的系统300被称为神经网络“流水线”,其跨多个计算设备分布神经网络计算。
[0129]
根据一些实施例,第一设备302a接收输入数据110并输出缩减数据集310。第二设备302b可以接收缩减数据集310作为输入,并且向第一设备302a输出或提供输出数据112。在一些实施例中,如果第一设备302a无法基于输入数据110准确地做出确定,则第一设备302a向第二设备302b输出缩减数据集310。
[0130]
第一设备302a和第二设备302b可以各自包括处理电路304a、处理器306a和存储器308a。处理电路304可以与处理电路250相同或类似。第一设备302a和第二设备302b可以各自包括便于第一设备302a和第二设备302b之间的通信(例如,数据传输)的通信接口。第一设备和第二设备302的通信接口可以是或包括有线或无线通信接口(例如,插孔、天线、发射器、接收器、收发器、有线终端等),用于在第一设备302a和第二设备和302b之间进行数据通信。在各种实施例中,经由通信接口的通信可以是直接的(例如,本地有线或无线通信)或经由通信网络(例如,wan、互联网、蜂窝网络等)的。例如,接口可以包括以太网卡和端口,用于经由基于以太网的通信链路或网络发送和接收数据。在另一个示例中,接口可以包括用于经由无线通信网络进行通信的wi-fi收发器。在另一个示例中,一个或两个接口可以包括蜂窝或移动电话通信收发器。在一些实施例中,两个通信接口都是以太网接口或usb接口。
[0131]
仍然参考图3a,第一设备302a和第二设备302b被示为包括处理电路304,处理电路304包括处理器306和存储器308。处理电路304可以可通信地连接到通信接口,使得处理电路304及其各个部件可以经由通信接口发送和接收数据。处理器306可以被实现为通用处理器、专用集成电路(asic)、一个或更多个现场可编程门阵列(fpga)、一组处理部件或其他合适的电子处理部件。
[0132]
存储器308(例如,存储器、存储器单元、存储设备等)可以包括一个或更多个设备(例如,ram、rom、闪存、硬盘储存设备等),用于存储用于完成或促进本技术中描述的各种过程、层和模块的数据和/或计算机代码。存储器308可以是或包括易失性存储器或非易失性存储器。存储器308可以包括数据库部件、目标代码部件、脚本部件或用于支持本技术中描述的各种活动和信息结构的任何其他类型的信息结构。根据一些实施例,存储器308经由处理电路304可通信地连接到处理器306,并且包括用于(例如,通过处理电路304和/或处理器306)执行本文描述的一个或更多个过程的计算机代码。
[0133]
第一设备302a可以从本公开中描述的任何传感器、系统、设备等接收输入数据
110。例如,输入数据110可以是眼睛跟踪数据、图像数据、相机数据、对象检测数据、关于包括顶点、纹理、边缘、表面等的一个或更多个虚拟对象的数据。在一些实施例中,输入数据110是凝视方向230、眼睛位置236、眼睛跟踪数据248、由传感器238收集的数据、图像234、由图像渲染器260输出的数据等中的任何一个。
[0134]
第一设备302a包括神经网络的一个或更多个层(例如,层116-122中的一个或更多个层,或与层116-122类似的一个或更多个层)的第一集合或第一神经网络,该第一集合或第一神经网络被示为神经网络114a。类似地,第二设备302b包括神经网络的一个或更多个层(例如,层116-122中的一个或更多个层,或与层116-122类似的一个或更多个层)的第二集合或第二神经网络,该第二集合或第二神经网络被示为神经网络114b。在一些实施例中,神经网络114a是总共具有1:n层的神经网络(例如,神经网络114)的1:x层的第一集合。在一些实施例中,神经网络114b是总共具有1:n层的同一神经网络(例如,神经网络114)的x:n层的第二集合。在一些实施例中,神经网络114a和神经网络114b被认为是具有它们自己的输入、输出和隐藏层的分离且独立的神经网络。在一些实施例中,神经网络114a在处理电路304a、处理器306a和存储器308a中的任何一个上实现。例如,存储器308a可以存储用于在处理器306a和/或处理电路304a上实现和处理的神经网络114a。在一些实施例中,第一设备302a是或包括hmd和/或ar系统的gpu,并且神经网络114a在gpu上实现。同样,第一设备302a可以是或包括cpu和/或ai加速器(例如,ai加速器108、类似于ai加速器108的ai加速器等),用于在cpu和/或ai加速器上实现神经网络114a。
[0135]
神经网络114a可以被实现为识别输入数据110的一个或更多个特征。在一些实施例中,第一设备302a使用输入数据110的一个或更多个识别的特征用于进一步分析、数据处理、图像显示、执行动作等。神经网络114a可以由第一设备302a实现为检测输入数据110的一个或更多个特征。在一些实施例中,第一设备302a向第二设备302b输出该一个或更多个特征被神经网络114a检测到或者该一个或更多个特征没有被神经网络114a检测到的指示或通知。第二设备302b可以使用该指示或通知来确定缩减数据集310是否应该被用作神经网络114b的输入。
[0136]
在一些实施例中,第一设备302a向第二设备302b输出输入数据110的一个或更多个识别的特征中的任何特征作为缩减数据集310。例如,如果第一设备302a正在处理图像数据以识别对象、人、形状等,第一设备302a可以向神经网络114a提供图像数据(例如,输入数据110)以识别对象、人、形状等。如果需要进一步分析和/或识别对象、人、形状等,神经网络114a可以向第二设备302b输出包括所识别的对象、人、形状等的图像数据的缩减数据集310,以用于附加的特征识别和/或检测。例如,如果输入数据110是图像数据,并且神经网络114a被配置为识别图像数据中是否存在人,则神经网络114a可以识别图像数据中是否存在人,并且如果需要,则将与该人相关联的图像数据作为缩减数据集310输出到第二设备302b的神经网络114b用于进一步识别。第二设备302b可以接收缩减数据集310,并识别人的附加特征(例如,面部表情、情绪、年龄等)。
[0137]
在一些实施例中,神经网络114a和/或神经网络114b的输出(例如,输出数据112和/或缩减数据集310)包括对输入数据(例如,输入数据110和/或缩减数据集310)中是否存在某些特征的检测。在一些实施例中,神经网络114a和/或神经网络114b的输出包括以某个准确度或阈值的对某个位置中的对象的检测、对某个方向上的眼睛、凝视的检测等。例如,
神经网络114a和/或神经网络114b的输出可以包括输入数据110中的对象或特征的任何标识、和/或准确度/误差分数(例如,准确度a和/或误差e)。在一些实施例中,神经网络114a和/或神经网络114b的输出包括第一设备302a和/或第二设备302b之一将采取的动作或对动作的确定。在一些实施例中,神经网络114a和/或神经网络114b的输出包括在某个阈值(例如,某个准确度阈值a和/或某个误差阈值e)内输入数据(例如,输入数据110)中是否未出现(例如,不存在)某些特征或对象的指示。例如,神经网络114a和/或神经网络114b可以以一定程度的确定性(例如,以误差度e和/或准确度a)确定某个对象或特征不存在于输入数据110中。
[0138]
在一些实施例中,响应于输入数据110的被识别或检测到的特征不足以执行动作,第一设备302a将缩减数据集310输出到第二设备302b,用于进一步分析或处理。例如,如果第一设备302a要求在执行动作之前识别出输入数据110的附加特征,并且由神经网络114a识别或检测的特征不包括附加特征,则第一设备302a可以向第二设备302b输出缩减数据集310。
[0139]
在一些实施例中,缩减数据集310与输入数据110相比,在尺寸上更小、被压缩、尺寸减小等。例如,如果输入数据110是5兆字节的图像数据,则缩减数据集310可以是1兆字节的图像数据。在一些实施例中,神经网络114a被配置为接收输入数据110并输出尺寸减小的缩减数据集310。在一些实施例中,神经网络114a被配置为接收输入数据110并压缩输入数据110以生成缩减数据集310。在一些实施例中,神经网络114a使用任何有损或无损压缩来基于输入数据110生成缩减数据集310。然后,有损或无损数据(即,缩减数据集310)可以在第一设备302a和第二设备302b之间传送并被第一设备302a和第二设备302b理解。在一些实施例中,缩减数据集310是输入数据110的子集。在一些实施例中,缩减数据集310是由神经网络114a选择的输入数据110的部分。例如,神经网络114a可以确定在输入数据110的某些部分中以可接受的准确度a和/或误差e的水平检测到某些特征,但是在输入数据110的其他部分中以可接受的准确度a和/或误差e的水平无法检测到其他特征或对象。神经网络114a可以将输入数据110的其他部分作为缩减数据集310输出到神经网络114b,因为输入数据110的剩余部分(例如,输入数据110的特征和/或对象被神经网络114a以准确度a的阈值水平和/或误差e的阈值水平检测到的部分)不需要额外的处理。
[0140]
在一些实施例中,第一设备302a被配置为确定由神经网络114a识别的输入数据110的一个或更多个特征的准确度、误差、置信度、误差矩阵、混淆矩阵等。例如,第一设备302a可以生成或更新标识神经网络114a的预测准确度的混淆矩阵。第一设备302a可以识别神经网络114a的置信区间、误差、预测误差、准确度等,在下文中被称为神经网络114a的“准确度”a。在一些实施例中,准确度a是归一化值(例如,从0到1的值,其中0是最低的准确度,并且1是最高的准确度)。在一些实施例中,准确度a是百分数(例如,从0%到100%,其中0%是最低的准确度,并且100%是最高的准确度)。在一些实施例中,第一设备302a使用神经网络114a的准确度a来确定是否应该使用第二设备302b的神经网络114b来执行进一步的数据分析。在一些实施例中,第一设备302a将准确度a与阈值a
threshold
进行比较,以确定是否应该使用第二设备302b的神经网络114b来进一步分析输入数据110。在一些实施例中,如果准确度a满足或超过阈值a
threshold
(或者如果考虑误差的话,则小于或等于阈值),则第一设备302a确定神经网络114a足够准确,并且不将缩减数据集310提供给第二设备302b。在一些实
施例中,如果准确度小于阈值a
threshold
(或者如果考虑误差的话,则大于或等于阈值),则第一设备302a确定应该对输入数据110执行进一步的或附加的数据分析,并将缩减数据集310提供给第二设备302b。
[0141]
在一些实施例中,第一设备302a使用准确度a和阈值a
threshold
来确定神经网络114a的结果(例如,输入数据110的被识别/检测到的特征)是否足够准确以执行一个或更多个动作。例如,如果a>a
threshold
或a≥a
threshold
,则第一设备302a可以确定神经网络114a的结果或输出足以执行一个或更多个动作。在一些实施例中,如果a>a
threshold
或a≥a
threshold
,则第一设备302a执行一个或更多个动作,而不向第二设备302b提供缩减数据集310。以这种方式,第一设备302a可以减少处理时间以及第一设备302a和第二设备302b之间的传输次数,从而节省能耗和带宽。有利的是,这减少了第一设备302a和第二设备302b之间的流量,减少了与传输数据相关联的延迟,并降低了在第一设备302a和第二设备302b之间传输数据的成本(例如,降低了能耗)。
[0142]
在一些实施例中,第一设备302a为神经网络114a的每个输出(例如,由神经网络114a识别/检测到的输入数据110的每个特征)确定准确度a或误差e。在一些实施例中,第一设备302a将神经网络114a的每个输出的准确度a和/或误差e分别与相应的阈值a
threshold
和e
threshold
进行比较。在一些实施例中,对于神经网络114a的一个或更多个输出,第一设备302a响应于准确度a小于相应的阈值a
threshold
或者响应于误差e大于相应的阈值e
threshold
,输出缩减数据集310。在一些实施例中,缩减数据集310包括神经网络114b识别输入数据110的与不足的准确度a和/或过大的误差e相关联的特征所需的信息。例如,如果神经网络114a能够准确识别输入数据110的五个特征中的四个,但是无法准确识别输入数据110的第五个特征(例如,e5>e
threshold
或a5<a
threshold
,其中e5和a5是由神经网络114a识别的第五特征的误差和准确度),则神经网络114a可以将与第五特征相关联的输入数据110输出到神经网络114b,作为缩减数据集310。神经网络114b可以使用缩减数据集310来准确地识别第五特征,并将识别出的第五特征作为输出数据112提供给第一设备302a。
[0143]
在一些实施例中,神经网络114b的输出被作为输出数据112提供给第一设备302a。输出数据112可以包括关于以下特征的信息或数据:由网络114b识别出的任何附加特征,或由神经网络114b更准确地识别的输入数据110的特征。
[0144]
在一些实施例中,第一设备302a被配置为响应于或基于由神经网络114a和/或神经网络114b识别的输入数据110的任何特征来执行动作。例如,第一设备302a可以基于、使用或响应于由神经网络114a和/或神经网络114b识别的输入数据110的任何特征,生成用于显示器264的显示信号312。第一设备302a可以生成显示信号312,并将显示信号312提供给显示器264,以向用户提供不同的影像,改变在显示器264上提供给用户的任何图像的尺寸、形状、取向、旋转、倾斜、外观、颜色等,等等。在一些实施例中,第一设备302a被配置为响应于由第一设备302a的神经网络114a识别的输入数据110的任何特征,或者响应于由第二设备302b的神经网络114b识别的缩减数据集310的任何特征,使用显示器264更新或提供新的影像。
[0145]
在一些实施例中,第二设备302b还被配置为执行本文中描述的任何动作。在一些实施例中,第一设备302a和第二设备302b都可以基于神经网络114a和/或神经网络114b的输出来执行一个或更多个动作。例如,第一设备302a可以响应于神经网络114a的输出(或者
响应于第二神经网络114b的输出数据112,或者响应于第一神经网络和第二神经网络114两者的输出)来执行第一动作,而第二设备302b可以响应于第二神经网络114b的输出数据112(或者响应于第一神经网络114a的输出,或者响应于第一神经网络114a和第二神经网络114b两者的输出)来执行第二动作。在一些实施例中,第一设备302a可以响应于或基于神经网络114a的处理来执行第一动作,而第二设备302b响应于或基于神经网络114b的处理来执行第二动作,其中神经网络114a和神经网络114b使用相同的输入数据(例如,输入数据110)。
[0146]
在一些实施例中,第一设备302a被配置为执行动作,而不向第二设备302b提供缩减数据集310。在一些实施例中,第一设备302a被配置为响应于由神经网络114a识别的一个或更多个特征以足够的准确度或以足够的误差被识别,执行与输入数据110的一个或更多个被识别的特征相关联的动作。例如,如果输入数据110的第一特征以相应的准确度a1(或误差e1)和a1>a
threshold
(或e<e
threshold
)被识别,则第一设备302a可以执行相关联的动作(例如,使用显示器264改变给用户的影像或向用户提供新的影像),而不将缩减数据集310传输到第二设备302b。在一些实施例中,如果所识别的特征的准确度a小于相应的阈值a
threshold
(或者所识别的特征的误差e大于相应的阈值e
threshold
),则第一设备302a向神经网络114b提供缩减数据集310。在一些实施例中,第一设备302a然后可以接收神经网络114b的输出(即,输出数据112)并使用神经网络114b的输出来执行动作。在一些实施例中,输出数据112被提供给图像渲染器260、后处理引擎、数据渲染服务、图像渲染引擎、数据存储设备等,以执行动作。
[0147]
在一些实施例中,第一设备302a既使用由神经网络114a识别的输入数据110的特征来执行动作,并且还将缩减数据集310输出到第二设备302b。例如,如果神经网络114a能够准确地识别输入数据110的第一特征(例如,其准确度a大于阈值a
threshold
和/或误差e小于阈值e
threshold
),但是没有准确地识别输入数据110的第二特征(例如,第二特征的准确度a小于阈值a
threshold
和/或第二特征的误差e大于阈值e
threshold
),则第一设备302a可以使用所识别的第一特征来执行相关联的动作,并且将缩减数据集310提供给神经网络114b用于识别第二特征。神经网络114b可以使用缩减数据集310以足够的准确度a和/或足够低的误差e来识别第二特征,并将与所识别的第二特征相关联的信息作为输出数据112提供给第一设备302a。第一设备302a然后可以使用从第二设备302b接收的输出数据112来执行与第二特征相关联的一个或更多个动作。
[0148]
具体参考图3c,根据一些实施例示出了系统300。在一些实施例中,附加设备302可通信地串联连接。设备302可以通过有线连接或无线连接(例如,无线通信网络)可通信地连接。例如,系统300可以包括设备302a

n。第一设备302a向第二设备302b提供缩减数据集310a,第二设备302b向第三设备302c提供缩减数据集310b,等等。每个设备302a...n包括相应的神经网络114或神经网络114的附加层。例如,神经网络114可以具有n层,其中一个或更多个层的第一集合在第一设备302a上实现,一个或更多个层的第二集合在第二设备302b上实现,等等。以这种方式,神经网络114可以跨多个设备分布。
[0149]
每个设备302可以提供在第一设备302a的本地实现的相应神经网络114或神经网络114的相应层的输出,作为输出数据112。例如,第二设备302b可以向第一设备302a提供输出数据112a,第三设备302c可以向第一设备302a提供输出数据112b,......,第n设备302n
可以向第一设备302a提供输出数据112n。在一些实施例中,每个设备302被配置为确定它们对应的神经网络114的每个输出(例如,每个识别的特征)的误差e和/或准确度a。在一些实施例中,如果输出的误差e小于阈值e
threshold
,则将输出作为输出数据112提供给第一设备302a。同样,根据一些实施例,如果输出的准确度a大于或等于阈值a
threshold
,则将输出作为输出数据112提供给第一设备302a。
[0150]
在一些实施例中,如果误差e大于(或大于或等于)阈值e
threshold
,则相应的设备302生成缩减数据集310,并将缩减数据集310提供给下一个设备302。同样,如果输出的准确度a小于(或小于或等于)阈值a
threshold
,则相应的设备302(生成该输出的设备302)生成缩减数据集310,并将缩减数据集310提供给下一个设备302。在一些实施例中,缩减数据集包括用于下一个设备302的信息/数据,以仅分析上游设备302无法准确地分析/识别的输出。在一些实施例中,缩减数据集包括用于下一个设备302的所有信息/数据,以确定/识别输入数据110的所有相关/需要的特征。
[0151]
以这种方式,如果设备302不能准确地预测、分析、输出等输入数据(例如,输入数据110或缩减数据集310)的特征,设备302可以生成缩减数据集310,并将缩减数据集310提供给下一个设备302。下一个设备302然后可以使用缩减数据集310来分析、预测、输出、识别、检测等由直接的上游设备302提供给它的输入数据(例如,缩减数据集310)的特征。这可以重复进行,直到输入数据110的所有需要的特征被识别/检测。
[0152]
具体参考图3b,根据一些实施例,示出了用于跨多个设备实现神经网络或者用于跨多个设备协同实现多个神经网络的过程350。根据一些实施例,过程350包括步骤352-366。过程350可以由系统300的任何设备、部件等来执行。有利的是,过程350减少了设备之间的传输,并使得设备能够降低处理要求,从而有助于节能。过程350对于可能具有本地处理单元(例如,gpu、cpu、处理电路等)的hmd和/或ar系统可能是有益的。有利的是,过程350使得本地处理单元能够降低处理要求来识别输入数据的特征或实现可能计算量大的神经网络。本地处理单元可以实现相应的神经网络或神经网络的一部分(例如,某些层)来识别输入数据的特征,并使用所识别的特征在hmd和/或ar系统的显示器处执行动作。如果本地处理单元不能准确地识别输入数据的特征,则本地处理单元可以向能够准确地识别这些特征的另一个处理单元(例如,外部处理单元、第二处理单元、第二本地处理单元、ai加速器、远程设备等)提供缩减数据集。以这种方式,降低了hmd和/或ar系统的本地处理单元的处理要求,并且降低了本地处理单元和其他处理单元之间的数据传输频率和大小,从而减少了本地处理单元和其他处理单元之间的通信延迟。
[0153]
根据一些实施例,过程350包括在第一设备处接收输入数据(步骤352)。在一些实施例中,从外部设备接收输入数据。在一些实施例中,从hmd和/或ar系统的传感器、相机等接收输入数据。在一些实施例中,输入数据是由外部设备提供的或由hmd和/或ar系统的传感器、相机等捕获的图像数据。在一些实施例中,图像数据是对象、环境、虚拟环境、现实世界环境、人、风景、不规则形状、粒子等的图像数据。在一些实施例中,步骤352由第一设备302a执行。在一些实施例中,由神经网络114a接收输入数据。
[0154]
根据一些实施例,过程350包括使用(1)第一神经网络和输入数据或者(2)第一神经网络的层的第一集合和输入数据,来生成缩减数据集(步骤354)。在一些实施例中,步骤354由神经网络114a使用在步骤352中接收或获得的输入数据(例如,输入数据110)来执行。
在一些实施例中,步骤354在第一设备处本地执行。在一些实施例中,在第一设备处用于执行步骤354的神经网络是独立的神经网络。在一些实施例中,在第一设备处用于执行步骤354的神经网络是跨多个设备分布的神经网络的第一一个或更多个层。
[0155]
根据一些实施例,过程350包括使用(1)第一神经网络和输入数据或者(2)第一神经网络的层的第一集合和输入数据,来识别输入数据的一个或更多个特征(步骤356)。在一些实施例中,步骤356由第一设备302a的神经网络114a执行。在一些实施例中,步骤356包括使用相关联的神经网络识别或检测输入数据的至少一个特征。在一些实施例中,步骤354和/或步骤356并行或同时执行。在一些实施例中,在执行步骤354之前执行步骤356。在一些实施例中,响应于步骤360(例如,响应于步骤360,“是”),执行步骤356。
[0156]
根据一些实施例,过程350包括确定与在步骤356中识别的一个或更多个特征(例如,步骤356的神经网络的输出)相关联的误差、准确度、置信度等(步骤358)。在一些实施例中,误差e和/或准确度a由第一设备302a确定。误差e和/或准确度a可用于确定由神经网络114a识别的一个或更多个特征是否足够准确(例如,在步骤360中使用)。
[0157]
根据一些实施例,过程350包括确定是否需要额外的分析(步骤360)。在一些实施例中,执行步骤360以确定是否应该生成缩减数据集和/或是否应该将缩减数据集提供给第二设备。在一些实施例中,基于在步骤356中识别的输入数据的一个或更多个特征的准确度a和/或误差e来确定步骤360。在一些实施例中,步骤360包括将准确度a和/或误差e与相应的阈值(即,分别为a
threshold
和e
threshold
)进行比较。响应于准确度a大于(或等于)阈值a
threshold
,第一设备302a可以确定不需要额外的分析(步骤360,“否”),并且过程350进行到步骤366。响应于误差e小于阈值e
threshold
,第一设备302a可以确定不需要额外的分析(步骤360,“否”),并且过程350进行到步骤366。响应于准确度a小于阈值a
threshold
,第一设备302a可以确定需要额外的分析(步骤360,“是”),并且过程350进行到步骤362。响应于误差e大于阈值e
threshold
,第一设备302a可以确定需要额外的分析(步骤360,“是”),并且过程350进行到步骤362。
[0158]
根据一些实施例,过程350包括向第二设备提供缩减数据集(步骤362)。在一些实施例中,第二设备是网络设备、外部设备、ai加速器(例如,ai加速器108)、另一计算设备等。在一些实施例中,第二设备包括第二神经网络或第一神经网络的附加层,其可用于进一步分析输入数据以识别特征。在一些实施例中,当与第一设备相比,第二设备具有额外的处理能力。在一些实施例中,步骤362通过网络、第一设备和第二设备之间的无线连接、第一设备和第二设备之间的有线连接等来执行。
[0159]
根据一些实施例,过程350包括使用(1)第二神经网络和缩减数据集或者(2)第一神经网络的层的第二集合来识别缩减数据集的一个或更多个特征(步骤364)。在一些实施例中,缩减数据集由第一设备(例如,由第一神经网络或第一神经网络的层的第一集合)输出,并作为输入提供给第二设备的神经网络或第二设备的神经网络的层。在一些实施例中,第二设备是第二设备302b。在一些实施例中,步骤364由神经网络114b执行。
[0160]
根据一些实施例,过程350包括基于输入数据的特征来执行动作(步骤366)。在一些实施例中,步骤366由第一设备302a执行。在一些实施例中,步骤366由第一设备302a和显示器264执行。例如,第一设备302a可以生成显示信号并将显示信号提供给显示器264以执行动作。在一些实施例中,动作包括经由显示器264向用户提供附加影像、改变当前经由显
示器264向用户显示的影像、执行附加数据处理、执行后处理算法等。在一些实施例中,经由显示器264提供给用户的附加影像是或包括文本信息(例如,覆盖在ar系统中)、计算机生成的影像(例如,对象、字符、粒子、纹理等)等等。在一些实施例中,基于在步骤356和/或步骤364中识别的输入数据的任何特征和缩减数据集的任何特征来执行步骤366。在一些实施例中,动作包括操作显示器264来向用户提供影像。
[0161]
说明性实施例的配置
[0162]
现在已经描述了一些说明性的实现,显然前述是说明性的而不是限制性的,已经通过示例的方式给出。具体而言,尽管本文呈现的许多示例涉及方法动作或系统元素的特定组合,但是那些动作和那些元素可以以其他方式组合来实现相同的目标。结合一个实现讨论的动作、元素和特征不旨在被排除在其他实现或实现中的类似角色之外。
[0163]
用于实现结合本文公开的实施例描述的各种过程、操作、说明性逻辑、逻辑块、模块和电路的硬件和数据处理部件可以用通用单芯片或多芯片处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件部件或其设计用于执行本文描述的功能的任何组合来实现或执行。通用处理器可以是微处理器,或者任何传统的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、与dsp内核结合的一个或更多个微处理器、或者任何其他这样的配置。在一些实施例中,特定的过程和方法可以由特定于给定功能的电路来执行。存储器(例如,存储器、存储器单元、存储设备等)可以包括一个或更多个设备(例如,ram、rom、闪存、硬盘储存设备等),用于存储数据和/或计算机代码,以完成或促进本公开中描述的各种过程、层和模块。存储器可以是或包括易失性存储器或非易失性存储器,并且可以包括数据库部件、目标代码部件、脚本部件或用于支持本公开中描述的各种活动和信息结构的任何其他类型的信息结构。根据示例性实施例,存储器经由处理电路可通信地连接到处理器,并且包括用于(例如,通过处理电路和/或处理器)执行本文描述的一个或更多个过程的计算机代码。
[0164]
本发明设想用于完成各个操作的方法、系统和在任何机器可读介质上的程序产品。可以使用现有的计算机处理器、或通过为此目的或另一目的所结合的用于恰当系统的专用计算机处理器、或通过硬接线的系统来实现本发明的实施例。本发明的范围之内的实施例包括程序产品,其包括用于携带或具有存储于其上的机器可执行指令或数据结构的机器可读介质。这样的机器可读介质可以是任意可用介质,其可通过通用或专用计算机或具有处理器的其他机器访问。举例来讲,这样的机器可读介质可包括ram、rom、eprom、eeprom或其他光盘储存设备、磁盘储存设备或其他磁储存设备、或可用于携带或存储以机器可执行指令或数据结构形式的所需程序代码的且可以通过通用或专用计算机或具有处理器的其他机器访问的任何其他介质。上面的组合也被包括在机器可读介质的范围内。机器可执行指令包括例如使通用计算机、专用计算机或专用处理机器执行某一功能或一组功能的指令和数据。
[0165]
本文所使用的措辞和术语是为了描述的目的,且不应被视为限制性的。本文中对“包括(including)”、“包括(comprising)”、“具有”、“包含”、“涉及”、“以......为特征”、“特征在于”及其变型的使用意味着包含其后列出的项目、其等同物和附加项目,以及仅由其后列出的项目组成的替代实现。在一个实现中,本文描述的系统和方法由一个、多于一个
的每个组合或者所有描述的元件、动作或部件组成。
[0166]
本文中以单数形式提及的对系统和方法的实现或元素或动作的任何引用也可以包括包含多个这些元素的实现,并且本文中以复数形式对任何实现或元素或动作的任何引用也可以包括仅包含单个元素的实现。单数或复数形式的引用不旨在将当前公开的系统或方法、它们的部件、动作或元素限制为单个配置或复数配置。对基于任何信息、动作或元素的任何动作或元素的引用可以包括其中动作或元素至少部分基于任何信息、动作或元素的实现。
[0167]
本文公开的任何实现可以与任何其他实现或实施例组合,并且对“实现”、“一些实现”、“一个实现”等的引用不一定是互斥的,并且旨在指示结合该实现描述的特定特征、结构或特性可以被包括在至少一个实现或实施例中。这里使用的这些术语不一定都指同一实现。任何实现都可以以与这里公开的方面和实现相一致的任何方式,包括性地或排他地与任何其他实现相结合。
[0168]
在附图、详细描述或任何权利要求中的技术特征后面带有参考标记的地方,参考标记被包括以增加附图、详细描述和权利要求的可理解性。因此,参考标记及其缺失都不会对任何权利要求元素的范围有任何限制性影响。
[0169]
本文描述的系统和方法可以在不脱离其特征的情况下以其他特定形式体现。除非另有明确说明,否则对“大约(approximately)”、“约(about)”、“基本上”或其他程度术语的提及包括给定测量值、单位或范围的+/-10%的变化。耦合元件可以彼此直接电耦合、机械耦合或物理耦合,或者利用中间元件电耦合、机械耦合或物理耦合。因此,本文描述的系统和方法的范围由所附权利要求而不是前面的描述来指示,并且落入权利要求的等同物的含义和范围内的变化包含在其中。
[0170]
术语“耦合”及其变型包括两个构件直接或间接地彼此连接(join)。这种连接可以是静止的(例如,永久的或固定的)或可移动的(例如,可移除的或可释放的)。这种连接可以通过两个构件直接耦合或相互耦合来实现,也可以通过两个构件使用单独的中间构件彼此耦合和使用任何附加的中间构件彼此耦合来实现,或者通过两个构件使用与两个构件中的一个构件一体形成为单一单元体的中间构件彼此耦合来实现。如果“耦合”或其变型由附加术语(例如,直接耦合)来修饰,则上面提供的“耦合”的一般定义由附加术语的简单语言含义来修饰(例如,“直接耦合”是指两个构件在没有任何单独的中间构件的情况下的连接),导致比上面提供的“耦合”的一般定义更窄的定义。这种耦合可以是机械的、电的或流体的。
[0171]
对“或”的提及可被解释为包含性的,因此,使用“或”描述的任何术语可以指示单个、多于一个和所有所述术语中的任何一种。对
“‘
a’和

b’中的至少一个”的提及可以只包括“a”,只包括“b”,以及同时包括“a”和“b”。这种与“包括”或其他开放术语一起使用的引用可以包括附加项目。
[0172]
在本质上不脱离本文公开的主题的教导和优点的情况下,可以对所描述的元件和动作进行修改,例如各种元件的尺寸、大小、结构、形状和比例、参数值、安装布置、材料使用、颜色、取向的变化。例如,显示为一体形成的元件可以由多个部分或元件构成,元件的位置可以颠倒或以其他方式改变,并且分立元件的性质或数量或位置可以改变或变化。在不脱离所附权利要求所限定的本发明的范围的情况下,还可以在所公开的元件和操作的设计、操作条件和布置中进行其他替换、修改、改变和省略。
[0173]
本文对元件位置(例如,“顶部”、“底部”、“上面”、“下面”)的提及仅用于描述附图中各种元件的取向。根据其他示例性实施例,各种元件的取向可以不同,并且这样的变化旨在被本发明所包含。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1