跨现实系统中的可缩放三维对象识别的制作方法

文档序号:30711083发布日期:2022-07-10 12:52阅读:100来源:国知局
跨现实系统中的可缩放三维对象识别的制作方法
跨现实系统中的可缩放三维对象识别
1.相关申请的交叉引用
2.本专利申请要求于2019年6月14日提交且题为“object recognition and scene understanding”的美国临时专利申请no.62/861,784的优先权和权益,其全部内容通过引用并入本文。本专利申请还要求于2020年1月30日提交且题为“a cross reality system”美国临时专利申请no.62/968,023的优先权和权益,其全部内容通过引用并入本文。本专利申请还要求于2020年4月7日提交且题为“scalable three-dimensional object recognition in a cross reality system”的美国临时专利申请no.63/006,408的优先权和权益,其全部内容通过引用并入本文。本专利申请还要求于2020年5月13日提交且题为“scalable three-dimensional object recognition in a cross reality system”的美国临时专利申请no.63/024,291的优先权和权益,其全部内容通过引用并入本文。
技术领域
3.本技术总体上涉及跨现实系统。


背景技术:

4.计算机可以控制人类用户界面以创建x现实(xr或跨现实)环境,在该环境中,用户所感知的一些或全部xr环境由计算机生成。这些xr环境可以是虚拟现实(vr)、增强现实(ar)和混合现实(mr)环境,其中一些或全部xr环境可以由计算机部分地使用描述环境的数据来生成。例如,该数据可以描述虚拟对象,该虚拟对象可以以用户感测或感知为物理世界的一部分并且可以与虚拟对象交互的方式进行渲染。由于通过用户界面设备(诸如例如头戴式显示设备)来渲染和呈现数据,用户可以体验这些虚拟对象。数据可以显示给用户以查看,或者可以控制播放给用户以听到的音频,或者可以控制触觉(或触知)界面,使用户能够体验用户感测或感知为感觉虚拟对象的触摸感觉。
5.xr系统可用于许多应用,跨越科学可视化、医学培训、工程设计和原型设计、远程操作和远程呈现以及个人娱乐等领域。与vr相比,ar和mr包括与物理世界的真实对象相关的一个或多个虚拟对象。虚拟对象与真实对象交互的体验显著地提高了用户使用xr系统的乐趣,并且也为各种应用打开了大门,该应用提供了关于物理世界如何可能被改变的真实且易于理解的信息。
6.为了真实地渲染虚拟内容,xr系统可以构建系统用户周围的物理世界的表示。例如,可以通过处理由可穿戴设备上的传感器所获取的图像来构建该表示,该可穿戴设备形成xr系统的一部分。在此类系统中,用户可能通过查看用户旨在在其中使用xr系统的房间或其它物理环境来执行初始化例程,直到系统获取足够的信息来构建该环境的表示。随着系统操作并且用户在环境中或向其它环境移动,可穿戴设备上的传感器可能会获取附加信息以扩展或更新物理世界的表示。
7.该系统可以使用二维(2d)对象识别系统来识别物理世界中的对象。例如,该系统可以提供采用可穿戴设备上的传感器所获取的图像作为2d边界框(bounding box)生成系
统的输入。该系统可以接收在图像中已识别的每一个对象的相应2d边界框。xr系统可以使用已识别的对象的2d边界框来构建物理世界的表示。随着用户在环境中或向其它环境移动,xr系统可以使用在由传感器所获取的附加图像中已识别的对象的2d边界框来扩展或更新物理世界的表示。


技术实现要素:

8.本技术的各方面涉及用于在x现实(跨现实或xr)系统中进行可缩放(scalable)三维(3d)对象识别的方法和装置。如在此所述的技术可以一起、单独或以任何合适的组合使用。
9.通常,本说明书中所描述的主题的一个创新方面可以体现在方法中,该方法包括以下动作:维持维持对象数据,该对象数据指定在环境中的场景中已被识别的对象;接收场景的输入图像流,其中输入图像流包括彩色图像流和深度图像流;针对彩色图像流中的多个彩色图像中的每一个彩色图像:将彩色图像作为输入提供给对象识别系统;接收作为对象识别系统的输出的识别输出,该识别输出标识针对已在彩色图像中被识别的一个或多个对象中的每一个对象的彩色图像中的相应对象掩膜(mask);将彩色图像和深度图像流中的多个深度图像作为输入提供给同步系统,该同步系统针对彩色图像基于对应的深度图像的时间戳和彩色图像的时间戳来确定该对应的深度图像;将对象数据、标识对象掩膜的识别输出和对应的深度图像作为输入提供给三维(3d)边界框生成系统,该三维(3d)边界框生成系统从对象数据、对象掩膜和对应的深度图像,针对已在彩色图像中被识别的一个或多个对象中的每一个对象确定相应的3d边界框;以及接收作为来自3d边界框生成系统的输出的数据,该数据指定针对彩色图像中被识别的一个或多个对象的一个或多个3d边界框;并提供指定一个或多个3d边界框的数据作为输出。该方面的其它实施例包括记录在一个或多个计算机存储设备上的计算机程序、装置和对应的计算机系统,每个被配置为执行方法的动作。对于被配置为执行特定操作或动作的一个或多个计算机的系统意味着该系统已安装在其软件、固件、硬件或它们的组合上,该软件、固件、硬件或它们的组合在操作中导致系统执行操作或动作。对于被配置为执行特定操作或动作的一个或多个计算机程序意味着该一个或多个程序包括指令,该指令当由数据处理装置执行时,使该装置执行操作或动作。
10.前述和其它实施例可各自可选地单独或组合包括以下特征中的一个或多个。特别地,一个实施例包括所有以下特征的组合。3d边界框生成系统包括多视图融合系统,该多视图融合系统生成3d对象掩膜的初始集合。对象识别系统、同步系统、多视图融合系统以无状态的方式并且彼此独立地操作。多视图融合系统包括关联系统,该关联系统从所维持的对象数据中识别匹配的对象数据,该匹配的对象数据采用彩色图像中每一个识别的对象的相应的对象掩膜来指定对应的对象;以及融合系统,其针对彩色图像中的每一个被识别的对象,通过将彩色图像中的对象掩膜与匹配的对象数据组合,生成初始3d对象掩膜。3d边界框生成系统还包括对象细化系统,其细化3d对象掩膜的初始集合以生成3d边界框的初始集合。3d边界框生成系统还包括边界框细化系统,其细化3d边界框的初始集合以生成一个或多个3d边界框。对象识别系统包括经训练的深度神经网络(dnn)模型,该经训练的深度神经网络模型将彩色图像作为输入,并针对已在彩色图像中被识别的一个或多个对象中的每一个对象生成相应的二维(2d)对象掩膜。由同步系统针对彩色图像基于对应的深度图像的时
间戳和彩色图像的时间戳,确定该对应的深度图像包括:标识具有与彩色图像的时间戳最接近的时间戳的候选深度图像;确定候选深度图像与彩色图像之间的时间差小于阈值;以及作为响应,将候选深度图像确定为针对彩色图像的对应的深度图像。3d边界框生成系统从对象掩膜和对应的深度图像,针对已在彩色图像中被识别的一个或多个对象中的每一个对象确定相应的3d对象掩膜,以及其中,该方法还包括:接收作为来自3d边界框生成系统的输出的数据,该数据指定针对彩色图像中被识别的一个或多个对象的一个或多个3d对象掩膜;以及提供指定一个或多个3d对象掩膜的数据作为输出。
11.通常,本说明书中描述的主题的另一个创新方面可以体现在方法中,该方法包括以下动作:维持对象数据,该对象数据指定已在环境中的场景中被识别的对象;接收场景的输入图像流;针对输入图像流中的多个输入图像中的每一个输入图像:将输入图像作为输入提供给对象识别系统;接收作为对象识别系统的输出的识别输出,该识别输出针对已在输入图像中被识别的一个或多个对象中的每一个对象标识输入图像中的相应的边界框;将识别边界框的数据作为输入提供给三维(3d)边界框生成系统,该三维边界框生成系统根据对象数据和边界框,针对已在输入图像中被识别的一个或多个对象中的每一个对象确定相应的3d边界框;以及接收作为3d边界框生成系统的输出的数据,该数据指定针对输入图像中被识别的一个或多个对象的一个或多个3d边界框;以及提供指定一个或多个3d边界框的数据作为输出。该方面的其它实施例包括记录在一个或多个计算机存储设备上的对应的计算机程序、装置和计算机系统,每一个被配置为执行方法的动作。对于配置为执行特定操作或动作的一个或多个计算机的系统意味着该系统已安装在其软件、固件、硬件或它们的组合上,该软件、固件、硬件或它们的组合在操作中导致系统执行操作或动作。对于被配置为执行特定操作或动作的一个或多个计算机程序意味着该一个或多个程序包括指令,该指令当由数据处理装置执行时,使该装置执行操作或动作。
12.前述和其它实施例可各自可选地单独或组合包括以下特征中的一个或多个。特别地,一个实施例包括所有以下特征的组合。3d边界框生成系统包括:多视图融合系统,其生成3d边界框的初始集合;以及边界框细化系统,其细化3d边界框的初始集合以生成一个或多个3d边界框。对象识别系统、多视图融合系统和边界框细化系统以无状态方式并且彼此独立地操作。所维持的对象数据包括从已在场景中被识别的每一个对象的多个二维(2d)边界框生成椭圆体,并且多视图融合系统通过至少执行以下步骤生成3d边界框的初始集合:针对输入图像中被标识的每一个2d边界框,确定在输入图像中被标识的2d边界框是否与已在所维持的对象数据中被识别的对象的一个或多个2d边界框相关联;响应于确定输入图像中被标识的2d边界框与已被识别的对象的一个或多个2d边界框相关联,通过使用输入图像中被标识的2d边界框计算对象的更新椭圆体来更新所维持的对象数据;响应于确定输入图像中被标识的2d边界框与已被识别的任何对象不相关联,通过至少从输入图像中被标识的2d边界框生成椭圆体来创建新对象;以及使用已在输入图像中被识别的对象的椭圆体生成3d边界框的初始集合。对象识别系统包括经训练的深度神经网络(dnn)模型,该经训练的深度神经网络模型将输入图像作为输入,并针对已在输入图像中被识别的一个或多个对象中的每一个对象生成相应的二维(2d)对象边界框。场景的输入图像流是从两个或更多个用户设备捕获的。
13.本说明书描述了用于根据由用户设备所捕获的彩色图像和深度图像生成对象的
3d边界框的技术。通过使用这些技术,3d对象识别系统可以使用由连接到云的多个用户设备所捕获的图像流执行3d对象识别。该系统可以联合识别多个用户设备共享的场景中的多个对象,并可以根据由用户设备所捕获的彩色图像和深度图像生成对象的3d边界框。3d对象识别在多个用户设备和场景中的多个对象方面是可缩放的。3d对象识别系统包括多个独立的子系统,其可以在多个无状态模块中实现。这些无状态模块可以根据需要扩大或缩小。这使得3d对象识别系统能够识别大型环境中(例如在建筑物或城市规模)具有数百或数千个xr设备以及具有数百或数千个3d对象的对象。
14.基于从3d边界框生成或更新的可通行世界模型,xr系统可以启用多个应用并且可以改进应用中的沉浸式体验。xr系统的用户或应用开发人员可以将xr内容或应用与已在环境的场景中被识别的一个或多个对象一起放置在物理世界中。例如,游戏应用可以在可通行世界模型中已经被识别的真实世界咖啡桌的顶部上设置虚拟对象(例如,一杯咖啡)。
15.通过利用所描述的技术,xr应用可以具有更加沉浸式的体验。例如,交互式游戏应用的虚拟助手可以坐在已在可通行世界模型中识别的椅子之一上,以便提供更加沉浸式的体验。ar应用中的空间音频可以使用检测到的3d对象的位置取决于每一个对象的类别来正确反映声音。
16.在一些实现方式中,xr系统可以基于包括检测到的3d对象的位置的可通行世界模型来构建对象的空间知识图。在一些实现方式中,xr系统可以通过利用检测到的3d对象的位置信息来更稳健地执行。例如,通过利用3d对象检测,跟踪、定位或网格计算可以对长期动态变化(诸如移动对象)更加稳健。
17.本说明书描述了用于在不使用深度图像的情况下从彩色图像生成对象的3d边界框的技术。通过使用这些技术,3d对象识别系统可以使用由连接到云的多个用户设备所捕获的图像流执行3d对象识别。该系统可以联合识别多个用户设备之间共享的场景中的多个对象,并可以从由用户设备所捕获的彩色图像生成对象的3d边界框。通过仅使用彩色图像而不使用深度图像,即使深度信息较差,例如深度信息容易丢失、较差或不可靠的黑色对象或反射对象,系统也可以生成准确的对象的3d边界框。3d对象识别在多个用户设备和场景中的多个对象方面是可缩放的。3d对象识别系统包括多个独立的子系统,其可以在多个无状态模块中实现。这些无状态模块可以根据需要扩大或缩小。这使得3d对象识别系统能够识别大型环境中(例如在建筑物或城市规模)具有数百或数千个xr设备以及具有数百或数千个3d对象的对象。
18.基于根据3d边界框所生成或更新的可通行世界模型,xr系统可以启用多个应用并且可以改善应用中的沉浸式体验。xr系统的用户或应用开发人员可以将xr内容或应用与环境的场景中已识别的一个或多个对象一起放置在物理世界中。例如,游戏应用可以在可通行世界模型中识别的真实世界咖啡桌的顶部上设置虚拟对象(例如,一杯咖啡)。
19.通过利用所描述的技术,xr应用可以具有更加沉浸式的体验。例如,交互式游戏应用的虚拟助手可以坐在可通行世界模型中已识别的椅子之一上,以便提供更加沉浸式的体验。ar应用中的空间音频可以使用检测到的3d对象的位置取决于每一个对象的类别来正确反映声音。
20.在一些实现方式中,xr系统可以基于包括检测到的3d对象的位置的可通行世界模型来构建对象的空间知识图。在一些实现方式中,xr系统可以通过利用检测到的3d对象的
位置信息来更稳健地执行。例如,通过利用3d对象检测,跟踪、定位或网格计算可以对长期动态变化(诸如移动对象)更加稳健。
21.前述概述是通过说明的方式提供的并且不旨在进行限制。
附图说明
22.附图不旨在按比例绘制。在附图中,各个图中所示的每一个相同或几乎相同的组件由相同的标号表示。为清楚起见,并非每个组件都可以在每个附图中被标记。在附图中:
23.图1是示出被配置为向用户提供与物理世界交互的ar内容的体验的ar系统中的数据流的示意图;
24.图2是示出维持可通行世界模型的ar系统的组件的示意图;
25.图3示出针对场景中的对象生成3d边界框的示例3d对象识别系统;
26.图4示出根据彩色图像流和深度图像流针对场景中的对象生成3d边界框的示例3d对象识别系统;
27.图5是用于根据场景的输入图像流来计算3d对象识别结果的示例过程的流程图;以及
28.图6是示出示例3d边界框生成系统中的几个子系统的系统图。
29.图7示出根据输入图像流针对场景中的对象生成3d边界框的示例3d对象识别系统;以及
30.图8是用于根据场景的输入图像流来计算3d对象识别结果的示例过程的流程图。
具体实施方式
31.在此描述了用于在x现实(跨现实或xr)系统中进行可缩放三维(3d)对象识别的方法和装置。为了向多个用户提供逼真的xr体验,xr系统必须了解用户的物理环境,以便正确关联虚拟对象与真实对象的位置。xr系统可以构建场景的环境地图,该地图可以跟采用传感器所收集的图像和/或深度信息来创建,该传感器是xr系统的用户所佩戴的xr设备的一部分。场景的环境地图可以包括指定场景中的真实对象的数据,该数据可以通过可缩放3d对象识别来获得。
32.图1描绘了根据一些实施例的被配置为提供与物理世界106交互的ar内容的体验的ar系统100。ar系统100可以包括显示器108。在所示实施例中,显示器108可以作为头戴式耳机(headset)的一部分由用户佩戴,使得用户可以像一副护目镜或眼镜一样将显示器戴在他们的眼睛上。显示器的至少一部分可以是透明的,使得用户可以观察透视现实110。透视现实110可以对应于在ar系统100的当前视点(例如,视野)内的物理世界106的部分,在用户佩戴结合了ar系统的显示器和传感器二者的头戴式耳机以获取有关物理世界的信息的情况下,该当前视点可以对应于用户的视点。
33.ar内容也可以呈现在显示器108上,覆盖在透视现实110上。为了在显示器108上提供ar内容与透视现实110之间的准确交互,ar系统100可以包括被配置为捕获关于物理世界106的信息的传感器122。
34.传感器122可以包括输出深度图112的一个或多个深度传感器。在一些实施例中,一个或多个深度传感器可输出深度数据,该深度数据可由不同系统或由xr系统的一个或多
个不同组件转换为深度图。每一个深度图112可以具有多个像素,每一个像素可以表示相对于深度传感器在特定方向上到物理世界106中的表面的距离。原始深度数据可能来自深度传感器以创建深度图。此类深度图可以与深度传感器可以形成新图像一样快来被更新,这可能是每秒数百或数千次。然而,该数据可能有噪声且不完整,并且具有在所示深度图上示为黑色像素的孔。
35.该系统可以包括其它传感器,诸如图像传感器。图像传感器可以获取可以被处理以以其它方式表示物理世界的单眼或立体信息。例如,可以在世界重建组件116中处理图像以创建表示物理世界中对象的全部或部分的网格。关于此类对象的元数据(包括例如颜色和表面纹理)可以类似地用传感器获取并存储为世界重建的一部分。
36.系统还可获取关于用户相对于物理世界的头部姿势(或“姿势”)的信息。在一些实施例中,系统的头部姿势跟踪组件可用于实时计算头部姿势。头部姿势跟踪组件可以在具有六个自由度的坐标系中表示用户的头部姿势,六个自由度包括例如在三个垂直轴上的平移(例如,前/后、上/下、左/右)和围绕三个垂直轴的旋转(例如,俯仰、偏航和滚动)。在一些实施例中,传感器122可以包括惯性测量单元,该惯性测量单元可以用于计算和/或确定头部姿势114。用于相机图像的头部姿势114可以指示以六自由度捕获相机图像的传感器的当前视点,但头部姿势114可以用于其它目的,诸如将图像信息与物理世界的特定部分相关或将佩戴在用户头部上的显示器的位置与物理世界相关。
37.在一些实施例中,ar设备可以根据随着用户采用ar设备在物理世界中移动所捕获的一系列图像帧中的连续图像中所识别的特征点来构建地图。尽管每一个图像帧可以随着用户移动取自不同的姿势,但系统可以通过将连续图像帧的特征与先前捕获的图像帧匹配来调节每一个连续图像帧的特征的取向以匹配初始图像帧的取向。连续图像帧的平移使得表示相同特征的点将匹配来自先前收集的图像帧的对应的特征点,可用于对齐每一个连续图像帧以匹配先前处理的图像帧的取向。所得地图中的帧可能具有在将第一图像帧添加到地图时所建立的共同取向。具有公共参考系中的特征点集的该地图可用于通过将当前图像帧中的特征与地图匹配来确定用户在物理世界内的姿势。在一些实施例中,该地图可以称为跟踪地图。
38.除了能够跟踪用户在环境内的姿势之外,该地图还可以使系统的其它组件(诸如世界重建组件116)能够确定物理对象相对于用户的位置。世界重建组件116可以接收深度图112和头部姿势114,以及来自传感器的任何其它数据,并将该数据整合到重建118中。重建118可以比传感器数据更完整且噪声更小。世界重建组件116可以使用随时间推移从多个视点对传感器数据进行空间和时间平均来更新重建118。
39.重建118可以包括以一种或多种数据格式对物理世界的表示,包括例如体素、网格、平面等。不同的格式可以表示物理世界的相同部分的替代表示或者可以表示物理世界的不同部分。在所示示例中,在重建118的左侧,物理世界的部分被呈现为全局表面;在重建118的右侧,物理世界的部分被呈现为网格。
40.在一些实施例中,由头部姿势组件114所维持的地图相对于可能维持的物理世界的其它地图可能是稀疏的。稀疏地图可以指示关注点和/或结构(诸如角落或边缘)的位置,而不是提供关于表面的位置和可能的其它特性的信息。在一些实施例中,地图可以包括由传感器122捕获的图像帧。这些帧可以被简化为可以表示关注点和/或结构的特征。结合每
一帧,关于从中获取该帧的用户的姿势的信息也可以存储为地图的一部分。在一些实施例中,由传感器获取的每个图像可以被存储或可以不被存储。在一些实施例中,系统可以在图像被传感器收集时处理图像,并选择图像帧的子集用于进一步计算。该选择可以基于限制信息添加但确保地图包含有用信息的一个或多个标准。例如,基于与已经添加到地图的先前图像帧的重叠或者基于包含被确定为可能表示静止对象的足够数量的特征的图像帧,系统可以将新的图像帧添加到地图。在一些实施例中,所选图像帧或来自所选图像帧的特征组可以用作地图的关键帧,其用于提供空间信息。
41.ar系统100可以从物理世界的多个视点随时间推移整合传感器数据。随着包括传感器的设备移动,可以跟踪传感器的姿势(例如,位置和取向)。由于已知传感器的帧姿势以及它如何与其它姿势相关,因此物理世界的这些多个视点中的每一个视点都可以融合在一起,形成单个组合的物理世界重建,它可以作为地图的抽象层并提供空间信息。通过使用空间和时间平均(即随时间推移从多个视点平均数据)或任何其它合适的方法,重建可能比原始传感器数据更完整且噪声更小。
42.在图1中所示的实施例中,地图(例如跟踪地图)表示存在单个可穿戴设备的用户所在的物理世界的一部分。在该场景中,与地图中的帧相关联的头部姿势可以表示为本地头部姿势,指示相对于单个设备在会话开始时的初始取向的取向。例如,当设备打开或以其它方式操作以扫描环境来构建该环境的表示时,可以相对于初始头部姿势跟踪头部姿势。
43.结合表征物理世界的该部分的内容,地图可以包括元数据。例如,元数据可以指示捕获用于形成地图的传感器信息的时间。可替代地或另外地,元数据可以指示传感器在捕获用于形成地图的信息时的位置。位置可以直接表达,诸如采用来自gps芯片的信息,或间接表达,诸如采用wi-fi签名,该签名指示在收集传感器数据时从一个或多个无线接入点接收到的信号强度,和/或采用收集传感器数据时用户设备连接到的无线接入点的bssid。
44.重建118可用于ar功能,诸如为遮挡处理或基于物理的处理产生物理世界的表面表示。该表面表示可能会随着用户移动或物理世界中的对象发生变化而变化。重建118的各方面可以例如由组件120使用,组件120在世界坐标中产生变化的全局表面表示(其可以由其它组件使用)。
45.ar内容可以基于该信息诸如由ar应用104生成。ar应用104可以是例如游戏程序,其基于关于物理世界的信息执行一个或多个功能,诸如视觉遮挡、基于物理的交互和环境推理。它可以通过查询来自由世界重建组件116产生的重建118的不同格式的数据来执行这些功能。在一些实施例中,组件120可以被配置为当物理世界的关注区域中的表示改变时输出更新。例如,该关注区域可以设定为近似于系统的用户附近的物理世界的一部分,诸如用户视野内的部分,或者被投影(预测/确定)进入用户的视野内。
46.ar应用104可以使用该信息来生成和更新ar内容。ar内容的虚拟部分可以结合透视现实110呈现在显示器108上,从而创建逼真的用户体验。
47.图2是示出维持可通行世界模型的ar系统200的组件的示意图。可通行世界模型是物理世界中的真实对象的数字表示。可通行世界模型可以随着物理世界中的真实对象的变化而被存储和更新。可通行世界模型可以与图像、特征、定向音频输入或其它所需数据结合存储在存储系统中。可通行世界模型可用于由图1中的世界重建组件116生成重建118。
48.在一些实现方式中,可通行世界模型可以以可以在用户之间以及在包括应用的分
布式组件之间容易地共享的方式来表示。例如,关于物理世界的信息可以表示为持久坐标系(pcf)。pcf可以基于表示物理世界中所识别的特征的一个或多个点来定义。可以选择特征,使得它们在xr系统的用户会话之间可能是相同的。pcf可以基于空间中的一个或多个点(例如,角落、边缘)稀疏地被定义,提供的关于物理世界的可用信息并不多,使得它们可以被有效地处理和传输。pcf可以包括具有相对于地图坐标系的平移和旋转的六个自由度。
49.ar系统200可以包括可通行世界组件202、操作系统(os)204、api206、sdk 208、以及应用210。os 204可以包括具有与ar设备兼容的定制驱动器的基于linux的内核,例如lumin os。api 206可以包括应用程序编程接口,该应用程序编程接口允许ar应用(例如,应用210)访问ar设备的空间计算特征。sdk 208可以包括允许ar应用的创建的软件开发工具包。
50.可通行世界组件202可以创建和维持可通行世界模型。在该示例中,传感器数据在本地设备上被收集。该传感器数据的处理可以部分地在xr设备上本地执行,并且部分地在云中执行。在一些实施例中,可以仅在xr设备上或仅在云中执行该传感器数据的处理。可通行世界模型可以包括至少部分地基于由多个用户佩戴的ar设备所捕获的数据创建的环境地图。
51.可通行世界组件202包括可通行世界框架(fw)220、存储系统228和多个空间计算组件222。
52.可通行世界框架220可以包括计算机实现的算法,该算法被编程以创建和维持可通行世界的模型。可通行世界框架220将可通行世界模型存储在存储系统228中。例如,可通行世界框架可以将当前可通行世界模型和传感器数据存储在存储系统228中。可通行世界框架220通过调用空间计算组件222来创建并更新可通行世界模型。例如,可通行世界框架可以通过触发对象识别器232以执行3d对象识别来获得场景中对象的3d边界框。
53.空间计算组件222包括可以在场景的3d空间中执行计算的多个组件。例如,空间计算组件222可以包括对象识别系统(也称为“对象识别器”)232、稀疏映射系统、密集映射系统和地图合并系统等。空间计算组件222可以生成可以用于创建或更新可通行世界模型的输出。例如,对象识别系统可以生成指定一个或多个对象的一个或多个3d边界框的输出数据,该对象已在由ar设备的传感器捕获的图像流中被识别。
54.存储系统228可以将从多个ar设备获取的可通行世界模型和传感器数据存储在一个或多个数据库中。存储系统可以向可通行世界fw 220中的算法提供传感器数据和现有可通行世界模型,例如已在场景中识别的对象。在基于新获取的传感器数据计算更新的可通行世界模型之后,存储系统228可以从可通行世界fw 220接收更新的可通行世界模型并将更新的可通行世界模型存储在数据库中。
55.在一些实现方式中,可通行世界组件202的部分或全部组件可以在云计算环境234中的多个计算机或计算机系统中实现。云计算环境234具有分布式可缩放计算资源,该资源可以物理定位在与ar系统200的位置不同的位置。云计算环境234中的多个计算机或计算机系统可以提供灵活量的存储和计算能力。使用云计算环境,ar系统200可以提供涉及多个用户设备和/或包括大量物理对象的环境的可缩放ar应用210。
56.在一些实现方式中,云存储系统230可以存储世界模型和传感器数据。云存储系统230可以具有可缩放的存储容量并且可以适应各种量的存储需求。例如,云存储系统230可
以从本地存储系统228接收最近捕获的传感器数据。随着越来越多的传感器数据由ar设备的传感器捕获,具有大存储容量的云存储系统230可以容纳最近捕获的传感器数据。云存储系统230和本地存储系统228可以存储相同的世界模型。在一些实现方式中,环境的完整世界模型可以存储在云存储系统230上,而与当前ar应用210相关的可通行世界模型的一部分可以存储在本地存储系统228上。
57.在一些实现方式中,一些空间计算组件222可以在云计算环境234中执行。例如,对象识别器224、计算机视觉算法226、地图合并和许多其它种类的空间计算组件可被实现并且在云中执行。云计算环境234可以提供更加可缩放和更强大的计算机和计算机系统来支持这些空间计算组件的计算需求。例如,对象识别器可包括深度卷积神经网络(dnn)模型,该深度卷积神经网络模型需要使用图形计算单元(gpu)或其它硬件加速器进行大量计算,并且需要大量运行时存储器来存储dnn模型。云计算环境可以支持对象识别器的这种需求。
58.在一些实现方式中,空间计算组件(例如对象识别器)可以在云中执行计算,同时使用存储在云存储系统230中的传感器数据和现有世界模型。在一些实现方式中,空间计算和云存储可以存在于同一云计算机系统中,以便在云中实现高效计算。云计算结果(例如对象识别结果)可以被进一步处理,并且然后作为更新的可通行世界模型存储在云存储系统230中。
59.在一些实现方式中,空间计算组件可以包括需要可变量的计算资源的多个子系统。例如,对象识别器224可以包括多个子系统,每一个子系统需要不同量的计算资源,诸如存储器、处理器周期,例如cpu或gpu周期等,这取决于系统上的当前负载。
60.这些子系统可以被实现为可以根据需要按比例扩大和缩小的无状态模块。无状态模块是一种无状态软件应用,它不取决于计算序列中的一个或多个先前状态。每一个无状态模块将计算与状态解耦,并通过每一个无状态模块的输入和输出来管理状态。换句话说,无状态模块可以对每一个输入执行计算,而无需模块维持先前输入的任何状态。这些模块可以在不存储传感器数据或其它中间数据的情况下执行它们相应的计算工作负载,而可通行世界模型存储在云存储系统230中。无状态模块可以彼此独立地按比例扩大或缩小。
61.对象识别系统(也称为“对象识别器”)224可以使用对象识别算法针对环境的场景中的多个3d对象生成3d对象识别输出。对象识别系统224可以将从一个或多个ar设备的传感器获取的传感器数据作为输入。从每一个ar设备获取的传感器数据可以提供图像流(例如彩色图像),该图像从多个相机姿势来表征场景。对象识别算法可以划分为多个独立的无状态模块,该无状态模块可以在云计算环境234中运行。多个无状态模块可以取决于每一个模块当前的计算需要进行扩大或缩小。结合图3和图4描述了可缩放3d对象识别系统的更多细节。
62.图3示出针对场景中的对象生成3d边界框的示例3d对象识别系统700。系统700可以是在云环境中运行的对象识别器224的一个示例。场景702的顶视图在左侧示出。场景702描绘了客厅的场景,该客厅具有若干3d对象,包括餐桌、围绕餐桌的四把餐椅、长沙发、单人沙发,以及由长沙发和单人沙发围绕的咖啡桌。使用一个或多个相机捕获场景702的输入图像流。
63.在一些实现方式中,来自多个ar设备的多个相机(例如rgb-d)可以从各种相机姿势生成场景的彩色图像和深度图像。例如,五个rgb-d相机可以获得场景的信息。随着每一
个相机在客厅移动,每一个相机都可以在一系列时间戳处捕获图像流。在特定时间戳处,五个相机中的相机姿势710、712、714、716和718在图3中示出。
64.每一个相机姿势用多条直线示出,并且每条直线将从那个姿势可见的每一个对象中心连接到相机。例如,相机姿势710包括连接到餐椅的第一条线、连接到长沙发的第二条线、连接到咖啡桌的第三条线、以及连接到单人沙发的第四条线。这意味着餐椅、长沙发、咖啡桌和单人沙发从该相机姿势可见。餐桌和其它三把餐椅从该相机姿势不可见。
65.在一些实现方式中,随着佩戴ar设备的用户在场景中行进,rgb-d相机可以生成场景的彩色图像流和深度图像流。例如,随着佩戴ar设备的用户进入客厅,ar设备可以捕获与相机姿势710和712对应的多个图像。随着用户走向咖啡桌,ar设备可以捕获与相机姿势714和716对应的多个图像。最后,当用户坐在长沙发上时,ar设备可以捕获与相机姿势718对应的多个图像。从相机姿势710、712、714、716和718所捕获的图像可以是场景702的图像流。
66.由多个相机姿势所捕获的场景702的图像流可以提供场景中3d对象的丰富3d信息。即使一些对象在一些相机姿势下被遮挡或不可见,场景的图像流也可用于生成对象识别输出。
67.在一些实施例中,场景的图像流可以包括彩色图像流和深度图像流。
68.彩色图像是由相机捕获的二维(2d)图像或视频的帧。每一个2d图像可以是描绘物理世界中一个或多个对象的颜色及其周围环境的颜色的rgb图像。可以在一系列对应的时间戳处捕获彩色图像。彩色图像的时间戳信息记录了彩色图像正在被捕获的日期和时间。
69.深度图像捕获场景中对象的深度信息。深度图像中的强度值表示对象的表面距相机姿势的距离。也就是说,图像中每一个像素的强度值表示场景中在该像素处描绘的对象距捕获深度图像的相机的距离。深度图像的时间戳信息记录了深度图像正在被捕获的数据和时间。rgb-d相机可以以不同的帧速率,或者在一些实施例中,以相同的帧速率同时捕获彩色图像流和深度图像流。
70.3d对象识别系统704可以处理场景702的图像流并且可以生成指定场景702中的一个或多个对象的一个或多个3d边界框的数据。3d对象识别系统704属于创建和维持可通行世界模型的可通行世界组件202。所生成的指定场景中被识别的对象的输出数据可用于创建和更新可通行世界模型。
71.在一些实现方式中,该一个或多个ar设备可以向云计算环境234发送图像流。在一些实现方式中,该一个或多个ar设备可以在向云计算环境234发送经处理的图像之前对ar设备执行预处理。
72.3d对象识别系统可以采用云计算环境234执行可缩放3d对象识别。3d对象识别系统可以使用可以划分为多个子系统的3d对象识别算法。子系统可以在多个独立的无状态模块中实现。可以根据需要启动、重新启动、扩大或缩小无状态模块。例如,当系统正在处理从多个ar设备捕获的大量输入图像流时,系统可以扩大无状态模块,使得可以并行处理输入图像帧。
73.在一些实现方式中,3d对象识别系统可以启动多个模块,该模块可以对场景702中的多个对象执行3d对象识别。多个模块可以并行运行并且彼此独立。可通行世界模型可以基于每一个模块的3d对象识别输出进行更新,并且不需要等待整个场景中所有对象的3d对象识别输出。
74.例如,系统可以具有第一模块以生成用于单人沙发的3d边界框,并且系统可以具有第二模块以生成用于咖啡桌的3d边界框。第一模块和第二模块可以处理不同的对象,即单人沙发和咖啡桌。因此,第一模块和第二模块可以根据需要独立缩放,以计算单人沙发和咖啡桌的3d边界框。3d对象识别系统的子系统的更多细节将结合图4进行描述。
75.如顶视图706中所示,生成的对象的3d边界框与场景重叠。每一个对象的3d边界框是紧密围绕对象的估计矩形框。例如,矩形框708是咖啡桌的3d边界框的顶视图。可以通过框的拐角的坐标或其它参考位置的坐标、框的宽度、高度和深度来指定3d边界框。在一些实现方式中,可以使用相对于边界框的表面上的固定点的一组参考坐标(即,与框的拐角不同的坐标,例如锚点)来指定3d边界框。
76.图4示出示例3d对象识别系统800,其根据彩色图像流和深度图像流针对场景中的对象生成3d边界框。系统800可以是在云环境中运行的对象识别器224的一个示例。系统800接收场景的输入图像流。输入图像流包括彩色图像802的流和深度图像804的流。彩色图像802和深度图像804可以是不同帧速率的异步流。例如,彩色图像802的流可以是每秒5帧,并且深度图像802的流可以是每秒1帧。彩色图像802的流和深度图像804的流可以具有不同的图像分辨率。例如,彩色图像流可以具有比深度图像流高得多的分辨率。
77.系统将彩色图像流中的多个彩色图像中的每一个彩色图像作为输入。该系统可以处理彩色图像流中的每一个彩色图像。可替代地,系统可以处理以特定时间间隔从彩色图像流中选择的彩色图像的子集。也就是说,系统可能不会处理彩色图像流中的每个彩色图像。在系统处理彩色图像时,深度图像流可以临时存储在存储系统中。
78.每一个输入彩色图像从相机姿势捕获环境的场景。例如,输入彩色图像802从相机姿势710捕获场景702的部分视图,并且可见对象包括场景702中的一把餐椅、长沙发、单人沙发和咖啡桌。
79.通过对象识别系统处理每一个输入彩色图像802。对象识别系统可以根据输入彩色图像生成二维对象识别输出。2d对象识别输出可以包括针对已在彩色图像中识别的一个或多个对象中的每一个对象标识彩色图像中的相应的对象掩膜的数据。对象掩膜可以包括可以指示像素是否属于对象的多个像素的值,即前景像素或背景像素。例如,咖啡桌的分割掩膜的轮廓803覆盖在输入彩色图像802的顶部。轮廓803内侧的区域指示属于咖啡桌对象的像素。
80.2d对象识别系统可以实现执行2d对象识别的一种或多种计算机视觉算法。该一种或多种计算机视觉算法可以包括基于机器学习的算法,例如,使用机器学习模型的算法,该机器学习模型先前已经采用包括2d对象掩膜标签的训练数据进行了训练。
81.可以使用各种2d对象识别算法,诸如掩膜区域卷积神经网络(mask region-convolutional neural network(r-cnn))(he,kaiming等人"mask r-cnn."proceedings of the ieee international conference on computer vision.2017)、单发检测器(single shot detector(ssd))(wei liu,dragomir anguelov,dumitru erhan,christian szegedy,scott reed,cheng-yang fu,and alexander c.berg.ssd:single shot multi-box detection.2016.),以及yolo检测器(j.redmon,s.divvala,r.girshick,and a.farhadi.you only look once:unified,real-time object detection.in2016ieee conference on computer vision and pattern recognition(cvpr),pages 779

788,
june 2016.)等。
82.例如,2d对象识别系统可以使用在对象检测数据集上训练的mask r-cnn神经网络,该对象检测数据集检测关注的室内对象,例如椅子、桌子、沙发、电视等。mask r-cnn可以针对预定数量的对象中的每一个对象生成二进制掩膜。每一个二进制对象掩膜可以将前景对象与背景分开。
83.在一些实现方式中,如果在输入彩色图像中没有识别到对象,则系统可以继续处理彩色图像流中的多个彩色图像中的下一个输入彩色图像。
84.在一些实现方式中,如果已经在输入彩色图像中识别出一个或多个对象,则系统可以继续基于时间戳使输入彩色图像与深度图像同步。该系统可以仅对其中已检测到至少一个关注对象的彩色图像执行同步。以该方式,系统可以减少所需的计算量,因为许多输入彩色图像可能不具有关注对象。
85.输入彩色图像和深度图像流中的多个深度图像作为输入提供给同步系统。同步系统可以针对彩色图像802基于对应的深度图像的时间戳和彩色图像的时间戳确定该对应的深度图像804。在一些实现方式中,在多个深度图像之间,同步系统可以标识具有与输入彩色图像802最接近的时间戳的深度图像。如果时间戳差小于某个阈值,则将标识的深度图像接受为与输入彩色图像802的对应的深度图像804。在一些实现方式中,可以从多个ar设备的不同相机捕获输入彩色图像和深度图像。例如,如果多个ar设备正在捕获客厅的深度图像,则基于时间戳信息和相机姿势,系统可以将由第一ar设备捕获的深度图像标识为与输入彩色图像的对应的深度图像,该输入彩色图像由第二ar设备捕获。
86.标识对象掩膜的数据和对应的深度图像804作为输入提供给3d边界框生成系统。3d边界框生成系统可以根据对象掩膜和对应的深度图像,针对已在输入彩色图像802中识别的一个或多个对象中的每一个对象,确定相应3d边界框。
87.在一些实现方式中,对于具有有效深度值的每一个2d图像坐标,系统可以通过将彩色图像投影到深度图像来将2d图像坐标投影到3d体素坐标中。给定针对在彩色图像中识别的对象的预测二进制2d对象掩膜,系统可以在3d对象掩膜中生成对应的3d体素。
88.在一些实现方式中,深度图像可以具有比彩色图像更低的图像分辨率。例如,深度图像的分辨率可以是200
×
400,而对应的彩色图像可以是800
×
1600。从彩色图像中的2d对象掩膜所投影的3d体素可以具有与深度图像分辨率对应的较低分辨率。这可以节省后续处理步骤中的计算成本。
89.例如,根据咖啡桌的深度图像804和2d对象掩膜803,3d边界框生成系统可以确定对象掩膜中每一个像素的深度值。该系统可以生成由体素805表示的3d对象掩膜,并且可以根据输入彩色图像中的像素位置和对应的深度图像中的对应的深度值来计算每一个体素。3d边界框生成系统可以基于3d对象掩膜805来确定咖啡桌的3d边界框。
90.例如,系统可以从分割掩膜803中的前景像素的位置计算体素表示805。对于具有2d图像坐标(x,y)的每一个前景像素,系统可以使用对应的深度值和深度图像的相机姿势将图像坐标投影到世界坐标系。世界坐标系可以预先确定,并且可以与深度图像的相机姿势相同。给定基于深度图像的分辨率所确定的体素分辨率r(例如,r=4cm),世界坐标系中的每一个点都被离散化为对应的体素。基于这些转换,给定针对输入彩色图像中对象的2d二进制对象掩膜803,系统可以将二进制掩膜的所有前景像素投影到世界坐标系中的对应
的3d体素805。
91.在一些实现方式中,系统可以维持对象数据,该对象数据指定先前已经在环境中的场景中识别的对象。对象数据可以包括先前已在环境场景的多个视图中识别的一个或多个对象的3d边界框。该系统可以将先前识别的对象的对象数据存储在存储系统230或228中。
92.在一些实现方式中,3d边界框生成系统可以取得指定先前已识别的对象的对象数据,并更新指定先前已识别的对象的对象数据,该先前已识别的对象在输入彩色图像中当前已识别的一个或多个对象附近。
93.3d边界框生成系统可以包括多视图融合系统。多视图融合系统可以获得先前识别的在输入图像的相机姿势中可见的对象808的所维持的对象数据。多视图融合系统可以将当前输入图像中当前识别的对象与先前识别的对象相关联。多视图融合系统可以在当前识别的对象的所生成的3d对象掩膜与指定与当前识别的对象相关联的先前识别的对象的所维持的对象数据之间执行融合810。
94.例如,多视图融合系统可以通过针对当前输入图像邻域中的对应的对象计算当前识别的3d对象掩膜与先前识别的3d对象掩膜的相交,估计当前输入图像中可见的对象808。邻域大小可以是预定值,例如当前输入图像的5米半径。在一些实现方式中,与当前识别的3d对象掩膜具有非零相交的所有先前识别的对象可以被标识为可见对象。例如,系统可以确定咖啡桌的先前识别的3d对象掩膜807在当前相机姿势中可见。
95.例如,在加载在当前相机姿势中可见的先前识别的对象808之后,多视图融合系统可以执行对象关联和融合。对于在当前输入彩色图像802中识别的806中的每一个3d对象掩膜,系统可以基于两个掩膜的相对距离来确定是否存在先前识别的对象的对象掩膜。例如,系统可以确定3d对象掩膜807与识别的咖啡桌的3d对象掩膜805相关联。该系统可以通过计算两个对象掩膜的并集(union)来生成更新的3d对象掩膜809。在该示例中,通过计算两个对象掩膜的并集,系统可以对两个对象掩膜执行融合。
96.在处理彩色图像流中的多个图像中的每一个图像之后,系统可以生成最终输出812,该最终输出包括指定场景中的一个或多个已识别的对象的一个或多个3d边界框的数据。例如,系统可以针对客厅中的咖啡桌输出3d边界框814。
97.3d对象检测系统可以对每个输入彩色图像(例如,每一个帧)独立地运行3d对象识别。该系统可以在不同的无状态模块上并行处理每个输入彩色图像。在一些实现方式中,系统可以使用对象级锁定/解锁方法来确保相同对象不会由不同模块被同时更新。
98.例如,在系统确定在当前相机姿势中存在先前识别的咖啡桌807之后,该系统可以锁定存储在存储系统中的先前识别的咖啡桌的信息,同时与在当前输入图像中识别的3d对象掩膜执行对象关联和融合810。这可以确保咖啡桌不会被并行运行的其它模块更新。
99.可以将一个或多个3d边界框812提供给创建和维持可通行世界模型的可通行世界组件202。可通行世界组件可以直接在可通行世界模型中使用一个或多个3d边界框。可替代地或组合地,可通行世界组件可以进一步处理一个或多个3d边界框,以便生成新的或更新的可通行世界模型。
100.图5是用于根据场景的输入图像流计算3d对象识别结果的示例过程900的流程图。该过程将被描述为由适当编程的ar系统200执行。过程900可以在云计算环境234中执行。在
一些实现方式中,过程900中的一些计算可以在可通行世界组件202中的本地ar设备中完成,而本地ar设备被连接到云端。
101.系统维持指定在环境中的场景中已识别的对象的对象数据(902)。场景可以包括小区域或大区域,例如,房间、建筑物的地板,或大到城市等。场景中的对象可以包括3d真实世界对象。对象可以是静止对象或移动对象。指定已识别对象的对象数据可以包括先前计算的场景中对象的3d边界框或3d对象掩膜。该系统可以通过将对象数据存储在存储系统中来维持对象数据,该存储系统可以在ar设备上或在云中,或两者兼而有之。由系统维持的对象数据可以使用由一个或多个ar设备所收集的环境场景的图像进行更新。
102.系统接收场景的输入图像流(904)。输入图像流可以包括彩色图像流和深度图像流。输入图像流可以来自一个或多个ar设备,该ar设备从一个或多个相机姿势捕获场景。在一些实现方式中,ar设备可以在ar设备的用户在场景中行进时捕获输入图像流。输入图像流可以包括对应的相机姿势信息。相机姿势可以包括六个自由度(6dof),包括相对于周围环境的坐标系前后、上下、左右改变相机姿势的自由度。
103.在一些实现方式中,共享环境的一个或多个ar设备被连接到云计算环境234。该一个或多个ar设备可以将收集的相机图像发送到云。系统可以使用云中的图像流识别一个或多个对象。
104.对于彩色图像流中的多个彩色图像中的每一个彩色图像,系统将彩色图像作为输入提供给对象识别系统(906)。例如,系统可以将每一个彩色图像传递给2d分割模块,该2d分割模块可以对关注对象执行对象分割。2d分割模块可以针对椅子、桌子、沙发、海报、电视屏幕等生成分割掩膜。
105.系统可以向对象识别系统提供捕获同一对象的各种视图的输入图像。对象识别系统可以从各种视图生成同一对象的2d分割掩膜。例如,系统2d分割模块可以从同一椅子的左侧视图、右侧视图、前视图和后视图生成椅子的四个分割掩膜。具有来自不同视图的分割掩膜,系统稍后可以生成关注对象的更完整的3d对象识别输出。
106.系统接收作为来自对象识别系统的输出的识别输出,该识别输出标识针对已在彩色图像中识别的一个或多个对象中的每一个对象的彩色图像中的相应的对象掩膜(908)。在一些实现方式中,对象识别系统可以包括经训练的深度神经网络(dnn)模型。dnn模型可以将彩色图像作为输入,并且可以针对已在彩色图像中识别的一个或多个对象中的每一个对象生成相应的2d对象掩膜。每一个对象掩膜可以根据输入彩色图像的对应的相机姿势来表征对象的大小和形状。
107.系统将彩色图像和深度图像流中的多个深度图像作为输入提供给同步系统(910)。同步系统可以针对彩色图像基于对应的深度图像的时间戳和彩色图像的时间戳来确定该对应的深度图像。每一个深度图像或彩色图像具有时间戳,该时间戳描述了该图像正在被捕获的日期和时间。深度图像和彩色图像的时间戳信息可以指示深度图像流和彩色图像流之间的时间关系。
108.在一些实现方式中,同步系统可以标识具有与彩色图像的时间戳最接近的时间戳的候选深度图像。同步系统可以确定候选深度图像与彩色图像之间的时间差小于阈值,例如1秒。作为响应,同步系统可以将候选深度图像确定为针对彩色图像的对应的深度图像。如果系统不能标识针对彩色图像的对应的深度图像,则系统可以停止处理彩色图像并开始
处理彩色图像流中的下一个彩色图像。
109.系统提供标识对象掩膜的数据和对应的深度图像作为3d边界框生成系统的输入(914)。3d边界框生成系统从对象掩膜和对应的深度图像中针对已在彩色图像中识别的一个或多个对象中的每一个对象确定相应的3d边界框。
110.在一些实现方式中,3d边界框生成系统可以包括多个子系统。图6是示出示例3d边界框生成系统1000中的若干子系统的系统图。3d边界框生成系统1000可以包括多视图融合系统1004、对象细化系统1010和边界框细化系统1012。这些子系统可以被实现为无状态模块,使得这些子系统可以以无状态方式并且彼此独立地操作。每一个无状态模块都可以根据需要独立启动、重新启动、扩大或缩小,而不影响整体系统性能。
111.多视图融合系统可以生成3d对象掩膜的初始集合。在一些实现方式中,多视图融合系统可以执行多个步骤以生成3d对象掩膜的初始集合。系统可以确定所生成的对象掩膜对应于深度图像中的一个或多个有效深度值。响应于确定所生成的对象掩膜对应于深度图像中的一个或多个有效深度值,系统可以在距深度相机中心的预定距离内找到已在彩色图像中识别的附近对象。基于深度图像中的相应像素的深度值,系统可以针对每一个附近对象生成每一个对象掩膜的3d体素表示。每一个对象掩膜的3d体素表示是3d对象的3d分割掩膜。3d分割掩膜中的每一个体素可以表示对象的对应部分的3d坐标。
112.如以上所讨论,系统维持对象数据,该对象数据指定已在环境中的场景中识别的对象。系统可以找到在当前相机姿势中可见的先前识别的对象的所维持的对象数据。所维持的对象数据可以包括先前识别的对象的3d对象掩膜。在一些实现方式中,针对每一个先前识别的对象的所维持的对象数据可以包括一组3d加权体素和类别标签。例如,针对每一个体素的权重值可以指示该体素表示先前识别的对象的一部分的可能性。类别标签可以指示对象所属的类,诸如椅子、门、沙发、电视等。
113.在一些实现方式中,多视图融合系统可以包括关联系统1006和融合系统1008。
114.关联系统1006可以从在当前相机姿势中可见的先前识别的对象的维持对象数据中标识指定与彩色图像中当前识别的对象的对象掩膜匹配的先前识别的对象的对象数据。在一些实现方式中,关联系统可以将彩色图像中的识别对象的3d对象掩膜与先前已识别的对应的对象的所维持的3d对象掩膜相关联。
115.关联系统可以使用解决分配问题的组合优化算法来执行对象关联。例如,系统可以使用匈牙利(hungarian)方法(munkres,james.“algorithms for assignment and transport questions.”journal of the society for industrial and applied mathematics 5,no.1(1957):32-38),将当前输入图像中的检测与先前识别的对象相关联。
116.融合系统1008可以通过将彩色图像中的对象掩膜与匹配的对象数据组合来针对彩色图像中的每一个识别的对象生成初始3d对象掩膜。在一些实现方式中,如果发现在彩色中识别的对象的3d对象掩膜与先前识别的对象的3d对象掩膜之间的关联,则系统可以通过掩膜融合来更新3d对象掩膜。例如,融合系统可以增加两个3d对象掩膜之间的重叠体素的权重值,指示这些体素表示对象部分的可能性增加。融合系统还可以将新体素添加到更新的3d对象掩膜,并且这些新体素对应于两个3d对象掩膜之间的非重叠体素。
117.在一些实现方式中,系统可以确定彩色图像中的被识别的对象在当前相机姿势中可见的先前识别的对象的所维持的对象数据之间不具有关联的现有对象,系统可以用3d对
象掩膜创建新对象实例,并且系统可以将新对象实例添加到所维持的对象数据。
118.多视图融合系统1004可以关联和融合来自输入图像流的多个3d对象掩膜。多视图融合系统可以以对象级生成对象掩膜。每一个对象掩膜可以独立被更新,并且多个对象可以同时且异步被更新。
119.例如,系统可以同时更新长沙发的对象掩膜811和咖啡桌的对象掩膜809。系统可以使多视图融合系统进行长沙发的对象掩膜的关联和融合,并且系统可以异步地使另一个多视图融合系统进行咖啡桌的对象掩膜的关联和融合。这两个系统可以同时且并行运行。因此,该系统可以有效地处理大量图像和大量对象。
120.对象细化系统1010可以细化3d对象掩膜的初始集合以生成3d边界框的初始集合。对于由多视图融合系统生成的每一个新的或更新的对象,系统可以找到新的或更新的对象邻域的附近对象。对象细化系统可以根据多个标准执行多个对象细化操作。
121.例如,系统可以使用3d连接组件算法从3d对象掩膜的初始集合中去除噪声体素(samet,h.;tamminen,m.(1988)."efficient component labeling of images of arbitrary dimension represented by linear bintrees".ieee transactions on pattern analysis and machine intelligence.10(4):579.)。该系统可以去除从足够数量的视图中看不到的体素或对象。如果它们属于相关的类别,诸如桌子和桌子,则系统可以合并附近对象。
122.在对象细化操作之后,系统可以将细化的3d对象掩膜转换为3d边界框的初始集合。该系统可以生成3d长方体边界框,该3d长方体边界框以所选的相机姿势取向。相机姿势可以与输入彩色图像之一的相机姿势相同,或者相机姿势可以由可通行世界组件202预先确定。
123.边界框细化系统1012可以细化3d边界框的初始集合以生成一个或多个最终3d边界框812。对于由对象细化系统生成的每一个新的或更新的边界框,边界框细化系统1012可以去除噪声边界框。边界框细化系统可以基于多个标准执行多个边界框细化操作。
124.例如,系统可以通过诸如非最大抑制算法(neubeck,alexander,and luc van gool."efficient non-maximum suppression."18th international conference on pattern recognition(icpr'06).vol.3.ieee,2006)的算法去除属于同一类别的重叠边界框。作为另一个示例,系统可以去除不满足给定类别标签的尺寸约束的边界框。例如,该系统可以去除标为沙发的小于30厘米长的边界框。
125.在一些实现方式中,对象识别系统、同步系统、多视图融合系统(例如,关联系统和融合系统)、对象细化系统和边界框细化系统可以以无状态方式并且彼此独立地操作。通过将对象识别任务划分为多个子系统,3d对象识别系统可以在独立的无状态模块中实现每一个子系统。每一个无状态模块都可以根据需要独立启动、重新启动、扩大或缩小,而不影响整体系统性能。
126.例如,如果多个ar设备的多个用户正在查看同一对象,则在云处接收的输入图像的每秒帧数高于由2d对象识别系统所生成的每秒输出的数量,因为2d对象识别系统的每一个无状态模块可能需要1秒来执行2d对象检测和分割。系统可以扩大执行2d对象识别的无状态模块,以确保该模块的吞吐量足够高,并且不会阻塞子序列处理模块。
127.3d对象识别系统在ar设备(或ar设备用户)的数量和环境场景中的对象的数量方
面是可缩放的。多个ar设备可以连接到云计算环境,并且可以共同贡献用于3d对象识别的多个输入数据流,并且可以共享识别的3d对象。
128.系统接收作为3d边界框生成系统的输出的数据,该数据指定针对在彩色图像中识别的一个或多个对象的一个或多个3d边界框(916)。在一些实现方式中,系统还在存储系统中存储指定一个或多个3d边界框的数据作为中间3d边界框。
129.系统提供指定一个或多个3d边界框的数据作为输出(918)。该系统可以将一个或多个3d边界框作为更新的3d边界框存储在云中的存储系统230中。该系统还可以将最近的3d边界框的副本存储在ar设备上的存储系统228中。该系统可以将输出提供给ar系统的可通行世界组件202。可通行世界组件202可以使用一个或多个识别对象的一个或多个3d边界框来创建或更新跨多个ar设备共享的可通行世界模型。例如,一个或多个3d边界框可用于在可通行世界模型中创建或更新持久坐标系(pcf)。
130.在一些实现方式中,3d边界框生成系统可以从对象掩膜和对应的深度图像中针对已在彩色图像中识别的一个或多个对象中的每一个对象确定相应的3d对象掩膜。该系统可以接收作为3d边界框生成系统的输出的数据,该数据指定针对彩色图像中识别的一个或多个对象的一个或多个3d对象掩膜。该系统可以提供指定一个或多个3d对象掩膜的数据作为输出。可通行世界模型可以包括一个或多个3d对象掩膜的信息。在一些实现方式中,系统可以输出标识已识别的对象的3d对象掩膜的3d网格数据。
131.ar应用可以使用基于3d对象掩膜的可通行世界模型来获得更加沉浸式的体验。例如,交互式游戏应用的虚拟助手可以坐在可通行世界模型中已识别的椅子上。使用椅子的3d网格数据,虚拟助手可以坐在椅子的座位上,而不是坐在椅子的3d边界框的顶部上,提供更加沉浸式的体验。
132.图7示出示例3d对象识别系统300,其根据输入图像流针对场景中的对象生成3d边界框。系统300可以是在云环境中运行的对象识别器224的一个示例。场景的输入图像流可以使用一个或多个相机来捕获。在一些实现中,来自多个ar设备的多个相机(例如,rgb相机)可以从各种相机姿势生成场景的图像。例如,彩色图像302、304和306的流可以描绘办公室环境的场景。办公室环境可以具有若干3d对象,包括显示器、桌子、椅子、键盘和鼠标等。相同的键盘314可以从与输入图像302、304和306对应的三个相机姿势捕获为314(a)、314(b)和314(c)。随着每一个相机在环境(例如,办公室环境)中移动,每一个相机可以在一系列相机姿势处捕获图像流。
133.在一些实施例中,场景的图像流可以包括彩色图像流。彩色图像流可以包括由相机捕获的二维(2d)图像或视频的帧。彩色图像流可以具有一定的帧速率。例如,彩色图像流可以是每秒5帧。每一个2d图像可以是描绘物理世界中一个或多个对象的颜色及其周围环境的颜色的rgb图像。当捕获彩色图像时,每一个彩色图像都与标识相机姿势的数据相关联。相机姿势可以包括六个自由度(6dof),包括相对于周围环境的坐标系前后、上下、左右改变相机姿势的自由度。
134.一些3d对象可以是暗的,例如黑色,或者是反射的。使用深度相机捕获这些黑色或反射的3d对象的深度图像可能具有挑战性。换句话说,这些3d对象的深度信息可能质量较差,并且可能不利于执行3d对象识别。例如,键盘或鼠标可以是黑色的,并且rgb-d相机中的深度传感器可能无法很好地捕获键盘或鼠标的深度信息。
135.即使在深度信息不可用的情况下,由多个相机姿势捕获的场景图像流也可以提供场景中3d对象的丰富3d信息。尽管深度信息可能不完全可用,但场景的图像流可用于生成3d对象(例如键盘)的对象识别输出。
136.3d对象识别系统310可以处理场景的图像流并且可以生成指定场景中的一个或多个对象的一个或多个3d边界框的数据312。例如,从输入图像302、304和306的流中,3d对象识别系统310可以识别每一个图像中相同键盘(例如,键盘314(a)、314(b)和314(c))的2d边界框。基于2d边界框,3d对象识别系统310可以生成键盘的3d边界框324。
137.对象的每一个3d边界框是紧密围绕3d对象的估计矩形框。例如,矩形框324是键盘314(a)(314(b)或314(c))的3d边界框。
138.3d对象识别系统310属于创建和维持可通行世界模型的可通行世界组件202。指定场景中识别的对象的所生成的输出数据312可用于创建和更新可通行世界模型。
139.在一些实现方式中,该一个或多个ar设备可以向云计算环境234发送图像流。在一些实现方式中,该一个或多个ar设备可以在向云计算环境234发送处理的图像之前对ar设备执行预处理。
140.3d对象识别系统可以采用云计算环境234执行可缩放3d对象识别。3d对象识别系统可以使用可以划分为多个子系统的3d对象识别算法。子系统可以在多个独立的无状态模块中实现。可以根据需要启动、重新启动、扩大或缩小无状态模块。例如,当系统正在处理从多个ar设备捕获的大量输入图像流时,系统可以扩展无状态模块,使得可以并行处理输入图像帧。
141.在一些实现方式中,3d对象识别系统可以启动多个模块,该模块可以对场景中的多个对象执行3d对象识别。多个模块可以并行运行并且彼此独立。可通行世界模型可以基于每一个模块的3d对象识别输出进行更新,并且不需要等待整个场景中的所有对象的3d对象识别输出。
142.例如,系统可以具有第一模块,以使用键盘图像314(a)、314(b)和314(c)针对第一键盘314生成3d边界框,并且系统可以具有第二模块,以使用键盘图像316(b)和316(c)针对第二键盘316生成3d边界框。第一模块和第二模块可以处理不同对象(即第一键盘和第二键盘)的数据。因此,第一模块和第二模块可以根据需要独立缩放,以计算第一键盘的3d边界框324和第二键盘的3d边界框326。3d对象识别系统的子系统的更多细节将结合图8进行描述。
143.图8是用于根据场景的输入图像流计算3d对象识别结果的示例过程400的流程图。该过程将被描述为由适当编程的ar系统200执行。过程400可以在云计算环境234中执行。在一些实现方式中,过程400中的一些计算可以在可通行世界组件202中的本地ar设备中完成,而本地ar设备被连接到云。
144.系统维持指定在环境中的场景中已识别的对象的对象数据(402)。场景可以包括小区域或大区域,例如,房间、建筑物的地板,或大到城市等。场景中的对象可以包括3d真实世界对象。对象可以是静止对象或移动对象。指定已识别对象的对象数据可以包括先前计算的场景中对象的3d边界框或3d对象掩膜。该系统可以通过将对象数据存储在存储系统中来维持对象数据,该存储系统可以在ar设备上或在云中,或两者兼而有之。由系统维持的对象数据可以使用由一个或多个ar设备所收集的环境场景的图像进行更新。该系统可以将先
前识别的对象的对象数据存储在存储系统230或228中。
145.系统接收场景的输入图像流(404)。输入图像流可以包括彩色图像流。输入图像流可以来自一个或多个ar设备,该ar设备从一个或多个相机姿势捕获场景。在一些实现方式中,ar设备可以在ar设备的用户在场景中行进时捕获输入图像流。输入图像流可以包括对应的相机姿势信息。相机姿势可以包括六个自由度(6dof),包括前后、上下、左右改变相机姿势的自由度。
146.系统可以处理输入图像流中的每一个输入图像。可替代地,系统可以处理以特定时间间隔从输入图像流中选择的输入图像的子集。也就是说,系统可能不会处理输入图像流中的每个输入图像。当系统处理一些输入图像时,输入图像流可以临时存储在存储系统中。
147.在一些实现方式中,共享环境的一个或多个ar设备被连接到云计算环境234。该一个或多个ar设备可以将收集的相机图像发送到云。系统可以使用云中的图像流来识别一个或多个对象。
148.对于场景的多个输入图像中的每一个输入图像,系统将输入图像作为输入提供给对象识别系统(406)。例如,系统可以将每一个彩色图像传递给对象识别系统,例如2d对象检测模块,该2d对象检测模块可以对关注对象(例如键盘或鼠标)执行对象检测。
149.系统可以向对象识别系统提供捕获同一对象的各种视图的输入图像。对象识别系统可以从各种视图生成同一对象的2d边界框。例如,2d对象检测模块可以从同一键盘的左侧视图、右侧视图和前视图生成用于键盘的三个2d边界框。具有来自不同视图的2d边界框,系统稍后可以生成关注对象的3d对象识别输出。
150.对象识别系统(例如2d对象识别系统)可以实现执行2d对象识别的一种或多种计算机视觉算法。该一种或多种计算机视觉算法可以包括基于机器学习的算法,例如,使用机器学习模型的算法,该机器学习模型先前已经采用包括2d对象边界框标签的训练数据进行了训练。在一些实现方式中,对象识别系统可以包括经训练的深度神经网络(dnn)模型。
151.可以使用各种2d对象识别算法,诸如快速区域卷积神经网络(faster region-convolutional neural network(r-cnn))(ren,shaoqing,kaiming he,ross girshick,and jian sun."faster r-cnn:towards real-time object detection with region proposal networks."in advances in neural information processing systems,pp.91-99.2015)、单发检测器(single shot detector(ssd))(wei liu,dragomir anguelov,dumitru erhan,christian szegedy,scott reed,cheng-yang fu,and alexander c.berg.ssd:single shot multi-box detection.2016.),以及yolo检测器(j.redmon,s.divvala,r.girshick,and a.farhadi.you only look once:unified,real-time object detection.in 2016ieee conference on computer vision and pattern recognition(cvpr),pages 779

788,june 2016.)等。
152.例如,2d对象识别系统可以使用在对象检测数据集上训练的快速r-cnn神经网络模型,该对象检测数据集检测关注的室内对象,例如椅子、桌子、水瓶、键盘、书籍、鼠标等。快速r-cnn可以针对预定数量的对象中的每一个对象生成边界框。每一个对象边界框可以指示已在场景中识别的对象的位置。
153.系统接收作为对象识别系统的输出的识别输出,该识别输出标识针对输入图像中
the acm.1981jun 1;24(6):381-95)。
161.系统可以使用已在输入图像中识别的对象的椭圆体来生成3d边界框的初始集合。例如,对于针对输入图像中识别的对象生成的每一个3d椭圆体,系统可以从该椭圆体生成紧密拟合的重力对齐的3d边界框,该边界框可以是对象的初始3d边界框(rubino c,crocco m,del bue a.3dobject localization from multi-view image detections.ieee transactions on pattern analysis and machine intelligence.2017may 4;40(6):1281-94)。给定椭圆体矩阵,通过计算特征向量和矩阵的特征值,可以提取椭圆体的网格点。椭圆体的网格点可以基于已知的重力方向投影到x-y平面。可以在x-y平面中计算最紧密拟合的2d边界框。最紧密拟合的2d边界框可以基于z轴中网格点的已知范围在z轴中扩展,这可以导致紧密拟合的重力对齐的3d边界框。
162.在一些实现方式中,多视图融合系统可以以对象级生成3d对象边界框。每一个对象边界框可以独立更新,并且多个对象可以同时且异步更新。例如,系统可以同时更新第一键盘314的3d对象边界框324和第二键盘316的3d对象边界框326。系统可以使一个多视图融合系统进行第一键盘的对象边界框的创建和更新,并且系统可以异步地使另一个多视图融合系统进行第二键盘的对象边界框的创建和更新。这两个系统可以同时且并行运行。因此,该系统可以有效地处理大量对象的大量图像和数据。
163.在一些实现方式中,系统可以使用对象级锁定/解锁方法来确保不同模块不会同时更新同一对象。例如,在系统从输入图像302中确定在维持的对象数据中存在先前识别的键盘314(a)之后,系统可以锁定存储系统中存储的先前识别的键盘314的信息,同时与输入图像304中当前识别的键盘314(b)的2d对象边界框执行多视图融合。这可以确保键盘314不会被并行运行的其它模块更新。
164.边界框细化系统可以是3d边界框生成系统的子系统。边界框细化系统可以细化3d边界框的初始集合,并且可以生成一个或多个最终3d边界框。对于由多视图融合系统生成的每一个新的或更新的边界框,边界框细化系统可以去除噪声或重叠的边界框。边界框细化系统可以基于多个标准执行多个边界框细化操作。
165.例如,系统可以通过诸如非最大抑制算法(neubeck,alexander,and luc van gool."efficient non-maximum suppression."18th international conference on pattern recognition(icpr'06).vol.3.ieee,2006)的算法,去除属于同一类别的重叠边界框。作为另一个示例,系统可以去除不满足给定类别标签的尺寸约束的边界框。例如,该系统可以去除标为键盘的小于5厘米长的边界框。
166.在一些实现方式中,对象识别系统、多视图融合系统和边界框细化系统可以以无状态方式并且彼此独立地操作。通过将对象识别任务划分为多个子系统,3d对象识别系统可以在独立的无状态模块中实现每一个子系统。每一个无状态模块都可以根据需要独立启动、重新启动、扩大或缩小,而不影响整体系统性能。
167.例如,如果多个ar设备的多个用户正在查看同一对象,则在云处接收到的输入图像的每秒帧数高于由2d对象识别系统所生成的每秒输出的数量,因为2d对象识别系统的每一个无状态模块可能需要1秒来执行2d对象检测和分割。系统可以扩展执行2d对象识别的无状态模块,以确保该模块的吞吐量足够高,并且不会阻塞子序列处理模块。
168.3d对象识别系统在ar设备(或ar设备用户)的数量以及环境场景中的对象的数量
方面是可缩放的。多个ar设备可以连接到云计算环境,并且可以共同贡献用于3d对象识别的多个输入数据流,并且可以共享识别的3d对象。
169.该系统接收作为3d边界框生成系统的输出的数据,该数据指定针对在输入图像中识别的一个或多个对象的一个或多个3d边界框(412)。在一些实现方式中,系统还在存储系统中存储指定一个或多个3d边界框作为中间3d边界框的数据。
170.系统提供指定一个或多个3d边界框的数据作为输出(414)。该系统可以将一个或多个3d边界框作为更新的3d边界框存储在云中的存储系统230中。该系统还可以将最近的3d边界框的副本存储在ar设备上的存储系统228中。该系统可以将输出提供给ar系统的可通行世界组件202。
171.可通行世界组件202可以使用一个或多个识别的对象的一个或多个3d边界框来创建或更新跨多个ar设备共享的可通行世界模型。例如,该一个或多个3d边界框可用于在可通行世界模型中创建或更新持久坐标系(pcf)。在一些实现方式中,可通行世界组件可以进一步处理一个或多个3d边界框以便生成新的或更新的可通行世界模型。
172.已经如此描述了一些实施例的几个方面,应当理解,本领域技术人员将容易地想到各种改变、修改和改进。
173.作为一个示例,结合增强的(ar)环境来描述实施例。应该理解,在此描述的一些或所有技术可以应用于mr环境中或更一般地应用于其它xr环境和vr环境中。
174.作为另一个示例,结合诸如可穿戴设备的设备来描述实施例。应当理解,在此描述的一些或所有技术可以经由网络(诸如云)、离散应用和/或设备、网络和离散应用的任何合适组合来实现。
175.本说明书结合系统和计算机程序组件使用术语“配置”。对于配置为执行特定操作或动作的一个或多个计算机的系统意味着该系统已安装在其软件、固件、硬件或它们的组合上,该软件、固件、硬件或它们的组合在操作中导致系统执行操作或动作。对于被配置为执行特定操作或动作的一个或多个计算机程序意味着该一个或多个程序包括指令,该指令当由数据处理装置执行时,使该装置执行操作或动作。
176.本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件(包括在本说明书中公开的结构及其结构等效物,或它们中的一种或多种组合)中实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,编码在有形的非暂态存储介质上的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备,或者它们中的一种或多种的组合。可替代地或另外地,程序指令可以在人工生成的传播信号(例如机器生成的电、光或电磁信号)上编码,该信号被生成以编码信息以传输到合适的接收器设备以供数据处理装置执行。
177.术语“数据处理装置”是指数据处理硬件并且涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置可以可选地包括针对计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一种或多种的组合的代码。
178.也可以被称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码
的计算机程序可以任何形式的编程语言编写,包括编译或解释语言,或声明性或程序性语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环境的其它单元。程序可以但不必对应于文件系统中的文件。程序可以存储在包含其它程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本、专用于所讨论程序的单个文件或多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的文件。可以部署计算机程序以在一个计算机或位于一个站点或分布在多个站点并由数据通信网络互连的多个计算机上执行。
179.在本说明书中,术语“数据库”广泛用于指代任何数据集合:数据不需要以任何特定方式结构化,或者根本不需要结构化,并且它可以存储在一个或多个位置中的存储设备上。因此,例如,索引数据库可以包括多个数据集合,每一个数据集合可以以不同方式组织和访问。
180.类似地,在本说明书中,术语“引擎”广泛用于指代被编程以执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,引擎将被实现为一个或多个软件模块或组件,安装在一个或多个位置中的一个或多个计算机上。在一些情况下,一个或多个计算机将专用于特定引擎;在其它情况下,可以在同一个或多个计算机上安装和运行多个引擎。
181.本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,该计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如fpga或asic)或由专用逻辑电路和一个或多个编程计算机的组合来执行。
182.适用于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其它类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于履行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁、磁光盘或光盘)接收数据或向其传输数据或两者。然而,计算机不需要具有此类设备。此外,计算机可以嵌入到另一个设备中,仅举几例,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收机、或便携式存储设备,例如,通用串行总线(usb)闪存驱动器。
183.适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括半导体存储设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cd rom和dvd-rom磁盘。
184.为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示设备的计算机上实现,例如crt(阴极射线管)或lcd(液晶显示器)监视器,用于向用户显示信息以及用户可以通过其向计算机提供输入的键盘和指向设备,例如鼠标或轨迹球。也可以使用其它种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从其接收文档来与用户交互;例如,响应于从web浏览器接收的请求,通过将网页发送到用户设备上的web浏览器。此外,计算机可以通过将文本消息或其它形式的消息发送到个人设备(例如,运行
消息传递应用的智能手机)并作为回报接收来自用户的响应消息来与用户交互。
185.用于实现机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产(即推理)工作负载的常见和计算密集型部分。
186.机器学习模型可以使用机器学习框架来实现和部署,机器学习框架例如tensorflow框架、microsoft cognitive toolkit框架、apache singa框架、或apache mxnet框架。
187.本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如,具有图形用户界面、网络浏览器或应用的客户端计算机,用户可以通过其与本说明书中描述的主题的实现进行交互,或者一个或多个此类后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或媒体的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(lan)和广域网(wan),例如互联网。
188.计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如html页面)传输到用户设备,例如,用于向与作为客户端的设备交互的用户显示数据和从用户接收用户输入的目的。在用户设备处生成的数据(例如用户交互的结果)可以在服务器处从设备接收。
189.虽然本说明书包含许多具体的实现细节,但这些不应被解释为对任何发明的范围或可要求保护的范围的限制,而是对可能特定于特定发明的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实现。此外,尽管特征可以在上面描述为在某些组合中起作用,甚至最初被要求保护,但在一些情况下,来自要求保护的组合的一个或多个特征可以从组合中删除,并且要求保护的组合可以针对子组合或子组合的变化。
190.类似地,虽然操作在附图中被描绘并且在权利要求中以特定顺序叙述,但这不应被理解为要求此类操作以所示的特定顺序或按顺序执行,或者所有图示的操作都执行,以达到理想的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中各个系统模块和组件的分离不应被理解为在所有实施例中都需要此类分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品中,或者打包成多个软件产品。
191.已经描述了本主题的特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行,但仍能达到期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或顺序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1