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

针对自主驾驶应用的使用曲线拟合的地标检测的制作方法

2022-02-22 03:04:34 来源:中国专利 TAG:

针对自主驾驶应用的使用曲线拟合的地标检测


背景技术:

1.在环境中准确地和精确地检测地标(例如,车道线、车道边缘、道路边界、文本、杆或标志和/或其他特征)的能力对于所有自主级别的自主机器应用(例如,从驾驶员/飞行员辅助机器或车辆到半自主和全自主机器和车辆)是必要的。由于道路标记质量的变化、车道和道路标记惯例中的地理或区域差异,以及由于磨损、天气条件、照明条件、临时标记(例如,由于施工或救灾)等引起的道路标记障碍、退化和/或遮挡,在驾驶期间在环境中可能遇到的车道标记的多样性会非常高。
2.一些常规的车道或车道线检测方法已经使用深度神经网络(dnn)处理,其中使用行驶表面的高分辨率图像以及车道和线的相关联注释来训练dnn(例如,卷积神经网络(cnn))以识别车道线。这些常规方法已经训练dnn通过将图像的每个像素分类为或者不分类为车道线的一部分来生成示出图像中的车道线的一般位置的分割掩膜。然而,这些常规方法需要大量的后处理(诸如动态编程)以将输出转换成车道线、道路边界、杆和/或其他特征的可用表示。例如,因为这些常规dnn的输出包括对属于每个地标特征的像素中的每个像素的识别,所以在后处理期间必须确定属于同一地标的像素中的每个像素之间的相关性以及其分类。此外,对于具有除了笔直轮廓之外的轮廓的地标(例如,为了遵循行驶表面的曲线或轮廓线),额外的角度或方向性信息必须由dnn输出并被后处理以确定地标特征的角度或方向。这些大量的后处理任务增加了系统的等待时间,并且增加了系统的计算要求,从而使得这些常规dnn对于车辆中的实时部署不太有用。


技术实现要素:

3.本公开的实施例涉及针对自主驾驶应用的使用曲线拟合的地标检测。公开了使用一个或更多个深度神经网络(dnn)来回归曲线的控制点并使用控制点执行曲线拟合操作(例如,贝塞尔曲线拟合)来识别环境中的地标位置和几何结构的系统和方法。因此,(一个或更多个)dnn的输出可以指示二维(2d)图像空间和/或三维(3d)世界空间控制点位置,并且可以执行较少计算和时间密集的后处理技术(诸如聚类和时间平滑)来精确地且实时地确定地标位置和姿态。因此,与常规系统相比,针对车辆的一个或更多个传感器中的每个传感器的视野中的每个地标,控制点可类似于物体检测方法进行回归,然后控制点可以用于重建对应于地标(例如,车道线、道路边界线、人行横道、杆、文本等)的曲线。
4.为了训练(一个或更多个)dnn以便进行准确预测,可以从与训练数据集中的地标特征相对应的多段线和/或多边形注释中生成与地标特征的控制点位置相对应的地面实况数据。例如,因为训练数据集可以包括先前注释的多段线或多边形,所以可以使用曲线拟合方法来分析这些现有注释(除了新的或附加的训练数据集以外或替代于新的或附加的训练数据集)以确定用于生成地面实况数据的控制点。在一些实施例中,为了提高控制点确定的准确度,可以对来自地面实况多段线的点进行重采样以沿着多段线创建更均匀间隔的点,使得所确定的控制点更准确地反映地标特征的曲线。用于训练(一个或更多个)dnn回归控制点的地面实况数据可以包括指示距曲线的阈值距离内的像素的二元掩码,指示在x、y和/
或z方向上(针对3d控制点回归)至控制点的距离的距离回归通道,和/或用于确定与每个控制点或拟合曲线对应的分类或语义信息的分类通道。一旦被训练和部署,(一个或更多个)dnn就可以准确和精确地计算指示控制点位置和与其对应的语义信息的输出,并且这些输出可以被解码和后处理以确定对应于地标特征的曲线。
附图说明
5.下面参考附图详细描述针对自主驾驶应用的使用曲线拟合进行地标检测的本系统和方法,其中:
6.图1是示出了根据本公开的一些实施例的用于训练用于地标检测的深度神经网络(dnn)的示例过程的数据流程图;
7.图2a描绘了根据本公开的一些实施例的与训练图像相关联的注释的可视化;
8.图2b描绘了根据本公开的一些实施例的曲线拟合操作;
9.图2c描绘了根据本公开的一些实施例的使用曲线拟合操作被转换为曲线的注释的可视化;
10.图3a描绘了根据本公开的一些实施例的用于生成地面实况数据的训练数据的可视化;
11.图3b描绘了根据本公开的一些实施例的二元掩码的可视化;
12.图3c描绘了根据本公开的一些实施例的位分类掩码的可视化;
13.图3d-3k描绘了根据本公开的一些实施例的距离回归掩码的可视化;
14.图4a-4c描绘了根据本公开的一些实施例的使用减小的长度和变化的权重生成的地面实况数据的可视化;
15.图5是示出了根据本公开的一些实施例的用于训练用于地标检测的dnn的方法的流程图;
16.图6是示出了根据本公开的一些实施例的使用用于地标检测的dnn的示例过程的数据流程图;
17.图7是示出了根据本公开的一些实施例的对用于地标检测的dnn的输出进行解码和后处理的示例过程的数据流程图;
18.图8a-图8b描绘了根据本公开的一些实施例的在后处理之前和之后的预测曲线的可视化;
19.图9a-9e描绘了根据本公开的一些实施例的使用dnn检测到的示例地标类型的可视化;
20.图10是示出了根据本公开的一些实施例的用于使用dnn进行地标检测的方法的流程图;
21.图11a是根据本公开的一些实施例的示例自主车辆的图示;
22.图11b是根据本公开的一些实施例的图11a的示例自主车辆的相机位置和视野的示例;
23.图11c是根据本公开的一些实施例的图11a的示例自主车辆的示例系统架构的框图;
24.图11d是根据本公开的一些实施例的用于在基于云的服务器与图11a的示例自主
车辆之间通信的系统图;
25.图12是适合用于实现本公开的一些实施例的示例计算设备的框图;以及
26.图13是适合用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
27.公开了与针对自主驾驶应用的使用曲线拟合进行地标检测相关的系统和方法。尽管本公开可以针对示例自主车辆1100(可替代地在此被称为“车辆1100”或“自主车辆1100”,其示例在本文针对图11a-11d进行描述)进行描述,但这不旨在是限制性的。例如,本文所述的系统和方法可由非自主车辆、半自主车辆(例如,在自适应驾驶员辅助系统(adas)中)、机器人、仓库车辆、越野车辆、飞行船、船、客运车辆、汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆、救护车、建筑车辆、水下飞行器、无人机、另一种类型的车辆(例如,无人驾驶的和/或容纳一个或更多个乘客的车辆)、有人驾驶或无人驾驶的机器人、和/或有人驾驶或无人驾驶的机器人平台使用。此外,尽管本公开可针对自主驾驶来描述,但这并非旨在进行限制。例如,本文所述的系统和方法可用于机器人、航空系统、船运系统和/或其他技术领域中,例如用于感知、世界模型管理、路径规划、障碍物躲避和/或其他过程。
28.参见图1,图1是示出了根据本公开的一些实施例的用于训练用于地标检测的深度神经网络(dnn)的示例过程的数据流程图。应当理解,本文所述的这种和其他布置仅作为示例被阐述。除了所示的那些布置和元件之外或代替所示的那些布置和元件,可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),并且一些元件可以一起省略。进一步,本文描述的许多元件是可被实现为分立或分布式组件,或结合其他组件且在任何合适的组合和位置中实现的功能实体。本文中描述为由实体执行的不同功能可由硬件、固件和/或软件执行。例如,不同功能可由执行存储在存储器中的指令的处理器执行。在一些实施例中,可以至少部分地使用如本文针对图11a-11d的车辆1100、图12的示例计算设备1200、和/或图13的示例数据中心1300所描述的类似组件、特征和/或功能来实现根据过程100的深度神经网络(dnn)104的训练。
29.过程100可以包括生成和/或接收来自一个或更多个传感器的传感器数据102。作为非限制性示例,可以从车辆(例如,如本文描述的图11a-11d的车辆1100)的一个或更多个传感器接收传感器数据102。传感器数据102可以由车辆1100并且在过程100内使用,用于训练一个或更多个dnn 104来检测地标——例如,地标位置、姿态、语义类等。在训练期间,传感器数据102可以使用一个或更多个数据收集车辆来生成,和/或可以被预生成和包括在训练数据集中,所述一个或更多个数据收集车辆生成用于训练dnn(诸如,(一个或更多个)dnn 104)的传感器数据。在训练过程中使用的传感器数据102可以另外地或替代地使用模拟的传感器数据(例如,使用虚拟环境中的虚拟车辆的一个或更多个虚拟传感器生成的传感器数据)和/或增强的传感器数据(例如,分别使用一个或更多个数据收集车辆生成并使用虚拟数据修改的传感器数据)来生成。一旦在车辆1100中被训练和部署,传感器数据102就可以由车辆1100的一个或更多个传感器生成并由(一个或更多个)dnn 104处理以计算不同输出106,如本文中所描述的。
30.这样,传感器数据102可以包括但不限于来自车辆1100的任何传感器的传感器数
据102,例如并参照图11a-11c,车辆1100的任何传感器包括(一个或更多个)radar(雷达)传感器1160、(一个或更多个)超声波传感器1162、一个或更多个lidar(激光雷达)传感器1164、一个或更多个立体相机1168、一个或更多个宽视角相机1170(例如,鱼眼相机)、(一个或更多个)红外相机1172、(一个或更多个)环绕相机1174(例如,360度相机)、(一个或更多个)长距和/或中距相机1178和/或其他传感器类型。作为另一个示例,传感器数据102可以包括从虚拟(例如,测试)环境中的虚拟车辆或其他虚拟对象的任何数量的传感器生成的虚拟(例如,模拟或增强)传感器数据。在这样的示例中,虚拟传感器可对应于模拟环境中的虚拟车辆或其他虚拟对象(例如,用于测试、训练和/或验证dnn性能),并且虚拟传感器数据可表示由模拟或虚拟环境内的虚拟传感器捕捉的传感器数据。因此,通过使用虚拟传感器数据,本文中描述的(一个或更多个)dnn 104可在模拟环境中使用模拟或增强的数据来测试、训练和/或验证,这可允许测试现实世界环境之外的更极端的场景,在现实世界环境中此类测试可能是较不安全的。
31.在一些实施例中,传感器数据102可包括表示(一个或更多个)图像的图像数据、表示视频的图像数据(例如,视频的快照)、和/或表示传感器的传感场的表示的传感器数据(例如,lidar传感器的深度图、超声传感器的值图等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图像数据格式,例如但不限于压缩图像(如联合图像专家组(jpeg)或亮度/色度(yuv)格式),作为源自压缩视频格式(如h.264/高级视频编码(avc)或h.265/高效视频编码(hevc))的帧的压缩图像,诸如源自红色清晰蓝(rccb)、红色清晰(rccc)或其他类型的成像传感器的原始图像,和/或其他格式。另外,在一些示例中,可在过程100内使用传感器数据102而无需任何预处理(例如,以原始或捕获格式),而在其他示例中,传感器数据102可以经历预处理(例如,噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,诸如使用传感器数据预处理器(未示出))。如本文所使用的,传感器数据102可以参考未处理的传感器数据、预处理的传感器数据或其组合。
32.用于训练的传感器数据102可包含原始图像(例如,如由一个或更多个图像传感器捕获)、下采样图像、上采样图像、经裁剪或兴趣区(roi)图像、以其他方式扩增图像和/或其组合。可以使用图像(和/或其他传感器数据102)以及相应的地面实况数据122(例如,(一个或更多个)地面实况(gt)二元掩码124、(一个或更多个)gt距离回归掩码126、和/或(一个或更多个)gt位分类掩码128)来训练(一个或更多个)dnn 104。地面实况数据122可以由编码器120使用注释数据114(例如,注释、标记、掩码等)、曲线拟合器116和/或控制点118来生成。例如,在一些实施例中,注释数据114可表示对应于任何地标类型(例如道路标记、车道线、道路边界线、交叉线、人行道、自行车车道线、文本、杆、树、灯柱、标志等)的多段线。例如,关于图2a,可视化200a可以包括多段线202a-202f,其可以对应于车道和/或道路边界线。多段线202a-202f可包含对应的语义或分类信息。例如,当对多段线202进行注释时,多段线202可与特定语义类别相关联。例如,多段线202a可对应于道路边界线,或更精细地对应于纯白色道路边界线。类似地,多段线202c可对应于虚线车道线,且多段线202d可对应于实线道路边界线。
33.在一些实施例中,可从多边形中确定或提取多段线。例如,由注释数据114表示的注释或标签可以对应于实质上定义地标的形状的多边形——例如,适合于每条车道的多边形、适合于杆的多边形、适合于文本的多边形等。多边形的中心线、左边界线和/或右边界线
可用以产生多段线。例如,对于车道,可以使用多边形来确定车道的左车道线(例如,多边形的左边缘)、右车道线(例如,多边形的右边缘)、和/或中心线或轨道(例如,延伸穿过多边形的中心的线)。因而,在使用多边形的情况下,可从多边形中产生或提取多段线,例如图2a的多段线202。在任何实施例中,注释可以包括多边形、多段线、另一注释或标签类型、或其组合。
34.如本文中所描述,注释数据114可表示对应于多边形、多段线和/或其他注释或标签类型的语义或分类信息。语义类别可以包括任何粒度级别。例如,语义类别可以包括车道线、道路边界线、交叉线、杆、标志、文本等。在更细粒度的级别,例如,车道线的语义类别可以包括实线或虚线、黄色线或白色线、单线或双线、或其组合。因此,对于非限制性示例,车道线的语义类别可包括白色单实线、黄色单实线、白色单虚线、黄色单虚线、白色双实线、黄色双实线、白色双虚线、黄色双虚线、白色实线虚线、黄色实线虚线、白色虚线实线、黄色虚线实线、三重实线、三重虚线、实线虚线实线、虚线实线虚线等。对于道路边界,对于非限制性示例,语义类别可包含障碍物、路缘、接缝、线等。对于交叉线,对于非限制性示例,语义类别可包括交叉线、十字交叉线、停止线、行人线等。对于杆,对于非限制性示例,语义类别可包括道路标志、杆、灯、电线杆、树等,或者对于标志可包括交通标志、施工标志、广告标志等。于是,任何数量和粒度的语义类别可与注释或标签相关联,并被用于生成用于训练dnn 104的地面实况数据122。
35.在一些示例中,可以在绘图程序(例如,注释程序)、计算机辅助设计(cad)程序、加标签程序、适于生成注释的另一类型的程序内生成注释,和/或可以手动绘制注释。在任何示例中,注释数据114可以是合成产生的(例如,从计算机模型或渲染生成),真实产生的(例如,从真实世界数据设计和产生)、机器自动化的(例如,使用特征分析并学习以从数据中提取特征然后产生标签)、人注释的(例如,标签者或注释专家定义标签的位置)和/或其组合(例如,人识别区域的中心或原点和尺寸,机器生成交叉区域的多边形和/或标签)。
36.过程100可以包括使用曲线拟合器116执行曲线拟合操作。例如,由注释数据114表示的多段线可经历曲线拟合操作以确定界定曲线的点的控制点。因此,地面实况数据122可以用于训练(一个或更多个)dnn 104以预测、回归或以其他方式计算控制点在2d图像空间或3d世界空间中的位置。曲线拟合操作可包括2d贝塞尔曲线拟合算法(例如,用于图像空间控制点估计),3d贝塞尔曲线拟合算法(例如,用于世界空间控制点估计)、三次贝塞尔曲线拟合算法(例如,对于每一曲线包含四个控制点)、高阶贝塞尔曲线拟合算法(例如,五个或更多个控制点)或分裂式贝塞尔曲线拟合算法(例如,单条曲线分裂成两个以上曲线,每一曲线包含多个控制点),和/或另一曲线拟合算法类型。在一些实施例中,曲线拟合算法可以用于确定三个或更多个控制点,以便提高曲线拟合的精度和准确度。例如,对于仅两个点,曲线拟合的结果类似于线性插值的结果,其对于非线性的曲线将产生不太准确或精确的结果。因此,所使用的控制点越多,曲线拟合就越准确或精确,而控制点越多,操作的处理就越多且计算越密集,由此增加系统的运行时间。因此,通过实验,并且作为非限制性示例,使用三至五个控制点可以产生准确和精确的结果,且具有允许实时部署的可接受的计算要求。然而,可以使用任何数量的控制点而不偏离本公开的范围。此外,尽管本文的图示包括每条曲线四个控制点,但这不旨在是限制性的并且仅用于示例目的。进一步,尽管本文主要描述了贝塞尔曲线拟合,但这不旨在是限制性的,并且可使用其他曲线拟合算法而不背离本公
开的范围。然而,贝塞尔曲线拟合包括若干优点,包括使用三个或更多个控制点来生成更准确的曲线拟合结果,并且这些控制点中的两个位于每条曲线的起点和终点,这对车辆1100在进行规划、控制或其他决策类型中是有用的。
37.在一些实施例中,在曲线拟合操作之前,可对沿着来自注释数据的多段线的点进行重新采样。例如,因为多段线可包含其中曲线较直的较少点以及其中存在较多曲率的较多点,所以在一些位置处,与在其他位置相比可存在更多的点。虽然未经重新采样的多段线可产生准确结果,但通过对沿着多段线的点进行重新采样以包含点的更均匀采样分布可增加准确度。作为示例,图2a的多段线202f在重新采样之前可包括点206,而多段线202c在重新采样之后可包括点206。如图示,沿着多段线202c的点206比沿着多段线202f的点更均匀地分布。通过重新采样,曲线拟合操作可不太可能产生偏向于具有更多数目的点的多段线的区域的控制点。因此,使用曲线拟合器116确定的控制点,以及因此使用控制点生成的地面实况数据122,对于曲线拟合可以是更精确的。
38.在实施例中,在重新采样之后,多段线然后可以经历曲线拟合操作以确定控制点位置。参考图2b,并且作为使用贝塞尔曲线拟合的示例,贝塞尔曲线可以被定义为q(t),其中t可以包括使得0<t<1的参数。以下在等式(1)的矩阵表达式中,第一矩阵t由t0、t1、t2和t3组成。在等式(1)中,第二矩阵m可被称为贝塞尔矩阵,其由我们展开三次多项式时的系数组成。四个控制点(在该示例中为三次贝塞尔曲线拟合算法)包括p0、p1、p2和p3并且,由于在这个示例中存在两个维度,所以在等式(1)中控制点可以被表示为第三矩阵p,其中x0和y0表示控制点p0的(x,y)坐标(例如,2d图像空间中的像素坐标)等。尽管被表示为2d像素或图像空间坐标,但这不旨在是限制性的,并且在一些实施例中,坐标可对应于3d世界空间坐标,以使得dnn 104被训练成直接计算曲线的控制点的3d坐标。
[0039][0040]
贝塞尔曲线拟合算法可以交替地优化p和t。可通过每一线段(或多段线)的长度来计算初始t。如果仅存在一个线段,那么所述线段可均等地分成三个线段。如果仅存在两个线段,那么较长的线段可均等地分成两个线段。在实施例中,任何线段可被分成小块,使得每个线段具有相对相同的长度。可在已确定线段之后计算初始t,然后可使用重新采样的多段线进行优化。当t固定时,p可以通过最小二乘法求解,例如像根据以下等式(2):
[0041]
p=(m
t
t
t
tm)-1mt
t
tqꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0042]
当p固定时,t可以通过牛顿拉普森法求解。例如,要求解的问题可以是以下等式(3)的根:
[0043]
f(t)=(q(t)-q)q

(t)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0044]
作为示例,该概念在图2b中示出,其中根据下面的等式(4)计算f(t)、f’(t)的根:
[0045]f′
(t)=q

(t)q

(t) (q(t)-q)q

(t)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0046]
其中更新步骤由以下等式(5)表示:
[0047]
t=t-f(t)/f

(t)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0048]
在每次迭代时,可以根据下面的等式(6)计算误差e:
[0049]
e=||p-tmq||
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0050]
如果误差e停止减小,则可确定收敛。如果误差e超出最大误差,则可确定发散。如果达到最大数量的步骤或迭代,则可以使用最后一次迭代的结果。
[0051]
作为曲线拟合器116的曲线拟合操作的结果,可以生成各自由控制点118定义的一条或更多条曲线。作为曲线拟合操作的结果的示例,图2c包含在曲线拟合之后从图2a的多段线202产生的曲线204(例如,曲线204a到204f)的可视化200b。如此,(特定语义标签的)每条曲线包括相等数量的控制点118——例如,在本示例中为四个,如执行三次贝塞尔曲线拟合的情况。如图所示,即使在世界空间中是连续的,但因为曲线204c对应于车道线并且曲线204e对应于道路边界线,所以可以生成各自具有相应控制点118的两条曲线204。结果,如本文所描述的,(一个或更多个)dnn 104可被训练来计算对应于特定语义类别的(一个或更多个)位分类掩码112,和/或回归(或以其他方式计算)对应于特定地标类型(例如,关于图2c的特定道路标记类型)的曲线204的控制点118的(一个或更多个)二元掩码108和(一个或更多个)距离回归掩码110。
[0052]
控制点118和/或语义分类信息然后可由编码器120使用来生成用于使用训练引擎130来训练dnn 104的地面实况数据122。这样,对于训练数据集中的传感器数据102的每个实例,可以生成地面实况数据122。地面实况数据122可以包括一个或更多个gt二元掩码124、一个或更多个gt距离回归掩码126和/或一个或更多个gt位分类掩码128。在一些实施例中,如在可变长度和/或宽度用于对地面实况数据122中的曲线进行编码的情况下——如在此更详细地描述的——还可以为地面实况数据122生成权重通道。最终,训练引擎130可以使用一个或更多个损失函数(诸如但不限于在此描述的那些损失函数)将地面实况数据122与(一个或更多个)dnn 104的输出106进行比较。例如,可以将由(一个或更多个)dnn 104针对传感器数据102的一实例计算的(一个或更多个)二元掩码108与对应于传感器数据102的相同实例的(一个或更多个)gt二元掩码124进行比较,可以将由(一个或更多个)dnn 104针对传感器数据102的一实例计算的(一个或更多个)距离回归掩码110与对应于传感器数据102的相同实例的(一个或更多个)gt距离回归掩码126进行比较,等等。训练引擎130可使用损失函数来确定对dnn 104的参数(例如,权重、偏差等)的更新,并且可以重复此过程直到(一个或更多个)dnn 104收敛至可接受的准确度水平——例如,直到dnn 104的经训练的参数收敛到最优、期望和/或可接受的值。
[0053]
作为示例,并且参见图3a,可视化300可以对应于传感器数据102(例如,图像)的实例和相应的曲线302a-302d,每条曲线包括控制点118(例如,每条曲线302可以包括四个控制点118)。每条曲线302可以已经由曲线拟合器116从由注释数据114表示的多段线生成。曲线302可各自与语义分类信息相关联。例如,曲线302a和302d可以对应于道路边界线,并且曲线302b和302c可以对应于车道线(例如,车道边缘线)。如仅关于曲线302d(为了清楚起见)所图示的,每一曲线302可包含第一控制点118a、第二控制点118b、第三控制点118c和第四控制点118d。对于每条曲线,第一控制点118a可对应于结束控制点,而第四控制点118d可对应于开始控制点118。
[0054]
编码器120可使用曲线302来编码gt二元掩码124。例如,关于图3b,图示了与来自可视化300的曲线302相对应的gt二元掩码124a。gt二元掩码124a可通过对任何曲线302的
y(图3g),每条曲线302a-302d的控制点118c可被编码成x轴gt距离回归掩码126c-x(图3h)和y轴gt距离回归掩码126c-y(图3i),并且每条曲线302a-302d的控制点118d可以被编码成x轴gt距离回归掩码126d-x(图3j)和y轴gt距离回归掩码126d-y(图3k)。
[0058]
在一些实施例中,距离可对应于dnn 104的输出分辨率,而在其他实施例中,距离可对应于dnn 104的输入分辨率。因此,即使可针对输出分辨率下的像素计算x轴或y轴距离,但该值也可对应于(例如,dnn 104的输入图像的)输入分辨率下的距离(例如,像素距离)。因此,在解码期间,输出分辨率下的像素可具有输入分辨率下的已知或估计的对应像素,且已知或估计的对应像素可随后具有来自归属于其的输出分辨率的值。该过程可类似于在2019年7月17日提交的美国非临时专利申请no.16/514,230中的图2a-2b以及附随描述,该申请通过引用以其全文结合在此。
[0059]
在一些实施例中,诸如在生成gt二元掩码124、gt距离回归掩码126或gt位分类掩码128中的两个或更多个为使得仅对曲线302的半径内的像素进行编码的情况下,该半径对于不同的掩码类型可以不同。例如,gt二元掩码124可以具有第一半径,并且gt距离回归掩码126可以具有不同于第一半径的第二半径。类似地,gt位分类掩码128可以具有与gt二元掩码124和/或gt距离回归掩码126不同的半径。在这样的实施例中,可以生成另一gt权重通道或掩码来训练dnn 104以输出权重通道来帮助解码掩码,即使它们的半径(例如,来自曲线的像素半径)可能不同。例如,关于图4a-4c,gt二元掩码124b(图4a)可包括第一半径,gt距离回归掩码126e(图4b)可以包括第二、更大的半径,并且权重通道或掩码400(图4c)可以用于对此信息进行编码,从而使得解码器120(图6)可以使用部署期间dnn 104所计算的权重通道来更准确地回归(或以其他方式计算)控制点118的位置。
[0060]
在一些实施例中,为了使(一个或更多个)dnn 104的预测更集中,地面实况数据122可用更短的曲线长度来编码。例如,(一个或更多个)gt二元掩码124、(一个或更多个)gt距离回归掩码126、和/或(一个或更多个)gt位分类掩码128中的每个掩码可以用更短距离进行编码——如由图3b至图3k的掩码与图4a至图4c的掩码之间的差异所展示的。例如,在一些实施例中,每一掩码中曲线的经编码值可在顶部和/或底部处被裁剪某一百分比或量。在非限制性实施例中,可以裁剪对应于曲线的顶部25%的值和对应于曲线的底部或下部25%的值,使得来自地面实况数据122的结果掩码是其潜在或原始长度(整个曲线将被编码)的50%。这些值仅用于示例目的,并且一个或更多个关键性能指标(kpi)可以用于确定针对任何特定实施例的合适的或理想的值。该过程可以是有帮助的,因为该过程考虑了dnn 104的接受域。例如,如果使用完整曲线或多段线,那么曲线或多段线的每一端上的像素或点(例如,在3d世界空间中)可具有与回归通道输出相同的准确性。
[0061]
因此,一旦地面实况数据122已被编码,(一个或更多个)dnn 104就可使用训练引擎130经历训练。传感器数据102可以被应用于(一个或更多个)dnn 104,并且(一个或更多个)dnn 104可以计算输出106。然后可以使用一个或更多个损失函数将输出106与对应的地面实况数据122进行比较,并且训练引擎130可以使用(一个或更多个)损失函数的输出来更新(一个或更多个)dnn 104的参数。可以重复这个过程直到已经实现可接受的收敛。
[0062]
在一些实施例中,对于不同的地面实况数据122类型,损失函数可以不同。例如,第一损失函数可被用于针对gt二元掩码124和二元掩码108来训练dnn 104,第二损失函数可被用于针对gt距离回归掩码126和距离回归掩码110来训练dnn 104,并且第三损失函数可
被用于针对gt位分类掩码128和位分类掩码112来训练dnn 104。作为非限制性示例,可使用二元交叉熵损失来训练二元掩码通道,可使用掩码li损失来训练距离回归通道,且可使用掩码二元交叉熵损失来训练位分类通道。
[0063]
现在参见图5,在此描述的方法500的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,不同功能可由执行存储在存储器中的指令的处理器执行。方法500还可以体现为存储在计算机存储介质上的计算机可用指令。仅举几例,方法500可以由独立应用、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件来提供。此外,通过举例的方式,针对图1的过程100来描述方法500。然而,这个方法500可以另外地或可替代地由任何一个进程和在任何一个系统或进程和系统的任何组合(包括但不限于在此描述的那些)内执行。
[0064]
图5是示出了根据本公开的一些实施例的用于训练用于地标检测的dnn 104的方法500的流程图。在框b502处,方法500包括接收表示与图像相关联的多段线的注释数据以及与所述多段线相关联的分类信息。例如,可接收和/或生成与传感器数据102的实例相关联的注释数据114,且注释数据可表示与地标和/或与其相关联的分类信息相对应的一个或更多个多段线。
[0065]
在框b504处,方法500包括至少部分地基于多段线执行曲线拟合算法以确定与曲线相关联的多个控制点。例如,曲线拟合器116可以使用注释数据114来执行曲线拟合操作以确定对应于曲线的控制点。
[0066]
在框b506处,方法500包括至少部分地基于与曲线相关联的多个控制点,对指示在曲线的半径内的图像的像素的二元掩码进行编码,以及对多个距离回归掩码进行编码。例如,使用控制点118和/或曲线信息,编码器120可对gt二元掩码124和/或gt距离回归掩码126进行编码,其中每个距离回归掩码可指示距多个控制点118中的控制点118的距离。
[0067]
在框b508处,方法500包括至少部分地基于分类信息对一个或更多个位分类掩码进行编码。例如,编码器120可使用分类信息和/或控制点或曲线信息对gt位分类掩码128进行编码。
[0068]
在框b510,方法500包括使用二元掩码、多个距离回归掩码和一个或更多个位分类掩码作为地面实况数据来训练神经网络。例如,训练引擎130可以使用地面实况数据122来训练dnn 104以计算输出106。
[0069]
用于地标检测的dnn
[0070]
现在参见图6,图6是图示出根据本公开的一些实施例的将dnn用于地标检测的示例过程600的数据流程图。应当理解,本文所述的这种和其他布置仅作为示例被阐述。除了所示的那些布置和元件之外或代替所示的那些布置和元件,可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),并且一些元件可以一起省略。进一步,本文描述的许多元件是可被实现为分立或分布式组件,或结合其他组件且在任何合适的组合和位置中实现的功能实体。本文中描述为由实体执行的不同功能可由硬件、固件和/或软件执行。例如,不同功能可由执行存储在存储器中的指令的处理器执行。在一些实施例中,(一个或更多个)dnn 104根据过程600的部署可以至少部分地使用如本文中关于图11a-11d的车辆1100、图12的示例计算设备1200和/或图13的示例数据中心1300所描述的类似的组件、特征和/或功能来实现。
[0071]
过程600可以包括生成和/或接收由车辆1100的一个或更多个传感器生成的传感器数据102。传感器数据102可以类似于在此描述的传感器数据,如关于图1的过程100所描述的。传感器数据102可以被应用于(一个或更多个)dnn 104——其可以根据图1的过程100被训练——并且(一个或更多个)dnn 104可以计算输出106。在各实施例中,(一个或更多个)dnn 104可包括卷积神经网络(cnn)。尽管本文中针对使用神经网络(具体为卷积神经网络)作为dnn 104来描述示例,但这不旨在是限制性的。例如,但无限制的,本文描述的dnn 104可包括任何类型的机器学习模型,如使用线性回归、逻辑回归、决策树、支持向量机(svm)、天然贝叶斯、k最近邻(knn)、k均值聚类、随机森林、维度减少算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆(lstm)、霍普菲尔德、玻尔兹曼、深度置信、解卷积、生成对抗、液态机器等)的机器学习模型,和/或其他类型的机器学习模型。
[0072]
作为示例,诸如在dnn 104包括cnn的情况下,dnn 104可包括任何数量的层。所述层中的一层或更多层可包含输入层。输入层可保存与传感器数据102相关联的值(例如,在后处理之前或之后)。例如,当传感器数据102是图像时,输入层可将表示图像的原始像素值的值保存为体积(例如,宽度、高度和色彩通道(例如,rgb),诸如32x32x3)。
[0073]
一层或更多层可以包括卷积层。卷积层可以计算连接到输入层中的局部区域的神经元的输出,每个神经元计算它们的权重与它们在输入体中所连接到的小区域之间的点积。卷积层的结果可以是另一体积,其中一个维度基于所应用的滤波器的数量(例如,宽度、高度和滤波器的数量,诸如32x32x12,如果12是滤波器的数量)。
[0074]
一层或更多层可以包括解卷积层(或转置卷积层)。例如,解卷积层的结果可以是另一体积,其具有比在解卷积层接收的数据的输入维度更高的维度。
[0075]
一层或更多层可以包括整流线性单元(relu)层。relu层可以应用逐元件激活函数,例如max(0,x),例如零阈值化。relu层的结果体积可以与relu层的输入的体积相同。
[0076]
一层或更多层可以包括一池化层。池化层可以沿着空间维度(例如,高度和宽度)执行下采样操作,这可以导致比池化层的输入更小的体积(例如,来自32x32x12输入体积的16x16x12)。
[0077]
一层或更多层可包括一个或更多个全连接层。全连接层中的每一神经元可连接到先前卷中的每一神经元。全连接层可计算类别得分,且所得的体积可为1x1x类别的数量。在一些示例中,cnn可包括全连接层,使得cnn的一层或更多层的输出可作为输入提供给cnn的全连接层。在一些示例中,一个或更多个卷积流可由dnn 104实现,并且一些或全部卷积流可包括相应的全连接层。
[0078]
在一些非限制性实施例中,(一个或更多个)dnn 104可以包括一系列卷积层和最大池化层以促进图像特征提取,之后是多尺度扩张卷积层和上采样层以促进全局上下文特征提取。
[0079]
尽管输入层、卷积层、池化层、relu层和全连接层在本文中相对于dnn 104来讨论,但这不旨在是限制性的。例如,附加的或替代的层可被用于dnn 104中,诸如归一化层、softmax层和/或其他层类型。
[0080]
在dnn 104包括cnn的实施例中,取决于实施例,可使用cnn的层的不同次序和数量。换言之,(一个或更多个)dnn 104的层的次序和数量不限于任何一种架构。
[0081]
此外,一些层可包括参数(例如,权重和/或偏差),诸如卷积层和全连接层,而其他层可不包括参数,诸如relu层和池化层。在一些示例中,参数可由dnn 104在训练期间学习。进一步,一些层可以包括附加的超参数(例如,学习速率、步幅、时期等),诸如卷积层、全连接层和池化层,而其他层可以不包括,诸如relu层。参数和超参数不受限制,并且可以根据实施例而不同。
[0082]
可使用解码器602来解码输出106以确定控制点118。例如,从二元掩码108中分类为正的(或在曲线的半径内的)每个像素可以被认为是候选像素(例如,针对2d预测)或点(例如,针对3d预测)。对于距离回归掩码110和位分类掩码112中的相同像素的对应值可用作曲线候选(例如,贝塞尔曲线候选)的属性。例如,对于作为正像素的二元掩码的像素(例如,白色像素或被识别为在曲线的半径内的像素),来自一个或更多个(例如,全部)x轴距离回归掩码110中的x距离值和来自一个或更多个(例如,全部)y轴距离回归掩码110中的y距离值可用于确定候选控制点位置。可针对候选像素中的每一者重复此过程。最后,对于图像中描绘的每个地标,可能有许多重叠或类似的控制点和曲线,如图8a所示。例如,对于单个地标——例如,车道线——可能有多组控制点118。曲线拟合器116可使用每一组控制点118来执行曲线拟合操作以产生曲线(例如,贝塞尔曲线)。
[0083]
由于针对同一地标生成多条曲线的可能性,可以使用后处理器604执行不同后处理操作以确定由车辆1100使用的最终曲线——例如,由自主驾驶软件栈(或驾驶栈)608使用。例如,聚类可以由后处理器604使用任何聚类算法类型来执行。在非限制性实施例中,可以对曲线候选执行具有噪声的应用的基于密度的空间聚类(dbscan)算法,而在另一个非限制性实施例中,可以使用概率性投票算法。在任何示例中,可以在聚类算法内使用相似性函数。在一些实施例中,相似性函数可包括积分损失相似性函数。例如,以下等式(7)可表示积分损失相似性函数的示例。
[0084][0085]
在等式(7)中,p1和p2是正被比较的两条(贝塞尔)曲线上的点,t是从0至1移动的曲线的参数,a1和a2分别是第一和第二曲线的三次系数,b1和b2分别是第一和第二曲线的二次系数,c1和c2分别是第一和第二曲线的线性系数,d1和d2分别为第一曲线和第二曲线的常数项系数。因此,p1(t)=a1*t3 b1*t2 c1*t d1(0<=t<=1)和p2(t)=a2*t3 b2*t2 c2*t d2(0<=t<=1)可分别对应于两条贝塞尔曲线上的点的公式。在聚类之后,每个地标特征应该存在单条曲线。然而,在一些情况下,对于一个或更多个地标特征可能仍然存在两条或更多条曲线。在此类示例中,复制去除的另一后处理技术可由后处理器604执行。例如,可将曲线与彼此接近(例如,在彼此之间的某一阈值距离内)的其他曲线进行比较,且可移除具有较
低置信度的这些曲线。因此,基于dnn 104的预测和/或聚类,每条曲线可具有与其相关联的置信度,并且具有最低置信度的曲线可被去除。
[0086]
作为示例,并且关于图8a,(一个或更多个)dnn 104的经解码的输出106可以在可视化800a中表示。如所展示的,可能针对每种地标类型(例如,在图8a的展示中的车道线或道路边界线)生成多条候选曲线802。因此,可以执行后处理以生成每个地标特征的包括一条最终曲线804的最终曲线804。例如,候选曲线802a可经历后处理以生成最终曲线804a,候选曲线802b可经历后处理以生成最终曲线804b,等等。这些最终曲线804可与地标606相关联,使得关于地标的位置、定向、姿态和/或其他信息可为已知的。
[0087]
参见图7,图7是示出了根据本公开的一些实施例的对用于地标检测的dnn 104的输出进行解码和后处理的示例过程700的数据流程图。例如,过程700可以包括用于地标检测的端到端(e2e)过程。可以一起使用不同类别的地标606来确定最终信息,例如车道检测结果、交叉路口检测结果、道路标记检测结果等等。因此,为了确定实线/虚线(或车道线),可解码输出106以产生候选曲线,候选曲线可以被聚类以生成最终曲线(例如,以填充车道标记输出),并且在最终曲线接近另一最终曲线的情况下,可以执行重复去除以产生实线/虚线(或车道线)检测结果。可以针对道路边界线执行类似的处理,并且车道线和道路边界线的组合可以用于识别行驶表面的每条车道——例如,以生成车道图。作为另一示例,可针对使用dnn 104识别的交叉口或十字交叉口(例如,人行道、步行道等)、杆或标志、和/或文本或其他形状执行类似的处理。这些输出——例如,使用交叉线的交叉口检测结果、使用杆或道路标志的交叉口检测结果以及道路标记检测结果——可以用于确定交叉口位置、结构和姿态,和/或确定道路标记信息。如此,即使在由(一个或更多个)dnn 104计算单独类别的信息的情况下,也可以使用一个或更多个类别的检测到的曲线来确定可以由车辆1100(如由驾驶栈608)使用的最终输出(例如,车道图、交叉路口结构等)。
[0088]
再次参见图1,地标606可包含任何类型的地标,例如但不限于道路标记、车道线、道路边界线、交叉线、人行道、自行车车道线、文本、杆、树、灯柱或标志。如本文所描述的,不同类别可包括dnn 104被训练来预测的任何数量的子类。作为地标606的示例,图9a包括与车道线相对应的曲线的可视化900a,图9b包括与道路边界线相对应的曲线的可视化900b,图9c包括与交叉线相对应的曲线的可视化900c,并且图9d包括与杆和标志相对应的曲线的可视化。
[0089]
现在参见图10,在此描述的方法1000的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,不同功能可由执行存储在存储器中的指令的处理器执行。方法1000还可以体现为存储在计算机存储介质上的计算机可用指令。仅举几例,方法1000可由独立应用、服务或托管服务(独立服务或与另一托管服务组合)或另一产品的插件来提供。此外,通过示例的方式,针对图6的过程600和图11a-11d的车辆1100来描述方法1000。然而,该方法1000可以另外地或可替代地由任何一个进程和在任何一个系统或进程和系统的任何组合(包括但不限于在此描述的那些)内执行。
[0090]
图10是示出了根据本公开的一些实施例的用于使用dnn进行地标检测的方法1000的流程图。在框b1002处,方法1000包括向神经网络应用表示机器的传感器的传感场的图像的传感器数据。例如,传感器数据102的实例可被应用于(一个或更多个)dnn 104。
[0091]
在框b1004处,方法1000包括使用神经网络并且至少部分地基于传感器数据来计
算第一数据和第二数据,第一数据指示在图像中识别出的一条或更多条曲线中的至少一条曲线的半径内的该图像的像素,第二数据指示到一条或更多条曲线的控制点的距离。例如,(一个或更多个)dnn 104可至少部分地基于处理传感器数据102的实例来计算(一个或更多个)二元掩码108和(一个或更多个)距离回归掩码110。
[0092]
在框b1006处,方法1000包括解码第一数据和第二数据以确定一个或更多条曲线的控制点的位置。例如,(一个或更多个)二元掩码108和(一个或更多个)距离回归掩码110可以使用解码器602被解码以确定控制点118的位置(例如,在2d图像空间或3d世界空间中)。
[0093]
在框b1008处,方法1000包括使用曲线拟合算法且至少部分地基于控制点的位置来生成一条或更多条曲线。例如,曲线拟合器116可以使用控制点118来确定与环境中的地标相对应的曲线的形状。
[0094]
在框b1010处,方法1000包括由机器至少部分地基于一条或更多条曲线来执行一个或更多个操作。例如,车辆1000可以使用曲线(和/或与其对应的语义信息)执行一个或更多个操作,如世界模型管理、映射、规划、控制等。
[0095]
示例自主车辆
[0096]
图11a是根据本公开的一些实施例的示例自主车辆1100的图示。自主车辆1100(可替代地,在本文称为“车辆1100”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆,救护车、船、施工车辆、水下船只、无人机和/或另一类型的车辆(例如,无人驾驶的和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(nhtsa)以及汽车工程师协会(sae)“taxonomy and definitions for terms related to driving automation systems for on-road motor vehicles”(2018年6月15日发布的标准no.j3016-201806,2016年9月30日发布的标准no.j3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1100可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1100可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
[0097]
车辆1100可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1100可以包括推进系统1150,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统1150可以连接到可以包括变速器的车辆1100的传动系以便实现车辆1100的推进。可以响应于接收到来自油门/加速器1152的信号而控制推进系统1150。
[0098]
可以包括方向盘的转向(steering)系统1154可以用来在推进系统1150操作时(例如在车辆运动时)使车辆1100转向(例如沿着希望的路径或路线)。转向系统1154可以接收来自转向致动器1156的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
[0099]
制动传感器系统1146可以用来响应于接收到来自制动致动器1148和/或制动传感器的信号而操作车辆制动器。
[0100]
可以包括一个或更多个片上系统(soc)1104(图11c)和/或一个或更多个gpu的一个或更多个控制器1136可以向车辆1100的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1148操作车
辆制动器、经由一个或更多个转向致动器1156操作转向系统1154、经由一个或更多个油门/加速器1152操作推进系统1150的信号。一个或更多个控制器1136可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆1100。一个或更多个控制器1136可以包括用于自主驾驶功能的第一控制器1136、用于功能性安全功能的第二控制器1136、用于人工智能功能(例如计算机视觉)的第三控制器1136、用于信息娱乐功能的第四控制器1136、用于紧急情况下的冗余的第五控制器1136和/或其他控制器。在一些示例中,单个控制器1136可以处理上述功能中的两个或更多,两个或更多控制器1136可以处理单个功能,和/或其任意组合。
[0101]
一个或更多个控制器1136可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1100的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器1158(例如全球定位系统传感器)、radar传感器1160、超声传感器1162、lidar传感器1164、惯性测量单元(imu)传感器1166(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1196、立体相机1168、广角相机1170(例如鱼眼相机)、红外相机1172、环绕相机1174(例如360度相机)、远程和/或中程相机1198、速度传感器1144(例如用于测量车辆1100的速率)、振动传感器1142、转向传感器1140、制动传感器(例如作为制动传感器系统1146的部分)和/或其他传感器类型。
[0102]
控制器1136中的一个或更多个可以接收来自车辆1100的仪表组1132的输入(例如由输入数据表示),并且经由人机接口(hmi)显示器1134、听觉信号器、扬声器和/或经由车辆1100的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图11c的hd地图1122)、位置数据(例如,车辆1100例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1136所感知的关于对象和对象状态的信息等等。例如,hmi显示器1134可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34b,等等)。
[0103]
车辆1100还包括网络接口1124,其可以使用一个或更多个无线天线1126和/或调制解调器通过一个或更多个网络通信。例如,网络接口1124可能够通过lte、wcdma、umts、gsm、cdma2000等通信。一个或更多个无线天线1126也可以使用诸如蓝牙、蓝牙le、z波、zigbee等等之类的一个或更多个局域网和/或诸如lorawan、sigfox等等之类的一个或更多个低功率广域网(lpwan)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
[0104]
图11b为根据本公开一些实施例的用于图11a的示例自主车辆1100的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1100上的不同位置。
[0105]
用于相机的相机类型可以包括但不限于可以适于与车辆1100的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(asil)b下和/或在另一个asil下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(rccc)滤色器阵列、红白白蓝(rccb)滤色器阵列、红蓝绿白(rbgc)滤色器阵列、foveon x3滤色器阵列、拜耳传感器(rggb)滤色器阵列、单色传
感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有rccc、rccb和/或rbgc滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
[0106]
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(adas)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
[0107]
所述相机中的一个或更多个可以安装在诸如定制设计的(3-d打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-d打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
[0108]
具有包括车辆1100前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1136和/或控制soc的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与lidar相同的adas功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于adas功能和系统,包括车道偏离警告(“ldw”)、自主巡航控制(“acc”),和/或诸如交通指示牌识别之类的其他功能。
[0109]
各种各样的相机可以用于前置配置中,包括例如包括cmos(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1170,其可以用来感知从周边进入视场的对象(例如行人、十字路口交通或者自行车)。尽管图11b中图示出仅仅一个广角相机,但是在车辆1100上可以存在任意数量的广角相机1170。此外,远程相机1198(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1198也可以用于对象检测和分类以及基本的对象追踪。
[0110]
一个或更多个立体相机1168也可以包括在前置配置中。立体相机1168可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的can或以太网接口的多核微处理器和可编程逻辑(fpga)。这样的单元可以用来生成车辆环境的3-d地图,包括针对图像中的所有点的距离估计。可替代的立体相机1168可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1168。
[0111]
具有包括车辆1100的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1174(例如如图11b中所示的四个环绕相机1174)可以置于车辆1100上。环绕相机1174可以包括广角相机1170、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1174(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
[0112]
具有包括车辆1100的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但
不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1198、立体相机1168、红外相机1172等等)的相机。
[0113]
图11c为根据本公开一些实施例的用于图11a的示例自主车辆1100的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
[0114]
图11c中车辆1100的部件、特征和系统中的每一个被图示为经由总线1102连接。总线1102可以包括控制器区域网络(can)数据接口(可替代地,本文称为“can总线”)。can可以是车辆1100内部的网络,用来辅助控制车辆1100的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。can总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如can id)。可以读取can总线以找到方向盘角度、地速、每分钟发动机转速(rpm)、按钮位置和/或其他车辆状态指示符。can总线可以是asilb兼容的。
[0115]
尽管这里将总线1102描述为can总线,但是这并不意图是限制性的。例如,除了can总线之外或者可替代地,可以使用flexray和/或以太网。此外,尽管用单条线来表示总线1102,但是这并不意图是限制性的。例如,可以存在任意数量的总线1102,其可以包括一条或更多条can总线、一条或更多条flexray总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1102可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1102可以用于碰撞避免功能,并且第二总线1102可以用于驱动控制。在任何示例中,每条总线1102可以与车辆1100的任何部件通信,并且两条或更多总线1102可以与相同的部件通信。在一些示例中,车辆内的每个soc 1104、每个控制器1136和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1100的传感器的输入),并且可以连接到诸如can总线之类的公共总线。
[0116]
车辆1100可以包括一个或更多个控制器1136,例如本文关于图11a所描述的那些控制器。控制器1136可以用于各种各样的功能。控制器1136可以耦合到车辆1100的任何其他不同的部件和系统,并且可以用于车辆1100的控制、车辆1100的人工智能、用于车辆1100的信息娱乐和/或类似物。
[0117]
车辆1100可以包括一个或更多个片上系统(soc)1104。soc 1104可以包括cpu 1106、gpu 1108、处理器1110、高速缓存1112、加速器1114、数据存储1116和/或未图示出的其他部件和特征。在各种各样的平台和系统中,soc 1104可以用来控制车辆1100。例如,一个或更多个soc 1104可以在系统(例如车辆1100的系统)中与hd地图1122结合,所述hd地图可以经由网络接口1124从一个或更多个服务器(例如图11d的一个或更多个服务器1178)获得地图刷新和/或更新。
[0118]
cpu 1106可以包括cpu簇或者cpu复合体(可替代地,本文称为“ccplex”)。cpu 1106可以包括多个核和/或l2高速缓存。例如,在一些实施例中,cpu 1106在一致性多处理器配置中可以包括八个核。在一些实施例中,cpu 1106可以包括四个双核簇,其中每个簇具
有专用的l2高速缓存(例如2mb l2高速缓存)。cpu 1106(例如ccplex)可以被配置为支持同时簇操作,使得cpu 1106的簇的任意组合能够在任何给定时间是活动的。
[0119]
cpu 1106可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于wfi/wfe指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。cpu 1106可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和ccplex确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
[0120]
gpu 1108可以包括集成的gpu(可替代地,本文称为“igpu”)。gpu1108可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,gpu 1108可以使用增强张量指令集。gpu 1108可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括l1高速缓存(例如具有至少96kb存储能力的l1高速缓存),并且这些流式微处理器中的两个或更多可以共享l2高速缓存(例如具有512kb存储能力的l2高速缓存)。在一些实施例中,gpu 1108可以包括至少八个流式微处理器。gpu 1108可以使用计算应用编程接口(api)。此外,gpu 1108可以使用一个或更多个并行计算平台和/或编程模型(例如nvidia的cuda)。
[0121]
在汽车和嵌入式使用的情况下,可以对gpu 1108进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(finfet)上制造gpu 1108。然而,这并不意图是限制性的,并且gpu 1108可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个pf32核和32个pf64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个fp32核、8个fp64核、16个int32核、用于深层学习矩阵算术的两个混合精度nvidia张量核、l0指令高速缓存、线程束(warp)调度器、分派单元和/或64kb寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的l1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
[0122]
gpu 1108可以包括在一些示例中提供大约900gb/s的峰值内存带宽的高带宽内存(hbm)和/或16gb hbm2内存子系统。在一些示例中,除了hbm内存之外或者可替代地,可以使用同步图形随机存取存储器(sgram),例如第五代图形双倍数据速率同步随机存取存储器(gddr5)。
[0123]
gpu 1108可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ats)支持可以用来允许gpu 1108直接访问cpu 1106页表。在这样的示例中,当gpu 1108内存管理单元(mmu)经历遗漏时,可以将地址转换请求传输至cpu 1106。作为响应,cpu 1106可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回gpu 1108。这样,统一内存技术可以允许单个统一虚拟地址空间用于cpu 1106和gpu 1108二者的内存,从而简化了gpu 1108编程和将应用程序移(port)到gpu 1108。
[0124]
此外,gpu 1108可以包括访问计数器,其可以追踪gpu 1108访问其他处理器的内
存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
[0125]
soc 1104可以包括任意数量的高速缓存1112,包括本文描述的那些高速缓存。例如,高速缓存1112可以包括cpu 1106和gpu 1108二者可用的l3高速缓存(例如,其连接到cpu 1106和gpu 1108二者)。高速缓存1112可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如mei、mesi、msi等)追踪行的状态。取决于实施例,l3高速缓存可以包括4mb或者更多,但是也可以使用更小的高速缓存大小。
[0126]
soc 1104可以包括算术逻辑单元(alu),所述算术逻辑单元可以在执行关于车辆1100的各种任务或操作中的任何任务或操作(如处理dnn)的处理中被利用。此外,soc 1104可以包括用于在系统内执行数学运算的浮点单元(fpu)(或其他数学协处理器或数字协处理器类型)。例如,soc104可以包括集成为cpu 1106和/或gpu 1108内的执行单元的一个或更多个fpu。
[0127]
soc 1104可以包括一个或更多个加速器1114(例如硬件加速器、软件加速器或者其组合)。例如,soc 1104可以包括硬件加速器簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4mb sram)可以使得硬件加速器簇能够加速神经网络和其他计算。硬件加速器簇可以用来补充gpu 1108,并且卸载gpu 1108的一些任务(例如释放gpu 1108的更多周期以用于执行其他任务)。作为一个示例,加速器1114可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(cnn)等等)。当在本文中使用时,术语“cnn”可以包括所有类型的cnn,包括基于区域的或者区域卷积神经网络(rcnn)和快速rcnn(例如用于对象检测)。
[0128]
加速器1114(例如硬件加速器簇)可以包括深度学习加速器(dla)。dla可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(tpu)。tpu可以是被配置为执行图像处理功能(例如用于cnn、rcnn等)且针对执行图像处理功能而优化的加速器。dla可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。dla的设计可以比通用gpu提供每毫米更高的性能,并且远远超过cpu的性能。tpu可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的int8、int16和fp16数据类型,以及后处理器功能。
[0129]
dla可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是cnn,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的cnn;用于使用来自相机传感器的数据进行距离估计的cnn;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的cnn;用于使用来自相机传感器的数据进行面部识别和车主识别的cnn;和/或用于安全和/或安全相关事件的cnn。
[0130]
dla可以执行gpu 1108的任何功能,并且通过使用推理加速器,例如,设计者可以使dla或gpu 1108针对任何功能。例如,设计者可以将cnn的处理和浮点运算聚焦在dla上,并且将其他功能留给gpu 1108和/或其他加速器1114。
[0131]
加速器1114(例如硬件加速器簇)可以包括可编程视觉加速器(pva),其在本文中可以可替代地称为计算机视觉加速器。pva可以被设计和配置为加速用于高级驾驶员辅助系统(adas)、自主驾驶和/或增强现实(ar)和/或虚拟现实(vr)应用的计算机视觉算法。pva可以提供性能与灵活性之间的平衡。例如,每个pva可以包括例如且不限于任意数量的精简
指令集计算机(risc)核、直接内存访问(dma)和/或任意数量的向量处理器。
[0132]
risc核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些risc核中的每一个可以包括任意数量的内存。取决于实施例,risc核可以使用若干协议中的任何协议。在一些示例中,risc核可以执行实时操作系统(rtos)。risc核可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储设备实现。例如,risc核可以包括指令高速缓存和/或紧密耦合的ram。
[0133]
dma可以使得pva的部件能够独立于cpu 1106访问系统内存。dma可以支持用来向pva提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,dma可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
[0134]
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,pva可以包括pva核和两个向量处理子系统分区。pva核可以包括处理器子系统、一个或更多个dma引擎(例如两个dma引擎)和/或其他外围设备。向量处理子系统可以作为pva的主处理引擎而操作,并且可以包括向量处理单元(vpu)、指令高速缓存和/或向量内存(例如vmem)。vpu核可以包括数字信号处理器,诸如例如单指令多数据(simd)、超长指令字(vliw)数字信号处理器。simd和vliw的组合可以增强吞吐量和速率。
[0135]
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定pva中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个pva中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定pva中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的pva可以包括在硬件加速器簇中,并且任意数量的向量处理器可以包括在这些pva中的每一个中。此外,pva可以包括附加的纠错码(ecc)内存,以增强总体系统安全性。
[0136]
加速器1114(例如硬件加速器簇)可以包括片上计算机视觉网络和sram,以提供用于加速器1114的高带宽、低延迟sram。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4mb sram,其可以由pva和dla二者访问。每对内存块可以包括高级外围总线(apb)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。pva和dla可以经由向pva和dla提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用apb)将pva和dla互连到内存的片上计算机视觉网络。
[0137]
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定pva和dla二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合iso 26262或者iec 61508标准,但是也可以使用其他标准和协议。
[0138]
在一些示例中,soc 1104可以包括例如在2018年8月10日提交的美国专利申请no.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以
用于radar信号解释、用于声音传播合成和/或分析、用于sonar系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与lidar数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(ttu)可以用于执行一个或更多个光线跟踪相关操作。
[0139]
加速器1114(例如硬件加速器簇)具有广泛的自主驾驶用途。pva可以是可编程视觉加速器,其可以用于adas和自主车辆中的关键处理阶段。pva的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,pva在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,pva被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
[0140]
例如,根据该技术的一个实施例,pva用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。pva可以在来自两个单目相机的输入上执行计算机立体视觉功能。
[0141]
在一些示例中,pva可以用来执行密集的光流。根据过程原始radar数据(例如使用4d快速傅立叶变换)以提供经处理的radar。在其他示例中,pva用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
[0142]
dla可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(aeb)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是aeb的触发因素。dla可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆1100取向、距离相关的惯性测量单元(imu)传感器1166输出,从神经网络和/或其他传感器(例如lidar传感器1164或radar传感器1160)获得的对象的3d位置估计等。
[0143]
soc 1104可以包括一个或更多个数据存储1116(例如内存)。数据存储1116可以是soc 1104的片上内存,其可以存储要在gpu和/或dla上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1116可以容量足够大以存储神经网络的多个实例。数据存储1112可以包括l2或l3高速缓存1112。对数据存储1116的引用可以包括对与如本文所描述的pva、dla和/或其他加速器1114关联的内存的引用。
[0144]
soc 1104可以包括一个或更多个处理器1110(例如嵌入式处理器)。处理器1110可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是soc 1104启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、soc 1104热和温度传感器管理和/或soc 1104功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且soc 1104可以使用环形振荡器检测cpu 1106、gpu 1108和/或加速器1114的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将soc 1104置于较低功率状态和/或将车
辆1100置于司机安全停车模式(例如使车辆1100安全停车)。
[0145]
处理器1110可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频i/o接口。在一些示例中,音频处理引擎是具有带有专用ram的数字信号处理器的专用处理器核。
[0146]
处理器1110可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的ram、支持外围设备(例如定时器和中断控制器)、各种i/o控制器外围设备和路由逻辑。
[0147]
处理器1110可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的ram、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
[0148]
处理器1110可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
[0149]
处理器1110可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
[0150]
处理器1110可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1170、环绕相机1174和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级soc的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
[0151]
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
[0152]
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且gpu 1108无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在gpu 1108上电并且激活,进行3d渲染时,视频图像复合器可以用来减轻gpu 1108的负担以提高性能和响应能力。
[0153]
soc 1104可以还包括用于从相机接收视频和输入的移动行业处理器接口(mipi)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。soc 1104可以还包括可以由软件控制并且可以用于接收未提交到特定角色的i/o信号的输入/输出控制器。
[0154]
soc 1104可以还包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。soc 1104可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的lidar传感器1164、radar传感器
1160等等)的数据,来自总线1102的数据(例如车辆1100的速率、方向盘位置等等),来自(通过以太网或can总线连接的)gnss传感器1158的数据。soc 1104可以还包括专用高性能大容量存储控制器,其可以包括它们自己的dma引擎,并且其可以用来从日常数据管理任务中释放cpu 1106。
[0155]
soc 1104可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和adas技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。soc 1104可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与cpu 1106、gpu 1108和数据存储1116结合时,加速器1114可以提供用于3-5级自主车辆的快速高效平台。
[0156]
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在cpu上执行,这些cpu可以使用诸如c编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,cpu常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多cpu不能实时地执行复杂的对象检测算法,这是车载adas应用的要求和实用3-5级自主车辆的要求。
[0157]
与常规系统形成对比的是,通过提供cpu复合体、gpu复合体和硬件加速器簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在dla或dgpu(例如gpu 1120)上执行的cnn可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。dla可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在cpu复合体上的路径规划模块的神经网络。
[0158]
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在cpu复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在dla内和/或在gpu 1108上同时运行。
[0159]
在一些示例中,用于面部识别和车主识别的cnn可以使用来自相机传感器的数据识别车辆1100的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,soc 1104提供了防范盗窃和/或劫车的安全性。
[0160]
在另一个示例中,用于应急车辆检测和识别的cnn可以使用来自麦克风1196的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,soc 1104使用cnn以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在dla上的cnn被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。cnn也可以被训练为识别如gnss传感器1158所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,cnn将寻求检测欧洲警报,并且当在美国时,cnn将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器
1162的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
[0161]
车辆可以包括可以经由高速互连(例如pcie)耦合到soc 1104的cpu 1118(例如分立的cpu或dcpu)。cpu 1118可以包括例如x86处理器。cpu 1118可以用来执行各种各样的功能中的任何功能,包括例如仲裁adas传感器与soc 1104之间潜在地不一致的结果,和/或监控控制器1136和/或信息娱乐soc 1130的状态和健康状况。
[0162]
车辆1100可以包括可以经由高速互连(例如nvidia的nvlink)耦合到soc 1104的gpu 1120(例如分立的gpu或dgpu)。gpu 1120可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆1100的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
[0163]
车辆1100可以还包括网络接口1124,该网络接口可以包括一个或更多个无线天线1126(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1124可以用来使能通过因特网与云(例如与服务器1178和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1100提供关于接近车辆1100的车辆(例如车辆1100前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1100的协作自适应巡航控制功能的部分。
[0164]
网络接口1124可以包括提供调制和解调功能并且使得控制器1136能够通过无线网络通信的soc。网络接口1124可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过lte、wcdma、umts、gsm、cdma2000、蓝牙、蓝牙le、wi-fi、z波、zigbee、lorawan和/或其他无线协议通信的无线功能。
[0165]
车辆1100可以还包括可包括片外(例如soc 1104外)存储装置的数据存储1128。数据存储1128可以包括一个或更多个存储元件,包括ram、sram、dram、vram、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
[0166]
车辆1100可以还包括gnss传感器1158。gnss传感器1158(例如gps、辅助gps传感器、差分gps(dgps)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的gnss传感器1158,包括例如且不限于使用带有以太网到串行(rs-232)网桥的usb连接器的gps。
[0167]
车辆1100可以还包括radar传感器1160。radar传感器1160可以甚至在黑暗和/或恶劣天气条件下也由车辆1100用于远程车辆检测。radar功能安全级别可以是asilb。radar传感器1160可以使用can和/或总线1102(例如以传输radar传感器1160生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的radar传感器类型。例如且非限制性地,radar传感器1160可以适合前面、后面和侧面radar使用。在一些示例中,使用脉冲多普勒radar传感器。
[0168]
radar传感器1160可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程radar可以用于自适应巡航控制功能。远程radar
系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。radar传感器1160可以帮助区分静态对象和运动对象,并且可以由adas系统用于紧急制动辅助和前方碰撞警告。远程radar传感器可以包括具有多根(例如六根或更多)固定radar天线以及高速can和flexray接口的单站多模radar。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1100的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1100的车道的车辆成为可能。
[0169]
作为一个示例,中程radar系统可以包括高达1160m(前面)或80m(后面)的范围以及高达42度(前面)或1150度(后面)的视场。短程radar系统可以包括但不限于被设计为安装在后保险杠两端的radar传感器。当安装在后保险杠两端时,这样的radar传感器系统可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
[0170]
短程radar系统可以在adas系统中用于视盲点检测和/或变道辅助。
[0171]
车辆1100可以还包括超声传感器1162。可以置于车辆1100的前面、后面和/或侧面的超声传感器1162可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1162,并且不同的超声传感器1162可以用于不同的检测范围(例如2.5m、4m)。超声传感器1162可以操作于功能安全级别的asilb。
[0172]
车辆1100可以包括lidar传感器1164。lidar传感器1164可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。lidar传感器1164可以为功能安全级别的asilb。在一些示例中,车辆1100可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个lidar传感器1164(例如两个、四个、六个等等)。
[0173]
在一些示例中,lidar传感器1164可能够对360度视场提供对象列表及其距离。商业上可用的lidar传感器1164可以具有例如近似1100m的广告范围,精度为2cm-3cm,支持1100mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的lidar传感器1164。在这样的示例中,lidar传感器1164可以实现为可以嵌入到车辆1100的前面、后面、侧面和/或拐角的小设备。在这样的示例中,lidar传感器1164可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的lidar传感器1164可以被配置用于45度与135度之间的水平视场。
[0174]
在一些示例中,也可以使用诸如3d闪光lidar之类的lidar技术。3d闪光lidar使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光lidar单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光lidar可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光lidar传感器,车辆1100的每一侧一个。可用的3d闪光lidar系统包括没有风扇以外的运动部件(moving part)的固态3d凝视阵列lidar相机(例如非扫描lidar设备)。闪光lidar设备可以使用每帧5纳秒i类(眼睛安全)激光脉冲,并且可以以3d范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光lidar,并且因为闪光lidar是没有运动部件的固态设备,lidar传感器1164可以不太容易受到运动模糊、振动和/或震动的影响。
[0175]
该车辆可以还包括imu传感器1166。在一些示例中,imu传感器1166可以位于车辆1100的后轴的中心。imu传感器1166可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗
盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,imu传感器1166可以包括加速度计和陀螺仪,而在九轴应用中,imu传感器1166可以包括加速度计、陀螺仪和磁力计。
[0176]
在一些实施例中,imu传感器1166可以实现为微型高性能gps辅助惯性导航系统(gps/ins),其结合微机电系统(mems)惯性传感器、高灵敏度gps接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,imu传感器1166可以使得车辆1100能够在无需来自磁传感器的输入的情况下通过直接观察从gps到imu传感器1166的速度变化并且将其相关来估计方向(heading)。在一些示例中,imu传感器1166和gnss传感器1158可以结合到单个集成单元中。
[0177]
该车辆可以包括置于车辆1100中和/或车辆1100周围的麦克风1196。除别的以外,麦克风1196可以用于应急车辆检测和识别。
[0178]
该车辆可以还包括任意数量的相机类型,包括立体相机1168、广角相机1170、红外相机1172、环绕相机1174、远程和/或中程相机1198和/或其他相机类型。这些相机可以用来捕获车辆1100整个外围周围的图像数据。使用的相机类型取决于实施例和车辆1100的要求,并且相机类型的任意组合可以用来提供车辆1100周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(gmsl)和/或千兆以太网。所述相机中的每一个在本文关于图11a和图11b更详细地进行了描述。
[0179]
车辆1100可以还包括振动传感器1142。振动传感器1142可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1142时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
[0180]
车辆1100可以包括adas系统1138。在一些示例中,adas系统1138可以包括soc。adas系统1138可以包括自主/自适应/自动巡航控制(acc)、协作自适应巡航控制(cacc)、前方撞车警告(fcw)、自动紧急制动(aeb)、车道偏离警告(ldw)、车道保持辅助(lka)、视盲点警告(bsw)、后方穿越交通警告(rctw)、碰撞警告系统(cws)、车道居中(lc)和/或其他特征和功能。
[0181]
acc系统可以使用radar传感器1160、lidar传感器1164和/或相机。acc系统可以包括纵向acc和/或横向acc。纵向acc监控并控制到紧接在车辆1100前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向acc执行距离保持,并且在必要时建议车辆1100改变车道。横向acc与诸如lca和cws之类的其他adas应用程序有关。
[0182]
cacc使用来自其他车辆的信息,该信息可以经由网络接口1124和/或无线天线1126经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(v2v)通信链路提供,而间接链接可以是基础设施到车辆(i2v)的通信链路。通常,v2v通信概念提供关于紧接在前的车辆(例如紧接在车辆1100前方且与其处于相同车道的车辆)的信息,而i2v通信概念提供关于前方更远处的交通的信息。cacc系统可以包括i2v和v2v信息源中的任一个或者二者。给定车辆1100前方车辆的信息,cacc可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
[0183]
fcw系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。fcw系统
使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器1160,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。fcw系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
[0184]
aeb系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。aeb系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器1160。当aeb系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么aeb系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。aeb系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
[0185]
ldw系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1100穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活ldw系统。ldw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前侧朝向相机,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
[0186]
lka系统是ldw系统的变型。如果车辆1100开始离开车道,那么lka系统提供纠正车辆1100的转向输入或制动。
[0187]
bsw系统检测并向驾驶员警告汽车视盲点中的车辆。bsw系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。bsw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的后侧朝向相机和/或radar传感器1160,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
[0188]
rctw系统可以在车辆1100倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些rctw系统包括aeb以确保应用车辆制动器以避免撞车。rctw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的一个或更多个后置radar传感器1160,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
[0189]
常规的adas系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为adas系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1100中,在冲突结果的情况下,车辆1100本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1136或第二控制器1136)的结果。例如,在一些实施例中,adas系统1138可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自adas系统1138的输出可以提供给监督mcu。如果来自主计算机和辅助计算机的输出冲突,那么监督mcu必须确定如何协调该冲突以确保安全操作。
[0190]
在一些示例中,主计算机可以被配置为向监督mcu提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督mcu可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督mcu可以在这些计算
机之间进行仲裁以确定适当的结果。
[0191]
监督mcu可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督mcu中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于radar的fcw系统时,监督mcu中的神经网络可以了解fcw系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的ldw系统时,监督mcu中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该ldw。在包括运行在监督mcu上的神经网络的实施例中,监督mcu可以包括适合于利用关联的内存运行神经网络的dla或gpu中的至少一个。在优选的实施例中,监督mcu可以包括soc 1104的部件和/或作为soc1104的部件而被包括。
[0192]
在其他示例中,adas系统1138可以包括使用传统计算机视觉规则执行adas功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督mcu中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督mcu可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
[0193]
在一些示例中,adas系统1138的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果adas系统1138由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
[0194]
车辆1100可以还包括信息娱乐soc 1130(例如车载信息娱乐系统(ivi))。尽管被图示和描述为soc,但是信息娱乐系统可以不是soc,并且可以包括两个或更多分立的部件。信息娱乐soc 1130可以包括可以用来向车辆1100提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如tv、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如lte、wifi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐soc 1130可以包括收音机、盘播放器、导航系统、视频播放器、usb和蓝牙连接、车载电脑、车载娱乐、wifi、方向盘音频控件、免提语音控件、平视显示器(hud)、hmi显示器1134、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐soc 1130可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自adas系统1138的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
[0195]
信息娱乐soc 1130可以包括gpu功能。信息娱乐soc 1130可以通过总线1102(例如can总线、以太网等)与车辆1100的其他设备、系统和/或部件通信。在一些示例中,信息娱乐soc 1130可以耦合至监督mcu,使得在主控制器1136(例如车辆1100的主和/或备用计算机)出现故障的情况下,信息娱乐系统的gpu可以执行一些自驾驶功能。在这样的示例中,信息娱乐soc 1130可以如本文所描述的将车辆1100置于司机安全停车模式。
[0196]
车辆1100可以还包括仪表组1132(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组1132可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组1132可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(srs)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐soc 1130和仪表组1132之间共享。换言之,仪表组1132可以作为信息娱乐soc 1130的部分而被包括,或者反之亦然。
[0197]
图11d为根据本公开一些实施例的基于云的服务器与图11a的示例自主车辆1100之间的通信的系统示意图。系统1176可以包括服务器1178、网络1190以及包括车辆1100在内的车辆。服务器1178可以包括多个gpu1184(a)-1284(h)(这里统称为gpu 1184)、pcie交换机1182(a)-1182(h)(这里统称为pcie交换机1182)和/或cpu 1180(a)-1180(b)(这里统称为cpu 1180)。gpu 1184、cpu 1180和pcie交换机可以与诸如例如且不限于nvidia开发的nvlink接口1188之类的高速互连和/或pcie连接1186互连。在一些示例中,gpu 1184经由nvlink和/或nvswitch soc连接,并且gpu 1184和pcie交换机1182经由pcie互连连接。尽管图示出八个gpu 1184、两个cpu 1180和两个pcie交换机,但是这并不意图是限制性的。取决于实施例,服务器1178中的每一个可以包括任意数量的gpu 1184、cpu 1180和/或pcie交换机。例如,服务器1178中的每一个可以包括八个、十六个、三十二个和/或更多gpu 1184。
[0198]
服务器1178可以通过网络1190并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1178可以通过网络1190并且向车辆传输神经网络1192、更新的神经网络1192和/或地图信息1194,包括关于交通和道路状况的信息。对地图信息1194的更新可以包括对于hd地图1122的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1192、更新的神经网络1192和/或地图信息1194可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器1178和/或其他服务器)的经验产生。
[0199]
服务器1178可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据任何一类或更多类别的机器学习技术来执行训练,包括但不限于诸如以下类别:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1190传输至车辆),和/或机器学习模型可以由服务器1178用来远程地监控车辆。
[0200]
在一些示例中,服务器1178可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1178可以包括由gpu 1184供电的深度学习超级计算机和/或专用ai计算机,例如nvidia开发的dgx和dgx站机器。然而,在一些示例中,服务器1178可以包括仅使用cpu供电的数据中心的深度学习基础设施。
[0201]
服务器1178的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1100中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1100的定期更新,例如图像序列和/或车辆1100已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1100识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1100中的ai发生故障的结论,那么服务器1178可以向车辆1100传输信号,指示车辆1100的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
[0202]
为了推理,服务器1178可以包括gpu 1184和一个或更多个可编程推理加速器(例如nvidia的tensorrt)。gpu供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,cpu、fpga和其他处理器供电的服务器可以用于推理。
[0203]
示例计算设备
[0204]
图12是适合用于实现本公开的一些实施例的示例计算设备1200的框图。计算设备1200可以包括直接或间接耦合以下设备的互连系统1202:存储器1204、一个或更多个中央处理单元(cpu)1206、一个或更多个图形处理单元(gpu)1208、通信接口1210、输入/输出(i/o)端口1212、输入/输出组件1214、电源1216,一个或更多个呈现组件1218(例如,(一个或更多个)显示器)和一个或更多个逻辑单元1220。在至少一个实施例中,(一个或更多个)计算设备1200可以包括一个或更多个虚拟机(vm),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,gpu 1208中的一个或更多个可以包括一个或更多个vgpu,cpu1206中的一个或更多个可以包括一个或更多个vcpu,和/或逻辑单元1220中的一个或更多个可以包括一个或更多个虚拟逻辑单元。这样,(一个或更多个)计算设备1200可以包括分立组件(例如,专用于计算设备1200的全gpu)、虚拟组件(例如,专用于计算设备1200的gpu的一部分)、或其组合。
[0205]
尽管图12的各个方框被示出为利用线路经由互连系统1202连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件1218(诸如显示设备)可被认为是i/o组件1214(例如,如果显示器是触摸屏)。作为另一个示例,cpu 1206和/或gpu 1208可以包括存储器(例如,存储器1204可以表示除了gpu 1208的存储器、cpu 1206和/或其他组件之外的存储设备)。换言之,图12的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型的此类类别之间不做区分,因为所有都被考虑在图12的计算设备的范围内。
[0206]
互连系统1202可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连系统1202可以包括一个或更多个总线或链路类型,诸如工业标准架构(isa)总线、扩展工业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、快速外围组件互连(pcie)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,cpu 1206可直接连接到存储器1204。进一步,cpu 1206可直接连接到gpu 1208。在组件之间存在直接或点对点连接的情况下,互连系统1202可包括pcie链路以执行连接。在这些示例中,pci总线不需要被包括在计算设备1200中。
[0207]
存储器1204可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备1200访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
[0208]
计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器1204可以存储计算机可读指令(例如,表示(一个或更多个)程序和/或(一个或更多个)程序元件,诸如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或其他存储器技术,cd-rom、数字通用盘(dvd)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备1200存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
[0209]
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类的已调制数据信号中,并且包括任何信息传递介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、rf、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
[0210]
cpu 1206可经配置以执行计算机可读指令中的至少一些以控制计算设备1200的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。cpu 1206可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。cpu 1206可包含任何类型的处理器,且可取决于所实施的计算设备1200的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备1200的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备1200还可包括一个或更多个cpu 1206。
[0211]
除(一个或更多个)cpu 1206以外或替代(一个或更多个)cpu 1206,(一个或更多个)gpu 1208可被配置成执行计算机可读指令中的至少一些以控制计算设备1200的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。gpu 1208中的一个或更多个可为集成gpu(例如,有cpu 1206中的一个或更多个)和/或gpu 1208中的一个或更多个可为离散gpu。在实施例中,gpu 1208中的一个或更多个可以是cpu 1206中的一个或更多个的协处理器。gpu 1208可由计算设备1200使用以渲染图形(例如,3d图形)或执行通用计算。例如,gpu 1208可用于gpu上的通用计算(gpgpu)。gpu 1208可包含能够同时处置数百或数千软件线程的数百或数千核心。gpu 1208可响应于渲染命令(例如,经由主机接口从cpu 1206接收的渲染命令)而产生输出图像的像素数据。gpu 1208可包含用于存储像素数据或任何其他合适数据(例如,gpgpu数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器1204的一部分被包括。gpu 1208可包含并行操作(例如,经由链路)的两个或两个以上gpu。链路可以直接连接gpu(例如,使用nvlink)或可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每一gpu 1208可产生用于输出的不同部分或用于不
同输出的像素数据或gpgpu数据(例如,用于第一图像的第一gpu和用于第二图像的第二gpu)。每一gpu可包含其自己的存储器,或可与其他gpu共享存储器。
[0212]
除cpu 1206和/或gpu 1208之外或替代cpu 1206和/或gpu 1208,逻辑单元1220可经配置以执行计算机可读指令中的至少一些以控制计算设备1200的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,(一个或更多个)cpu 1206、(一个或更多个)gpu 1208、和/或(一个或更多个)逻辑单元1220可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元1220中的一个或更多个可为cpu 1206和/或gpu 1208中的一个或更多个中的一部分和/或集成于cpu 1206和/或gpu 1208中的一个或更多个和/或逻辑单元1220中的一个或更多个可为离散组件或以其他方式在cpu 1206和/或gpu 1208外部。在实施例中,逻辑单元1220中的一个或更多个可以是cpu 1206中的一个或更多个和/或gpu 1208中的一个或更多个的协处理器。
[0213]
逻辑单元1220的示例包括一个或更多个处理核心和/或其组件,诸如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理群集(gpc)、纹理处理群集(tpc)、流多处理器(sm)、树横向单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或快速外围组件互连(pcie)元件等。
[0214]
通信接口1210可以包括使计算设备1200能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口1210可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,wi-fi、z-wave、蓝牙、蓝牙le、zigbee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,lorawan、sigfox等)和/或互联网。
[0215]
i/o端口1212可以使得计算设备1200能够逻辑地耦合到包括i/o组件1214、(一个或更多个)呈现组件1218和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备1200中。说明性i/o组件1214包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。i/o组件1214可以提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(nui)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。nui可实现与计算设备1200的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备1200可以包括用于手势检测和识别的深度相机,诸如立体相机系统、红外相机系统、rgb相机系统、触摸屏技术和这些的组合。另外,计算设备1200可包含使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(imu)的部分)。在一些示例中,计算设备1200可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
[0216]
电源1216可包括硬连线电源、电池电源或其组合。电源1216可向计算设备1200提供电力以使得计算设备1200的组件能够操作。
[0217]
呈现组件1218可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件1218可从其他组件(例如,gpu1208、cpu1206等)接收数据,且输出所述数据(例如,作为图像、视频、声音等)。
[0218]
示例数据中心
[0219]
图13示出了可在本公开的至少一个实施例中使用的示例数据中心1300。数据中心1300可包括数据中心基础设施层1310、框架层1320、软件层1330和/或应用层1340。
[0220]
如图13所示,数据中心基础设施层1310可以包括资源协调器1312、分组的计算资源1314和节点计算资源(“节点c.r.s”)1316(1)-1316(n),其中“n”表示任何完整的正整数。在至少一个实施例中,节点c.r.s 1316(1)-1316(n)可包括,但不限于任何数量的中央处理单元(“cpu”)或其他处理器(包括加速器、现场可编程门阵列(fpga)、图形处理器或图形处理单元(gpu)等),存储器设备(例如,动态只读存储器),存储设备(例如,固态或磁盘驱动器),网络输入/输出(“nw i/o”)装置、网络交换机、虚拟机(“vm”)、功率模块和/或冷却模块,等等。在一些实施例中,来自节点c.r.s 1316(1)-1316(n)中的一个或更多个节点c.r.s可对应于具有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点c.r.s 1316(1)-13161(n)可包括一个或更多个虚拟组件,诸如vgpu、vcpu等,和/或节点c.r.s 1316(1)-1316(n)中的一个或更多个可对应于虚拟机(vm)。
[0221]
在至少一个实施例中,分组的计算资源1314可包括容纳在一个或更多个机架(未示出)内的节点c.r.s 1316的单独分组,或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组的计算资源1314内的节点c.r.s 1316的单独分组可包括可被配置或分配来支持一个或更多个工作负荷的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括cpu、gpu和/或其他处理器的若干节点c.r.s 1316可以分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负荷。一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和/或网络交换机。
[0222]
资源协调器1322可配置或以其他方式控制一个或更多个节点c.r.s1316(1)-1316(n)和/或分组的计算资源1314。在至少一个实施例中,资源协调器1322可以包括用于数据中心1300的软件设计基础设施(“sdi”)管理实体。资源协调器1322可以包括硬件、软件或其某种组合。
[0223]
在至少一个实施例中,如图13所示,框架层1320可以包括作业调度器1332、配置管理器1334、资源管理器1336和/或分布式文件系统1338。框架层1320可以包括支持软件层1330的软件1332和/或应用层1340的一个或更多个应用1342的框架。软件1332或应用1342可分别包含基于网络的服务软件或应用,例如由amazon(亚马逊)网络服务、google cloud(谷歌云)和microsoft azure提供的那些。框架层1320可以是但不限于可以利用分布式文件系统1338进行大规模数据处理(例如,“大数据”)的免费和开源的软件网络应用框架(如apache spark
tm
(下文称为“spark”))的类型。在至少一个实施例中,作业调度器1332可以包括spark驱动器以促进调度由数据中心1300的不同层支持的工作负荷。配置管理器1334可以能够配置不同层,诸如软件层1330和框架层1320(其包括用于支持大规模数据处理的spark和分布式文件系统1338)。资源管理器1336可以能够管理被映射到分布式文件系统1338和作业调度器1332或被分配用于支持分布式文件系统1338和作业调度器1332的集群的或分组的计算资源。在至少一个实施例中,集群的或分组的计算资源可包括在数据中心基础设施层1310的分组的计算资源1314。资源管理器1036可与资源协调器1312协调以管理这些被映射或分配的计算资源。
[0224]
在至少一个实施例中,在软件层1330中包括的软件1332可包括由节点c.r.s 1316(1)-1316(n)、分组的计算资源1314和/或框架层1320的分布式文件系统1338中的至少部分
使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
[0225]
在至少一个实施例中,在应用层1340中包括的应用1342可包括由节点c.r.s 1316(1)-1316(n)、分组的计算资源1314和/或框架层1320的分布式文件系统1338中的至少部分使用的一个或更多个类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组应用、认知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,pytorch、tensorflow、caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
[0226]
在至少一个实施例中,配置管理器1334、资源管理器1336和资源协调器1312中的任一个可基于在任何技术上可行的方式中获取的任何量和类型的数据来实现任何数量和类型的自修改动作。自修改动作可使数据中心1300的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或较差执行部分。
[0227]
根据本文描述的一个或更多个实施例,数据中心1300可包括工具、服务、软件或其他资源来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推断信息。例如,可以通过使用以上相对于数据中心1300描述的软件和/或计算资源根据神经网络架构来计算权重参数来训练(一个或更多个)机器学习模型。在至少一个实施例中,对应于一个或更多个神经网络的经训练或部署的机器学习模型可用于通过使用通过一种或多种训练技术(诸如但不限于本文中描述的那些训练技术)计算的权重参数,使用上文相对于数据中心1300描述的资源来推断或预测信息。
[0228]
在至少一个实施例中,数据中心1300可使用cpu、专用集成电路(asic)、gpu、fpga和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上文所描述的一或更多个软件和/或硬件资源可被配置为允许用户训练或执行对信息的推断的服务,例如图像识别、语音识别或其他人工智能服务。
[0229]
示例网络环境
[0230]
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图12的(一个或更多个)计算设备1200的一个或更多个实例上实现——例如,每个设备可以包括(一个或更多个)计算设备1200的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、nas等)的情况下,后端设备可被包括作为数据中心1300的一部分,数据中心1300的示例在本文中关于图13更详细地描述。
[0231]
网络环境的组件可经由网络彼此通信,所述网络可为有线的、无线的或为两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(pstn))和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
[0232]
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不被包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以被包括在网络环境中)。在对等网络环境中,本文针对服务器所描述的功能可在任何数量的客户端设备上实现。
[0233]
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式
计算环境、其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可分别包含基于网络的服务软件或应用。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(api)访问服务软件和/或应用)。框架层可以是但不限于如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架。
[0234]
基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
[0235]
(一个或更多个)客户端设备可以包括本文关于图12所描述的(一个或更多个)示例计算设备1200的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被实现为个人计算机(pc),膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(pda)、mp3播放器、虚拟现实耳机、全球定位系统(gps)或设备、视频播放器、摄像机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合或任何其他合适的设备。
[0236]
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
[0237]
如在本文中使用的,“和/或”关于两个或更多元件的叙述应当解释为仅指一个元件或者元件组合。例如,“元件a、元件b和/或元件c”可以包括仅仅元件a,仅仅元件b,仅仅元件c,元件a和元件b,元件a和元件c,元件b和元件c,或者元件a、b和c。此外,“元件a或元件b中的至少一个”可以包括元件a中的至少一个,元件b中的至少一个,或者元件a中的至少一个和元件b中的至少一个。进一步,“元件a和元件b中的至少一个”可以包括元件a中的至少一个,元件b中的至少一个,或者元件a中的至少一个和元件b中的至少一个。
[0238]
这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本公开人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元件,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
再多了解一些

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

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

相关文献