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

用于自主机器应用的路口区域检测和分类的制作方法

2022-02-22 07:41:34 来源:中国专利 TAG:

用于自主机器应用的路口区域检测和分类


背景技术:

1.自主驾驶系统和高级驾驶员辅助系统(adas)可使用各种传感器,例如摄像头、lidar传感器、radar传感器等,来执行各种任务——例如车道保持、变道、车道分配、相机校准、转弯、路径规划和定位。例如,为了使自主和adas系统独立且高效地运行,可以生成对车辆的周围环境的实时或接近实时的理解。这种理解可以包括关于环境中的对象、障碍物、车道和/或路口(intersection)相对于各种分界线(例如车道、道路边界、路口等)的位置和类型的信息。周围环境的信息可以由车辆在做出决定时使用,例如要遵循哪条路径或轨迹,如何应用道路规则,以及何时、何地停车和/或停车多长时间。
2.例如,在自主或半自主车辆的环境中有关路口的位置、属性和布局的信息——例如其他车辆或行人可能位于的位置,其他车辆是否具有穿越路口的优先权等,在进行路径规划、避障和/或控制决策时证明很有价值。当车辆在城市和/或半城市驾驶环境中运行时这尤其重要,在城市和/或半城市驾驶环境中,由于变量数量相比于高速公路驾驶环境增加,因此路口理解和路径规划变得至关重要。例如,在双向多车道驾驶环境中,当车辆必须减速至完全停止并等待具有优先权的其他车辆穿过路口时,确定路口区域的位置和类别(例如,人行横道、车辆进入、车辆离开、无车道等)对于安全和有效的自主和/或半自主驾驶至关重要。
3.在常规系统中,可以通过分别检测和组合路口和周围环境的几个特征来解释路口。例如,为了检测路口,可以单独检测路口区域、多个对象(例如,交通灯、停车标志)、车辆位置、车辆方向、车道、自由空间边界等——例如,使用多个单独的深度神经网络(dnn)——并拼凑在一起以生成对单个路口的综合理解。然而,这样的解决方案需要准确和详细的网络来识别路口检测的相关特征,并组合每个路口的各种特征,以在遵循不同的交通优先规则的同时安全地穿越路口。因此,路口越复杂,训练dnn所需的注释就越详细——从而增加了准确检测和分类路口区域的复杂性,同时降低了路口检测的可扩展性。具体而言,这些常规系统可能无法提供对穿过路口的车辆和/或行人的清晰且完整的理解,这些车辆和/或行人可能是具有穿过路口的优先权的竞争者。此外,许多常规系统也无法鲁棒地检测在传感器数据中遇到遮挡的路口区域——例如,由于建筑物、或其他车辆或对象阻挡了车辆传感器的传感场的某些部分。
4.其他常规系统可以通过将分别检测到的特征与预先存储的车辆驾驶表面的高清(hd)、三维(3d)地图中的特征进行比较来分析路口。然而,这种基于地图的解决方案高度依赖于地图的准确性和可用性。因此,当某个区域的地图过时或不可用时,这些常规系统就会失效。例如,当需要手动标记较大的地理区域(例如,城市、州、国家)以使车辆在具有不同路口类型的位置中独立且有效地导航时,该过程在逻辑上可能更加复杂。当存在可能未反映在地图中的瞬态路口状况(例如,警察指挥交通或校车停下)时,这些常规系统也会失效。


技术实现要素:

5.本公开的实施例涉及用于自主机器应用的路口竞争区域检测。公开了使用深度神
经网络(dnn)来处理来自车辆的一个或更多个传感器的传感器数据以检测路口区域以及与其对应的分类,从而整体地生成对路口的实时或接近实时的理解的系统和方法。
6.与常规系统(例如上述系统)相比,当前系统可以使用车辆的实况感知来检测和分类车辆环境中的路口竞争区域。例如,可以训练机器学习模型(例如dnn)来计算与路口相对应的输出,例如对应于路口区或区域及其类别的带符号距离函数,并且后处理器可以使用此信息来有效且准确地确定路口区域位置和分类。可以使用各种技术(例如平滑、聚类、阈值化、上采样等)对输出进行后处理,以确定检测到的路口区域的3d世界空间位置。车辆可以使用路口区域的这些世界空间位置和/或分类来安全且准确地导航路口。例如,可以直接或间接地(例如,通过解码)使用dnn的输出来确定每个路口区域的位置和与其对应的分类。
7.由于实时或接近实时地使用整体方法来生成对路口的每个路口区域的理解,因此检测和分类路口竞争区域的过程可能相对耗时较少、计算较不密集,并且更具可扩展性,因为系统可以学习诊断每个路口,而无需路口的先前经验或知识,并且无需单独检测然后组合路口的几个特征。因此,车辆可能能够更自由地在城市、市区环境和/或其他地点自主行驶,而无需依赖高清地图——或者除了依赖高清地图之外。
附图说明
8.下面参考所附附图详细描述用于自主机器应用的路口竞争区域检测的本系统和方法,其中:
9.图1是示出根据本公开的一些实施例的用于训练神经网络以使用来自车辆的传感器的输出来检测路口区域以用于导航路口的示例过程的示例数据流图;
10.图2a-2b是根据本公开的一些实施例的用于生成用于训练神经网络以检测路口区域的地面实况数据的图像的示例注释的图示;
11.图3是根据本公开的一些实施例的用于对来自注释的路口区域进行编码的示例地面实况带符号距离函数的图示;
12.图4是示出根据本公开的一些实施例的用于训练神经网络以检测路口区域的示例方法的流程图;
13.图5是示出根据本公开的一些实施例的用于使用来自车辆的传感器的输出实时或接近实时地检测路口区域的示例过程的数据流图;
14.图6是根据本公开的一些实施例的使用后处理器转换成相应实例分割掩模的示例带符号距离函数的可视化;
15.图7a-7b是根据本公开的一些实施例的基于由神经网络计算的带符号距离函数在3d空间中预测的示例路口区域的可视化;
16.图8是示出根据本公开的一些实施例的用于检测路口区域的示例方法的流程图;
17.图9a是根据本公开的一些实施例的示例自主车辆的图示;
18.图9b是根据本公开的一些实施例的图9a的示例自主车辆的摄像机位置和视野的示例;
19.图9c是根据本公开的一些实施例的图9a的示例自主车辆的示例系统架构的框图;
20.图9d是根据本公开的一些实施例的基于云的服务器和图9a的示例自主车辆之间的通信的系统图;以及
21.图10是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
22.公开了与用于自主机器应用的路口竞争区域检测相关的系统和方法。尽管可以关于示例自主车辆900描述本公开(在本文中可替代地称为“车辆900”或“自我车辆900”,其示例参照图9a-9d进行描述),但这并不旨在进行限制。例如,本文描述的系统和方法可以由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助系统(adas)中)、机器人、仓库车辆、越野车辆、飞船、船只、穿梭车、应急响应车辆、摩托车、电动或机动自行车、飞机、工程车辆、水下航行器、无人机和/或其他车辆类型。此外,虽然本公开可以用用于车辆应用的路口结构来描述,但这并不旨在是限制,并且本文描述的系统和方法可以用于增强现实、虚拟现实、机器人、安全和监视、自主或半自主机器应用和/或任何其他技术空间,其中可以使用路口或其他环境结构和/或姿势的检测。
23.如本文所述,与使用高清(hd)地图的路口竞争区域检测的常规方法相比,当前的系统和方法提供了使用来自车辆传感器(例如,摄像头、radar传感器、lidar传感器等)的输出来实时或接近实时地检测和分类路口区域的技术。因此,对于每个路口,车辆的实况感知可用于检测对应于该路口的路口区域的位置和/或属性或分类。计算机视觉和/或机器学习模型(例如,深度神经网络(dnn),例如卷积神经网络(cnn))可以被训练来计算输出——在实施例中,在解码之后——这些输出导致检测到的路口区域和/或其分类或属性,并且车辆可以结合对象和/或车道检测使用这些输出在符合相关联的交通优先规则的同时有效且准确地导航路口。在一些实施例中,计算机视觉和/或机器学习模型的输出可以包括带符号距离函数,其表示图像中检测到各种分类的路口区域的特定区域的基于像素的位置。此外,在一些实施例中,可以对带符号距离函数执行后处理以生成对应于每个检测到的路口区域和/或类型的实例分割掩模。
24.因此,通过使用实况感知来生成对路口区域的理解,检测和分类路口区域的过程可能相对来说耗时较少,计算密集度较低,并且更具可扩展性,因为系统可以学习实时或接近实时地诊断每个路口区域。此外,与常规系统进一步相比,不需要路口的先验知识或经验——例如,系统可以准确地执行,而无需可用的和最新的高清地图。
25.在部署中,可以使用位于或以其他方式布置在自主或半自主车辆上的传感器(例如,摄像头、radar传感器、lidar传感器等)接收和/或生成传感器数据(例如,图像、视频、点云、深度图、其他传感器数据表示等)。传感器数据可以应用于dnn,该dnn被训练为识别与由传感器数据表示的路口(例如,路口内部、路口入口、路口出口、无车道、人行横道、不清楚区域等)有关的感兴趣区域以及与其有关的语义信息。更具体地说,可以训练dnn来计算与检测到的每个路口区域实例相对应的带符号距离函数。对于传感器数据中的每个像素或点,带符号距离函数可以对应于到与路口区域相对应的最近边界的(像素)距离,相对于路口区域的位置(例如,路口区域外的像素为负,路口区域内的像素为正,反之亦然),与路口区域相对应的语义信息(例如,人行横道、路口入口、路口出口、不清楚区域、无车道、路口内部、部分可见、完全可见等、或其组合),和/或其他信息。在一些示例中,计算出的带符号距离函数中的路口区域可以由传感器数据表示的像素或点表示,其中路口区域边界上的像素由零值表示,边界内的像素用与到区域最近边界的距离相对应的正距离值表示,边界外的像素
用与到区域最近边界的距离相对应的负值表示。每一类路口区域的一个或更多个实例可以用单独的带符号距离函数表示(例如,每一类一个带符号距离函数,每一类的每个实例一个单独的带符号距离函数,等等)。因此,可以基于带符号距离函数和相关信息来确定路口区域的位置和类别——例如,使用后处理器。作为非限制性示例,路口区域类别可以包括人行横道、路口入口、路口出口、不清楚区域、无车道、路口内部、部分可见、完全可见和/或与路口相对应的其他信息。
26.可以训练dnn来预测与路口区域分类相对应的各种类型的信息——例如,通过任意数量的通道。例如,一个或更多个通道可以表示一类路口区域和/或其每个实例的带符号距离函数。在训练期间,dnn可以用图像或其他传感器数据表示进行训练,这些图像或其他传感器数据表示用表示人行横道区域、路口入口区域、路口出口区域、不清楚区域、无车道区域、路口内部区域、部分可见区域、完全可见区域等的多边形进行标记或注释。除了边界标签或注释之外,地面实况注释还可包括与每个边界相对应的语义信息——例如分类。经标记的多边形和语义信息可由地面实况编码器使用以生成带符号距离函数,每个带符号距离函数对应于与从注释确定的路口区域相对应的路口区域类型。在一些示例中,带符号距离函数中的每个像素可以用与到路口区域的最近边界(例如,沿着训练数据的带注释的边界形状)的像素距离相对应的距离值进行编码。在这样的例子中,路口区域内的像素也可以用正距离值进行编码,路口区域外的像素可以用负距离值进行编码,反之亦然。形成路口区域的边界的像素可以用零值编码以生成地面实况数据。
27.在一些示例中,除了使用带符号距离函数之外或作为替代,地面实况编码器可以使用经标记的多边形和语义信息来为每个路口区域类型生成独热编码图,其中路口区域边界内的像素用值1编码,路口区域边界外的像素用值0编码。然而,当使用独热编码时,相同类型的相邻区域(例如,具有共享边界)可能无法单独识别,因此与使用带符号距离函数的实施例相比,可能会降低准确性。最终,路口区域可以使用带符号距离函数和/或需要有限标记的独热编码图进行编码,因为可以使用多边形注释和语义信息来确定信息。
28.一旦dnn被训练,dnn可能会以带符号距离函数、独热编码图和/或与训练网络预测的编码地面实况通道相对应的其他输出的形式回归输出,如本文所述。在输出对应于带符号距离函数的情况下,对应于不同分类类型和/或其实例的像素距离可以被后处理成表示路口区域的二维(2d)位置的2d坐标(例如,区域内的每个像素,只是边界像素或其顶点等)。在一些实施例中,带符号距离函数可以逐个像素地进行高斯平滑以平滑掉像素值中的尖峰和波动。然后可以基于与对应的带符号距离函数中的每个像素相关联的负像素值和正像素值,将平滑的带符号距离函数的每一个映射到表示路口区域的多边形区域。在一些实施例中,分水岭聚类算法可用于为每个带符号距离函数生成对应于每个检测到的路口区或区域的实例分割图。在这样的实施例中,对于每个路口区域,距离值太高和太低的像素可以使用预定的阈值距离值过滤掉——从而减少所需的计算资源。剩余像素可用于确定相关路口区域的边界,和/或确定与具有相关分类类型的路口的给定区域相关联的每个像素。表示路口区域的多边形边界内的每个像素然后可以用描绘相应路口区域的分割的像素值进行编码。后处理的输出可以是与路口的不同分类类型区域的位置相对应的每个分类类型的实例分割掩模或其实例。
29.在一些实施例中,2d图像空间位置可用于确定路口区域的三维(3d)世界空间坐
标,以帮助车辆在世界空间环境中导航。例如,传感器内在和/或外在参数可用于将2d图像空间位置映射到已知的3d世界空间位置。然而,在一些实施例中,dnn可以在3d数据上训练以预测3d世界空间中的位置。
30.现在参考图1,图1是图示根据本公开的一些实施例的用于训练神经网络以检测路口区或区域以帮助车辆在路口导航的示例过程100的示例数据流图。应当理解,本文描述的这种和其他布置仅作为示例提出。在高级别上,过程100可以包括一个或更多个机器学习模型104,其接收一个或更多个输入,例如传感器数据102,并生成一个或更多个输出,例如一个或更多个带符号距离函数108。在一些示例中,当用于训练时,传感器数据102可以被称为训练数据。尽管传感器数据102主要是关于表示图像的图像数据来讨论的,但这并非旨在进行限制,并且传感器数据102可以包括用于路口区域检测的其他类型的传感器数据,例如lidar数据、sonar数据、radar数据和/或类似数据——例如,由车辆900(图9a-9d)的一个或更多个传感器生成的。
31.过程100可以包括从一个或更多个传感器生成和/或接收传感器数据102。作为非限制性示例,传感器数据102可以从车辆(例如,图9a-9c的和本文所述的车辆900)的一个或更多个传感器接收。传感器数据102可以由车辆使用,并且在过程100内,用于检测路口区域以实时或接近实时地导航路口。传感器数据102可以包括但不限于来自车辆的任何传感器的传感器数据102,包括例如并参考图9a-9c、全球导航卫星系统(gnss)传感器958(例如,全球定位系统传感器),radar传感器960、超声波传感器962、lidar传感器964、惯性测量单元(imu)传感器966(例如,加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风976、立体相机968、广角相机970(例如鱼眼相机)、红外相机972、环绕相机974(例如,360度摄像机)、远程和/或中程摄像机978、速度传感器944(例如,用于测量车辆900的速度)和/或其他传感器类型。作为另一个示例,传感器数据102可以包括从虚拟(例如,测试)环境中的虚拟车辆或其他虚拟对象的任意数量的传感器生成的虚拟(例如,模拟的或增强的)传感器数据。在这样的示例中,虚拟传感器可以对应于模拟环境中的虚拟车辆或其他虚拟对象(例如,用于测试、训练和/或验证神经网络性能),并且虚拟传感器数据可以表示由模拟或虚拟环境中的虚拟传感器捕获的传感器数据。因此,通过使用虚拟传感器数据,可以在模拟环境中使用模拟的或增强的数据来测试、训练和/或验证本文描述的机器学习模型104,这可能允许在真实环境之外测试更极端的场景,在这些场景中,此类测试可能不太安全。
32.在一些实施例中,传感器数据102可以包括表示图像的图像数据、表示视频的图像数据(例如,视频的快照)和/或表示传感器的传感场的表示的传感器数据(例如,lidar传感器的深度图、超声波传感器的值图等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图像数据格式,例如但不限于,诸如联合图像专家组(jpeg)或亮度/色度(yuv)格式的压缩图像,作为源自压缩视频格式(例如h.264/高级视频编码(avc)或h.265/高效视频编码(hevc))的帧的压缩图像,原始图像,例如源自红透明蓝(rccb)、红透明(rccc)或其他类型的成像传感器和/或其他格式。此外,在一些示例中,传感器数据102可以在没有任何预处理(例如,以原始或捕获格式)的情况下在过程100内使用,而在其他示例中,传感器数据102可以经历预处理(例如噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,例如使用传感器数据预处理器(未示出))。如本文所使用的,传感器数据102可以参考未处理的传感器数据、预处理的传感器数据或其组合。
33.用于训练的传感器数据102可以包括原始图像(例如,由一个或更多个图像传感器捕获的)、下采样图像、上采样图像、裁剪或感兴趣区域(roi)图像,以其他方式增强的图像,和/或它们的组合。机器学习模型104可以使用图像(和/或其他传感器数据102)以及相应的地面实况数据来训练。地面实况数据可以包括注释、标签、掩模(mask)、地图等。例如,在一些实施例中,地面实况数据可以包括地面实况(gt)带符号距离函数116。编码器112可以使用注释110来编码gt带符号距离函数116。在一些实施例中,注释110可以包括路口区域110a和路口区域110a的分类110b。
34.参考注释110,在一些示例中,注释110可以在绘图程序(例如,注释程序)、计算机辅助设计(cad)程序、标记程序、适合于生成注释110和/或其他gt带符号距离函数116的另一种类型的程序中生成,和/或可以是手绘的。在任何示例中,注释110和/或gt带符号距离函数116可以合成产生(例如,从计算机模型或渲染生成)、实际产生(例如,根据真实世界数据设计和产生)、机器自动化(例如,使用特征分析并学习从数据中提取特征,然后生成标签)、人工注释(例如,标记器或注释专家,定义标签的位置)和/或它们的组合(例如,人类识别中心或原点以及区域的尺寸,机器为路口区域生成多边形和/或标签)。
35.路口区域110a可以包括与描绘路口的感兴趣区域的边界形状(例如多边形)相对应的注释或其他标签类型。在一些示例中,路口区域可以由对应于人行横道区域、路口入口区域、路口出口区域、不清楚区域、无车道区域、路口内部区域、部分可见区域、完全可见区域等的一个或更多个多边形描绘——例如,在传感器数据102的传感器数据表示内。多边形可以被生成为边界框。可以为图像(或其他数据表示)中的每一个和/或由用于训练机器学习模型104的传感器数据102表示的图像中的多边形中的每一个或更多个多边形生成分类110b。分类110b的数量可以对应于机器学习模型104被训练为预测的特征的数量和/或类型,或者对应于相应图像中的路口区域的数量和/或特征的类型。
36.根据实施例,分类110b可以对应于与特征类型或路口区域类别相对应的分类或标签,例如但不限于人行横道区域、路口入口区域、路口出口区域、不清楚区域、无车道区域、路口内部区域、部分可见区域、完全可见区域等。在一些示例中,分类110b最初可以对应于路口内部区域和/或路口外部区域。路口内部区域分类可以指路口区域110a,该路口区域包括路口内部的区域,在该路口内部的区域中,在各个方向上穿过路口的车辆的路径可以交叉。路口外部区域分类可以指包括路口内部区域之外的区域的路口区域110a。
37.被分类为路口外部区域的路口区域110a的每一个还可以被标记有对应于与路口出口区域的特征类型对应的属性的分类110b,包括人行横道区域、路口入口区域、路口出口区域、不清楚区域、无车道区域等。具体地,路口入口属性可以对应于一个或更多个车辆将要从各个不同方向进入相应路口的路口区域110a。路口出口区域可以对应于最近在各个方向上离开路口的一个或更多个车辆可以位于的一个或更多个路口区域110a。应当理解,关于路口出口区域的信息可能特别重要,因为车辆900本身必须安全地穿过路口出口区域以便安全地穿过路口。类似地,人行横道区域可以指对应于位于路口内部区域之外的人行横道的路口区域110a。被分类为“无车道区域”的区域可以对应于不允许车辆穿越的路口区域110a,例如自行车道、人行道等。“不清楚区域”属性可以对应于车辆行驶方向不明确的路口区域。此外,路口内部区域和路口外部区域类别的分类110a还可包括完全可见区域和/或部分可见区域属性之一。在示例中,在分类110b包括完全可见区域属性或类别标签的情况下,
相应的路口区域110a可以包括例如没有任何障碍物的完全可见表面。相反,在分类110b包括部分可见区域属性或类别标签的情况下,相应的路口区域110a可以包括障碍物,例如遮挡,使得该区域中的驾驶表面在相应的传感器数据102中仅部分可见。本文描述的标记本体仅用于示例目的,并且在不脱离本公开的范围的情况下可以使用附加的和/或替代的类别标签。
38.作为非限制性示例,并且关于图2a-2b,图2a-2b图示了根据本公开的一些实施例的应用于传感器数据的示例注释,用于在地面实况生成中使用以训练机器学习模型检测路口区域。例如,图2a图示了可用于根据图1的训练过程100生成地面实况数据的图像200a的示例标记(例如,对应于注释110)。图像中的路口区或区域可以由路口区域110a(例如,区域204a、204b、206、208、210a和210b)和相应的分类(例如,“路口内部”、“部分可见”、“车辆出口”、“车辆入口”、“部分可见”、“人行横道”等)。例如,路口区域204a可以使用多边形来标记并且被分类为具有一个或更多个属性,例如“路口入口”和“部分可见”。类似地,路口区域204b、206、208、210a和210b可以使用多边形来标记,其中路口204b可以被分类为具有一个或更多个属性,例如“车辆入口”和“部分可见”,路口区域206可以被分类为具有一个或更多个属性,例如“人行横道”和“部分可见”,路口区域208可以被分类为具有一个或更多个属性,例如“路口内部”和“部分可见”,路口区域210a可以被分类为具有一个或更多个属性,例如“车辆出口”和“部分可见”,并且路口区域210b可以被分类为具有一个或更多个属性,例如“车辆出口”和“完全可见”。在一些示例中,还可以用匹配颜色的多边形(或语义信息的一些其他视觉指示)来注释属于共同类别或分类的每个路口区域。例如,路口区域204a和204b的多边形可以具有相同的颜色和/或样式,因为它们都被归类为车辆入口分类。类似地,路口区域210a和210b的多边形可以使用相同的颜色和/或样式来注释,因为它们都被归类为车辆出口分类。系统100可以知道这些标记或注释样式对应于特定类别,并且该信息可以用于生成用于训练机器学习模型104的经编码的地面实况数据。
39.现在参考图2b,图2b图示了根据本发明的一些实施例的应用于传感器数据以训练机器学习模型以检测路口区域的注释的另一个示例。如本文所描绘的,路口区域222a-222c、224a-224c、226a-226b、228a-228b和230可以用多边形和相应的分类(例如,“路口内部”、“部分可见”、“车辆出口”、“车辆入口”、“部分可见”、“人行横道”等)进行注释。例如,路口区域222a、222b和222c可以使用相似的颜色和/或样式多边形进行标记,并分类为“车辆入口”和“部分可见”中的一个或更多个。类似地,路口区域224a、224b和224c可以使用相似的颜色和/或样式多边形来标记并且分类为“人行横道”、“完全可见”和“部分可见”中的一个或更多个。路口区域226a和226b可以使用相似的颜色和/或样式多边形来标记并且分类为“无车道”、“完全可见”和部分可见中的一个或更多个。路口区域228a和228b可以使用相似的颜色和/或样式多边形进行标记,并分类为“车辆出口”、“完全可见”和“部分可见”中的一个或更多个。路口区域230可以使用多边形标记并且分类为“路口内部”和“部分可见”中的一个或更多个。
40.对于相同的分类,注释可以具有相似的视觉表示。如图所示,路口区域222a、222b和222c可被分类为车辆出口区域。以此方式,可以以类似的方式对图像的类似分类的特征进行注释。此外,应当注意,分类110b可以是复合名词。不同的分类标签可以在图2b中用实线、虚线等表示,以表示不同的分类。此外,不同的分类标签可以是名词和/或复合名词。这
并非旨在进行限制,并且可以使用任何分类命名约定来说明图像中特征(例如,路口区域)的分类标签的差异。
41.再次参考图1,编码器112可以被配置为使用注释110对与路口区域相对应的地面实况信息进行编码。注释110可由编码器112编码以生成地面实况数据,例如地面实况(gt)带符号距离函数116。此外,因为应用于机器学习模型104的传感器数据102的空间分辨率可能是与机器学习模型104的预测相对应的不同的(例如,大于、小于等)输出空间分辨率,因此地面实况信息可以被编码成各种格式。
42.例如,注释110可以以gt带符号距离函数116的形式编码——使得每个路口区域类别(例如,路口区域类型)被编码在单独的gt带符号距离函数中。路口区域110a和相应的分类110b可由编码器112使用以生成gt带符号距离函数116,每个gt带符号距离函数对应于与从注释110确定的路口区域相对应的路口区域类型。在一些示例中,带符号距离函数116中的每个像素可以用与到相应路口区域类型的路口区域110a的最近边界(例如,沿着训练数据的带注释的边界形状)的像素距离相对应的距离值进行编码。在这样的示例中,路口区域110a(例如,多边形)内部的像素还可以用正距离值进行编码,并且路口区域110a外部的像素可以用负距离值进行编码,反之亦然。形成路口区域110a的边界的像素可以用零值进行编码以生成gt带符号距离函数116。因此,地面实况可以提供图像中每个像素的连续值表示,从而允许在部署期间有效且准确地执行结果检测的上采样。此外,将每个路口区域类别编码为它自己的带符号距离函数可以允许准确且精确地召回和强化每个类别的路口区域的各个实例。
43.在一些示例中,除了对gt带符号距离函数116进行编码之外或作为替代,编码器112可以使用标记的路口区域110a和相应的分类110b来为每个路口区域类型生成独热编码图。在这样的示例中,编码器112可以使用二进制表示来对路口区域110a进行编码,其中路口区域边界(例如多边形边界)内的像素可以用值1进行编码,路口区域边界外的像素可以用值0进行编码。在一些示例中,独热编码图可以包括多个热图,每个热图对应于从注释118确定的路口区域的不同类型的分类110b。然而,当使用独热编码图时,相同路口区域类型的相邻区域(例如,具有共享边界的多边形)可能无法单独识别,因此,与使用gt带符号距离函数116的实施例相比,可能会降低准确性。以这种方式,路口区域110a可以使用gt带符号距离函数116和/或需要具有有限标记的独热编码图来进行编码,因为可以使用多边形注释和语义信息来确定信息。
44.作为示例,参考图3,图3图示了分别用于对来自注释310a、320a、330a、340a和350a的路口区域进行编码的地面实况带符号距离函数310b、320b、330b、340b、350b。注释图像310a包括路口区域312a。在一些示例中,路口区域312a可以包括表示路口区域的多边形并且相应的带符号距离函数310b可以用于编码特定路口区域类型的路口区域312a。路口区域312a可以在带符号距离函数310b中编码,使得路口区域312b内的像素用正距离值进行编码,路口区域312b外的像素用负距离值进行编码,和/或路口区域312b的边界上的像素用零值编码。像素的距离值可以对应于各个像素到(例如,带符号距离函数所对应的路口分类类型的)路口区或区域的最近边界的距离。
45.类似地,注释图像320a包括另一种路口区域类型的路口区域322a、324a、326a和328a,如注释110所示。在一些示例中,路口区域322a、324a、326a和328a可以包括表示相应
路口区域的相应多边形。相应的带符号距离函数320b可用于对另一路口区域类型的路口区域322a、324a、326a和328a进行编码。路口区域322a、324a、326a和328a可以在带符号距离函数320b中进行编码,使得路口区域322b、324b、326b和328b中的每一个内部的像素用正距离值进行编码,路口区域322a、324a、326a和328a外部的像素用负距离值进行编码,并且路口区域322a、324a、326a和328a中的每一个的边界上的像素用零值进行编码。通过分别在注释330a、340a和350a中编码路口区域,可以类似地生成带符号距离函数330b、340b和350b以表示它们相应的路口区域类型。
46.一旦为传感器数据102的每个实例(例如,为传感器数据102包括图像数据的每个图像)生成了gt带符号距离函数116,就可以使用gt带符号距离函数116来训练机器学习模型104。例如,机器学习模型104可以生成带符号距离函数108,并且可以使用损失函数120将带符号距离函数108与对应于传感器数据102的相应实例的gt带符号距离函数116进行比较。因此,考虑到gt带符号距离函数116,来自损失函数120的反馈可用于更新机器学习模型104的参数(例如,权重和偏差),直到机器学习模型104收敛到可接受的或期望的准确度。使用过程100,机器学习模型104可以被训练为使用损失函数120和gt带符号距离函数116从传感器数据102准确地预测带符号距离函数108(和/或相关分类)。在一些示例中,可以使用不同的损失函数120来训练机器学习模型104以预测每个语义类别类型(例如,路口区域类型)的不同的符号距离函数108。例如,第一损失函数120可用于比较第一语义类别类型的带符号距离函数108和gt带符号距离函数116并且第二损失函数120可以用于比较第二语义类别类型的带符号距离函数108和gt带符号距离函数116。因此,在非限制性实施例中,可以使用与另一个输出通道不同的损失函数120来训练一个或更多个输出通道。
47.机器学习模型104可以使用传感器数据102来计算带符号距离函数108,其最终可被应用于解码器或一个或更多个其他后处理组件(本文至少关于图5更详细地描述),以生成带符号距离函数、分类和/或其他信息。尽管本文关于使用深度神经网络(dnn),特别是卷积神经网络(cnn)作为机器学习模型104(例如,关于图1和图5)描述了示例,但这并不旨在进行限制。例如但不限于,机器学习模型104可以包括任何类型的机器学习模型,例如使用线性回归、逻辑回归、决策树、支持向量机(svm)、朴素贝叶斯、k-最近邻(knn)、k均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、循环、感知器、长/短期记忆/lstm、hopfield、玻尔兹曼、深度信念、反卷积、生成对抗、液体状态机等)、感兴趣区域检测算法、计算机视觉算法的机器学习模型和/或其他类型的机器学习模型。
48.作为示例,例如在机器学习模型104包括cnn的情况下,机器学习模型104可以包括任何数量的层。一个或更多个层可以包括输入层。输入层可以保存与传感器数据102相关联的值(例如,在后处理之前或之后)。例如,当传感器数据102是图像时,输入层可以将表示图像的原始像素值的值保存为体(例如,宽度、高度和颜色通道(例如,rgb),例如32x32x3)。
49.一个或更多个层可以包括卷积层。卷积层可以计算连接到输入层中的局部区域的神经元的输出,每个神经元计算它们的权重与它们在输入体中连接到的小区域之间的点积。卷积层的结果可以是另一个体,其中一个维度基于所应用的过滤器的数量(例如,宽度、高度和过滤器的数量,例如32x32x12,如果12是过滤器的数量的话)。
50.一个或更多个层可以包括整流线性单元(relu)层。例如,relu层可以应用逐元素激活函数,例如max(0,x)、阈值设置为零。relu层的结果体可以与relu层的输入体相同。
51.一个或更多个层可以包括池化层。池化层可以沿着空间维度(例如高度和宽度)执行下采样操作,这可导致比池化层的输入更小的体(例如,来自32x32x12输入体的16x16x12)。
52.一个或更多个层可包括一个或更多个全连接层。全连接层中的每个神经元都可以连接到前面体中的每个神经元。全连接层可以计算类别分数,结果体可以是1x1x类别数。在一些示例中,cnn可以包括一个或更多个全连接层,使得cnn的一个或更多个层的输出可以作为输入提供给cnn的一个或更多个全连接层。在一些示例中,一个或更多个卷积流可以由机器学习模型104实现,并且一些或所有卷积流可以包括相应的全连接层。
53.在一些非限制性实施例中,机器学习模型104可以包括一系列卷积层和最大池化层以促进图像特征提取,随后是多尺度扩张卷积和上采样层以促进全局上下文特征提取。
54.尽管本文关于机器学习模型104讨论了输入层、卷积层、池化层、relu层和全连接层,但这并不旨在进行限制。例如,可以在机器学习模型104中使用附加或替代层,例如归一化层、softmax层和/或其他层类型。
55.在机器学习模型104包括cnn的实施例中,可以根据实施例使用cnn的不同顺序和/或数量的层。换言之,机器学习模型104的层的顺序和数量不限于任何一种架构。
56.此外,某些层可包括参数(例如权重和/或偏差),例如卷积层和全连接层,而其他层可不包括,例如relu层和池化层。在一些示例中,参数可以在训练期间由机器学习模型104学习。此外,某些层可包括额外的超参数(例如,学习率、步幅、时期等),例如卷积层、全连接层和池化层,而其他层可不包括,例如relu层。参数和超参数不受限制并且可以根据实施例而不同。
57.现在参考图4,本文描述的方法400的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来执行。方法400还可以体现为存储在计算机存储介质上的计算机可用指令。方法400可以由独立应用、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,通过示例的方式,关于图1的过程100描述了方法400。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文描述的那些。
58.图4是示出根据本公开的一些实施例的用于训练神经网络以检测路口区域的方法400的流程图。在框b402,方法400包括:接收表示描绘路口的图像的图像数据。例如,可以接收传感器数据102,其中传感器数据102包括表示描绘路口的图像的图像数据。
59.在框b404,方法400包括:生成表示对应于路口区域的边界形状的注释和对应于每个区域的语义类别的相应语义类别标签。例如,可以生成和/或接收注释110,其中注释表示对应于路口区域110a的边界形状和路口区域110a中的每一个的相应分类110b。
60.在框b406,方法400包括:为对应于路口的语义类别类型中的每个语义类别类型计算带符号距离函数,带符号距离函数包括区域内部图像的第一像素的第一带符号值、区域外部图像的第二像素的第二带符号值以及沿着区域边界的图像的第三像素的第三带符号值。例如,可以为对应于路口的分类110b的每个路口区域类型计算gt带符号距离函数116。gt带符号距离函数116可以包括路口区域110a内部的像素的正距离值,路口区域110a外部的像素的负距离值,以及沿着路口区域110a边界的像素的零值。
61.在框b408,方法400包括:使用带符号距离函数作为地面实况数据来训练深度神经
网络(dnn)。例如,gt带符号距离函数116可以用作地面实况数据以训练机器学习模型104。
62.现在参考图5,图5是示出根据本公开的一些实施例的用于使用来自车辆的传感器的输出实时或接近实时地检测路口区域的示例过程500的数据流图。传感器数据102可以类似于至少关于图1在本文中描述的那些。在部署期间,传感器数据102可以应用于已经根据过程100训练的机器学习模型104,例如,以使用训练传感器数据102计算带符号距离函数108(和相应的分类)。如此,机器学习模型104可以输出或回归一个或更多个带符号距离函数108,如至少关于图1中的带符号距离函数108更详细地描述的。
63.带符号距离函数108可以应用于后处理器502以生成实例分割掩模510。在一些示例中,后处理器502可以使用一种或更多种后处理算法(例如,时间平滑、上采样、阈值化、聚类、映射等)来计算实例分割掩模510。例如,后处理器502可以使用带符号距离函数108来生成路口区域的表示,其可以依次用于导航路口——例如,由车辆的控制组件516。实例分割掩模510可以包括路口区域、其分类和/或与路口相对应的其他信息(例如,与路口区域相对应的多边形,其可以用于生成用于调试的路口的可视化等)。
64.后处理器可以执行平滑504、上采样506和/或映射508以生成实例分割掩模510。在一些实施例中,带符号距离函数108可以逐个像素地经历平滑504以平滑像素值中的尖峰和波动。在一些示例中,平滑504可以包括由机器学习模型104输出的每个带符号距离函数108的高斯平滑。可以通过对每个带符号距离函数108应用平滑算法以生成相应的平滑带符号距离函数来平滑带符号距离函数108中的尖峰和波动。
65.在一些实施例中,带符号距离函数108和/或平滑带符号距离函数中的一个或更多个可以经历上采样506。例如,可以在不同于对应于传感器数据102的输入空间分辨率的第二空间分辨率的第一空间分辨率(例如,下采样的空间分辨率)下生成带符号距离函数108。因此,上采样506可以从带符号距离函数108的第一空间分辨率解码数据并且将数据转化或转换为传感器数据102的第二空间分辨率。在一些示例中,双线性上采样可以应用于每个带符号距离函数108和/或每个平滑带符号距离函数,以恢复传感器数据102的原始分辨率并生成相应的上采样带符号距离函数。结果,机器学习模型104的处理速度可以增加——例如,由于处理降低的空间分辨率数据——同时为系统的其他任务保留计算资源。此外,通过提高处理速度,可以减少系统的运行时间,从而使得能够在系统(例如车辆900)内实时或接近实时地部署过程500。
66.带符号距离函数108、平滑带符号距离函数和/或上采样的带符号距离函数然后可以基于与相应带符号距离函数中的每个像素相关联的负值和正值被映射到(例如,使用映射508,例如映射算法)表示路口区域的多边形区域。映射508可以包括将带符号距离函数108应用于阈值化和/或聚类算法。在一些实施例中,分水岭聚类算法可用作映射508以生成对应于每个带符号距离函数108的每个检测到的路口区域的实例分割图510。在这样的实施例中,对于每个路口区域,距离值太高和太低的像素可以使用预定的阈值距离值过滤掉,从而减少所需的计算资源。剩余像素可用于确定相关路口区域的边界,和/或确定与具有相关分类类型的路口的给定区域相关联的每个像素。表示路口区域的多边形边界内的每个像素然后可以用描绘相应路口区域的分割(例如,类别标签或值)的像素值进行编码。后处理器502的输出可以是对应于图像空间中路口的不同分类类型区域的位置(例如,二维坐标)的每个分类类型或其实例的实例分割掩模510。
67.实例分割掩模510然后可以应用于坐标转换器512以将图像空间中的2d位置转换为实例分割掩模510中每个检测到的路口区域的3d世界空间坐标。3d世界空间坐标可由车辆900用于路径规划、控制决策和/或其他过程,以安全且有效地导航通过世界空间环境中的路口。可以使用将2d位置投影到3d空间中的任何已知方法。在一些示例中,可以使用平面模型假设将位置投影到3d空间中。在一些其他示例中,用于深度和/或距离估计的lidar数据可用于投影,和/或当车辆900穿过路面时可以使用车辆900的未来运动(例如,来为训练网络生成更准确的地面实况),例如来确定驾驶表面的斜率或轮廓以更准确地将2d点投影到3d空间中。在一些实施例中,机器学习模型104可在3d数据上被训练以直接预测3d世界空间中的路口区域位置。
68.因此,从实例分割图510确定的3d世界空间坐标可用于由车辆900的控制组件514执行一个或更多个操作。作为非限制性示例,自动驾驶软件栈的感知层可以基于路口信息更新关于环境的信息,世界模型管理器可以更新世界模型以反映位置、距离、属性和/或关于路口和其他车辆的其他信息,和/或控制层可以使用该信息来确定接近、导航通过和/或离开路口时的控制(例如,基于等待条件、竞争区域、优先车辆、路口大小、到路口的距离等属性)。
69.现参考图6,图6图示了根据本公开的一些实施例的使用后处理器(例如,后处理器502)被转换成相应的实例分割掩模(例如,图5的实例分割掩模510)的示例带符号距离函数(例如,图5的带符号距离函数108)。带符号距离函数610a、620a、630a和640a包括各个路口区域类别的预测路口区域的可视化。可以对带符号距离函数610a、620a、630a和640a中的每一个进行平滑和上采样(例如,使用平滑504、上采样506等),以分别生成平滑和上采样的带符号距离函数610b、620b、630b和640b。例如,带符号距离函数610a的像素可以经历高斯平滑以平滑带符号距离函数610a中的尖峰和/或波动,以首先生成平滑的带符号距离函数。平滑的带符号距离函数然后可以经历上采样506以恢复传感器数据(例如,传感器数据102)的原始输入图像分辨率,以生成相应的平滑和上采样的带符号距离函数610b。此外,可以使用映射508来映射每个平滑和上采样的带符号距离函数610b、620b、630b和640b,以分别生成相应的实例分割图610c、620c、630c和640c。例如,平滑和上采样的带符号距离函数610b可以经历分水岭聚类算法以生成实例分割掩模612c,然后可以将其覆盖在原始图像上,如在结果实例分割图610c中可以看到的。因此,在图像中检测到的路口区域可以由用于每个路口区域分类的一组多边形来表示。
70.参考图7a-7b,图7a-7b图示了根据本公开的一些实施例的基于由神经网络计算的带符号距离函数在3d空间中预测的示例路口区域。图7a图示了路口区域720、712、714、716、718、720和722的预测700a的可视化,其可以用于确定与路口中的其他车辆相关的路口穿越优先级。不同的路口区域分类可以用实线、虚线、不同颜色等来表示,以表示不同的分类。这并非旨在进行限制,并且可以使用分类的任何视觉约定来说明图像中特征(例如,路口区域)的分类差异。例如,可以理解路口区域712、714和716属于单个路口区域分类。类似地,路口区域720和722可以属于另一个路口区域分类。
71.图7b图示了路口区域740、742、744、746、748、750和720的另一个预测700b,其可以用于由控制组件(例如,车辆900的控制组件514)确定与其他车辆相关的路口穿越优先级。不同的路口区域分类可以用实线、虚线、不同的颜色等来表示,以表示不同的分类。这并非
旨在进行限制,并且可以使用分类的任何视觉约定来说明图像中特征(例如,路口区域)的分类差异,以用于可视化、调试或其他目的。例如,可以理解路口区域742和744属于第一路口区域分类。类似地,路口区域750和752可以属于第二路口区域分类等等。以这种方式,路口区域可以容易地被检测为属于相应的分类。
72.现在参考图8,本文描述的方法800的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来执行。方法800还可以体现为存储在计算机存储介质上的计算机可用指令。方法800可以由独立应用、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,通过示例的方式,关于图5的过程500描述了方法800。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文描述的那些。
73.图8是示出根据本公开的一些实施例的用于检测路口区域的方法800的流程图。在框b802,方法800包括将表示车辆的图像传感器的视野中的路口的图像数据应用到神经网络。例如,传感器数据102可以应用于机器学习模型104。传感器数据102可以表示车辆900的图像传感器的视野中的路口。
74.在框b804,方法800包括:使用神经网络并且至少部分地基于图像数据计算表示与第一路口区域类别相对应的第一带符号距离函数和与第二路口区域类别相对应的第二带符号距离函数的第一数据。例如,机器学习模型104可以基于传感器数据102为多个路口区域类别中的每个路口区域类别输出带符号距离函数108。
75.在框b806,方法800包括:将聚类算法应用于第一带符号距离函数和第二带符号距离函数。例如,可以对带符号距离函数108执行映射508,包括聚类。
76.在框b808,方法800包括:至少部分地基于聚类算法计算与第一路口区域类别相对应的第一实例分割图和与第二路口区域类别相对应的第二实例分割图。例如,可以基于映射508计算与在带符号距离函数108中检测到的每个路口区域类别相对应的实例分割图510。
77.在框b810,方法800包括:至少部分地基于第一实例分割图和第二实例分割图,确定与第一路口区域类别的实例和第二路口区域类别的实例相对应的世界空间位置。例如,对应于路口区域类别的实例的3d世界空间位置可由坐标转换器512基于实例分割掩模510来确定。
78.在框b810,方法800包括:将表示世界空间位置的第二数据传送到车辆的规划组件。例如,路口区域的3d世界空间位置可以被传送到车辆900的控制组件514以用于进一步处理。
79.示例自主车辆
80.图9a是根据本公开的一些实施例的示例自主车辆900的图示。自主车辆900(在本文中也称为“车辆900”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、急救车、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、工程车辆、水下航行器、无人机和/或其他类型的车辆(例如,无人驾驶和/或可容纳一名或多名乘客)。自主车辆通常根据由美国交通部下属的美国国家公路交通安全管理局(nhtsa)和汽车工程师协会(sae)的“道路机动车辆驾驶自动化系统相关术语的分类和定义”(2018年6月15日发布的标准编号j3016-201806,2016年9月30日发布的标准编号j3016-201609,以及该标准的先前和未来版
本)定义的自动化水平来描述。车辆900可能够具有根据自主驾驶级别的级别3-级别5中的一个或更多个的功能。例如,取决于实施例,车辆900可以具有条件自动化(级别3)、高度自动化(级别4)和/或完全自动化(级别5)。
81.车辆900可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆900可以包括推进系统950,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统950可以连接到可以包括变速器的车辆900的传动系以便实现车辆900的推进。可以响应于接收到来自油门/加速器952的信号而控制推进系统950。
82.可以包括方向盘的转向(steering)系统954可以用来在推进系统950操作时(例如在车辆运动时)使车辆900转向(例如沿着希望的路径或路线)。转向系统954可以接收来自转向致动器956的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
83.制动传感器系统946可以用来响应于接收到来自制动致动器948和/或制动传感器的信号而操作车辆制动器。
84.可以包括一个或更多个片上系统(soc)904(图9c)和/或一个或更多个gpu的一个或更多个控制器936可以向车辆900的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器948操作车辆制动器、经由一个或更多个转向致动器956操作转向系统954、经由一个或更多个油门/加速器952操作推进系统950的信号。一个或更多个控制器936可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆900。一个或更多个控制器936可以包括用于自主驾驶功能的第一控制器936、用于功能性安全功能的第二控制器936、用于人工智能功能(例如计算机视觉)的第三控制器936、用于信息娱乐功能的第四控制器936、用于紧急情况下的冗余的第五控制器936和/或其他控制器。在一些示例中,单个控制器936可以处理上述功能中的两个或更多,两个或更多控制器936可以处理单个功能,和/或其任意组合。
85.一个或更多个控制器936可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆900的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器958(例如全球定位系统传感器)、radar传感器960、超声传感器962、lidar传感器964、惯性测量单元(imu)传感器966(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风996、立体相机968、广角相机970(例如鱼眼相机)、红外相机972、环绕相机974(例如360度相机)、远程和/或中程相机998、速度传感器944(例如用于测量车辆900的速率)、振动传感器942、转向传感器940、制动传感器(例如作为制动传感器系统946的部分)和/或其他传感器类型。
86.控制器936中的一个或更多个可以接收来自车辆900的仪表组932的输入(例如由输入数据表示),并且经由人机接口(hmi)显示器934、听觉信号器、扬声器和/或经由车辆900的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图9c的hd地图922)、位置数据(例如,车辆900例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器936所感知的关于对象和对象状态的信息等等。例如,hmi显示器934可以显示关于一个或更多个对象(例如街
道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34b,等等)。
87.车辆900进一步包括网络接口924,其可以使用一个或更多个无线天线926和/或调制解调器通过一个或更多个网络通信。例如,网络接口924可能够通过lte、wcdma、umts、gsm、cdma2000等通信。一个或更多个无线天线926也可以使用诸如蓝牙、蓝牙le、z波、zigbee等等之类的一个或更多个局域网和/或诸如lorawan、sigfox等等之类的一个或更多个低功率广域网(lpwan)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
88.图9b为根据本公开一些实施例的用于图9a的示例自主车辆900的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆900上的不同位置。
89.用于相机的相机类型可以包括但不限于可以适于与车辆900的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(asil)b下和/或在另一个asil下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、920fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红透明(rccc)滤色器阵列、红透明蓝(rccb)滤色器阵列、红蓝绿透明(rbgc)滤色器阵列、foveon x3滤色器阵列、拜耳传感器(rggb)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有rccc、rccb和/或rbgc滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
90.在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(adas)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
91.所述相机中的一个或更多个可以安装在诸如定制设计的(3-d打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-d打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
92.具有包括车辆900前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器936和/或控制soc的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与lidar相同的adas功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于adas功能和系统,包括车道偏离警告(“ldw”)、自主巡航控制(“acc”),和/或诸如交通指示牌识别之类的其他功能。
93.各种各样的相机可以用于前置配置中,包括例如包括cmos(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机970,其可以用来感知从周边进入视野的对象(例如行人、十字路口交通或者自行车)。尽管图9b中图示出仅仅一个广角相机,但是在车辆900上可以存在任意数量的广角相机970。此外,远程相机998(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对
象。远程相机998也可以用于对象检测和分类以及基本的对象跟踪。
94.一个或更多个立体相机968也可以包括在前置配置中。立体相机968可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的can或以太网接口的多核微处理器和可编程逻辑(fpga)。这样的单元可以用来生成车辆环境的3-d地图,包括针对图像中的所有点的距离估计。可替代的立体相机968可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机968。
95.具有包括车辆900的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机974(例如如图9b中所示的四个环绕相机974)可以置于车辆900上。环绕相机974可以包括广角相机970、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机974(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
96.具有包括车辆900的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机998、立体相机968、红外相机972等等)的相机。
97.图9c为根据本公开一些实施例的用于图9a的示例自主车辆900的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在存储器中的指令而实现。
98.图9c中车辆900的部件、特征和系统中的每一个被图示为经由总线902连接。总线902可以包括控制器区域网络(can)数据接口(可替代地,本文称为“can总线”)。can可以是车辆900内部的网络,用来辅助控制车辆900的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。can总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如can id)。可以读取can总线以找到方向盘角度、地速、每分钟发动机转速(rpm)、按钮位置和/或其他车辆状态指示符。can总线可以是asil b兼容的。
99.尽管这里将总线902描述为can总线,但是这并不意图是限制性的。例如,除了can总线之外或者可替代地,可以使用flexray和/或以太网。此外,尽管用单条线来表示总线902,但是这并不意图是限制性的。例如,可以存在任意数量的总线902,其可以包括一条或更多条can总线、一条或更多条flexray总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线902可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线902可以用于碰撞避免功能,并且第二总线902可以用于驱动控制。在任何示例中,每条总线902可以与车辆900的任何部件通信,并且两条或
更多总线902可以与相同的部件通信。在一些示例中,车辆内的每个soc 904、每个控制器936和/或每个计算机可以有权访问相同的输入数据(例如来自车辆900的传感器的输入),并且可以连接到诸如can总线之类的公共总线。
100.车辆900可以包括一个或更多个控制器936,例如本文关于图9a所描述的那些控制器。控制器936可以用于各种各样的功能。控制器936可以耦合到车辆900的任何其他不同的部件和系统,并且可以用于车辆900的控制、车辆900的人工智能、用于车辆900的信息娱乐和/或类似物。
101.车辆900可以包括一个或更多个片上系统(soc)904。soc 904可以包括cpu 906、gpu 908、处理器910、高速缓存912、加速器914、数据存储916和/或未图示出的其他部件和特征。在各种各样的平台和系统中,soc 904可以用来控制车辆900。例如,一个或更多个soc 904可以在系统(例如车辆900的系统)中与hd地图922结合,所述hd地图可以经由网络接口924从一个或更多个服务器(例如图9d的一个或更多个服务器978)获得地图刷新和/或更新。
102.cpu 906可以包括cpu簇或者cpu复合体(可替代地,本文称为“ccplex”)。cpu 906可以包括多个核和/或l2高速缓存。例如,在一些实施例中,cpu 906在一致性多处理器配置中可以包括八个核。在一些实施例中,cpu 906可以包括四个双核簇,其中每个簇具有专用的l2高速缓存(例如2mb l2高速缓存)。cpu 906(例如ccplex)可以被配置为支持同时簇操作,使得cpu 906的簇的任意组合能够在任何给定时间是活动的。
103.cpu 906可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于wfi/wfe指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。cpu 906可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和ccplex确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
104.gpu 908可以包括集成的gpu(可替代地,本文称为“igpu”)。gpu908可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,gpu 908可以使用增强张量指令集。gpu 908可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括l1高速缓存(例如具有至少96kb存储能力的l1高速缓存),并且这些流式微处理器中的两个或更多可以共享l2高速缓存(例如具有512kb存储能力的l2高速缓存)。在一些实施例中,gpu 908可以包括至少八个流式微处理器。gpu 908可以使用计算应用编程接口(api)。此外,gpu 908可以使用一个或更多个并行计算平台和/或编程模型(例如nvidia的cuda)。
105.在汽车和嵌入式使用的情况下,可以对gpu 908进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(finfet)上制造gpu 908。然而,这并不意图是限制性的,并且gpu 908可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个pf32核和32个pf64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个fp32核、8个fp64核、16个int32核、用于深层学习矩阵算术的两个混合精度nvidia张量核、l0指令高速缓存、线程束(warp)调度器、
分派单元和/或64kb寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的l1数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。
106.gpu 908可以包括在一些示例中提供大约900gb/s的峰值存储器带宽的高带宽存储器(hbm)和/或16gb hbm2存储器子系统。在一些示例中,除了hbm存储器之外或者可替代地,可以使用同步图形随机存取存储器(sgram),例如第五代图形双倍数据速率同步随机存取存储器(gddr5)。
107.gpu 908可以包括统一存储器技术,其包括访问计数器以允许存储器页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的存储器范围的效率。在一些示例中,地址转换服务(ats)支持可以用来允许gpu 908直接访问cpu 906页表。在这样的示例中,当gpu 908存储器管理单元(mmu)经历遗漏时,可以将地址转换请求传输至cpu906。作为响应,cpu 906可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回gpu 908。这样,统一存储器技术可以允许单个统一虚拟地址空间用于cpu 906和gpu 908二者的存储器,从而简化了gpu 908编程和将应用程序移植(port)到gpu 908。
108.此外,gpu 908可以包括访问计数器,其可以跟踪gpu 908访问其他处理器的存储器的频率。访问计数器可以帮助确保存储器页面移至最频繁地访问这些页面的处理器的物理存储器。
109.soc 904可以包括任意数量的高速缓存912,包括本文描述的那些高速缓存。例如,高速缓存912可以包括cpu 906和gpu 908二者可用的l3高速缓存(例如,其连接到cpu 906和gpu 908二者)。高速缓存912可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如mei、mesi、msi等)跟踪行的状态。取决于实施例,l3高速缓存可以包括4mb或者更多,但是也可以使用更小的高速缓存大小。
110.soc 904可以包括算术逻辑单元(alu),其可以用于执行关于车辆900的各种任务或操作中的任一个的处理——例如处理dnn。此外,soc904可以包括浮点单元(fpu)——或其他数学协处理器或数字协处理器类型——用于在系统内执行数学运算。例如,soc 104可以包括一个或更多个集成为cpu 906和/或gpu 908内的执行单元的fpu。
111.soc 904可包括一个或更多个加速器914(例如,硬件加速器、软件加速器或其组合)。例如,soc 904可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上存储器。该大型片上存储器(例如4mb sram)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充gpu 908,并且卸载gpu 908的一些任务(例如释放gpu 908的更多周期以用于执行其他任务)。作为一个示例,加速器914可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(cnn)等等)。当在本文中使用时,术语“cnn”可以包括所有类型的cnn,包括基于区域的或者区域卷积神经网络(rcnn)和快速rcnn(例如用于对象检测)。
112.加速器914(例如硬件加速簇)可以包括深度学习加速器(dla)。dla可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(tpu)。tpu可以是被配置为执行图像处理功能(例如用于cnn、rcnn等)且针对执行图像处理功能而优化的加速器。dla可以进一步针对特定的一组神经网络类型和浮点运算以及
推理进行优化。dla的设计可以比通用gpu提供每毫米更高的性能,并且远远超过cpu的性能。tpu可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的int8、int16和fp16数据类型,以及后处理器功能。
113.dla可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是cnn,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的cnn;用于使用来自相机传感器的数据进行距离估计的cnn;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的cnn;用于使用来自相机传感器的数据进行面部识别和车主识别的cnn;和/或用于安全和/或安全相关事件的cnn。
114.dla可以执行gpu 908的任何功能,并且通过使用推理加速器,例如,设计者可以使dla或gpu 908针对任何功能。例如,设计者可以将cnn的处理和浮点运算聚焦在dla上,并且将其他功能留给gpu 908和/或其他加速器914。
115.加速器914(例如硬件加速簇)可以包括可编程视觉加速器(pva),其在本文中可以可替代地称为计算机视觉加速器。pva可以被设计和配置为加速用于高级驾驶员辅助系统(adas)、自主驾驶和/或增强现实(ar)和/或虚拟现实(vr)应用的计算机视觉算法。pva可以提供性能与灵活性之间的平衡。例如,每个pva可以包括例如且不限于任意数量的精简指令集计算机(risc)核、直接存储器访问(dma)和/或任意数量的向量处理器。
116.risc核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些risc核中的每一个可以包括任意数量的存储器。取决于实施例,risc核可以使用若干协议中的任何协议。在一些示例中,risc核可以执行实时操作系统(rtos)。risc核可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储设备实现。例如,risc核可以包括指令高速缓存和/或紧密耦合的ram。
117.dma可以使得pva的部件能够独立于cpu 906访问系统存储器。dma可以支持用来向pva提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,dma可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
118.向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,pva可以包括pva核和两个向量处理子系统分区。pva核可以包括处理器子系统、一个或更多个dma引擎(例如两个dma引擎)和/或其他外围设备。向量处理子系统可以作为pva的主处理引擎而操作,并且可以包括向量处理单元(vpu)、指令高速缓存和/或向量存储器(例如vmem)。vpu核可以包括数字信号处理器,诸如例如单指令多数据(simd)、超长指令字(vliw)数字信号处理器。simd和vliw的组合可以增强吞吐量和速率。
119.向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用存储器。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定pva中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个pva中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定pva中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的pva可以包括在硬件加速簇中,并且任意数量的向量处理器可以
包括在这些pva中的每一个中。此外,pva可以包括附加的纠错码(ecc)存储器,以增强总体系统安全性。
120.加速器914(例如硬件加速簇)可以包括片上计算机视觉网络和sram,以提供用于加速器914的高带宽、低延迟sram。在一些示例中,片上存储器可以包括由例如且不限于八个现场可配置的存储器块组成的至少4mb sram,其可以由pva和dla二者访问。每对存储器块可以包括高级外围总线(apb)接口、配置电路系统、控制器和复用器。可以使用任何类型的存储器。pva和dla可以经由向pva和dla提供高速存储器访问的主干(backbone)访问存储器。主干可以包括(例如使用apb)将pva和dla互连到存储器的片上计算机视觉网络。
121.片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定pva和dla二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合iso 26262或者iec 61508标准,但是也可以使用其他标准和协议。
122.在一些示例中,soc 904可以包括例如在2018年8月10日提交的美国专利申请no.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于radar信号解释、用于声音传播合成和/或分析、用于sonar系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与lidar数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(ttu)可用于执行一个或更多个光线追踪相关操作。
123.加速器914(例如硬件加速器簇)具有广泛的自主驾驶用途。pva可以是可编程视觉加速器,其可以用于adas和自主车辆中的关键处理阶段。pva的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,pva在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,pva被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
124.例如,根据该技术的一个实施例,pva用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。pva可以在来自两个单目相机的输入上执行计算机立体视觉功能。
125.在一些示例中,pva可以用来执行密集的光流。根据过程原始radar数据(例如使用4d快速傅立叶变换)以提供经处理的radar。在其他示例中,pva用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
126.dla可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(aeb)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是aeb的触发因素。dla可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,
与车辆900取向、距离相关的惯性测量单元(imu)传感器966输出,从神经网络和/或其他传感器(例如lidar传感器964或radar传感器960)获得的对象的3d位置估计等。
127.soc 904可以包括一个或更多个数据存储916(例如存储器)。数据存储916可以是soc 904的片上存储器,其可以存储要在gpu和/或dla上执行的神经网络。在一些示例中,为了冗余和安全,数据存储916可以容量足够大以存储神经网络的多个实例。数据存储912可以包括l2或l3高速缓存912。对数据存储916的引用可以包括对与如本文所描述的pva、dla和/或其他加速器914关联的存储器的引用。
128.soc 904可以包括一个或更多个处理器910(例如嵌入式处理器)。处理器910可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是soc 904启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、soc 904热和温度传感器管理和/或soc 904功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且soc904可以使用环形振荡器检测cpu 906、gpu 908和/或加速器914的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将soc 904置于较低功率状态和/或将车辆900置于司机安全停车模式(例如使车辆900安全停车)。
129.处理器910可以进一步包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频i/o接口。在一些示例中,音频处理引擎是具有带有专用ram的数字信号处理器的专用处理器核。
130.处理器910可以进一步包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的ram、支持外围设备(例如定时器和中断控制器)、各种i/o控制器外围设备和路由逻辑。
131.处理器910可以进一步包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的ram、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
132.处理器910可以进一步包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
133.处理器910可以进一步包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
134.处理器910可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机970、环绕相机974和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级soc的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾
驶员可用,并且在其他情况下被禁用。
135.视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
136.视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且gpu 908无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在gpu 908上电并且激活,进行3d渲染时,视频图像复合器可以用来减轻gpu 908的负担以提高性能和响应能力。
137.soc 904可以进一步包括用于从相机接收视频和输入的移动行业处理器接口(mipi)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。soc 904可以进一步包括可以由软件控制并且可以用于接收未提交到特定角色的i/o信号的输入/输出控制器。
138.soc 904可以进一步包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。soc 904可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的lidar传感器964、radar传感器960等等)的数据,来自总线902的数据(例如车辆900的速率、方向盘位置等等),来自(通过以太网或can总线连接的)gnss传感器958的数据。soc 904可以进一步包括专用高性能大容量存储控制器,其可以包括它们自己的dma引擎,并且其可以用来从日常数据管理任务中释放cpu 906。
139.soc 904可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和adas技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。soc 904可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与cpu 906、gpu 908和数据存储916结合时,加速器914可以提供用于3-5级自主车辆的快速高效平台。
140.因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在cpu上执行,这些cpu可以使用诸如c编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,cpu常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多cpu不能实时地执行复杂的对象检测算法,这是车载adas应用的要求和实用3-5级自主车辆的要求。
141.与常规系统形成对比的是,通过提供cpu复合体、gpu复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在dla或dgpu(例如gpu 920)上执行的cnn可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。dla可以进一步包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在cpu复合体上的路径规划模块的神经网络。
142.作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识
别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在cpu复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在dla内和/或在gpu908上同时运行。
143.在一些示例中,用于面部识别和车主识别的cnn可以使用来自相机传感器的数据识别车辆900的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,soc 904提供了防范盗窃和/或劫车的安全性。
144.在另一个示例中,用于应急车辆检测和识别的cnn可以使用来自麦克风996的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,soc 904使用cnn以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在dla上的cnn被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。cnn也可以被训练为识别如gnss传感器958所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,cnn将寻求检测欧洲警报,并且当在美国时,cnn将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器962的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
145.车辆可以包括可以经由高速互连(例如pcie)耦合到soc 904的cpu918(例如分立的cpu或dcpu)。cpu 918可以包括例如x86处理器。cpu918可以用来执行各种各样的功能中的任何功能,包括例如仲裁adas传感器与soc 904之间潜在地不一致的结果,和/或监控控制器936和/或信息娱乐soc 930的状态和健康状况。
146.车辆900可以包括可以经由高速互连(例如nvidia的nvlink)耦合到soc 904的gpu 920(例如分立的gpu或dgpu)。gpu 920可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来基于来自车辆900的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
147.车辆900可以进一步包括网络接口924,该网络接口可以包括一个或更多个无线天线926(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口924可以用来使能通过因特网与云(例如与服务器978和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆900提供关于接近车辆900的车辆(例如车辆900前面、侧面和/或后面的车辆)的信息。该功能可以是车辆900的协作自适应巡航控制功能的部分。
148.网络接口924可以包括提供调制和解调功能并且使得控制器936能够通过无线网络通信的soc。网络接口924可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过lte、wcdma、umts、gsm、cdma2000、蓝牙、蓝牙le、wi-fi、z波、zigbee、
lorawan和/或其他无线协议通信的无线功能。
149.车辆900可以进一步包括可包括片外(例如soc 904外)存储装置的数据存储928。数据存储928可以包括一个或更多个存储元件,包括ram、sram、dram、vram、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
150.车辆900可以进一步包括gnss传感器958。gnss传感器958(例如gps、辅助gps传感器、差分gps(dgps)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的gnss传感器958,包括例如且不限于使用带有以太网到串行(rs-232)网桥的usb连接器的gps。
151.车辆900可以进一步包括radar传感器960。radar传感器960可以甚至在黑暗和/或恶劣天气条件下也由车辆900用于远程车辆检测。radar功能安全级别可以是asil b。radar传感器960可以使用can和/或总线902(例如以传输radar传感器960生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的radar传感器类型。例如且非限制性地,radar传感器960可以适合前面、后面和侧面radar使用。在一些示例中,使用脉冲多普勒radar传感器。
152.radar传感器960可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程radar可以用于自适应巡航控制功能。远程radar系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。radar传感器960可以帮助区分静态对象和运动对象,并且可以由adas系统用于紧急制动辅助和前方碰撞警告。远程radar传感器可以包括具有多根(例如六根或更多)固定radar天线以及高速can和flexray接口的单站多模radar。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆900的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆900的车道的车辆成为可能。
153.作为一个示例,中程radar系统可以包括高达960m(前面)或80m(后面)的范围以及高达42度(前面)或950度(后面)的视场。短程radar系统可以包括但不限于被设计为安装在后保险杠两端的radar传感器。当安装在后保险杠两端时,这样的radar传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。
154.短程radar系统可以在adas系统中用于盲点检测和/或变道辅助。
155.车辆900可以进一步包括超声传感器962。可以置于车辆900的前面、后面和/或侧面的超声传感器962可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器962,并且不同的超声传感器962可以用于不同的检测范围(例如2.5m、4m)。超声传感器962可以操作于功能安全级别的asil b。
156.车辆900可以包括lidar传感器964。lidar传感器964可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。lidar传感器964可以为功能安全级别的asil b。在一些示例中,车辆900可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个lidar传感器964(例如两个、四个、六个等等)。
157.在一些示例中,lidar传感器964可能够对360度视场提供对象列表及其距离。商业上可用的lidar传感器964可以具有例如近似900m的广告范围,精度为2cm-3cm,支持900mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的lidar传感器964。在
这样的示例中,lidar传感器964可以实现为可以嵌入到车辆900的前面、后面、侧面和/或拐角的小设备。在这样的示例中,lidar传感器964可以甚至对于低反射率对象提供高达920度水平的和35度竖直的视场,具有200m的范围。前面安装的lidar传感器964可以被配置用于45度与135度之间的水平视场。
158.在一些示例中,也可以使用诸如3d闪光lidar之类的lidar技术。3d闪光lidar使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光lidar单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光lidar可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光lidar传感器,车辆900的每一侧一个。可用的3d闪光lidar系统包括没有风扇以外的运动部件(moving part)的固态3d凝视阵列lidar相机(例如非扫描lidar设备)。闪光lidar设备可以使用每帧5纳秒i类(眼睛安全)激光脉冲,并且可以以3d范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光lidar,并且因为闪光lidar是没有运动部件的固态设备,lidar传感器964可以不太容易受到运动模糊、振动和/或震动的影响。
159.该车辆可以进一步包括imu传感器966。在一些示例中,imu传感器966可以位于车辆900的后轴的中心。imu传感器966可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,imu传感器966可以包括加速度计和陀螺仪,而在九轴应用中,imu传感器966可以包括加速度计、陀螺仪和磁力计。
160.在一些实施例中,imu传感器966可以实现为微型高性能gps辅助惯性导航系统(gps/ins),其结合微机电系统(mems)惯性传感器、高灵敏度gps接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,imu传感器966可以使得车辆900能够在无需来自磁传感器的输入的情况下通过直接观察从gps到imu传感器966的速度变化并且将其相关来估计方向(heading)。在一些示例中,imu传感器966和gnss传感器958可以结合到单个集成单元中。
161.该车辆可以包括置于车辆900中和/或车辆900周围的麦克风996。除别的以外,麦克风996可以用于应急车辆检测和识别。
162.该车辆可以进一步包括任意数量的相机类型,包括立体相机968、广角相机970、红外相机972、环绕相机974、远程和/或中程相机998和/或其他相机类型。这些相机可以用来捕获车辆900整个外围周围的图像数据。使用的相机类型取决于实施例和车辆900的要求,并且相机类型的任意组合可以用来提供车辆900周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(gmsl)和/或千兆以太网。所述相机中的每一个在本文关于图9a和图9b更详细地进行了描述。
163.车辆900可以进一步包括振动传感器942。振动传感器942可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器942时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
164.车辆900可以包括adas系统938。在一些示例中,adas系统938可以包括soc。adas系
统938可以包括自主/自适应/自动巡航控制(acc)、协作自适应巡航控制(cacc)、前方撞车警告(fcw)、自动紧急制动(aeb)、车道偏离警告(ldw)、车道保持辅助(lka)、盲点警告(bsw)、后方穿越交通警告(rctw)、碰撞警告系统(cws)、车道居中(lc)和/或其他特征和功能。
165.acc系统可以使用radar传感器960、lidar传感器964和/或相机。acc系统可以包括纵向acc和/或横向acc。纵向acc监控并控制到紧接在车辆900前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向acc执行距离保持,并且在必要时建议车辆900改变车道。横向acc与诸如lca和cws之类的其他adas应用程序有关。
166.cacc使用来自其他车辆的信息,该信息可以经由网络接口924和/或无线天线926经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(v2v)通信链路提供,而间接链接可以是基础设施到车辆(i2v)的通信链路。通常,v2v通信概念提供关于紧接在前的车辆(例如紧接在车辆900前方且与其处于相同车道的车辆)的信息,而i2v通信概念提供关于前方更远处的交通的信息。cacc系统可以包括i2v和v2v信息源中的任一个或者二者。给定车辆900前方车辆的信息,cacc可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
167.fcw系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。fcw系统使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器960,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。fcw系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
168.aeb系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。aeb系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器960。当aeb系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么aeb系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。aeb系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
169.ldw系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆900穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活ldw系统。ldw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前侧朝向相机,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
170.lka系统是ldw系统的变型。如果车辆900开始离开车道,那么lka系统提供纠正车辆900的转向输入或制动。
171.bsw系统检测并向驾驶员警告汽车盲点中的车辆。bsw系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。bsw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的后侧朝向相机和/或radar传感器960,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
172.rctw系统可以在车辆900倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些rctw系统包括aeb以确保应用车辆制动器以避免撞车。rctw系统可
以使用耦合到专用处理器、dsp、fpga和/或asic的一个或更多个后置radar传感器960,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
173.常规的adas系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为adas系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆900中,在冲突结果的情况下,车辆900本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器936或第二控制器936)的结果。例如,在一些实施例中,adas系统938可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自adas系统938的输出可以提供给监督mcu。如果来自主计算机和辅助计算机的输出冲突,那么监督mcu必须确定如何协调该冲突以确保安全操作。
174.在一些示例中,主计算机可以被配置为向监督mcu提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督mcu可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督mcu可以在这些计算机之间进行仲裁以确定适当的结果。
175.监督mcu可以被配置为运行神经网络,所述神经网络被训练并且被配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督mcu中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于radar的fcw系统时,监督mcu中的神经网络可以了解fcw系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的ldw系统时,监督mcu中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该ldw。在包括运行在监督mcu上的神经网络的实施例中,监督mcu可以包括适合于利用关联的存储器运行神经网络的dla或gpu中的至少一个。在优选的实施例中,监督mcu可以包括soc 904的部件和/或作为soc 904的部件而被包括。
176.在其他示例中,adas系统938可以包括使用传统计算机视觉规则执行adas功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督mcu中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督mcu可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
177.在一些示例中,adas系统938的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果adas系统938由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
178.车辆900可以进一步包括信息娱乐soc 930(例如车载信息娱乐系统(ivi))。尽管被图示和描述为soc,但是信息娱乐系统可以不是soc,并且可以包括两个或更多分立的部
件。信息娱乐soc 930可以包括可以用来向车辆900提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如tv、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如lte、wi-fi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐soc 930可以包括收音机、盘播放器、导航系统、视频播放器、usb和蓝牙连接、车载电脑、车载娱乐、wi-fi、方向盘音频控件、免提语音控件、平视显示器(hud)、hmi显示器934、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐soc 930可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自adas系统938的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
179.信息娱乐soc 930可以包括gpu功能。信息娱乐soc 930可以通过总线902(例如can总线、以太网等)与车辆900的其他设备、系统和/或部件通信。在一些示例中,信息娱乐soc 930可以耦合至监督mcu,使得在主控制器936(例如车辆900的主和/或备用计算机)出现故障的情况下,信息娱乐系统的gpu可以执行一些自驾驶功能。在这样的示例中,信息娱乐soc 930可以如本文所描述的将车辆900置于司机安全停车模式。
180.车辆900可以进一步包括仪表组932(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组932可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组932可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(srs)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐soc 930和仪表组932之间共享。换言之,仪表组932可以作为信息娱乐soc 930的部分而被包括,或者反之亦然。
181.图9d为根据本公开一些实施例的基于云的服务器与图9a的示例自主车辆900之间的通信的系统示意图。系统976可以包括服务器978、网络990以及包括车辆900在内的车辆。服务器978可以包括多个gpu984(a)-984(h)(这里统称为gpu 984)、pcie交换机982(a)-982(h)(这里统称为pcie交换机982)和/或cpu 980(a)-980(b)(这里统称为cpu 980)。gpu 984、cpu 980和pcie交换机可以与诸如例如且不限于nvidia开发的nvlink接口988之类的高速互连和/或pcie连接986互连。在一些示例中,gpu 984经由nvlink和/或nvswitch soc连接,并且gpu 984和pcie交换机982经由pcie互连连接。尽管图示出八个gpu 984、两个cpu 980和两个pcie交换机,但是这并不意图是限制性的。取决于实施例,服务器978中的每一个可以包括任意数量的gpu 984、cpu 980和/或pcie交换机。例如,服务器978中的每一个可以包括八个、十六个、三十二个和/或更多gpu 984。
182.服务器978可以通过网络990并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器978可以通过网络990并且向车辆传输神经网络992、更新的神经网络992和/或地图信息994,包括关于交通和道路状况的信息。对地图信息994的更新可以包括对于hd地图922的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络992、更新的神经网络992和/或地图信息994可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/
或基于数据中心处执行的训练(例如使用服务器978和/或其他服务器)的经验产生。
183.服务器978可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据机器学习技术的任何一个或更多个类别来执行训练,包括但不限于:诸如监督训练、半监督训练、无监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合之类的类别。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络990传输至车辆),和/或机器学习模型可以由服务器978用来远程地监控车辆。
184.在一些示例中,服务器978可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器978可以包括由gpu 984供电的深度学习超级计算机和/或专用ai计算机,例如nvidia开发的dgx和dgx站机器。然而,在一些示例中,服务器978可以包括仅使用cpu供电的数据中心的深度学习基础设施。
185.服务器978的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆900中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆900的定期更新,例如图像序列和/或车辆900已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆900识别的对象相比较,如果结果不匹配并且该基础设施得出车辆900中的ai发生故障的结论,那么服务器978可以向车辆900传输信号,指示车辆900的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
186.为了推理,服务器978可以包括gpu 984和一个或更多个可编程推理加速器(例如nvidia的tensorrt)。gpu供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,cpu、fpga和其他处理器供电的服务器可以用于推理。
187.示例计算设备
188.图10为适合用于实现本公开一些实施例的示例计算设备1000的框图。计算设备1000可以包括直接或间接耦合下列设备的互连系统1002:存储器1004,一个或更多个中央处理单元(cpu)1006,一个或更多个图形处理单元(gpu)1008,通信接口1010,输入/输出(i/o)端口1012,输入/输出组件1014,电源1016,一个或更多个呈现组件1018(例如显示器),以及一个或更多个逻辑单元1020。
189.尽管图10的各个框被示为经由具有线路的互连系统1002连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件1018可以被认为是i/o组件1014(例如如果显示器为触摸屏)。作为另一个示例,cpu 1006和/或gpu 1008可以包括存储器(例如,存储器1004可以表示除了gpu 1008、cpu 1006和/或其他组件的存储器以外的存储设备)。换言之,图10的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持
式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图10的计算设备的范围内。
190.互连系统1002可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统1002可以包括一种或更多种总线或链路类型,例如行业标准架构(isa)总线、扩展行业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连快速(pcie)总线,和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。例如,cpu 1006可以直接连接到存储器1004。此外,cpu 1006可以直接连接到gpu 1008。在组件之间存在直接或点对点连接的情况下,互连系统1002可以包括pcie链路以执行连接。在这些示例中,计算设备1000中不需要包括pci总线。
191.存储器1004可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备1000访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
192.计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器1004可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。
193.计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或者其他存储技术、cd-rom、数字多功能盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备1000访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
194.计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包括计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
195.cpu 1006可以被配置为执行计算机可读指令中的至少一些,以便控制计算设备1000的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu 1006中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。cpu 1006可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备1000的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备1000的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或者使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备1000还可以包括一个或更多个cpu 1006。
196.除了cpu 1006之外或作为其替代,一个或更多个gpu 1008可以被配置为执行计算机可读指令中的至少一些,以控制计算设备1000的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。一个或更多个gpu 1008可以是集成gpu(例如,具有一个或更
多个cpu 1006)和/或一个或更多个gpu 1008可以是分立gpu。在实施例中,一个或更多个gpu 1008可以是一个或更多个cpu 1006的协处理器。计算设备1000可以使用gpu 1008来渲染图形(例如,3d图形)或执行通用计算。例如,一个或更多个gpu 1008可用于gpu上的通用计算(gpgpu)。一个或更多个gpu 1008可以包括能够同时处理成百上千个软件线程的成百上千个内核。gpu 1008可以响应于渲染命令(例如,经由主机接口接收到的来自cpu 1006的渲染命令)生成用于输出图像的像素数据。gpu 1008可以包括图形存储器,例如显示存储器,用于存储像素数据或任何其他合适的数据,例如gpgpu数据。显示存储器可以作为存储器1004的一部分被包括。一个或更多个gpu 1008可以包括并行操作的两个或更多个gpu(例如,经由链路)。该链路可以直接连接gpu(例如,使用nvlink),也可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每个gpu1008可以为输出的不同部分或不同的输出(例如,第一gpu用于第一图像,第二gpu用于第二图像)生成像素数据或gpgpu数据。每个gpu可包括自己的内存,也可与其他gpu共享内存。
197.除了cpu 1006和/或gpu 1008之外或作为替代,逻辑单元1020可以被配置为执行计算机可读指令中的至少一些,以控制计算设备1000的一个或更多个组件以执行本文描述的方法和/或过程中的一个或更多个。在实施例中,cpu 1006、gpu 1008和/或逻辑单元1020可以分立地或联合地执行方法、过程和/或其部分的任何组合。一个或更多个逻辑单元1020可以是cpu 1006和/或gpu 1008中的一个或更多个的一部分和/或集成在其中,和/或一个或更多个逻辑单元1020可以是分立组件或以其他方式在cpu 1006和/或gpu 1008之外。在实施例中,一个或更多个逻辑单元1020可以是一个或更多个cpu 1006和/或一个或更多个gpu 1008的协处理器。
198.逻辑单元1020的示例包括一个或更多个处理核心和/或其组件,例如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理集群(gpc)、纹理处理集群(tpc)、流式多处理器(sm)、树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或外围组件互连快速(pcie)元件等。
199.通信接口1010可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备1000能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口1010可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如wi-fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网或infiniband通信)、低功率广域网(例如lorawan、sigfox等等)和/或因特网。
200.i/o端口1012可以使得计算设备1000能够逻辑地耦合到包括i/o组件1014、呈现组件1018和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备1000中。说明性i/o组件1014包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。i/o组件1014可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(nui)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备1000的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备1000可以包括诸如立体相机系统之类的深度相机、红外相机系统、rgb相机系统、触摸屏技术以及这些的组合,以用于手势检测和
识别。此外,计算设备1000可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备1000用来渲染沉浸式增强现实或者虚拟现实。
201.电源1016可以包括硬接线电源、电池电源或者其组合。电源1016可以向计算设备1000供电以使得计算设备1000的组件能够操作。
202.呈现组件1018可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件1018可以接收来自其他组件(例如gpu 1008、cpu 1006等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
203.示例网络环境
204.适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图10的计算设备1000的一个或更多个实例上实现——例如,每个设备可以包括计算设备1000的类似组件、特征和/或功能。
205.网络环境的组件可以通过网络彼此通信,网络可以是有线的、无线的或两者。网络可以包括多个网络,或者多个网络中的一个网络。例如,网络可以包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络,例如因特网和/或公共交换电话网络(pstn),和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点(以及其他组件)之类的组件可以提供无线连接。
206.兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可不包括在网络环境中)以及一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可包括在网络环境中)。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
207.在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、它们的组合等。基于云的网络环境可以包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,这些服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用层的一个或更多个应用程序的框架。软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(api)访问服务软件和/或应用程序)。框架层可以是但不限于一种类型的免费和开源软件网络应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
208.基于云的网络环境可以提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一个都可以分布在(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果到用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,仅限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
209.客户端设备可以包括本文关于图10描述的示例计算设备1000的至少一些组件、特
征和功能。作为示例而非限制,客户端设备可以体现为个人计算机(pc)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(pda)、mp3播放器、虚拟现实耳机、全球定位系统(gps)或设备、视频播放器、摄像机、监控设备或系统、车辆、船只、飞行器、虚拟机、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车载计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、描述的这些设备的任何组合,或任何其他合适的设备。
210.本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
211.如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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中的至少一个。
212.本文详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
再多了解一些

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

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

相关文献