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

利用平面单应性和自监督的场景结构理解进行对象检测的制作方法

2021-11-05 19:19:00 来源:中国专利 TAG:

利用平面单应性和自监督的场景结构理解进行对象检测
1.相关申请的交叉引用
2.本技术要求2020年5月5日提交的美国临时申请号63/020,527的权益,其全部内容通过引用合并于此。


背景技术:

3.本公开的实施例解决了涉及计算机视觉的各种问题,并且适用于各种各样的情况,例如用于自主驾驶车辆的道路上障碍物检测。例如,对于人类驾驶员来说,至关重要的是识别自我车道上的潜在道路危险,然后及时采取动作,例如停车或改变车道,以免发生事故。同样,自驾驶汽车有望具有检测道路上任何潜在危险状况的能力。
4.本文描述的实施例表示对先前的尝试的改进,以解决检测路面上的道路危险或其他对象的问题。


技术实现要素:

5.本公开的实施例涉及使用平面单应性(planar homography)和场景结构的自监督理解的对象检测。公开了可以利用安装在移动的自主机器的正面上的单个相机来捕获图像的系统和方法,所述图像用于训练深度神经网络(dnn)以预测场景结构图。在训练阶段期间,计算在两个不同的时间点从相机获得的两个图像帧之间的平面单应性,并且至少部分地基于平面单应性来生成第一扭曲帧。将第一经扭曲的图像和第二帧之间的其余差异建模为残余光流(residual flow),该残余光流至少部分地基于使用两个图像帧作为输入,作为dnn输出而获得的场景结构来计算。最终,残余光流用于至少部分地基于第一经扭曲的图像来生成第二经扭曲的图像,并且第二图像和第二经扭曲的图像之间的差异(例如,光度损失)可以用于更新dnn的参数。
6.在实现阶段,将两个图像帧

其可以在两个不同的时间点捕获

作为输入提供给dnn,并确定场景结构。场景结构包括一组数值,其中特定数值指示两个图像帧中包括的特定像素的高度和深度比。在各种实施例中,场景结构图中的非零值指示路面上方存在障碍物,该障碍物可能导致一种或更多种障碍物检测算法的启动。
7.与本文所讨论的常规系统相比,本公开的实施例可以利用最少的传感器来检测道路危害,以进行简化并节省成本。例如,所公开的系统和方法可以采用安装在车辆上的面向前方的单个图像相机(例如,单眼相机)有效地操作(例如,仪表板相机或下面更详细描述的其他前置相机)。
8.例如,一些先前的技术使用来自序列的两个图像作为输入,并基于特征匹配和基于共识的算法迭代地进行处理以计算地面单应性。此后,从处理图像的输出之间的差异中检测出危险对象。在复杂场景中会从离地对象中提取很多特征点,从而对平面单应性估计产生不利影响,因此这种简单的方法可能不适用于复杂场景。此外,提取图像特征并为每个帧执行迭代匹配(部分是由于迭代的时序要求),对于实时部署可能不可行。
9.其他技术通过优化马尔可夫随机场(mrf)模型来利用低级图像特征(例如图像梯
度)和来自立体相机的深度图像来分割障碍物。此方法基于以下假设:障碍物周围的区域显示出高深度曲率、高深度方差和高图像梯度。这种技术的实现依赖于立体相机输入和外部深度估计方法。此外,这项技术还需要针对道路分割训练的深度神经网络。对于许多应用来说,这种管线的复杂性和计算要求可能是禁止的和/或不切实际的。
附图说明
10.下面参考所附附图详细描述使用平面单应性和自监督的场景结构理解进行对象检测的本系统和方法,其中:
11.图1是根据本公开的一些实施例的用于检测路面上的对象的示例性单相机系统的图示;
12.图2是根据本公开的一些实施例的生成用于在训练过程中使用的经扭曲的图像的示例过程;
13.图3是根据本公开的一些实施例的训练由图1的示例单相机系统使用的模型的示例过程;
14.图4是根据本公开的一些实施例的生成用于在训练过程中使用的经扭曲的图像和训练由图1的示例单相机系统使用的模型的示例过程;
15.图5是根据本公开的一些实施例的由图1的示例单相机系统使用经训练的模型来检测对象的示例过程;
16.图6是根据本公开的一些实施例的由经训练的模型生成的示例场景结构图;
17.图7a是根据本公开的一些实施例的用于经训练的dnn的输入图像的示例;
18.图7b是根据本公开的一些实施例的由经训练的模型生成的示例场景结构图;
19.图8a是根据本公开的一些实施例的用于经训练的dnn的输入图像的示例;
20.图8b是根据本公开的一些实施例的由经训练的模型生成的示例场景结构图;
21.图9a是根据本公开的一些实施例的用于经训练的dnn的输入图像的示例;
22.图9b是根据本公开的一些实施例的由经训练的模型生成的示例场景结构图;
23.图10是根据本公开的一些实施例的示例自主车辆的图示;
24.图11是根据本公开的一些实施例的图10的示例自主车辆的相机位置和视野的示例;
25.图12是根据本公开的一些实施例的图10的示例自主车辆的示例系统架构的框图;
26.图13是根据本公开的一些实施例的用于在基于云的服务器与图10的示例性自主车辆之间进行通信的系统图;和
27.图14是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
28.公开了与使用平面单应性和自监督的场景结构理解的对象检测相关的系统和方法。
29.包括对潜在障碍物的检测在内的对象检测是具有辅助驾驶功能或完全自主驾驶能力的自主机器的重要特征。本公开的实施例提供了基于相机的方法,用于使用计算机视觉和深度学习技术进行对象检测。另外,由于其简单性和成本效益,可以用最少的传感器设
置和计算需求来实现此解决方案。具体地,所提出的方法和系统可以仅利用安装在移动车辆(诸如行车记录仪或类似的前置相机)上的单个图像相机(例如,单眼相机)来检测路面上方的对象。
30.在各种方法中,当执行各种操作(例如,检测道路服务上的障碍物)时,自主机器可以利用来自多模式传感器(诸如相机、雷达和/或激光雷达)的输入。但是,使用额外的输入需要额外的成本,既需要额外的硬件,也需要处理这些额外输入的额外计算需求。在本公开中描述的各种实施例中,使用传感器系统和计算强度的最小设置来执行对道路上的障碍物的检测。例如,本文描述的系统和方法可以用于仅具有安装在移动的车辆或机器人上的单个前置摄像头的部署中。尽管这些系统和方法并不受此限制,但包括诸如激光雷达等高级传感器的成本效益可能不高,并且极大地增加了系统复杂性,从而在不久的将来无法进行大规模部署。
31.此外,由于缺乏道路障碍物的标记数据并且不可能枚举道路上所有可能种类的障碍物,因此监督学习方法将难以扩展和概括。此外,手动标记大量数据集以训练神经网络将非常昂贵。
32.本文描述的系统和方法的实施例使用安装在运动的车辆或机器人上的单个相机来捕获车辆周围环境的图像。在示例训练阶段中,来自相机的两个图像帧用作训练深度神经网络(dnn)的输入。在一个示例中,然后,车辆或机器人内的一个或更多个计算机系统使用dnn来预测场景结构图,该场景结构图的大小与输入图像的大小相同。在一个实施例中,该结构图是数值矩阵,其至少部分地基于针对特定像素位置预测的高度与深度之比来确定。使用道路分割或车道检测算法(其可以基于当前技术),在结构图中具有非零值的道路上的点可能会是障碍物。在各种实施例中,然后可以确定包围障碍物的边界框。在各种实施例中,将诸如阈值化和连接成分分析(connected component analysis)的常规技术应用于生成边界框。在上述示例中,dnn可以执行无监督或自监督学习。但是,在各种其他实施例中,可以使用监督学习来提高准确性(例如,以预测路面上的对象的高度和深度)。例如,附加的传感器数据(例如激光雷达数据)可用于执行dnn的有监督学习。
33.所提出的系统和方法可以作为必要组件包括在现有自驾驶车辆软件中,以确保在自主驾驶系统的所有级别上的安全操作。另外,这些技术在单相机系统中的应用节省了成本(例如,传感器成本和计算成本),并且降低了实现自驾驶车辆的要求。所提出的方法的另一个特殊优点是,由于自监督学习的性质,可以从数据标记中节省很多工作量,这将大大加快开发过程并降低成本。此外,其他应用领域(例如机器人技术)也可以利用此方法,例如,使机器人远离障碍物或在障碍物周围导航。
34.参照图1,图1是根据本公开的一些实施例的具有单个前置摄像头108的车辆102的示例,该摄像头108使用经训练的dnn来检测路面110上的对象106。此外,如下文更详细描述的,相机108用于捕获场景的图像,该场景的图像可用于训练dnn和/或作为输入提供给dnn以检测路面上的对象。应当理解,本文描述的这种布置和其他布置仅作为示例阐述。除了或代替所示的那些,可以使用其他布置和元件(例如,机器、界面、功能、命令、功能的分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,可以将其实现为分立的或分布式组件或与其他组件结合并且以任何合适的组合和位置来实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由处理器执行
存储在存储器中的指令来执行。
35.图1示出了两个场景t0和t1,其中t0示出了捕获场景的第一图像104a的第一时间点,以及t1示出了捕获第二图像104b的第二时间点。根据一个或更多个实施例,实现方式可以使用两个(或更多个)连续帧,或两个(或更多个)帧间隔一时间间隙(例如0.2秒)。例如,在由相机108捕获的视频中,第一图像104a与第二图像104b相邻。在另一示例中,由相机108捕获第一图像104a和第二图像104b,但是相隔一时间间隔,例如0.2秒。在各种实施例中,第一图像104a和第二图像104b之间的时间间隔可以至少部分地基于从车辆102的惯性测量单元(imu)传感器获得的数据来修改,这将在下面更详细地描述。例如,可以至少部分地基于车辆的速度来增大或减小捕获第一图像104a和第二图像104b之间的间隔。在又一个示例中,如果车辆的转向角超过阈值(例如30%),则可以临时地暂停、增加或减少图像的捕获。
36.在各个实施例中,第一图像104a和第二图像104b(或作为体图像数据的附加图像,如下面更详细描述的)包含几乎相同的场景但来自略有不同的视图的信息,因此可以从帧差异中推理出场景的三维结构,例如每个像素位置处的深度和高度。下面描述的是两个阶段的过程,该过程包括训练阶段和部署阶段,用于利用dnn使用第一图像104a和第二图像104b检测路面上的对象。
37.在示例性训练阶段(以下结合图2和图3更详细地描述)期间,可以使用第一图像104a和第二图像104b作为输入来训练dnn或类似算法以预测道路上的对象。在其他实施例中,可以将多个图像和/或数据(例如,传感器数据)作为输入提供给dnn。在训练阶段期间,可以使用训练图像的语料库来训练dnn。另外,相机108可以捕获多个图像和/或视频,除训练图像的语料库之外或作为其替代的,该多个图像和/或视频可以用作训练数据。以第一图像104a和/或第二图像104b为例,在训练阶段期间,可以将道路分割和/或车道检测算法应用于图像,以识别第一图像104a和/或第二图像104b中道路的近似区域。
38.另外,在各种实施例中,这些算法和其他合适的算法用于对用于训练dnn的图像(例如,第一图像104a和第二图像104b)执行特征提取。从训练图像中的道路区域中提取特征使得能够进行基于特征匹配的单应性,其中例如,将第一图像104a扭曲为第二图像104b以生成经扭曲的图像。如以下结合图3更详细地描述的,使用至少部分地基于由dnn输出的场景结构图计算出的残余光流图(例如,矢量),进一步对作为该单应性的结果而生成的经扭曲的图像进行进一步扭曲。
39.在各个实施例中,使用随机样本共识(ransac)或类似算法来估计单应性变换(例如,3
×
3矩阵),使得可以使用诸如加速鲁棒特征(surf)、鲁棒独立基本特征(brief)、定向fast和旋转brief(orb)以及尺度不变特征变换(sift)之类的特征提取器在路面上检测到的关键点之间建立对应关系。这称为平面单应性(planar homography)。在已知关于车辆110内的相机108或多个相机的附加信息的其他实施例中(例如,相机姿态或其他相机参数),由于图像坐标和真实世界坐标之间的对应关系可以由相机的姿势或其他相机参数确定,因此不需要单应性变换的估计。
40.返回图1中的示例,平面单应性用于将第一图像104a向第二图像104b扭曲。在作为平面单应性的结果而生成的经扭曲的图像中,不在平面(例如,使用上述算法识别的路面)上的任何对象(例如,对象106)都不会与第二图像104b中的相应点对齐。至少部分地基于该经扭曲的图像,可以通过残余光流对经扭曲的图像和第二图像104b之间的剩余差异进行建
模,该残余光流至少部分地基于位于平面上方的特定点(例如,图像中表示对象106的像素)的高度来确定。此外,虽然将平面用作说明性示例,但是该技术可以应用于其他表面。例如,在车辆行驶的方向上(在其他相同方向上也一样)呈凸形或凹形、或者其他形式的弯曲的弯曲表面(例如山丘、河岸、坑洼、路缘、坡道等)。在各种实施例中,在训练阶段期间,至少部分地基于dnn输出的场景结构来计算残余光流。返回到以上示例,通过dnn以第一图像104a和第二图像104b作为输入来生成场景结构图。如下面更详细描述的,场景结构图是代表图像内像素位置处的高度和深度之比的矩阵。
41.在各种实施例中,在dnn的训练期间,dnn的输入是第一图像104a和第二图像104b,dnn的输出是场景结构图,该场景结构图被转换为残余光流图(例如,使用已知技术)。然后,可以使用残余光流将经扭曲的图像(例如,如上所述,通过将第一图像104a扭曲为第二图像104b而生成的图像)朝向第二图像104b进一步扭曲,从而得到第二经扭曲的图像。在各个实施例中,残余光流的目的是对准平面(例如,路面110)上方的点。正如在图1中平面单应性对准道路110表面的点一样,残余光流可用于对准对象106的点。
42.通常,第二经扭曲的图像(例如,上述经扭曲的图像朝向第二图像104b扭曲的结果)越接近第二图像104b,则残余光流越准确,因此,场景结构越准确。结果,第二经扭曲的图像(例如,至少通过扭曲第一经扭曲的图像产生的经多扭曲的图像)和第二图像104b(例如,图像之间的差异)之间的光度损失可以用于在训练期间更新dnn的参数。在部署阶段期间,dnn例如至少部分地基于第一图像104a和第二图像104b生成场景结构图,可以不计算平面单应性和残余光流,并且可以不调整dnn的参数。
43.此外,可以训练dnn或其他合适的网络以将任意数量的图像和/或传感器数据作为输入。非限制性示例包括来自单个相机的相距一秒拍摄的两个(或更多个)图像,来自单个相机的视频馈送的非连续图像,或者甚至是两个相机在两个时间点捕获的四个图像。本公开中描述的系统和方法是灵活的,并且在各种实施例中,可以仅使用来自单个相机的两个图像来执行对象检测。如本公开中所述,dnn然后从两个图像来预测场景结构图。可以训练dnn以使用任何基于图像的输入格式。此外,图像可以包括诸如rgb和yuv之类的所有种类的颜色空间中的灰度图像或彩色图像。
44.除了能够使用多个图像来生成场景结构图之外,在示例训练阶段期间,可以将多个图像(例如,在一秒钟内捕获的30帧)用作dnn的输入。例如,如上所述,给定一系列图像(例如,图像1、图像2、...、图像30),图像的多个组合(例如,图像1和图像2、图像1和图像30、图像2和图像30,

)可用于计算单应性和光度损失。在另一示例中,图像的整个序列(例如,30个图像)可以作为包括图像1、图像2、...、图像30的体(例如,体数据)堆叠,并用作dnn的输入。在这样的示例中,附加图像可以提供更细粒度的信息和场景细节,以帮助dnn改善性能。
45.在各个实施例中,在部署阶段期间,第一图像104a和第二图像104b用作dnn的输入,该dnn使用场景结构图中的信息(例如,高度与深度之比)检测路面110上方的对象106。如以下结合图4更详细地描述的,当执行危险检测时,可以识别场景结构图的道路区域内的非零位置。这些非零位置指示道路110上方的高度为非零,并因此指示对象106(例如碎片)在道路110上。执行dnn的系统或其他系统可以使用标准图像处理技术(例如,阈值化、膨胀/腐蚀、连接成分分析或任何其他合适的图像处理算法)生成包围这些非零区域的边界框。
46.利用经训练的dnn并使用本公开中描述的技术,可以仅由在运动中从车辆102上的相机108获得的两个图像生成准确的场景结构图。在各种实施例中,将与场景结构图中的非零值相对应的任何区域视为潜在障碍物。此外,dnn可以以自监督学习或无监督学习的方式进行操作,而无需对障碍物的特定形状、类型或位置进行任何人工标记。
47.最后,尽管在图1中示出了具有单个相机108的车辆102,但是应当注意,所提出的方法可以轻松扩展为使用多个图像帧,以更好地捕获场景结构。另外,来自多个相机(例如,立体相机)的图像可以提供同一场景的附加视觉提示,从而导致更好的准确性。此外,尽管所描述的系统和方法使用dnn,但可以使用其他网络模型。例如,上述dnn将两个或更多个图像作为输入,并且输出是场景结构图(可以将其生成为图像)。结果,可以结合本公开中描述的任何实施例来利用产生图像形输出的任何全卷积网络或卷积网络。合适的网络的非限制性示例包括:u

net、deeplabv3 、deeplabv3、segnet和fcn。注意,通常,可以使用适合于语义分割的任何网络。
48.本公开中描述的系统和方法也可以在另外的应用中使用。作为示例,本公开的非限制性应用针对深度估计、高度估计、离地对象检测、离地对象分割、机器人相关应用、导航或其他图像处理和计算机视觉应用。通常,所描述的神经网络会预测一场景结构,其包含更多真实世界场景的基本几何信息。因此,神经网络适用于使用场景的真实世界几何信息的估计和/或预测的应用。
49.本公开的实施例提供了一种用于将自监督学习用于采用单个相机的障碍物检测的新颖方法;与传统的基于计算机视觉和图像处理的方法相比,采用dnn可以对真实数据中的复杂模式进行建模;根据本公开的实施例的自学习机制,并且与有监督学习相比,还避免了昂贵的人类数据标记。相反,可以使用易于访问的大量未标记数据来提高计算的预测的准确性。此外,本文描述的系统和方法不需要关于深度或视差的任何先验知识。在各种实施例中,在部署阶段期间仅需要彩色图像作为输入。
50.现在参考图2、图3、图4和图5,本文描述的方法200、300、400和500的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。每种方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件(仅举几例)提供。另外,通过示例的方式,相对于图1的对象检测系统描述了方法200。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文所述的那些。
51.图2是示出根据本公开的一些实施例的用于生成在dnn上的训练阶段期间使用的经扭曲的图像的方法200的流程图。在框202处,方法200包括获取第一图像和第二图像。如上所述,可以从安装在车辆上的单个相机(例如,行车记录仪)获取图像。在一个实施例中,图像是视频流中的相邻图像。在其他实施例中,图像之间存在时间移位(例如0.2秒)。可以至少部分地基于关于相机或相机所附着的车辆的运动的信息(例如,速度、全球定位系统(gps)坐标、转向角等)来修改该时间移位。此外,如上所述,方法200可以被修改为包括体数据,诸如附加图像和/或传感器数据。
52.在框204处,执行方法200的系统识别第一图像和第二图像内的道路区域。如上所述,道路分割、自由空间估计和/或车道检测算法可以用于识别道路区域。识别道路区域以
便检测路面上方的对象。在框206处,执行方法200的系统检测关键点并从第一图像和第二图像中提取关键点特征。例如,orb或类似算法可用于检测关键点并从图像中提取特征。如下所述,从图像中提取的特征和相应的关键点允许估计平面单应性并确定与道路关联的平面。
53.在框208处,执行方法200的系统估计单应性变换以将第一图像扭曲为第二图像。在各种实施例中,ransac用于至少部分地基于从图像获得的信息来估计单应性变换。例如,平面单应性至少部分地基于来自第一图像和第二图像中的预先分割的路面的特征匹配和共识。执行方法200的系统不需要道路区域与场景的精确隔离。此外,结合图2描述的操作可以在训练阶段期间执行,在部署阶段不需要执行,并且在部署阶段期间不会增加计算负担。
54.作为经由关键点匹配和/或特征提取执行直接单应性估计的结果,不需要关于相机的校准的信息(例如,相机姿势),并且绕过诸如从图像平面到世界坐标的坐标转换。这大大降低了系统复杂性。在容易获得且可靠的相机校准的实施例中,方法200可以修改为利用相机姿势来计算单应性,而不是执行上述在框206和208处描述的过程。
55.在框210处,执行方法200的系统使用估计的单应性变换来执行平面单应性,以使第一图像朝向第二图像扭曲并生成第一经扭曲的图像。在框212处,完成图像的处理和经扭曲的图像的生成,并且在图3的框302处继续训练dnn。在各种实施例中,图2中描述的操作可以省略,可以以不同顺序执行、可以并行执行、或可以串行和并行组合地执行。关于输入的处理(例如,结合图2描述的图像的处理),可以有选择地选择进行诸如均值减法、标准偏差归一化以及对输入进行预处理以获得更好的结果(诸如图像去噪)之类的变换。
56.图3是示出根据本公开的一些实施例的用于训练dnn以检测路面上的对象的方法300的流程图。在框302处,方法300包括提供第一图像和第二图像作为dnn的输入。在各种实施例中,方法300可以是大型训练阶段的一部分,以准备用于部署的dnn。结合图2描述的计算机视觉和图像处理操作生成可结合方法300使用的数据(例如,经扭曲的图像)。如上所述,dnn至少部分地基于第一图像和第二图像输出场景结构图。
57.在框304处,执行方法300的系统将dnn输出的场景结构图转换为残余光流图。在各种实施例中,可以将残余光流建模为向量,该向量可以用于进一步将使用图2中描述的平面单应性生成的经扭曲的图像朝向第二图像扭曲。残余光流的确定可以使用已知的计算机视觉和模式识别技术来执行。在框306处,至少部分地基于残余光流,将第一经扭曲的图像(例如,在方法200的框210处生成的经扭曲的图像)进一步朝向第二图像扭曲以生成第二经扭曲的图像。在各种实施例中,上述平面单应性在第一图像和第二图像之间对准路面,而在方法300的框306处经扭曲的图像进一步对准在路面上方的对象。
58.在框308处,执行方法300的系统确定第二经扭曲的图像和第二图像之间的光度差。光度差和/或光度损失基于dnn预测的光流来测量输入图像(例如,第二图像)和经扭曲的图像(例如,在框306处生成的第二经扭曲的图像)之间的差异。在框310处,执行方法300的系统可以至少部分地基于在框308处确定的光度差来更新dnn的参数。
59.此外,在各种实施例中,可以将方法200和方法300的每一个概括为不同的设置,例如,多个输入帧、多个相机输入、多个附加传感器等。此外,dnn的设计可以与最新技术保持一致,以进一步解决准确性或延迟要求。
60.图4是示出根据本公开的一些实施例的方法400的流程图,该方法400用于生成在
dnn上的训练阶段期间使用并训练dnn以检测路面上的对象的经扭曲的图像。在框402a和402b处,方法400包括获取第一图像帧和第二图像帧。如上所述,可以从安装在车辆上的单个相机(例如,行车记录仪)获取图像。在一个实施例中,图像是视频流中的相邻图像。在其他实施例中,图像之间可能存在时间移位(例如0.2秒)。可以至少部分地基于关于相机或相机所附着的车辆的运动的信息(例如,速度、全球定位系统(gps)坐标、转向角等)来修改该时间移位。此外,如上所述,可以将方法400修改为包括体数据,诸如附加图像和/或传感器数据。
61.在框404处,方法400包括提供第一图像帧402a和第二图像帧402b作为dnn的输入。结合图2描述的计算机视觉和图像处理操作生成数据,例如如下面更详细描述的经扭曲的图像410。如上所述,dnn至少部分地基于第一图像帧402a和第二图像帧402b输出场景结构图406。在各种实施例中,场景结构图406包括在本公开中描述的图像和数据,例如如下面结合图5所描述的那些。
62.在框408处,执行方法400的系统在给定校准的相机高度和估计的单应性的情况下将场景结构图406转换为残余光流图。在各种实施例中,可以将残余光流408建模为向量,该向量可以用于将使用图2中描述的平面单应性生成的经扭曲的图像1410进一步朝向第二图像进行扭曲。在各种实施例中,使用已知的计算机视觉和模式识别技术来执行残余光流的确定。
63.在框412处,执行过程400的系统利用残余光流408将经扭曲的图像1410进一步向第二图像帧2402b扭曲。在各种实施例中,使用残余光流408执行对经扭曲的图像1410进行扭曲。残余光流408提供与路面上方的对象相关联的信息,该信息用于将经扭曲的图像1410中路面上方的对象朝向第二图像帧402b中路面上方的对象扭曲。在框412中发生的图像扭曲生成另一经扭曲的图像1414。如上所述,进一步的经扭曲的图像1414是作为将经扭曲的图像1410朝向第二图像帧402b扭曲的结果而生成的图像。
64.在框416处,执行方法400的系统确定进一步的经扭曲的图像1414与第二图像帧402b之间的光度差(例如,损失计算)。光度差和/或光度损失基于dnn预测的光流来测量输入图像(例如,第二图像帧402b)和经扭曲的图像(例如,进一步的经扭曲的图像1414)之间的差异。
65.图5是示出根据本公开的一些实施例的用于经训练的dnn的部署阶段的方法500的流程图。在框502处,方法500包括将第一图像和第二图像提供给经训练的dnn作为输入。在框504处,执行方法500的系统获得作为dnn的输出而生成的场景结构图。如本公开中所述,dnn将图像作为输入并输出场景结构图,该场景结构图指示场景内的对象在路面上方的预测高度。
66.在框506处,执行方法500的系统执行对场景结构图的分析。在各种实施例中,场景结构图包括由dnn预测的场景内每个像素处的高度和深度比。在这样的实施例中,像素的任何非零值可以代表路面上方的对象或其一部分。值为零的像素可指示路面上没有任何东西。因此,在一个实施例中,对场景结构图的分析包括掩盖不代表路面上的对象的像素。可以结合本公开中描述的实施例来使用用于关注场景结构图中包括的非零值的各种技术。
67.在框508处,执行方法500的系统可以检测路面上的障碍物。例如,通过至少对场景结构图中指示的非零像素执行斑点检测和/或连接成分分析。根据一个或更多个另外的实
施例,两图像输入的实现可以扩展到多图像输入,使得嵌入在体视频数据中的时间信息可以用于改善结果。代替使用单个相机,可以利用诸如立体相机之类的多个相机。不同相机之间重叠场景的视差可以补充单个相机所携带的在不同时间捕获的场景的信息。诸如训练神经网络(例如dnn)中使用的光度损失函数之类的技术细节可以扩展到不同的体数据输入(例如立体相机)。例如,要计算经扭曲的图像和参考图像之间的相似度,我们可以使用l1损失、l2损失、结构相似度(ssim)损失或其他合适的技术。当多模态数据可用时,可以修改神经网络以获取更多输入。例如,当雷达/激光雷达数据可用时,可以将此信息与相机图像结合使用以预测场景结构图。
68.图6示出了至少部分地基于作为输入提供给dnn的两个图像而生成的示例输出或场景结构图602。在各种实施例中,dnn的输出是单个场景结构图602。此外,取决于精度和效率,场景结构图602可以具有与输入图像相同的大小,或者具有减小的大小。例如,在使用dnn预测场景结构的当前时间戳下,dnn将当前帧作为输入,并将一个或更多个先前帧作为输入(例如,从单个相机捕获的640
×
480rgb彩色图像),并执行推理。结果,输出大小为640
×
480的场景结构图602,使得在各个像素位置处,场景结构图602的值指示高度与深度之比。如上所述,场景结构图还可以具有减小的输出大小,例如320
×
240;在这种情况下,分辨率将更粗糙,这意味着现在在图中,一个像素将告知与原始图像中四个像素相对应的高度/深度信息。在各种实施例中,场景结构图的减小的大小可以提高效率。
69.图7a描绘了道路场景中的盒子的示例输入图像700a。在各种实施例中,如上所述,输入图像700a由移动车辆的前置相机捕获。图7b描绘了图像700a中描绘的盒子的示例输出场景结构图。在各种实施例中,示例输出场景结构图由如上所述的经训练的dnn生成,作为输入向其提供为图像700a和至少一个其他图像。
70.图8a描绘了道路场景中的车辆的示例输入图像800a。在各种实施例中,如上所述,输入图像800a由移动车辆的前置相机捕获。图8b描绘了图像800a中描绘的车辆的示例输出场景结构图。在各种实施例中,示例输出场景结构图由如上所述的经训练的dnn生成,作为输入向其提供图像800a和至少一个其他图像。
71.图9a描绘了道路场景中的二维道路标记的示例输入图像900a。在各种实施例中,如上所述,输入图像900a由移动车辆的前置相机捕获。图9b描绘了图像900a中描绘的二维道路标记的示例输出场景结构图。在各种实施例中,示例输出场景结构图由如上所述的经训练的dnn生成,作为输入向其提供图像900a和至少一个其他图像。
72.示例自主车辆
73.图10示出了根据本公开的一些实施例的自主车辆1000的示例。自主车辆1000(可替代地,在本文称为“车辆1000”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、第一响应车辆、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、建筑车辆、水下航行器、无人驾驶飞机和/或另一种类型的车辆(例如,无人驾驶和/或容纳一个或多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(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,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1000可能够实现符合自主驾驶级别的3级

5级中
的一个或更多个的功能。例如,取决于实施例,车辆1000可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
74.车辆1000可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1000可以包括推进系统1050,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统1050可以连接到可以包括变速器的车辆1000的传动系以便实现车辆1000的推进。可以响应于接收到来自油门/加速器1052的信号而控制推进系统1050。
75.可以包括方向盘的转向(steering)系统1054可以用来在推进系统1050操作时(例如在车辆运动时)使车辆1000转向(例如沿着希望的路径或路线)。转向系统1054可以接收来自转向致动器1056的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
76.制动传感器系统1046可以用来响应于接收到来自制动致动器1048和/或制动传感器的信号而操作车辆制动器。
77.可以包括一个或更多个片上系统(soc)1004(图12)和/或一个或更多个gpu的一个或更多个控制器1036可以向车辆1000的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1048操作车辆制动器、经由一个或更多个转向致动器1056操作转向系统1054、和/或经由一个或更多个油门/加速器1052操作推进系统1050的信号。一个或更多个控制器1036可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆1000。一个或更多个控制器1036可以包括用于自主驾驶功能的第一控制器1036、用于功能性安全功能的第二控制器1036、用于人工智能功能(例如计算机视觉)的第三控制器1036、用于信息娱乐功能的第四控制器1036、用于紧急情况下的冗余的第五控制器1036和/或其他控制器。在一些示例中,单个控制器1036可以处理上述功能中的两个或更多,两个或更多控制器1036可以处理单个功能,和/或其任意组合。
78.一个或更多个控制器1036可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1000的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器1058(例如全球定位系统传感器)、radar传感器1060、超声传感器1062、lidar传感器1064、惯性测量单元(imu)传感器1066(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1096、立体相机1068、广角相机1070(例如鱼眼相机)、红外相机1072、环绕相机1074(例如360度相机)、远程和/或中程相机1098、速度传感器1044(例如用于测量车辆1000的速率)、振动传感器1042、转向传感器1040、制动传感器(例如作为制动传感器系统1046的部分)和/或其他传感器类型。
79.控制器1036中的一个或更多个可以接收来自车辆1000的仪表板1032的输入(例如由输入数据表示),并且经由人机接口(hmi)显示器1034、听觉信号器、扬声器和/或经由车辆1000的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图12的hd地图1022)、位置数据(例如,车辆1000例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1036所感知的关于对象和对象状态的信息等等。例如,hmi显示器1034可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正
在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34b,等等)。
80.车辆1000进一步包括网络接口1024,其可以使用一个或更多个无线天线1026和/或调制解调器通过一个或更多个网络通信。例如,网络接口1024可能够通过lte、wcdma、umts、gsm、cdma2000等通信。一个或更多个无线天线1026也可以使用诸如蓝牙、蓝牙le、z波、zigbee等等之类的一个或更多个局域网和/或诸如lorawan、sigfox等等之类的一个或更多个低功率广域网(lpwan)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
81.图11为根据本公开一些实施例的用于图10的示例自主车辆1000的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1100上的不同位置。
82.用于相机的相机类型可以包括但不限于可以适于与车辆1100的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(asil)b下和/或在另一个asil下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(rccc)滤色器阵列、红白白蓝(rccb)滤色器阵列、红蓝绿白(rbgc)滤色器阵列、foveon x3滤色器阵列、拜耳传感器(rggb)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有rccc、rccb和/或rbgc滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
83.在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(adas)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
84.所述相机中的一个或更多个可以安装在诸如定制设计的(3

d打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3

d打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
85.具有包括车辆1100前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1136和/或控制soc的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与lidar相同的adas功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于adas功能和系统,包括车道偏离警告(“ldw”)、自主巡航控制(“acc”),和/或诸如交通指示牌识别之类的其他功能。
86.各种各样的相机可以用于前置配置中,包括例如包括cmos(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1170,其可以用来感知从周边进入视野的对象(例如行人、十字路口交通或者自行车)。尽管图11中图示出仅仅一个广角相机,但是在车辆1100上可以存在任意数量的广角相机1170。此外,远程相机1198(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1198也可以用于对象检测和分类以及基本的对象跟踪。
87.一个或更多个立体相机1168也可以包括在前置配置中。立体相机1168可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的can或以太网接口的多核微处理器和可编程逻辑(例如,fpga)。这样的单元可以用来生成车辆环境的3

d地图,包括针对图像中的所有点的距离估计。可替代的立体相机1168可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1168。
88.具有包括车辆1100的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1174(例如如图11中所示的四个环绕相机1174)可以置于车辆1100的周围。环绕相机1174可以包括广角相机1170、鱼眼相机、360度相机和/或类似物。例如,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1174(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
89.具有包括车辆1100的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1198、立体相机1168、红外相机1172等等)的相机。
90.图12为根据本公开一些实施例的用于图10的示例自主车辆1000的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
91.图12中车辆1200的部件、特征和系统中的每一个被图示为经由总线1202连接。总线1202可以包括控制器区域网络(can)数据接口(可替代地,本文称为“can总线”)。can可以是车辆1200内部的网络,用来辅助控制车辆1200的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。can总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如can id)。可以读取can总线以找到方向盘角度、地速、每分钟发动机转速(rpm)、按钮位置和/或其他车辆状态指示符。can总线可以是asil b兼容的。
92.尽管这里将总线1202描述为can总线,但是这并不意图是限制性的。例如,除了can总线之外或者可替代地,可以使用flexray和/或以太网。此外,尽管用单条线来表示总线1202,但是这并不意图是限制性的。例如,可以存在任意数量的总线1202,其可以包括一条或更多条can总线、一条或更多条flexray总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1202可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1202可以用于碰撞避免功能,并且第二总线1202可以用于驱动控制。在任何示例中,每条总线1202可以与车辆1200的任何部件通信,并且两条或更多总线1202可以与相同的部件通信。在一些示例中,车辆内的每个soc 1204、每
个控制器1236和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1200的传感器的输入),并且可以连接到诸如can总线之类的公共总线。
93.车辆1200可以包括一个或更多个控制器1236,例如本文关于图10所描述的那些控制器。控制器1236可以用于各种各样的功能。控制器1236可以耦合到车辆1200的任何其他不同的部件和系统,并且可以用于车辆1200的控制、车辆1200的人工智能、用于车辆1200的信息娱乐和/或类似物。
94.车辆1200可以包括一个或更多个片上系统(soc)1204。soc 1204可以包括cpu 1206、gpu 1208、处理器1210、高速缓存1212、加速器1214、数据存储1216和/或未图示出的其他部件和特征。在各种各样的平台和系统中,soc 1204可以用来控制车辆1200。例如,一个或更多个soc 1204可以在系统(例如车辆1200的系统)中与hd地图1222结合,所述hd地图可以经由网络接口1224从一个或更多个服务器(例如图13的一个或更多个服务器1378)获得地图刷新和/或更新。
95.cpu 1206可以包括cpu簇或者cpu复合体(可替代地,本文称为“ccplex”)。cpu 1206可以包括多个核和/或l2高速缓存。例如,在一些实施例中,cpu 1206在一致性多处理器配置中可以包括八个核。在一些实施例中,cpu 1206可以包括四个双核簇,其中每个簇具有专用的l2高速缓存(例如2mb l2高速缓存)。cpu 1206(例如ccplex)可以被配置为支持同时簇操作,使得cpu 1206的簇的任意组合能够在任何给定时间是活动的。
96.cpu 1206可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于wfi/wfe指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。cpu 1206可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和ccplex确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
97.gpu 1208可以包括集成的gpu(可替代地,本文称为“igpu”)。gpu1208可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,gpu 1208可以使用增强张量指令集。gpu 1208可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括l1高速缓存(例如具有至少96kb存储能力的l1高速缓存),并且这些流式微处理器中的两个或更多可以共享l2高速缓存(例如具有512kb存储能力的l2高速缓存)。在一些实施例中,gpu 1208可以包括至少八个流式微处理器。gpu 1208可以使用基于计算机的应用程序编程接口(api)。此外,gpu 1208可以使用一个或更多个并行计算平台和/或编程模型(例如nvidia的cuda)。
98.在汽车和嵌入式使用的情况下,可以对gpu 1208进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(finfet)上制造gpu 1208。然而,这并不意图是限制性的,并且gpu 1208可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个pf32核和32个pf64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个fp32核、8个fp64核、16个int32核、用于深层学习矩阵算术的两个混合精度nvidia张量核、l0指令高速缓存、线程束(warp)调
度器、分派单元和/或64kb寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的l1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
99.gpu 1208可以包括在一些示例中提供大约900gb/s的峰值内存带宽的高带宽内存(hbm)和/或16gb hbm2内存子系统。在一些示例中,除了hbm内存之外或者可替代地,可以使用同步图形随机存取存储器(sgram),例如第五代图形双倍数据速率同步随机存取存储器(gddr5)。
100.gpu 1208可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ats)支持可以用来允许gpu 1208直接访问cpu 1206页表。在这样的示例中,当gpu 1208内存管理单元(mmu)经历遗漏时,可以将地址转换请求传输至cpu 1206。作为响应,cpu 1206可以在其页表中寻找用于地址的虚拟

物理映射,并且将转换传输回gpu 1208。这样,统一内存技术可以允许单个统一虚拟地址空间用于cpu 1206和gpu 1208二者的内存,从而简化了gpu 1208编程和将应用程序移(port)到gpu 1208。
101.此外,gpu 1208可以包括访问计数器,其可以跟踪gpu 1208访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
102.soc 1204可以包括任意数量的高速缓存1212,包括本文描述的那些高速缓存。例如,高速缓存1212可以包括cpu 1206和gpu 1208二者可用的l3高速缓存(例如,其连接到cpu 1206和gpu 1208二者)。高速缓存1212可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如mei、mesi、msi等)跟踪行的状态。取决于实施例,l3高速缓存可以包括4mb或者更多,但是也可以使用更小的高速缓存大小。
103.soc 1204可以包括算术逻辑单元(alu),可以在针对车辆1200的各种任务或操作中的任何一个执行处理时利用该算术逻辑单元,例如处理dnn。此外,soc 1204可以包括浮点单元(fpu)或其他数学协处理器或数字协处理器类型,用于在系统内执行数学运算。例如,soc 104可以包括集成为cpu 1206和/或gpu 1208内的执行单元的一个或更多个fpu。
104.soc 1204可以包括一个或更多个加速器1214(例如硬件加速器、软件加速器或者其组合)。例如,soc 1204可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4mb sram)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充gpu 1208,并且卸载gpu 1208的一些任务(例如释放gpu 1208的更多周期以用于执行其他任务)。作为一个示例,加速器1214可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(cnn)等等)。当在本文中使用时,术语“cnn”可以包括所有类型的cnn,包括基于区域的或者区域卷积神经网络(rcnn)和快速rcnn(例如用于对象检测)。
105.加速器1214(例如硬件加速集群)可以包括深度学习加速器(dla)。dla可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(tpu)。tpu可以是被配置为执行图像处理功能(例如用于cnn、rcnn等)且针对执行图像处理功能而优化的加速器。dla可以进一步针对特定的一组神经网络类型和浮点运算以
及推理进行优化。dla的设计可以比通用gpu提供每毫米更高的性能,并且远远超过cpu的性能。tpu可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的int8、int16和fp16数据类型,以及后处理器功能。
106.dla可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是cnn,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的cnn;用于使用来自相机传感器的数据进行距离估计的cnn;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的cnn;用于使用来自相机传感器的数据进行面部识别和车主识别的cnn;和/或用于安全和/或安全相关事件的cnn。
107.dla可以执行gpu 1208的任何功能,并且通过使用推理加速器,例如,设计者可以使dla或gpu 1208针对任何功能。例如,设计者可以将cnn的处理和浮点运算聚焦在dla上,并且将其他功能留给gpu 1208和/或其他加速器1214。
108.加速器1214(例如硬件加速集群)可以包括可编程视觉加速器(pva),其在本文中可以可替代地称为计算机视觉加速器。pva可以被设计和配置为加速用于高级驾驶员辅助系统(adas)、自主驾驶和/或增强现实(ar)和/或虚拟现实(vr)应用的计算机视觉算法。pva可以提供性能与灵活性之间的平衡。例如,每个pva可以包括例如且不限于任意数量的精简指令集计算机(risc)核、直接内存访问(dma)和/或任意数量的向量处理器。
109.risc核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些risc核中的每一个可以包括任意数量的内存。取决于实施例,risc核可以使用若干协议中的任何协议。在一些示例中,risc核可以执行实时操作系统(rtos)。risc核可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储设备实现。例如,risc核可以包括指令高速缓存和/或紧密耦合的ram。
110.dma可以使得pva的部件能够独立于cpu 1206访问系统内存。dma可以支持用来向pva提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,dma可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
111.向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,pva可以包括pva核和两个向量处理子系统分区。pva核可以包括处理器子系统、一个或更多个dma引擎(例如两个dma引擎)和/或其他外围设备。向量处理子系统可以作为pva的主处理引擎而操作,并且可以包括向量处理单元(vpu)、指令高速缓存和/或向量内存(例如vmem)。vpu核可以包括数字信号处理器,诸如例如单指令多数据(simd)、超长指令字(vliw)数字信号处理器。simd和vliw的组合可以增强吞吐量和速率。
112.向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定pva中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个pva中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定pva中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的pva可以包括在硬件加速簇中,并且任意数量的向量处理器可以包
括在这些pva中的每一个中。此外,pva可以包括附加的纠错码(ecc)内存,以增强总体系统安全性。
113.加速器1214(例如硬件加速集群)可以包括片上计算机视觉网络和sram,以提供用于加速器1214的高带宽、低延迟sram。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4mb sram,其可以由pva和dla二者访问。每对内存块可以包括高级外围总线(apb)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。pva和dla可以经由向pva和dla提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用apb)将pva和dla互连到内存的片上计算机视觉网络。
114.片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定pva和dla二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合iso 26262或者iec 61508标准,但是也可以使用其他标准和协议。
115.在一些示例中,soc 1204可以包括例如在2018年8月10日提交的美国专利申请no.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于radar信号解释、用于声音传播合成和/或分析、用于sonar系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与lidar数据相比较和/或用于其他用途。在一些实施例中,一个或更多个遍历单元(ttu)可用于执行一个或更多个与光线追踪相关的操作。
116.加速器1214(例如硬件加速器集群)具有广泛的自主驾驶用途。pva可以是可编程视觉加速器,其可以用于adas和自主车辆中的关键处理阶段。pva的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,pva在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,pva被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
117.例如,根据该技术的一个实施例,pva用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3

5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。pva可以在来自两个单目相机的输入上执行计算机立体视觉功能。
118.在一些示例中,pva可以用来执行密集的光流。例如,pva可用于处理原始radar数据(例如使用4d快速傅立叶变换),以在发射下一radar脉冲之前提供经处理的radar信号。在其他示例中,pva用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
119.dla可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(aeb)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是aeb的触发因素。dla可以运行用于回归置信度值的神经网络。该神经网络可以将至
少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆1200取向、距离相关的惯性测量单元(imu)传感器1266输出,从神经网络和/或其他传感器(例如lidar传感器1264或radar传感器1260)获得的对象的3d位置估计等。
120.soc 1204可以包括一个或更多个数据存储1216(例如内存)。数据存储1216可以是soc 1204的片上内存,其可以存储要在gpu和/或dla上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1216可以容量足够大以存储神经网络的多个实例。数据存储1216可以包括l2或l3高速缓存1212。对数据存储1216的引用可以包括对与如本文所描述的pva、dla和/或其他加速器1214关联的内存的引用。
121.soc 1204可以包括一个或更多个处理器1210(例如嵌入式处理器)。处理器1210可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是soc 1204启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、soc 1204热和温度传感器管理和/或soc 1204功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且soc 1204可以使用环形振荡器检测cpu 1206、gpu 1208和/或加速器1214的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将soc 1204置于较低功率状态和/或将车辆1200置于司机安全停车模式(例如使车辆1200安全停车)。
122.处理器1210可以进一步包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频i/o接口。在一些示例中,音频处理引擎是具有带有专用ram的数字信号处理器的专用处理器核。
123.处理器1210可以进一步包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的ram、支持外围设备(例如定时器和中断控制器)、各种i/o控制器外围设备和路由逻辑。
124.处理器1210可以进一步包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的ram、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
125.处理器1210可以进一步包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
126.处理器1210可以进一步包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
127.处理器1210可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1270、环绕相机1274和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级soc的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱
乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
128.视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
129.视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且gpu 1208无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在gpu 1208上电并且主动执行3d渲染时,视频图像复合器可以用来减轻gpu 1208的负担以提高性能和响应能力。
130.soc 1204可以进一步包括用于从相机接收视频和输入的移动行业处理器接口(mipi)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。soc 1204可以进一步包括可以由软件控制并且可以用于接收未提交到特定角色的i/o信号的输入/输出控制器。
131.soc 1204可以进一步包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。soc 1204可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的lidar传感器1264、radar传感器1260等等)的数据,来自总线1202的数据(例如车辆1200的速度、方向盘位置等等),来自(通过以太网或can总线连接的)gnss传感器1258的数据。soc 1204可以进一步包括专用高性能大容量存储控制器,其可以包括它们自己的dma引擎,并且其可以用来从日常数据管理任务中释放cpu 1206。
132.soc 1204可以是具有灵活架构的端到端平台,该架构跨越自动化3

5级,从而提供利用和高效使用计算机视觉和adas技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。soc 1204可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与cpu 1206、gpu 1208和数据存储1216结合时,加速器1214可以提供用于3

5级自主车辆的快速高效平台。
133.因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在cpu上执行,这些cpu可以使用诸如c编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,cpu常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多cpu不能实时地执行复杂的对象检测算法,这是车载adas应用的要求和实用3

5级自主车辆的要求。
134.与常规系统形成对比的是,通过提供cpu复合体、gpu复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3

5级自主驾驶功能。例如,在dla或dgpu(例如gpu 1220)上执行的cnn可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。dla可以进一步包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在cpu复合体上的路径规划模块的神经网络。
135.作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或
者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在cpu复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在dla内和/或在gpu 1208上同时运行。
136.在一些示例中,用于面部识别和车主识别的cnn可以使用来自相机传感器的数据识别车辆1200的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,soc 1204提供了防范盗窃和/或劫车的安全性。
137.在另一个示例中,用于应急车辆检测和识别的cnn可以使用来自麦克风1296的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,soc 1204使用cnn以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在dla上的cnn被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。cnn也可以被训练为识别如gnss传感器1258所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,cnn将寻求检测欧洲警报,并且当在美国时,cnn将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器1262的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
138.车辆可以包括可以经由高速互连(例如pcie)耦合到soc 1204的cpu1218(例如分立的cpu或dcpu)。cpu 1218可以包括例如x86处理器。cpu 1218可以用来执行各种各样的功能中的任何功能,包括例如仲裁adas传感器与soc 1204之间潜在地不一致的结果,和/或监控控制器1236和/或信息娱乐soc 1230的状态和健康状况。
139.车辆1200可以包括可以经由高速互连(例如nvidia的nvlink)耦合到soc 1204的gpu 1220(例如分立的gpu或dgpu)。gpu 1220可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来基于来自车辆1200的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
140.车辆1200可以进一步包括网络接口1224,该网络接口可以包括一个或更多个无线天线1226(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1224可以用来使能通过因特网与云(例如与服务器1278和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1200提供关于接近车辆1200的车辆(例如车辆1200前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1200的协作自适应巡航控制功能的部分。
141.网络接口1224可以包括提供调制和解调功能并且使得控制器1236能够通过无线网络通信的soc。网络接口1224可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super

heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可
以包括用于通过lte、wcdma、umts、gsm、cdma2000、蓝牙、蓝牙le、wi

fi、z波、zigbee、lorawan和/或其他无线协议通信的无线功能。
142.车辆1200可以进一步包括可包括片外(例如soc 1204外)存储装置的数据存储1228。数据存储1228可以包括一个或更多个存储元件,包括ram、sram、dram、vram、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
143.车辆1200可以进一步包括gnss传感器1258(例如gps和/或辅助gps传感器),用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的gnss传感器1258,包括例如且不限于使用带有以太网到串行(rs

232)网桥的usb连接器的gps。
144.车辆1200可以进一步包括radar传感器1260。radar传感器1260可以甚至在黑暗和/或恶劣天气条件下也由车辆1200用于远程车辆检测。radar功能安全级别可以是asil b。radar传感器1260可以使用can和/或总线1202(例如以传输radar传感器1260生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的radar传感器类型。例如且非限制性地,radar传感器1260可以适合前面、后面和侧面radar使用。在一些示例中,使用脉冲多普勒radar传感器。
145.radar传感器1260可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程radar可以用于自适应巡航控制功能。远程radar系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。radar传感器1260可以帮助区分静态对象和运动对象,并且可以由adas系统用于紧急制动辅助和前方碰撞警告。远程radar传感器可以包括具有多根(例如六根或更多)固定radar天线以及高速can和flexray接口的单站多模radar。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1200的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1200的车道的车辆成为可能。
146.作为一个示例,中程radar系统可以包括高达1260m(前面)或80m(后面)的范围以及高达42度(前面)或1250度(后面)的视场。短程radar系统可以包括但不限于被设计为安装在后保险杠两端的radar传感器。当安装在后保险杠两端时,这样的radar传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。
147.短程radar系统可以在adas系统中用于盲点检测和/或变道辅助。
148.车辆1200可以进一步包括超声传感器1262。可以置于车辆1200的前面、后面和/或侧面的超声传感器1262可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1262,并且不同的超声传感器1262可以用于不同的检测范围(例如2.5m、4m)。超声传感器1262可以操作于功能安全级别的asil b。
149.车辆1200可以包括lidar传感器1264。lidar传感器1264可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。lidar传感器1264可以为功能安全级别的asil b。在一些示例中,车辆1200可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个lidar传感器1264(例如两个、四个、六个等等)。
150.在一些示例中,lidar传感器1264可能够对360度视场提供对象列表及其距离。商业上可用的lidar传感器1264可以具有例如近似1400m的广告范围,精度为2cm

3cm,支持100mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的lidar传感器1264。在
这样的示例中,lidar传感器1264可以实现为可以嵌入到车辆1200的前面、后面、侧面和/或拐角的小设备。在这样的示例中,lidar传感器1264可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的lidar传感器1264可以被配置用于45度与135度之间的水平视场。
151.在一些示例中,也可以使用诸如3d闪光lidar之类的lidar技术。3d闪光lidar使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光lidar单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光lidar可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光lidar传感器,车辆1200的每一侧一个。可用的3d闪光lidar系统包括没有风扇以外的运动部件(moving part)的固态3d凝视阵列lidar相机(例如非扫描lidar设备)。闪光lidar设备可以使用每帧5纳秒i类(眼睛安全)激光脉冲,并且可以以3d范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光lidar,并且因为闪光lidar是没有运动部件的固态设备,lidar传感器1264可以不太容易受到运动模糊、振动和/或震动的影响。
152.该车辆可以进一步包括imu传感器1266。在一些示例中,imu传感器1266可以位于车辆1200的后轴的中心。imu传感器1266可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,imu传感器1266可以包括加速度计和陀螺仪,而在九轴应用中,imu传感器1266可以包括加速度计、陀螺仪和磁力计。
153.在一些实施例中,imu传感器1266可以实现为微型高性能gps辅助惯性导航系统(gps/ins),其结合微机电系统(mems)惯性传感器、高灵敏度gps接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,imu传感器1266可以使得车辆1200能够在无需来自磁传感器的输入的情况下通过直接观察从gps到imu传感器1266的速度变化并且将其相关来估计方向(heading)。在一些示例中,imu传感器1266和gnss传感器1258可以结合到单个集成单元中。
154.该车辆可以包括置于车辆1200中和/或车辆1200周围的麦克风1296。除别的以外,麦克风1296可以用于应急车辆检测和识别。
155.该车辆可以进一步包括任意数量的相机类型,包括立体相机1268、广角相机1270、红外相机1272、环绕相机1274、远程和/或中程相机1298和/或其他相机类型。这些相机可以用来捕获车辆1200整个外围周围的图像数据。使用的相机类型取决于实施例和车辆1200的要求,并且相机类型的任意组合可以用来提供车辆1200周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(gmsl)和/或千兆以太网。所述相机中的每一个在本文关于图10和图11更详细地进行了描述。
156.车辆1200可以进一步包括振动传感器1242。振动传感器1242可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1242时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
157.车辆1200可以包括adas系统1238。在一些示例中,adas系统1238可以包括soc。
adas系统1238可以包括自主/自适应/自动巡航控制(acc)、协作自适应巡航控制(cacc)、前方撞车警告(fcw)、自动紧急制动(aeb)、车道偏离警告(ldw)、车道保持辅助(lka)、盲点警告(bsw)、后方穿越交通警告(rctw)、碰撞警告系统(cws)、车道居中(lc)和/或其他特征和功能。
158.acc系统可以使用radar传感器1260、lidar传感器1264和/或相机。acc系统可以包括纵向acc和/或横向acc。纵向acc监控并控制到紧接在车辆1200前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向acc执行距离保持,并且在必要时建议车辆1200改变车道。横向acc与诸如lc和cws之类的其他adas应用程序有关。
159.cacc使用来自其他车辆的信息,该信息可以经由网络接口1224和/或无线天线1226经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(v2v)通信链路提供,而间接链接可以是基础设施到车辆(i2v)的通信链路。通常,v2v通信概念提供关于紧接在前的车辆(例如紧接在车辆1200前方且与其处于相同车道的车辆)的信息,而i2v通信概念提供关于前方更远处的交通的信息。cacc系统可以包括i2v和v2v信息源中的任一个或者二者。给定车辆1200前方车辆的信息,cacc可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
160.fcw系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。fcw系统使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器1260,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。fcw系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
161.aeb系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。aeb系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器1260。当aeb系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么aeb系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。aeb系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
162.ldw系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1200穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活ldw系统。ldw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前侧朝向相机,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
163.lka系统是ldw系统的变型。如果车辆1200开始离开车道,那么lka系统提供纠正车辆1200的转向输入或制动。
164.bsw系统检测并向驾驶员警告汽车盲点中的车辆。bsw系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。bsw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的后侧朝向相机和/或radar传感器1260,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
165.rctw系统可以在车辆1200倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些rctw系统包括aeb以确保应用车辆制动器以避免撞车。rctw系统可
以使用耦合到专用处理器、dsp、fpga和/或asic的一个或更多个后置radar传感器1260,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
166.常规的adas系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为adas系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1200中,在冲突结果的情况下,车辆1200本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1236或第二控制器1236)的结果。例如,在一些实施例中,adas系统1238可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自adas系统1238的输出可以提供给监督mcu。如果来自主计算机和辅助计算机的输出冲突,那么监督mcu必须确定如何协调该冲突以确保安全操作。
167.在一些示例中,主计算机可以被配置为向监督mcu提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督mcu可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督mcu可以在这些计算机之间进行仲裁以确定适当的结果。
168.监督mcu可以被配置为运行神经网络,所述神经网络被训练并且被配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督mcu中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于radar的fcw系统时,监督mcu中的神经网络可以了解fcw系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的ldw系统时,监督mcu中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该ldw。在包括运行在监督mcu上的神经网络的实施例中,监督mcu可以包括适合于利用关联的内存运行神经网络的dla或gpu中的至少一个。在优选的实施例中,监督mcu可以包括soc 1204的部件和/或作为soc 1204的部件而被包括。
169.在其他示例中,adas系统1238可以包括使用传统计算机视觉规则执行adas功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果

那么),并且在监督mcu中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non

identity)使得整个系统更加容错,对于软件(或者软件

硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督mcu可以更加确信总体结果是正确的,并且由主计算机使用的软件或硬件中的漏洞不造成实质性的错误。
170.在一些示例中,adas系统1238的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果adas系统1238由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
171.车辆1200可以进一步包括信息娱乐soc 1230(例如车载信息娱乐系统(ivi))。尽
管被图示和描述为soc,但是信息娱乐系统可以不是soc,并且可以包括两个或更多分立的部件。信息娱乐soc 1230可以包括可以用来向车辆1200提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如tv、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如lte、wifi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐soc 1230可以包括收音机、盘播放器、导航系统、视频播放器、usb和蓝牙连接、车载电脑、车载娱乐、wifi、方向盘音频控件、免提语音控件、平视显示器(hud)、hmi显示器1234、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐soc 1230可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自adas系统1238的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
172.信息娱乐soc 1230可以包括gpu功能。信息娱乐soc 1230可以通过总线1202(例如can总线、以太网等)与车辆1200的其他设备、系统和/或部件通信。在一些示例中,信息娱乐soc 1230可以耦合至监督mcu,使得在主控制器1236(例如车辆1200的主和/或备用计算机)出现故障的情况下,信息娱乐系统的gpu可以执行一些自驾驶功能。在这样的示例中,信息娱乐soc 1230可以如本文所描述的将车辆1200置于司机安全停车模式。
173.车辆1200可以进一步包括仪表板1232(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表板1232可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表板1232可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(srs)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐soc 1230和仪表板1232之间共享。换言之,仪表板1232可以作为信息娱乐soc 1230的部分而被包括,或者反之亦然。
174.图13为根据本公开一些实施例的基于云的服务器与图10的示例自主车辆1000之间的通信的系统示意图。系统1376可以包括服务器1378、网络1390以及包括车辆1300在内的车辆。服务器1378可以包括多个gpu1384(a)

1384(h)(这里统称为gpu 1384)、pcie交换机1382(a)

1382(h)(这里统称为pcie交换机1382)和/或cpu 1380(a)

1380(b)(这里统称为cpu 1380)。gpu 1384、cpu 1380和pcie交换机可以与诸如例如且不限于nvidia开发的nvlink接口1388之类的高速互连和/或pcie连接1386互连。在一些示例中,gpu 1384经由nvlink和/或nvswitch soc连接,并且gpu 1384和pcie交换机1382经由pcie互连连接。尽管图示出八个gpu 1384、两个cpu 1380和两个pcie交换机,但是这并不意图是限制性的。取决于实施例,服务器1378中的每一个可以包括任意数量的gpu 1384、cpu 1380和/或pcie交换机。例如,服务器1378中的每一个可以包括八个、十六个、三十二个和/或更多gpu 1384。
175.服务器1378可以通过网络1390并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1378可以通过网络1390并且向车辆传输神经网络1392、更新的神经网络1392和/或地图信息1394,包括关于交通和道路状况的信息。对地图信息1394的更新可以包括对于hd地图1322的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1392、更新的神
经网络1392和/或地图信息1394可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器1378和/或其他服务器)的经验产生。
176.服务器1378可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如,在神经网络不需要监督学习的情况下)。可以根据一类或更多类机器学习技术来执行训练,包括但不限于以下类:有监督训练、半监督训练、无监督训练、自学习、强化学习、联合学习、迁移学习、特征学习(包括主成分和聚类分析)、多线性子空间学习、流形学习、表示学习(包括稀疏字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1390传输至车辆),和/或机器学习模型可以由服务器1378用来远程地监控车辆。
177.在一些示例中,服务器1378可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1378可以包括由gpu 1384供电的深度学习超级计算机和/或专用ai计算机,例如nvidia开发的dgx和dgx站机器。然而,在一些示例中,服务器1378可以包括仅使用cpu供电的数据中心的深度学习基础设施。
178.服务器1378的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1300中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1300的定期更新,例如图像序列和/或车辆1300已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1300识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1300中的ai发生故障的结论,那么服务器1378可以向车辆1300传输信号,指示车辆1300的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
179.为了推理,服务器1378可以包括gpu 1384和一个或更多个可编程推理加速器(例如nvidia的tensorrt)。gpu供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,cpu、fpga和其他处理器供电的服务器可以用于推理。
180.示例计算设备
181.图14是适合用于实现本公开的一些实施例的示例计算设备1400的框图。计算设备1400可以包括直接或间接耦合以下设备的互连系统1402:存储器1404、一个或更多个中央处理单元(cpu)1406、一个或更多个图形处理单元(gpu)1408、通信接口1410、i/o端口1412、输入/输出组件1414、电源1416、一个或更多个呈现组件1418(例如,一个或更多个显示器)以及一个或更多个逻辑单元1420。
182.尽管将图14的各个框被示出为经由具有线的互连系统1402连接,但这不旨在是限制并且仅出于清楚的目的。例如,在一些实施例中,诸如显示设备之类的呈现组件1418可以被认为是i/o组件1414(例如,如果显示器是触摸屏)。作为另一示例,cpu 1406和/或gpu 1408可以包括存储器(例如,存储器1404可以代表除了gpu 1408、cpu 1406和/或其他组件
的存储器之外的存储设备)。换句话说,图14的计算设备仅是说明性的。在“工作站”、“服务器”、“笔记本电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持设备”、“游戏机”、“电子控制单元(ecu)”、“虚拟现实系统”、“增强现实系统”和/或其他设备或系统类型等类别之间未进行区分,均在图14的计算设备的范围内考虑。
183.互连系统1402可以代表一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。互连系统1402可以包括一种或更多种总线或链路类型,例如行业标准体系架构(isa)总线、扩展行业标准体系架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连快速(pcie)总线和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,cpu 1406可以直接连接至存储器1404。此外,cpu 1406可以直接连接至gpu 1408。在组件之间存在直接或点对点连接的情况下,互连系统1402可包含pcie链接以执行连接。在这些示例中,pci总线不需要被包括在计算设备1400中。
184.存储器1404可以包括各种各样的计算机可读介质中的任何一种。计算机可读介质可以是可由计算设备1400访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
185.计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器1404可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或者其他存储技术、cd

rom、数字多功能盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备1400访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
186.计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
187.cpu 1406可以被配置为执行计算机可读指令中的至少一些以便控制计算设备1400的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu 1406中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。cpu 1406可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备1400的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备1400的类型,处理器可以是使用精简指令集计算(risc)实现的arm处理器或者使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备1400还可以包括一个或更多个cpu 1406。
188.除了一个或更多个cpu 1406之外或可替代地,一个或更多个gpu1408可以配置为
执行至少一些计算机可读指令,以控制计算设备1400的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。一个或更多个gpu 1408可以是集成gpu(例如,具有一个或更多个cpu 1406)和/或一个或更多个gpu 1408可以是分立的gpu。在实施例中,一个或更多个gpu 1408可以是一个或更多个cpu 1406的协处理器。计算设备1400可以使用一个或更多个gpu 1408来渲染图形(例如3d图形)或执行通用计算。例如,gpu 1408可以用于gpu上的通用计算(gpgpu)。一个或更多个gpu 1408可包括能够同时处理数百或数千个软件线程的数百或数千个核心。gpu 1408可以响应于渲染命令(例如,经由主机接口从cpu1406接收的渲染命令)生成用于输出图像的像素数据。一个或更多个gpu1408可以包括图形存储器(例如显示存储器),用于存储像素数据或任何其他合适的数据,例如gpgpu数据。可以包括显示存储器,作为存储器1404的一部分。gpu 1408可以包括并行(例如,经由链接)操作的两个或更多个gpu。链接可以直接连接gpu(例如,使用nvlink),也可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每个gpu 1408可针对输出的不同部分或针对不同的输出生成像素数据或gpgpu数据(例如,用于第一图像的第一gpu和用于第二图像的第二gpu)。每个gpu可以包括其自己的存储器,或者可以与其他gpu共享存储器。
189.除了cpu 1406和/或gpu 1408之外或作为其替代,逻辑单元1420可以配置成执行计算机可读指令中的至少一些,以控制计算设备1400的一个或更多个组件来执行本文描述的方法和/或过程中的一个或更多个。在实施例中,一个或更多个cpu 1406、一个或多个更gpu 1408和/或一个或更多个逻辑单元1420可以离散地或联合地执行方法、过程和/或其部分的任何组合。一个或更多个逻辑单元1420可以是一个或更多个cpu 1406和/或一个或更多个gpu 1408的一部分和/或集成在其中和/或一个或更多个逻辑单元1420可以是分立的组件,或以其他方式位于cpu 1406和/或gpu 1408的外部。在一些实施例中,一个或更多个逻辑单元1420可以是一个或更多个cpu 1406和/或一个或更多个gpu 1408的协处理器。
190.逻辑单元1420的示例包括一个或更多个处理核心和/或其组件,例如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理集群(gpc)、纹理处理集群(tpc)、流多处理器(sm)、树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、专用集成电路(asic)、浮点单元(fpu)、i/o元素、外围组件互连(pci)或外围组件互连快速(pcie)元件等。
191.通信接口1410可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备1400能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口1410可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如wi

fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网或infiniband通信)、低功率广域网(例如lorawan、sigfox等等)和/或因特网。
192.i/o端口1412可以使得计算设备1400能够逻辑地耦合到包括i/o组件1414、呈现组件1418和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备1400中。说明性i/o组件1414包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。i/o组件1414可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(nui)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备1400的显示器关联的触摸
识别(如下文更详细地描述的)的任意组合。计算设备1400可以包括诸如立体照相机系统之类的深度照相机、红外照相机系统、rgb照相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备1400可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备1400用来渲染沉浸式增强现实或者虚拟现实。
193.电源1416可以包括硬接线电源、电池电源或者其组合。电源1416可以向计算设备1400供电以使得计算设备1400的组件能够操作。
194.呈现组件1418可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件1418可以接收来自其他组件(例如gpu 1408、cpu 1406等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
195.本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
196.如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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中的至少一个。
197.这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
再多了解一些

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

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

相关文献