一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用具有不同维度的传感器数据的实例分割的制作方法

2022-02-22 07:20:51 来源:中国专利 TAG:
使用具有不同维度的传感器数据的实例分割的制作方法

本发明一般涉及实例分割,以及更具体地,在一些实施例中,涉及使用具有不同维度的传感器数据的实例分割。

背景技术

车辆(诸如自主车辆)中的车载传感器通过提供从车辆的周围环境捕获的连续传感器数据流来补充和增强车辆的视野(FOV)。传感器数据与各种基于车辆的应用(包括例如,盲点检测、车道变换辅助、用于碰撞警告或避免碰撞的后端雷达、停车辅助、交叉车流监控、制动辅助、紧急制动和自动距离控制)结合使用。

车载传感器可以包括,例如相机、基于光检测和测距(LiDAR)的系统、基于雷达的系统、全球定位系统(GPS)系统、基于声纳的传感器、超声传感器、惯性测量单元(IMU)、加速度计、陀螺仪、磁力计和远红外(FIR)传感器。传感器数据可以包括图像数据、反射的激光数据等。通常,由车载传感器捕获的图像利用三维坐标系来确定图像中的相对于彼此并且相对于车辆的对象的距离和角度。具体地,使用遍布车辆的各种车载传感器在车辆附近获取这种实时空间信息,然后,可以对实时空间信息进行处理以计算各种车辆参数并确定该车辆的安全行驶操作。

为了成功驾驶自主车辆,它们必须了解其周围的环境。为此,自主车辆可以利用深度学习技术来训练神经网络或其他机器学习模型,以执行各种任务,诸如对象检测、语义分割和实例分割等。训练机器学习模型来执行机器学习任务需要向模型提供训练数据作为输入。训练数据通常是从各种传感器收集的数据,这些数据已经通过艰辛的手动过程以各种方式进行了注释。本文讨论的技术解决方案通过提供更有效的技术来生成用于训练机器学习模型以执行机器学习任务的输入数据,从而解决了与传统机器学习模型训练相关联的技术问题。



技术实现要素:

在示例实施例中,公开了一种计算机实现的方法,其使用具有不同维度的传感器数据来训练实例分割模型。该方法包括使用第一传感器捕获具有第一维度的第一传感器数据并使用第二传感器捕获具有第二维度的第二传感器数据,以及将第一组标签分配给第一传感器数据以获得标记的第一传感器数据和将第二组标签分配给第二传感器数据以获得标记的第二传感器数据。该方法还包括将第一传感器数据投影到第二传感器数据上以获得训练数据,并将训练数据作为输入提供给实例分割模型。该方法附加地包括至少部分地基于训练数据和第一组标签生成具有第二维度的一组稀疏实例分割掩模,并利用该组稀疏实例分割掩模在实例分割模型的训练期间执行损耗传播。

在示例实施例中,第一传感器数据是三维(3D)点云数据,以及第二传感器数据是二维(2D)图像数据。

在示例实施例中,将第一组标签分配给第一传感器数据包括将3D边界框应用于3D点云数据,以及将第二组标签分配给第二传感器数据包括将2D边界框应用于2D图像数据。

在示例实施例中,第一传感器是LiDAR传感器而第二传感器是相机,并且将第一传感器数据投影到第二传感器数据上以获得训练数据包括确定在与相机捕获2D图像数据的2D图像相同的帧期间、由LiDAR捕获的一组3D点云数据点,确定相机的FOV内的3D点云数据点的至少一个子组,以及将3D点云数据点的至少一个子组投影到2D图像上,以获得训练数据的至少一部分。

在示例实施例中,用于训练实例分割模型的方法附加地包括确定LiDAR和相机之间的一组外参,该组外参包括LiDAR的位置和相机的位置之间的旋转信息和平移信息。

在示例实施例中,确定相机的FOV内的3D点云数据点的至少一个子组包括至少部分地基于一组外参来确定3D点云数据点的至少一个子组。

在示例实施例中,用于训练实例分割模型的方法附加地包括识别与投影的3D点云数据点相关联的LiDAR特定元数据,并将LiDAR特定元数据与训练数据相关联。

在示例实施例中,提供训练数据作为实例分割模型的输入包括提供具有与训练数据相关联的LiDAR特定元数据的训练数据作为实例分割模型的输入。

在示例实施例中,LiDAR特定元数据包括与一个或多个投影的3D点云数据点中的每一个相关联的深度值、强度值或高度值中的相应至少一个。

在示例实施例中,该组稀疏实例分割掩模是一组2D稀疏实例分割掩模,并且确定该组2D稀疏实例分割掩模包括:选择第一投影的3D点云数据点;确定第一投影的3D点云数据点与第一组标签的第一3D标签相关联;确定对应于第一3D标签的第一对象;确定正在生成的特定2D稀疏实例分割掩模对应于第一对象;以及将相应的正值与在包含第一投影3D点云数据点的2D图像内的一个或多个像素中的每一个相关联。

在示例实施例中,用于训练实例分割模型的方法附加地包括选择第二投影的3D点云数据点;确定第二投影的3D点云数据点不与第一组标签中的3D标签相关联,或者确定第二投影的3D点云数据点与第一组标签中的第二3D标签相关联,第二3D标签对应于第二对象,第二对象不对应于正在生成的特定2D稀疏实例分割掩模;以及将相应的负值与在包含第二投影3D点云数据点的2D图像内的一个或多个像素中的每一个相关联。

在示例实施例中,3D点云数据是第一3D点云数据,以及2D图像数据是第一2D图像数据,并且用于训练实例分割模型的方法附加地包括:将训练的2D实例分割模型应用于第二2D图像数据,以获得成组的一个或多个建议的2D实例分割掩模;将与第二2D图像数据的相同帧相关联的第二3D点云数据投影到第二2D图像数据上;利用成组的一个或多个建议的2D实例分割掩模来确定与第二3D点云数据的每个投影3D数据点对应的相应3D对象;以及基于相应的对应3D对象,将相应的3D分割标签分配给每个投影的3D数据点。

在示例实施例中,公开了一种系统,其使用具有不同维度的传感器数据来训练实例分割模型。该系统包括至少一个处理器和存储计算机可执行指令的至少一个存储器。至少一个处理器配置成访问至少一个存储器并执行计算机可执行指令以执行一组操作,该组操作包括:使用第一传感器捕获具有第一维度的第一传感器数据并使用第二传感器捕获具有第二维度的第二传感器数据,以及将第一组标签分配给第一传感器数据以获得标记的第一传感器数据和将第二组标签分配给第二传感器数据以获得标记的第二传感器数据。该组操作还包括将第一传感器数据投影到第二传感器数据上以获得训练数据,并将训练数据作为输入提供给实例分割模型。该组操作附加地包括至少部分地基于训练数据和第一组标签来生成具有第二维度的一组稀疏实例分割掩模,并利用该组稀疏实例分割掩模在实例分割模型的训练期间执行损耗传播。

上述系统还配置成执行操作/功能中的任一个,并且可以包括以上关于本发明的示例计算机实现方法描述的本发明的示例实施例的附加特征/方面中的任一个。

在示例实施例中,公开了一种计算机程序产品,其使用具有不同维度的传感器数据来训练实例分割模型。该计算机程序产品包括存储计算机可执行程序指令的非暂时性计算机可读介质,当该计算机可执行程序指令由处理电路执行时使得方法被执行。在示例实施例中,该方法包括使用第一传感器捕获具有第一维度的第一传感器数据并使用第二传感器捕获具有第二维度的第二传感器数据,以及将第一组标签分配给第一传感器数据以获得标记的第一传感器数据和将第二组标签分配给第二传感器数据以获得标记的第二传感器数据。该方法还包括将第一传感器数据投影到第二传感器数据上以获得训练数据,并将训练数据作为输入提供给实例分割模型。该方法附加地包括至少部分地基于训练数据和第一组标签来生成具有第二维度的一组稀疏实例分割掩模,并利用该组稀疏实例分割掩模在实例分割模型的训练期间执行损耗传播。

上述计算机程序产品还配置成执行操作/功能中的任一个,并且可以包括以上关于本发明的示例计算机实现方法描述的本发明的示例实施例的附加特征/方面中的任一个。

在参考附图考虑了以下描述和所附权利要求书后,本文中公开的系统、方法以及非暂时性计算机可读介质的这些和其他特征,以及结构的相关元件的操作方法和功能还有零件的组合和制造的经济性将变得更显而易见,所有这些形成了本说明书的一部分,其中相似附图标记在各个图中标示对应部分。然而,应明确地理解,附图仅出于说明和描述目的,并且不意图作为对本发明的限制的限定。

附图说明

所附权利要求书中特别地阐述了本技术的各种实施例的某些特征。通过参考以下详细描述和附图,将获得对本技术的特征和优点的更好的理解,以下详细描述阐述了说明性实施例,说明性实施例中利用了本发明的原理,在附图中:

图1是根据本发明示例实施例的包括LiDAR传感器和多个相机的传感器组件的鸟瞰图。

图2A是示出根据本发明的示例实施例,使用具有不同维度的标记传感器数据来训练二维(2D)实例分割模型的混合数据流和框图。

图2B是示出根据本发明的示例实施例,使用训练的2D实例分割模型来执行三维(3D)实例分割的混合数据流和框图。

图3A示出了根据本发明示例实施例的投影到2D图像上的3D点云数据。

图3B示出了根据本发明的示例实施例,使用标记的3D点云数据、从其上投影有3D点云数据的2D图像生成2D稀疏实例分割掩模。

图4A至图4B是根据本发明的示例性实施例的说明性方法的过程流程图,该方法使用具有不同维度的标记传感器数据来训练2D实例分割模型,并且在训练期间使用2D稀疏实例分割掩模来传播模型的损耗,该2D稀疏实例分割掩模是从其上投影有3D点云数据的2D图像数据生成的。

图5是根据本发明的示例性实施例的说明性方法的过程流程图,该方法用于生成2D稀疏实例分割掩模。

图6是根据本发明的示例性实施例的说明性方法的过程流程图,该方法用于利用训练的2D实例分割模型来执行3D实例分割。

图7是示出配置成实现本发明的示例实施例的示例网络架构的示意性框图。

具体实施方式

在以下描述中,阐述了某些具体细节,以便提供对本发明的各种实施例的透彻理解。然而,本领域的技术人员将理解本发明可以在没有这些细节的情况下进行实践。而且,尽管本文公开了本发明的各种实施例,但根据本领域的技术人员的公知常识,可以在本发明的范围内做出许多调适和修改。此类修改包括用已知的等效物替代本发明的任何方面,以便以基本上相同的方式获得相同结果。

除非上下文另有要求,否则贯穿本说明书和权利要求书,字词“包括(comprise)”及其变体,诸如“包括(comprises)”和“包括(comprising)”,应以开放性的、包含性的含义解释,即,被解释为“包括,但不限于。”贯穿本说明书对值的数值范围的叙述意图用作单独地提及落入该范围内的每个独立值(包括限定该范围的值)的速记表示,并且每个独立值并入本说明书中,如同本文单独地叙述一样。另外地,除非上下文另外清楚地指出,否则单数形式“一个”、“一种”和“所述”包括复数指称。短语“中的至少一个”、“选自包括以下项的组的至少一个”或“选自由以下项组成的组的至少一个”等将以析取词解释(例如,不解释为A中的至少一个和B中的至少一个)。

贯穿本说明书提及“一个实施例”或“实施例”意味着结合该实施例描述的特定特征、结构、操作或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书在各处出现短语“在一个实施例中”或“在实施例中”不一定都指相同实施例,但在一些情况下可以指相同实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。

一般来说,车辆(例如,自主车辆)可具有装载在车辆上的大量传感器。此类传感器可设置在车辆的外部上或内部中,并且可包括但不限于LiDAR传感器、雷达、相机、GPS接收器、基于声纳的传感器、超声波传感器、IMU、加速度计、陀螺仪、磁力计、FIR传感器等。此类传感器在自主车辆的运行和操作中发挥核心作用。例如,LiDAR可用于检测车辆周围环境中的对象(例如,其他车辆、路标、行人、建筑物等)。LiDAR还可用于确定环境中对象之间以及对象与车辆之间的相对距离。作为另一个非限制性示例,雷达可与避免碰撞、自适应巡航控制、盲点探测、辅助停车和其他车辆应用结合使用。作为又一个非限制性示例,相机可用于捕捉环境的图像,并且可对捕捉的图像执行对象检测、实例分割或其他深度学习任务以识别、解释和描绘在图像中捕捉的对象和/或对象的视觉线索。相机和其他光学传感器可使用电荷耦合器件(CCD)、互补金属氧化物半导体(CMOS)或类似元件捕获图像数据。从各种上述传感器收集的数据可被处理并作为输入用于算法,算法配置成做出各种自主驾驶决策,包括与何时加速、加速多少、减速多少、改变方向等有关的决策。

例如,在将传感器数据作为输入提供到算法或计算等之前,可以对由不同类型的传感器捕获的传感器数据执行各种预处理,算法或计算等是结合与例如自主车辆操作相关的操作来执行/进行的。例如,由各种传感器捕获的传感器数据可以用作训练数据集,以训练一个或多个机器学习模型/分类器,机器学习模型/分类器可以结合诸如对象检测、语义分割、实例分割或3D回归等一系列任务来使用。

实例分割是机器学习任务,其涉及识别和描绘图像中存在的每种类型对象的每个实例。因此,可将实例分割认为是对象检测(其包括检测图像中每个对象的存在)和语义分割(其将图像的每个像素分类为特定对象的一部分)的组合。实例分割可用于广泛的应用中,诸如对象计数、为视觉受损的个体增强对象的轮廓/边界等。

为了训练深度学习模型来执行实例分割,需要生成实例分割数据并将其作为输入提供给模型。用于生成实例分割训练数据的传统技术通常涉及生成全像素级分割掩模,该掩模分割图像中的每个对象实例。为训练数据生成此类全像素级分割掩模可涉及在用于训练的图像数据中描绘每个对象实例的边界的艰辛的手动过程。对于边界不规则的对象实例,此过程可能是特别耗时的。因此,生成实例分割数据是费时费力的过程,特别是生成训练实例分割模型通常需要的全像素级分割掩模,该过程带来了与传统实例分割训练相关的技术问题。

本发明的各种实施例克服了在基于计算机的技术领域中特别出现的技术问题,并且更具体地,在机器学习技术领域中中特别出现的技术问题,特别是当其涉及自主车辆技术时。本发明的示例性实施例提供了与用于生成实例分割数据以训练实例分割模型的传统技术相关联的上述技术问题的技术解决方案。示例实施例以系统、方法、非暂时性计算机可读介质、技术和方法论的形式提供了此类技术解决方案,以用于训练能够执行2D和3D实例分割而不需要任何实际实例分割数据作为训练数据的深度学习模型。

在示例实施例中,诸如由LiDAR传感器捕获的3D点云数据可用作地面真实训练数据,以用于训练实例分割深度学习模型。具体地,在示例实施例中,将由LiDAR捕获的3D点云数据投影到由相机捕获的2D图像上。LiDAR相机外参(extrinsics),诸如用于在LiDAR坐标系和相机坐标系之间转换的平移信息和/或旋转信息,可用于确定哪些3D LiDAR数据点在相机FOV内,并从而确定哪些3D数据点投影到2D相机图像平面上。

其上投影有3D LiDAR点云数据点的2D图像数据可以作为输入训练数据提供给实例分割模型。在一些示例实施例中,具有投影的3D LiDAR数据点的2D图像数据可以是标记数据,其中将2D图像数据标记为2D边界框(例如,矩形),并且将3D点云数据标记为3D边界框(例如,矩形棱镜)。此外,在示例实施例中,2D图像数据可以与3D LiDAR点云数据帧同步,以将2D标签(例如,2D边界框)与对应的3D标签(例如,3D边界框)相关联。此外,在一些示例实施例中,可以附加与投影的3D点云数据相关联的LiDAR特定元数据(诸如深度值、强度值、高度值等)或将所述LiDAR特定元数据以其他方式与2D图像数据相关联,并且用作训练实例分割模型的输入特征。

在示例实施例中,投影的3D LiDAR点云数据点和应用于3D LiDAR点云数据的3D标签(例如,矩形棱柱边界框)可以用于创建2D稀疏实例分割掩模。当在2D实例分割模型的训练期间传播损耗时,可以使用2D稀疏实例分割掩模。在示例实施例中,可以为2D相机图像中的每个对象实例生成相应的2D稀疏实例分割掩模。在将3D LiDAR点云数据投影到2D相机空间之后,每个投影的LiDAR数据点可以与相应的对象实例相关联。更具体地,对于每个投影的LiDAR数据点,标记的3D点云数据可以用于确定哪个3D标签(例如,哪个3D边界框)包含投影的LiDAR数据点。然后,投影的LiDAR数据点可以与对应于包含LiDAR数据点的边界框的对象实例相关联。然后,包含投影的LiDAR数据点的2D图像中的一个或多个像素可以在对应于对象实例的2D稀疏分割掩模中被分配正值(例如,二进制ON值),或者在对应于不同对象实例的每个其他2D稀疏分割掩模中被分配负值(例如,二进制OFF值)。

使用2D稀疏分割掩模(如上所述使用3D LiDAR数据点生成)来训练2D实例分割模型(例如,在模型的训练阶段执行损耗传播)产生训练模型,该训练模型提供至少与使用实际实例分割数据训练的传统实例分割模型相当的性能以及通常更好的性能。对于训练的2D实例分割模型来说,即使不是更好的性能也是相等的,这是在不必生成实例分割数据的情况下实现的,实例分割数据包括常规2D实例分割训练所需的全像素级分割掩模。因此,响应于与用于生成实际实例分割数据(例如,全像素级分割掩模)的传统耗时费力的过程相关联的技术问题,本发明的示例性实施例提供了训练数据形式的技术解决方案,该训练数据包括其上投影有3D LiDAR数据点的2D图像数据和由投影的3D LiDAR数据点形成的2D稀疏分割掩模,其可用于代替实际实例分割数据来训练实例分割模型。该技术解决方案代表了对计算机技术,特别是机器学习技术的改进。

此外,在本发明的示例实施例中,训练的2D实例分割模型可用于执行3D实例分割。例如,在推断阶段,可以将测试2D图像数据提供给训练的2D实例分割模型,该模型可以输出一组建议的2D实例分割掩模。与3D LiDAR数据相关联的元数据(例如,深度值、强度值、高度值等)也可以作为输入提供给训练的2D实例分割模型。然后,可以将对应于与测试2D图像相同的帧并且在捕获图像的相机的FOV内的3D LiDAR点云数据点投影到2D图像上。然后,建议的2D实例分割掩模可以用于确定哪些3D数据点对应于哪些3D对象实例,从而基于每个LiDAR数据点获得3D分割标签。因此,本发明的示例实施例提供了对机器学习技术的附加技术解决方案和改进,机器学习技术利用训练的2D实例分割模型来获得3D分割标签,而不必明确训练模型来执行3D实例分割。

图1是根据本发明的示例实施例的传感器组件108的鸟瞰图。传感器组件108可以包括多种不同类型的传感器,包括例如一个或多个LiDAR传感器104和一个或多个相机106。尽管未在图1中描绘,传感器组件108还可以包括其他类型的传感器,诸如像一个或多个IMU、一个或多个GPS接收器等。在图1所描绘的示例构型中,LiDAR传感器104位于车辆102(其可以是自主车辆)的车顶的中央,并且由围绕LiDAR传感器104周向定位的多个相机包围。在示例实施例中,LiDAR传感器104可以周期性地旋转通过扫描路径,在扫描路径期间,LiDAR 104可以用周期光脉冲照亮扫描环境中的对象,并且测量反射回的光的飞行时间和波长的差异以检测目标对象的存在,确定车辆102与目标对象之间的距离,确定感测环境中的各种目标对象之间的距离等。更具体地,LiDAR 104可以配置成基于被反射回LiDAR 104的光的飞行时间和波长的测量差异来生成被光脉冲照亮的目标的数字3D表示。具体地,LiDAR传感器104可以生成3D点云(3D空间中的数据点组),其代表在LiDAR 104的扫描路径期间用光照亮的一个或多个目标对象。LiDAR 104可以呈现水平扫描路径和/或垂直扫描路径。

在示例实施例中,随着LiDAR 104行进通过其扫描路径,它可以在相应的特定时间点与传感器组件的每个相机106对准。如本文所使用的,术语“帧”、“数据帧”、“图像帧”等可以用于表示时间拼接(例如,一段时间),在所述时间拼接期间LiDAR 104捕获3D点云数据点的集合作为其扫描路径的一部分,并且相机106中的每一个捕获相应的图像数据。可确定一组外参,其包括例如指示LiDAR 104相对于相机106的相对位置的各种旋转信息和平移信息,并将其用于确定对于给定帧、哪些3D LiDAR数据点在特定相机106的FOV内。如稍后将在本公开中更详细描述的,该组外参可用于确定对于给定帧、哪些3DLiDAR数据点投影到来自特定相机106的2D图像上。虽然图1中描绘了单个传感器组件108,但是应当理解,可以提供多个此类传感器组件108,并且其可以位于车辆102的外部和/或内部的任何合适的部分。此外,每个传感器组件108可以包括以任何合适的布置提供的任何数量的LiDAR 104和任何数量的相机106。

图2A是示出根据本发明的示例实施例,使用具有不同维度的标记传感器数据来训练2D实例分割模型的混合数据流和框图。图4A至图4B是根据本发明的示例性实施例的说明性方法400的过程流程图,该方法使用具有不同维度的标记传感器数据来训练2D实例分割模型,并且在训练期间使用2D稀疏实例分割掩模来传播模型的损耗,该2D稀疏实例分割掩模是从其上投影有3D点云数据的2D图像数据生成的。图5是根据本发明的示例性实施例的说明性方法500的过程流程图,该方法用于生成2D稀疏实例分割掩模。下文将结合图2A分别描述图4A至图4B和图5的示例方法400和500。

本文公开的方法400至600中的任一个方法的任何操作可由图2A、图2B和/或图7中描绘的引擎/程序模块中的一个或多个来执行,其操作将在下文中更详细地描述。这些引擎/程序模块可在硬件、软件和/或固件的任何组合中实现。在某些示例实施例中,这些引擎/程序模块中的一者或多者可至少部分地实现为包括计算机可执行指令的软件和/或固件模块,该计算机可执行指令当由处理电路执行时致使执行一个或多个操作。在示例实施例中,这些引擎/程序模块可以为在定制计算机器(诸如定制FPGA或ASIC)内实现的定制计算机可执行逻辑。本文中描述为配置成实现本发明的示例实施例的系统或装置可包括一个或多个处理电路,该处理电路中的每一个可包括一个或多个处理单元或核心。计算机可执行指令可包括计算机可执行程序代码,该计算机可执行程序代码当由处理核心执行时可致使由处理核心访问和处理包含在该计算机可执行程序代码中或由该计算机可执行程序代码引用的输入数据以产生输出数据。

首先参考图2A,描绘了车辆202。车辆202可以是任何合适类型的车辆,其包括但不限于汽车;卡车;两轮车辆,诸如摩托车、轻便摩托车、踏板车等;具有两个以上车轴的车辆(例如拖拉机拖车);和其他。车辆202包括各种车载传感器,诸如LiDAR 204和一个或多个相机206。在示例实施例中,车辆202可以是车辆102,并且LiDAR 204和相机206可以形成图1所示的传感器组件108的一部分。应当理解,为了便于解释,在图2A中描绘了单个LiDAR 204和单个相机206,并且车辆202可以配备任意数量的LiDAR 204和任意数量的相机206,并且来自任意数量的LiDAR 204和/或相机206的数据可以用于本发明的示例实施例中。

现在结合图2A,参考图4A,在方法400的框402,LiDAR 204可以捕获3D点云数据212,并且相机206可以捕获2D图像数据214。如前所述,应当理解,3D点云数据212可以包括由多个LiDAR 204在多个帧上捕获的LiDAR数据点,每个帧对应于一段时间。类似地,2D图像数据214可以包括由多个相机206在多个帧上捕获的2D图像。3D点云数据212可以包括与场景210中的目标相对应的3D数据点,当穿过扫描路径208时,该目标由LiDAR 204照亮。3D LiDAR数据点可以对应于场景210中对象的多个实例。对象可以对应于一种或多种对象类型,其包括动态对象,诸如其他车辆、行人、动物等,和/或静态物体,诸如植物、物理结构、标志等。

仍然结合图2A,参考图4A,在方法400的框404,可以执行标记引擎216以将一组3D标签分配给3D点云数据212,从而获得标记的3D LiDAR点云数据218,并将一组2D标签分配给2D图像数据214,从而获得标记的2D图像数据220。在示例实施例中,3D标签可以包括围绕数据212中的3D对象的每个实例形成的3D边界框(例如,矩形棱柱),并且2D标签可以包括围绕数据214中的2D对象的每个实例形成的2D边界框(例如,矩形)。在一些示例实施例中,标记引擎216可以分别利用3D和2D边界框来帮助手动标记数据212、214。

在方法400的框406,可以执行元数据关联引擎240以将标记的3D数据218的3D标签与标记的2D数据220的2D标签相关联。更具体地,在示例实施例中,元数据关联引擎240可以将每个2D标签与代表每个帧中相同对象的每个对应3D标签相关联。以这种方式,元数据关联引擎240可以生成融合的2D/3D数据242,在所述融合的2D/3D数据242中,基于每帧将对应于同一对象的2D和3D标签关联/链接在一起。在示例实施例中,帧同步可以在元数据关联引擎240执行的元数据(例如,标签)关联之前、之后和/或至少部分地同时执行。元数据关联引擎240可以执行帧同步,和/或可以定制另一个引擎来执行帧同步。可以执行由相机206捕获的2D图像帧和在LiDAR 204的竖直和/或水平扫描期间捕获的3D点云数据之间的帧同步,以确保相机图像捕获的FOV内的每个2D相机图像捕获和每个LiDAR扫描是同步的。在示例实施例中,指示与LiDAR 204和相机206相关联的校准外参的传感器外参数据224以及从LiDAR 204和相机206接收的定时数据可以用于执行帧同步。定时数据可以包括例如相机206的快门时间(例如,相机206捕获图像所需的毫秒数)以及与LiDAR 204的每次扫描相关联的时间戳。

在方法400的框408,可以确定一组外参(例如,传感器外参数据224)。传感器外参数据224可以包括平移信息和旋转信息(例如,平移矩阵、旋转矩阵等),其定义了LiDAR 204相对于相机206的位置的位置。传感器外参数据224可以使得能够将LiDAR 204的坐标系中的3D数据转换成与相机206相关联的2D坐标系,反之亦然。

在方法400的框410,可以执行3D/2D投影引擎222,以使用传感器外参数据224将在相机206的FOV内的3D LiDAR数据点投影到由相机206捕获的2D图像上。更具体地,可以识别对应于与2D图像数据214(或标记的2D数据220)的2D图像相同的帧的3D数据212(或标记的3D数据218)中的3D LiDAR数据点组。然后,可以基于传感器外参数据224来确定在相机206的FOV内的一组3D LiDAR数据点的至少一个子组,并将其投影到2D图像上以获得具有投影的3D LiDAR数据点226的2D图像数据。

图3A示出了根据本发明示例实施例的投影到2D图像上的3D点云数据点的示例。在图3A说明性地示出LiDAR 302。LiDAR 302可以是LiDAR 204的特定实现。还描绘了多个相机306A、306B,它们可以代表相机206的特定实现。虽然说明性地描绘了两个相机,但是可以提供任意数量的相机。图3A中描绘的投影到2D图像上的3D LiDAR数据点可以是在LiDAR 302的扫描路径304的一部分(特定帧)期间捕获的那些数据点,其在同一帧期间捕获2D图像的相机(例如,相机306A、306B中的一个)的FOV内。

在一些示例实施例中,2D图像可以是标记的2D图像,其中已经将2D边界框(例如,矩形)分配给2D图像中的各种对象实例。类似地,可以从标记的3D数据218中获取投影到2D图像上的3D LiDAR点。在其他示例实施例中,2D图像可以是未标记的2D图像数据214的一部分,和/或投影到2D图像上的3DLiDAR点可以是未标记的3D数据212的一部分。

如图3A所示,可以在2D图像中捕获各种对象。例如,第一对象308可以与2D边界框314相关联。投影到2D图像上的一组3D LiDAR数据点310可以包含在对应于相同的第一对象308的3D边界框312内。如前所述,传感器外参数据224可以用于确定哪些3D LiDAR数据点在捕获图3A中描绘的2D图像的相机的FOV内。

此外,2D相机图像可以包括与2D边界框322相关联的第二对象316。投影到2D图像上的一组3D LiDAR数据点318可以包含在对应于相同的第二对象316的3D边界框320内。更进一步,2D图像可以包括与2D边界框328相关联的第三对象324。投影在2D图像上的一组3D LiDAR数据点326可以对应于相同的第三对象324。虽然第一对象308、第二对象316和第三对象324中的每一个被说明性地示出为车辆,但是应当理解,各种不同类型的对象中的任何一个都可以出现在2D图像中,并且可以具有投影在其上的相应的3D LiDAR数据点。例如,图3A中描绘的任何其他对象类型可以具有投影在其上的3D LiDAR数据点(可能包含在3D边界框内),并且此类对象可以包含在相应的2D边界框内。

如图3A所示,投影到2D图像上的3D LiDAR数据点的密度可以基于相应对象与LiDAR 302的接近度而变化。例如,一组投影的3D LiDAR数据点310的密度大于一组投影的3D LiDAR数据点318的密度,而一组投影的3D LiDAR数据点318的密度又大于一组投影的3D LiDAR数据点326的密度。在一些示例实施例中,投影的3D LiDAR数据点的集合可以如此稀疏,以至于在3D数据点的集合周围未形成对应的3D边界框,如结合一组3D LiDAR数据点326所示。

再次结合图2A,参考图4A,在方法400的框412,可以执行3D特定元数据关联引擎228来确定与投影的3D LiDAR数据点相关联的LiDAR特定元数据。在示例实施例中,LiDAR专用元数据可以包括例如每个投影的LiDAR数据点的相应深度值,该深度值指示由LiDAR数据点表示的对象的一部分和LiDAR 204之间的物理距离;每个投影的LiDAR数据点的相应强度值;以及每个投影的LiDAR数据点的相应高度值,该高度值指示由LiDAR数据点表示的对象的一部分相对于LiDAR 204的高度或诸如路面的参考高度。应理解,LiDAR专用元数据可以包括与投影的LiDAR数据点相关联的其他3D元数据。

在方法400的框414,可以执行3D特定元数据关联引擎228以将LiDAR特定元数据与其上投影有3D LiDAR数据点226的2D图像数据相关联,以获得数据230。在一些示例实施例中,3D特定元数据关联引擎228可以将3D特定元数据附加到具有投影的LiDAR数据点的2D相机图像,作为用于训练2D实例分割模型232的附加输入通道特征。

现在结合图2A,参考图4B,在方法400的框416,具有投影的3D LiDAR数据点和相关联的LiDAR特定元数据(统称为数据230)的2D相机图像可以作为输入训练数据提供给2D实例分割模型232。然后,在方法400的框418,稀疏掩模生成引擎234可以使用至少一部分标记的3D LiDAR数据218,特别是投影的3D LiDAR数据点,来生成2D稀疏实例分割掩模236。在示例实施例中,可以为其上投影有3D LiDAR数据点的2D相机图像中的每个对象实例生成相应的2D稀疏实例分割掩模。稍后将参考图5在本公开中更详细地描述用于生成2D稀疏实例分割掩模的说明性方法。

在方法400的框420,在模型232的训练期间,可以将2D稀疏实例分割掩模236提供作为2D实例分割模型232的损耗函数238的输入。更具体地,2D稀疏实例分割掩模236可以用于在2D实例分割模型232的训练期间传播损耗。在方法400的框422,可以确定关于2D实例分割模型232是否已经训练到期望的精度水平。响应于框422处的肯定确定,可以结束方法400。另一方面,响应于框422处的否定确定,方法400可以从框408再次前进,其中可以将3D LiDAR数据点投影到另一个2D相机图像上,以将其提供作为用于训练2D实例分割模型232的附加输入训练数据。

图5描绘了根据本发明的示例实施例的用于生成2D稀疏分割掩模的示例方法500。示例方法500示出了用于为其上投影有3D LiDAR数据点的2D图像中的特定对象产生特定2D稀疏分割掩模的过程流程。应理解,可以重复方法500来为2D相机图像中的每个对象实例生成2D稀疏分割掩模。

现在结合图2A,参考图5,在方法500的框502,稀疏掩模生成引擎234可以选择已经投影到2D空间中(例如,投影到2D相机图像上)的先前未选择的3D LiDAR数据点。在方法500的框504,稀疏掩模生成引擎234可以确定所选择的3D LiDAR数据点是否与3D标签相关联,即,所选择的3D LiDAR数据点是否包含在标记的3D数据218中的3D边界框内。

响应于框504处的肯定确定,方法500可以前进到框506,其中稀疏掩模生成引擎234可以确定对应于3D标签(例如,3D边界框)的对象。在方法500的框508,稀疏掩模生成引擎234可以确定正在生成的2D稀疏实例分割掩模是否对应于在框506确定为对应于3D标签的对象。响应于框508处的肯定确定,方法500可以前进到框510,其中稀疏掩模生成引擎234可以将2D稀疏实例分割掩模中的正值(例如,二进制ON值)分配给包含所选3D LiDAR数据点的2D相机图像的一个或多个像素。

另一方面,响应于框508处的否定确定,方法500可以前进到框512,其中稀疏掩模生成引擎234可以将2D稀疏实例分割掩模中的负值(例如,二进制OFF值)分配给包含所选3D LiDAR数据点的2D相机图像中的一个或多个像素。或者,响应于框504处的否定确定,稀疏掩模生成引擎234可以将负值分配给包含所选3D LiDAR数据点的像素,这将指示所选3D LiDAR数据点不包含在标记的3D数据218中的任何3D边界框内。如果所选的3D LiDAR数据点不是密集到足以用3D边界框标记的数据点集群的一部分,可能会出现这种情况。因此,在示例实施例中,如果所选的3D数据点不包含在任何3D边界框内,或者如果包含所选的3D数据点的3D边界框对应于2D图像中与正在为其生成当前2D稀疏实例分割掩模的对象不同的对象,则可以在框512将负值分配给包含所选的3D LiDAR数据点的像素。

一般来说,对应于不同对象的3D边界框在3D空间中不会有任何重叠区域。然而,在某些示例实施例中,如果例如对象彼此非常接近,则在3D空间中,对应于不同对象的3D边界框之间可能存在一些重叠。在此类示例实施例中,重叠区域内的每个3D LiDAR数据点可以根据基于规则的标准的应用与3D边界框中的特定一个相关联。例如,可以将在多个3D边界框之间的重叠区域中的每个3D LiDAR数据点分配/关联到其中心最接近3D LiDAR数据点的3D边界框。应理解,也可以应用替代的和/或附加的基于规则的标准。

图3B示出了根据本发明的示例实施例,使用标记的3D点云数据以从其上投影有3D点云数据的2D图像生成2D稀疏实例分割掩模。如图3B所示,示例2D相机图像包括部分遮挡第二对象322(例如,第二车辆)的第一对象330(例如,第一车辆)。围绕第一对象330形成2D边界框334,以及围绕第二对象322形成2D边界框338。此外,围绕对应于第一对象330的一组3D LiDAR点云数据点(为了描述简单起见未示出)形成3D边界框336,并将其投影到2D相机图像上。此外,围绕一组3D LiDAR点云数据点(为了描述简单起见未示出)形成3D边界框340,并将其投影到2D相机图像上。

在示例实施例中,包含在3D边界框336内的3D LiDAR数据点将与第一对象330相关联,并且因此,在对应于第一对象330的2D稀疏实例分割掩模中将正(例如,二进制ON)值分配给包含此类投影的3D LiDAR数据点的2D相机图像的像素。在第一对象330的2D稀疏实例分割掩模中将负(例如,二进制OFF)值分配给不包含任何此类3D LiDAR数据点的2D相机图像的像素。类似地,包含在3D边界框340内的3D LiDAR数据点将与第二对象332相关联,并且因此,在对应于第二对象332的2D稀疏实例分割掩模中将正(例如,二进制ON)值分配给包含此类投影的3D LiDAR数据点的2D相机图像的像素。在第二对象332的2D稀疏实例分割掩模中将负(例如,二进制OFF)值分配给不包含任何此类3DLiDAR数据点的2D相机图像的像素。

虽然包含第一对象330的3D边界框336看起来与包含第二对象322的3D边界框340重叠,但是3D边界框336、340通常在3D空间中根本不会重叠。然而,因为3D LiDAR数据点被投影到其中没有深度信息的2D空间中,所以3D边界框336、340在2D空间中可能看起来是重叠的,但在现实中它们不是重叠的。然而,在某些情况下,例如,如果其中多个3D边界框对应的对象在物理空间中彼此非常接近,则它们之间可能会有一些重叠。例如,一个或多个投影的3D LiDAR数据点(例如,位于示例区域342内的3D数据点)可以包含在标记的3D数据218的多个3D边界框内。如前所述,在此类示例场景中,可以评估各种基于规则的标准,以将任何此种投影的3D LiDAR数据点与多个3D边界框中的特定一个相关联,并且因此与特定对象实例相关联,在这种情况下,包含此种数据点的每个像素可以在该特定对象实例的2D稀疏实例分割掩模中被分配正值,并且在对应于2D图像中的每个其他对象实例的每个其他2D稀疏实例分割掩模中被分配负值。

图2B是示出根据本发明的示例实施例,使用训练的2D实例分割模型来执行3D实例分割的混合数据流和框图。图6是根据本发明的示例性实施例的说明性方法600的过程流程图,该方法用于利用训练的2D实例分割模型来执行3D实例分割。将在下文中结合图2B描述示例方法600。

现在结合图2B,参考图6,在方法600的框602,在对应于训练的2D实例分割模型252的推断阶段,可以从模型252获得一组建议的2D实例分割掩模254。特别地,可以将测试2D图像数据250(例如,测试2D相机图像)提供给模型252作为输入,并且训练的模型252可以输出一组建议的2D实例分割掩模254以用于测试2D相机图像。此外,在某些示例实施例中,也可以将与3D LiDAR点云数据246相关联的3D特定元数据248提供作为模型252的输入。如前所述,3D特定元数据248可以包括但不限于深度值、强度值、高度值等。3D点云数据246、3D特定元数据248和2D图像数据250可以存储在一个或多个数据存储244中并从其检索。

在方法600的框604,可以执行3D/2D投影引擎222以将3D点云数据246投影到测试2D图像数据260上,从而获得具有投影的3D数据点258的2D图像数据。更具体地,在示例实施例中,3D/2D投影引擎222可以在2D相机图像的捕获期间将对应于与测试2D相机图像相同的帧并且在相机的FOV内的一组3D LiDAR数据点投影到图像上,以获得具有投影的3D LiDAR数据点258的2D相机图像。

在方法600的框606,可以执行3D实例分割引擎256,以利用一组建议的2D实例分割掩模254来为每个投影的3D LiDAR数据点确定对应的3D对象。最后,在方法600的框608,3D实例分割引擎256可以基于相应的3D对象将相应的3D分割标签分配给每个投影的3D LiDAR数据点,从而产生3D实例分割掩模260。

硬件实现方式

图7是示出被配置为实现本发明的示例实施例的示例网络架构600的示意性框图。联网架构600可包括经由一个或多个网络706通信地联接到各种传感器704的一个或多个专用计算装置702。传感器704可以包括先前描述的任何类型的车载车辆传感器,包括但不限于LiDAR传感器、雷达、相机、GPS接收器、基于声纳的传感器、超声波传感器、IMU、加速度计、陀螺仪、磁力计、FIR传感器等。在示例实施例中,传感器704可以包括设置在车辆诸如自主车辆的外部上或内部中的车载传感器。专用计算装置702可以包括与车辆集成的装置,并且可以经由本地网络连接(例如,WiFi、蓝牙、专用短程通信(DSRC)等)从传感器704接收传感器数据。在其他示例实施例中,专用计算装置702可以远离车辆设置,并且可经由一个或多个远程网络从传感器704接收传感器数据。

可以硬接线专用计算装置702以执行技术;可以包括被持久性地编程为执行该技术的电路或数字电子装置,诸如一个或多个ASIC或FPGA;和/或可以包括被编程为依据固件、存储器、其他存储设备或它们的组合中的程序指令来执行该技术的一个或多个硬件处理器。专用计算装置702也可以将定制硬接线逻辑、ASIC或FPGA与定制编程组合以完成该技术。专用计算装置702可以为台式计算机系统、服务器计算机系统、便携式计算机系统、手持式装置、联网装置或结合了硬接线和/或编程逻辑以实现该技术的任何其他装置或装置组合。

专用计算装置一般可以由操作系统软件720控制和协调,该操作系统软件诸如iOS、Android、Chrome OS、Windows XP、Windows Vista、Windows 4、Windows 8、Windows Server、Windows CE、Unix、Linux、SunOS、Solaris、iOS、Blackberry OS、VxWorks或其他兼容操作系统。在其他实施例中,计算装置702可以由专有操作系统控制。操作系统软件720可以控制和调度计算机进程以供执行;执行存储器管理;提供文件系统、联网和I/O服务;以及提供用户界面功能性,诸如图形用户界面(“GUI”)。

尽管在本文中可以单数描述计算装置702和/或传感器704,但应了解,可提供任何此类部件的多个实例,并且结合任何特定部件描述的功能性可分布在该部件的多个实例上。在某些示例实施例中,本文中结合架构600的任何给定部件描述的功能性可分布在架构600的多个部件间。例如,被描述为由计算装置702提供的功能性的至少一部分可以分布在多个此类计算装置702间。

网络706可包括但不限于任一种或多种不同类型的通信网络,例如有线网络、公共网络(例如,互联网)、专用网络(例如,帧中继网络)、无线网络、蜂窝网络、电话网络(例如,公共交换电话网络)或任何其他合适的专用或公共分组交换或电路交换网络。网络706可具有与其相关联的任何合适的通信范围并可包括例如全球网络(例如,互联网)、城域网(MAN)、广域网(WAN)、局域网(LAN)或个人局域网(PAN)。另外,网络706可包括通信链路和相关联的联网装置(例如,链路层交换机、路由器等),以在任何合适类型的介质上传输网络流量,该合适类型的介质包括但不限于同轴电缆、双绞线(例如,双绞铜线)、光纤、同轴混合光纤(HFC)介质、微波介质、射频通信介质、卫星通信介质或它们的任何组合。

在说明性配置中,计算装置702可包括一个或多个处理器708、一个或多个存储器装置710(在本文中通称为存储器710)、一个或多个输入/输出(“I/O”)接口712、一个或多个网络接口714以及数据存储设备718。计算装置702还可包括功能性地耦合计算装置702的各种部件的一个或多个总线718。数据存储器可以存储一个或多个引擎、程序模块、组件等,包括但不限于标记引擎724、元数据关联引擎726、3D/2D投影引擎728、3D特定元数据关联引擎730、稀疏掩模生成引擎732、2D实例分割模型734和3D实例分割引擎736。图7中描绘的引擎/部件中的每者可以包括用于结合对应地命名的引擎/部件执行先前描述的过程或任务中的任一者的逻辑。在某些示例实施例中,所描绘的引擎/部件中的任一者可以在诸如一个或多个ASIC或FPGA的数码电子装置内的硬连线电路中实现,持久地编程数码电子装置以执行对应的技术。

总线718可包括系统总线、存储器总线、地址总线或消息总线中的至少一者,并且可准许在计算装置702的各种部件之间交换信息(例如,数据(包括计算机可执行代码)、信令等)。总线718可包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等。总线718可与任何合适的总线架构相关联,包括但不限于工业标准架构(ISA)、微通道架构(MCA)、增强型ISA(EISA)、视频电子标准协会(VESA)架构、加速图形端口(AGP)架构、外围部件互连(PCI)架构、PCI-Express架构、国际个人计算机存储卡协会(PCMCIA)架构、通用串行总线(USB)架构等。

存储器710可包括:易失性存储器(当被供电时维持其状态的存储器),诸如随机存取存储器(RAM);和/或非易失性存储器(即使当未被供电时也维持其状态的存储器),诸如只读存储器(ROM)、快闪存储器、铁电RAM(FRAM)等。持久性数据存储设备,如在本文中使用该术语时,可包括非易失性存储器。在某些示例实施例中,易失性存储器可实现比非易失性存储器快的读/写访问。然而,在某些其他示例实施例中,某些类型的非易失性存储器(例如,FRAM)可实现比某些类型的易失性存储器快的读/写访问。

在各种实施例中,存储器710可包括多种不同类型的存储器,诸如各种类型的静态随机存取存储器(SRAM)、各种类型的动态随机存取存储器(DRAM)、各种类型的不可更改ROM和/或ROM的可写变体,诸如电可擦除可编程只读存储器(EEPROM)、快闪存储器等。存储器710可包括主存储器以及各种形式的高速缓存存储器,诸如指令高速缓存、数据高速缓存、转译后备缓冲器(TLB)等。另外,高速缓存存储器诸如数据高速缓存可是组织为一个或多个高速缓存级(L1、L2等)的分级结构的多级高速缓存。

数据存储设备718可包括可移动存储设备和/或不可移动存储设备,包括但不限于磁性存储设备、光盘存储设备和/或磁带存储设备。数据存储设备718可提供对计算机可执行指令和其他数据的非易失性存储。存储器710和数据存储设备718(可移动和/或不可移动),如在本文中使用该术语时,是计算机可读存储介质(CRSM)的示例。数据存储设备718可存储可被加载到存储器710中并可由处理器708执行以致使处理器708执行或发起各种操作的计算机可执行代码、指令等。数据存储设备718可另外地存储可被复制到存储器710以供处理器708在执行计算机可执行指令期间使用的数据。此外,由于由处理器708执行计算机可执行指令产生的输出数据可最初存储在存储器710中,并且可最终复制到数据存储设备718以进行非易失性存储。

更具体地,数据存储设备718可存储一个或多个操作系统(O/S)720和一个或多个数据库管理系统(DBMS)722,该一个或多个O/S和一个或多个DBMS配置成潜在地经由网络706中的一者或多者访问存储器710和/或一个或多个外部数据存储(未描绘)。另外,数据存储设备718还可以存储一个或多个程序模块、应用程序、引擎、计算机可执行代码、脚本等。例如,在图7中描绘的引擎/部件中的任一者可以实现为包括可加载到存储器710中以由处理器708中的一者或多者执行本文中描述的技术中的任一者的计算机可执行指令(例如,计算机可执行程序代码)的软件和/或固件。

尽管图7中未描绘,但数据存储设备718还可存储计算装置702的引擎/部件所利用的各种类型的数据。此种数据可以包括但不限于2D/3D传感器数据、2D稀疏实例分割掩模、具有投影的3D点云数据点的2D图像数据、或3D特定元数据等。可将存储在数据存储设备718中的任何数据加载到存储器710中以供处理器708在执行计算机可执行程序代码时使用。另外,存储在数据存储设备718中的任何数据可潜在地存储在一个或多个外部数据存储(例如,数据存储244)中,该外部数据存储可经由DBMS 722访问并可加载到存储器710中以供处理器708在执行计算机可执行指令/程序代码时使用。

处理器708可配置成访问存储器710并执行加载在其中的计算机可执行指令/程序代码。例如,处理器708可配置成执行FOV语义计算机器724的各种引擎/部件的计算机可执行指令/程序代码,以致使或促进根据本发明的一个或多个实施例执行各种操作。处理器708可包括能够接受数据作为输入、根据存储的计算机可执行指令处理输入数据并生成输出数据的任何合适的处理单元。处理器708可包括任何类型的合适的处理单元,包括但不限于中央处理单元、微处理器、精简指令集计算机(RISC)微处理器、复杂指令集计算机(CISC)微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SoC)、数字信号处理器(DSP)等。另外,处理器708可具有包括任何数量的构成部件(诸如像寄存器、多路复用器、算术逻辑单元、用于控制对高速缓存存储器的读/写操作的高速缓存控制器、分支预测器等)的任何合适的微架构设计。可使处理器708的微架构设计能够支持多种指令集中的任一种。

现在参考被描绘为存储在数据存储设备718中的其他说明性部件,O/S 720可从数据存储设备718加载到存储器710中并可提供在计算装置702和计算装置702的硬件资源上执行的其他应用程序软件之间的接口。更具体地,O/S 720可包括用于管理计算装置702的硬件资源和用于向其他应用程序提供公共服务的一组计算机可执行指令。在某些示例实施例中,O/S 720可包括或以其他方式控制存储在数据存储设备718中的引擎/程序模块中的一者或多者的执行。O/S720可包括现在已知或可在将来开发的任何操作系统,包括但不限于任何服务器操作系统、任何大型机操作系统或任何其他专有或非专有操作系统。

可将DBMS 722加载到存储器710中并可支持用于访问、检索、存储和/或操纵存储在存储器710中的数据、存储在数据存储设备718中的数据和/或存储在外部数据存储中的数据的功能性。DBMS 722可使用多种数据库模型中的任一种(例如,关系模型、对象模型等)并可支持多种查询语言中的任一种。DBMS 722可访问以一种或多种数据模式表示并存储在任何合适的数据存储库中的数据。可以由计算装置702经由DBMS 722访问的数据存储可包括但不限于数据库(例如,关系、面向对象的等)、文件系统、平面文件、其中数据存储在计算机网络的多于一个节点上的分布式数据存储、对等网络数据存储等。

现在参考计算装置702的其他说明性部件,输入/输出(I/O)接口712可促进计算装置702从一个或多个I/O装置接收输入信息以及从计算装置702向一个或多个I/O装置输出信息。I/O装置可包括多种部件中的任一种,诸如具有触摸表面或触摸屏的显示器或显示屏幕;用于产生声音的音频输出装置,诸如扬声器;音频捕获装置,诸如麦克风;图像和/或视频捕获装置,诸如相机;触觉单元等。这些部件中的任一者都可集成到计算装置702中或可与其分开。I/O装置还可包括例如任何数量的外围装置,诸如数据存储装置、打印装置等。

I/O接口712还可包括用于外部外围装置连接(诸如通用串行总线(USB)、FireWire、Thunderbolt、以太网端口或可连接到一个或多个网络的其他连接协议)的接口。I/O接口712还可包括与一个或多个天线的连接,以经由无线局域网(WLAN)(诸如Wi-Fi)无线电、蓝牙和/或无线网络无线电(诸如能够与无线通信网络诸如长期演进(LTE)网络、WiMAX网络、3G网络等通信的无线电)连接到一个或多个网络。

计算装置702还可包括一个或多个网络接口714,计算装置702可经由该一个或多个网络接口与多种其他系统、平台、网络、装置等中的任一者通信。网络接口714可使得能够经由网络706中的一者或多者与例如传感器704和/或一个或多个其他装置通信。在示例实施例中,网络接口714提供耦接到连接到网络706中的一者或多者的一个或多个网络链路的双向数据通信。例如,网络接口714可以包括集成服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器或用于提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个非限制性示例,网络接口714可以包括局域网(LAN)卡,以提供到兼容LAN(或与WAN通信的广域网(WAN)部件)的数据通信连接。也可以实现无线链路。在任何此类实现方式中,网络接口714可以发送和接收携带表示各种类型的信息的数字数据流的电、电磁或光信号。

网络链路典型地提供通过一个或多个网络到其他数据装置的数据通信。例如,网络链接可以通过局域网提供到主计算机或到由互联网服务提供商(ISP)运营的数据设备的连接。ISP继而可以通过现在通常称为“互联网”的全球分组数据通信网络提供数据通信服务。局域网和互联网两者都使用携带数字数据流的电、电磁或光信号。通过各种网络704的信号以及在网络链路上并通过网络接口714的信号是传输介质的示例形式,该信号携带去往和来自计算装置702的数字数据。在示例实施例中,计算装置702可通过网络706、网络链路和网络接口714发送消息和接收数据,包括程序代码。例如,在互联网示例中,服务器可通过互联网、ISP、局域网和网络接口714传输针对应用程序的请求的代码。接收到的代码可以在其被接收到时由处理器708执行,和/或存储在数据存储设备718或其他非易失性存储器中,以供之后执行。

应了解,作为计算装置702的一部分的图7中描绘的引擎仅是说明性的而不是穷举的。具体地,能够以任何合适的方式对功能性进行模块化,使得被描述为由任何特定引擎支持的处理可以可替代地分布在多个引擎、程序模块、部件等上,或者由不同的引擎、程序模块、部件等执行。另外,在某些实施例中可以存在或不存在一个或多个所描绘的引擎,而在其他实施例中,可存在未描绘的附加引擎,并且该附加引擎可支持所描述的功能性和/或附加功能性的至少一部分。另外,各种引擎、程序模块、脚本、插件、应用程序编程接口(API)或本地托管在计算装置702上和/或托管在可经由网络702中的一者或多者访问的其他计算装置(例如,702)上的任何其他合适的计算机可执行代码可提供来支持由图7中描绘的引擎提供的功能性和/或附加或替代功能性。另外,支持本文中描述的功能性的引擎可至少部分地以硬件和/或固件来实现,并且可根据任何合适的计算模型(诸如像客户端-服务器模型、对等模型等)在任何数量的计算装置702上执行。

还应了解,在不脱离本发明的范围的情况下,计算装置702可包括除了所描述或描绘的那些之外的替代和/或附加硬件、软件和/或固件部件。更具体地,应了解,被描绘为形成计算装置702的部分的软件、固件和/或硬件部件仅是说明性的,并且在各种实施例中,可以存在或不存在一些部件,或者可以提供附加部件。还应了解,在各种实施例中,描绘并描述的引擎中的每者表示支持的功能性的逻辑分区。该逻辑分区是为了易于解释功能性而描绘的,并且可以表示或不表示用于实现功能性的软件、硬件和/或固件结构。

一般来讲,如本文所使用的术语引擎、程序模块等是指体现在硬件、固件和/或电路系统中的逻辑,或是指以编程语言诸如Java、C或C 编写的可能具有入口点和出口点的软件指令的集合。软件引擎/模块可以被编译并链接到可执行程序、安装在动态链接库中,或者可以用解释性编程语言诸如像BASIC、Perl或Python编写。将了解到,软件引擎/模块可以从其他引擎/模块或从它们自身被调用,和/或可以响应于检测到的事件或中断而被调用。配置成在计算装置上执行的软件引擎/模块可以提供在计算机可读介质诸如压缩盘、数字视频盘、快闪存储器驱动器、磁盘或任何其他有形介质上,或作为数字下载(并且可最初以要求在执行之前安装、解压缩或解密的压缩或可安装格式存储)。此类软件代码可以部分地或全部地存储在正在执行的计算装置的存储器装置上,以由计算装置执行。“开源”软件是指源代码,源代码可作为源代码和/或以编译形式分发,并且以广为人知且有索引的手段获得源代码,并且任选地具有允许修改和衍生作品的许可。软件指令可以被嵌入在固件中并且例如被存储在诸如可擦除可编程只读存储器(EPROM)的闪存上。还将了解,硬件模块/引擎可以包括连接的逻辑单元,诸如门和触发器,和/或还可以包括可编程单元,诸如可编程门阵列或处理器。

示例实施例在本文中被描述为包括引擎或程序模块。此类引擎/程序模块可以构成软件引擎(例如,体现在机器可读介质上的代码)或硬件引擎。“硬件引擎”是能够执行某些操作的有形单元,并且可以特定物理方式被配置或布置。在各种示例实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件引擎(例如,处理器或一组处理器)可以通过软件(例如,应用程序或应用程序部分)配置为操作来执行如本文所描述的某些操作的硬件引擎。

在一些实施例中,硬件引擎可以机械地、电子地或以它们的任何合适的组合实现。例如,硬件引擎可以包括持久性地配置为执行某些操作的专用电路或逻辑。例如,硬件引擎可以为专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件引擎还可以包括由软件临时配置为执行某些操作的可编程逻辑或电路。例如,硬件引擎可以包括通用处理器或由软件配置的其他可编程处理器,在这种情况下,配置的处理器成为唯一被定制以执行配置的功能的特定机器,并且不再构成通用处理器。将了解,可以由成本和时间考虑促成对在专用且持久性地配置的电路中还是在暂时地配置的电路(例如,由软件配置)中机械地实现硬件引擎的决策。

因此,术语“引擎”或“程序模块”应理解为涵盖有形实体,是物理地构造、持久性地配置(例如,硬接线)或暂时地配置(例如,编程)来以某种方式操作或执行本文中描述的某些操作的实体。考虑其中硬件引擎被临时配置(例如,编程)的实施例,硬件引擎中的每一个不需要在任何时间的任何时刻被配置或实例化。例如,在硬件引擎包括由软件配置成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间分别配置为不同专用处理器(例如,包括不同硬件引擎)。软件可相应地配置一个或多个特定处理器,例如,以在给定的时刻构成特定硬件引擎,以及在不同时刻构成不同硬件引擎。

硬件引擎可向其他硬件引擎提供信息并从其他硬件引擎接收信息。因此,可以认为所描述的硬件引擎是通信地耦合的。在同时地存在多个硬件引擎的情况下,可以通过在硬件引擎中的两者或更多者之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中在不同时间上配置或实例化多个硬件引擎的实施例中,例如,可以通过对多个硬件引擎可访问的存储器结构中的信息的存储和检索来实现在这种硬件引擎之间的通信。例如,一个硬件引擎可以执行一个操作并将该操作的输出存储在与之通信地耦合的存储器装置中。然后,另一个硬件引擎可以在之后时间上访问存储器装置以检索和处理存储的输出。硬件引擎还可以发起与输入或输出装置的通信,并且可在资源(例如,信息集合)上操作。

本文中描述的示例方法的各种操作可以至少部分地由暂时地配置(例如,通过软件)或持久性地配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,此类处理器都可以构成硬件引擎的实现方式。类似地,本文中描述的方法可以至少部分地是处理器实现的,其中一个或多个特定处理器是硬件的示例。此外,一个或多个处理器还可以在“云计算”环境中或作为“软件即服务”(SaaS)来支持相关操作的执行。例如,操作中的至少一些可以由一组计算机(作为包括处理器的机器的示例)执行,其中这些操作可经由网络(例如,互联网)和经由一个或多个适当的接口(例如,API)访问。

本文所述的示例方法的某些操作的执行可以分布在多个处理器间,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例实施例中,处理器可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器场内)。在其他示例实施例中,处理器可以分布在多个地理位置上。

可以将本发明实现为系统、方法和/或计算机程序产品。计算机程序产品可以包括其上体现有用于致使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质。

计算机可读存储介质,如在本文中使用该术语时,是非暂时性介质的形式,并且可为可保留和存储指令以供指令执行装置使用的任何有形装置。计算机可读存储介质可以是例如但不限于电子存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置、或前述各项的任何合适的组合。计算机可读存储介质以及更一般地,非暂时性介质,可以包括非易失性介质和/或易失性介质。计算机可读存储介质的更具体的示例的非穷举性列表包括:便携式计算机软盘,诸如软盘或柔性盘;硬盘;随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、静态随机存取存储器(SRAM)或任何其他存储器芯片或盒式磁带;便携式压缩盘只读存储器(CD-ROM);数字多功能盘(DVD);存储棒;固态驱动器;磁带或任何其他磁性数据存储介质;机械地编码的装置,诸如打孔卡或其上记录有指令的凹槽中凸起结构或具有孔图案的任何物理介质;上述项的任何联网版本;以及上述项的任何合适的组合。

非暂时性介质不同于传输介质,并且因此如本文所使用,计算机可读存储介质不应被理解为自身是瞬时信号,诸如无线电波或其他自由地传播的电磁波、通过波导或其他传输介质(例如,通过光纤电缆的光脉冲)传播的电磁波或通过接线传输的电信号。然而,非暂时性介质可与传输介质结合操作。具体地,传输介质可以参与在非暂时性介质之间传送信息。例如,传输介质可包括同轴电缆、铜线和/或光纤,包括包含总线702中的至少一些的接线。传输介质也可采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。

可经由例如互联网、局域网(LAN)、广域网(WAN)和/或无线网络等网络将本文中描述的计算机可读程序指令从计算机可读存储介质下载到相应计算/处理装置或下载到外部计算机或外部存储装置。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理装置中的网络适配器卡或网络接口从网络接收计算机可读程序指令并转发计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以为汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或用一种或多种编程语言(包括面向对象的编程语言(例如Smalltalk、C 等)和常规过程编程语言(例如“C”编程语言或类似编程语言))的任意组合编写的源代码或对象代码。计算机可读程序程序代码可以完全地在用户的计算机上执行,部分地在用户的计算机上执行,作为独立的软件包执行,部分地在用户的计算机上且部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括LAN或WAN)连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商(ISP)的互联网)。在一些实施例中,包括例如可编程逻辑电路、FPGA或可编程逻辑阵列(PLA)的电子电路系统可以通过利用计算机可读程序指令的状态信息以个性化电子电路系统来执行计算机可读程序指令,以便执行本发明的方面。

在本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图来描述本发明的方面。将理解,可通过计算机程序指令实现流程图说明和/或框图的每个框以及流程图说明和/或框图中的框的组合。这些计算机可读程序指令可以提供给通用计算机、专用计算机的处理器或者其他可编程数据处理设备以产生机器,使得经由计算机的处理器或其他可编程数据处理设备来执行的指令创建用于实施流程图和/或框图的一个或多个框中指定的功能/动作的手段。这些计算机可读程序指令还可以存储于计算机可读存储介质中,计算机可读存储介质可指导计算机、可编程数据处理设备和/或其他装置以特定方式起作用,使得其中存储有指令的计算机可读存储介质包括制造物品,制造物品包括实施在流程图和/或框图的一个或多个框中指定的功能/动作的方面的指令。计算机可读程序指令还可以被加载到计算机、其他可编程数据处理设备或其他装置上,以使得在计算机、其他可编程设备或其他装置上执行一系列操作步骤,以产生计算机实施的过程,使得在计算机或其他可编程设备上执行的指令提供实施在流程图和/或框图框中指定的功能/动作。

上述各种特征和过程可彼此独立地使用,或者可以各种方式组合。所有可能的组合和子组合都旨在落入本发明的范围内。另外,在一些实现方式中,可以省略某些方法或过程框。本文中描述的方法和过程也不限于任何特定序列,并且与其相关的框或状态能够以其他适当的序列执行。例如,所描述的框或状态可以不同于具体公开的顺序执行,或者多个框或状态可在单个框或状态中组合。示例块或状态可以串行、并行或以某种其他方式执行。可以向所公开的示例实施例添加块或状态或从其中移除块或状态。本文中描述的示例系统和部件可以配置成与所描述的不同。例如,与所公开的示例实施例相比,可以向其添加、从中移除或重新布置要素。

附图中的流程图和框图说明根据本发明的各种实施例的系统、方法和计算机程序产品的具有可能的实施例的架构、功能性和操作。在这方面,流程图或框图中的每个框可以表示指令的模块、段或部分,指令包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中提及的功能可以不按图中指出的次序发生。例如,依据所涉及的功能性,连续示出的两个框实际上可以部分地、基本上或完全地同时执行,或者这些框有时可以按相反次序执行。

应强调的是,可以对上述实施例作出许多改变和修改,实施例的要素应被理解为在本发明的其他示例实施例之中。所有此修改和变化在本文中旨在被包括在本发明的范围内。尽管本文中可以通过术语“发明”单独地或共同地指代本发明的示例实施例,但这仅是为了方便起见,并且如果事实上公开多于一个,则不将本发明的范围限于任何单个公开或概念。前述描述详述了本发明的某些实施例。然而,应理解,无论前述内容在文本中显示得多么详细,都能够以许多方式来实践本发明。应注意的是,在描述本发明的某些特征或方面时使用特定术语并不暗示在该术语在本文中重新定义为限制于包括与该术语相关联的本发明的特征或方面的任何特定特性。

本文中示出的实施例被足够详细地描述以使得本领域的技术人员能够实践所公开的教导。可以使用其他实施例并从中得出其他实施例,使得在不脱离本发明的范围的情况下,可以进行结构和逻辑替换和改变。因此,不应从限制意义上理解具体实施方式,并且各种实施例的范围仅由所附权利要求书以及此类权利要求所赋予的等同物的整个范围来限定。

尽管出于基于当前认为是最实际和优选的实现方式的说明的目的详细描述了本发明,但应理解,此种细节仅用于该目的,并且本发明不限于所公开的实现方式,相反,本发明旨在覆盖在所附权利要求书的精神和范围内的修改和等同布置。例如,应理解,在可能的范围内,本发明考虑了任何实施例的一个或多个特征可与任何其他实施例的一个或多个特征组合。

如本文所使用,术语“或”可以包括性或排他性意义来解释。此外,可以提供在本文中描述为单个实例的资源、操作或结构的多个实例。另外,在各种资源、操作、程序模块、引擎和/或数据存储之间的边界在一定程度上是任意的,并且在具体说明性配置的上下文中说明了特定操作。可设想功能性的其他分配,并且这些可以落入本发明的各种实施例的范围内。一般来讲,可以将在示例配置中呈现为独立资源的结构和功能性实现为组合结构或资源。类似地,可以将呈现为单个资源的结构和功能性实现为独立资源。这些和其他变型、修改、添加和改进落入如所附权利要求书所表示的本发明的实施例的范围内。因此,说明书和附图被认为是说明性的,而不是限制性的。

除非另外明确说明,或另外在如所使用的背景内理解的,否则诸如“可”、“能够”、“可能”或“可以”等条件性语言一般旨在传达某些实施例包括,而其他实施例不包括某些特征、元件和/或步骤。因此,此种条件语言通常不旨在暗示一个或多个实施例以任何方式需要特征、要素和/或步骤,或者一个或多个实施例必须包括用于在具有或不具有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中或将在任何特定实施例中执行的逻辑。另外,应了解,在本文中被描述为基于另一个操作、元件、部件、数据等的任何操作、元件、部件、数据等可另外地基于一个或多个其他操作、元件、部件、数据等。因此,短语“基于”或其变体应被解释为“至少部分地基于”。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献