自主机器应用中的自适应目标跟踪算法
背景技术:
1.自动驾驶系统和高级驾驶员辅助系统(adas)可利用传感器,如摄像头、激光雷达传感器、雷达传感器等,执行各种任务,如目标检测、目标跟踪、车道保持、车道变换、车道分配、摄像头校准、转弯、路径规划和定位。例如,对于独立且高效地操作的自治和adas系统,可以实时或近实时地生成对车辆周围环境的理解。对此理解至关重要的是目标跟踪,其中对象随时间的位置可用于通知自主系统周围对象的运动模式、周围对象的位置、周围对象的未来估计位置等。
2.例如,在进行路径规划、避障和/或控制决策时,被跟踪对象信息可能证明是有用的。随着环境或场景变得更加拥挤,因此处理起来更加复杂(如在城市和/或半城市驾驶环境中),随着时间的推移,了解对象位置可能对车辆的安全运行变得更加重要。然而,采用目标跟踪的传统系统——如实施基于图像的目标跟踪方法的系统——检测并跟踪车辆环境中的每个目标。无论对象的位置、运动方向和/或对象对车辆安全有效驾驶决策的重要性如何,这都是正确的。随着检测到的对象数量的增加——例如在更复杂的驾驶场景中——计算资源需求增加,处理时间增加到无法以可接受的安全级别实时或近实时部署系统的程度。
技术实现要素:
3.本发明的实施例涉及用于自主机器应用的自适应目标跟踪算法。公开了检测对象,然后过滤掉检测到的对象以减少计算负担的系统和方法,同时还减少实时或近实时的有时限操作(例如目标跟踪)的运行时间。与传统系统(如上述系统)相比,本发明的系统和方法可以使用车道位置标准和/或必要对象类别标准来过滤掉对准确可靠的目标跟踪不太重要的检测对象子集。结果,可以处理检测到的对象的更聚焦子集以进行目标跟踪,这反过来减少了计算负担和系统的运行时间。
4.例如,车道信息、自由空间信息和/或对象语义或位置信息可用于将检测到的对象分配给车道,并在目标跟踪器处理之前过滤掉非必要对象。可使用车道信息和/或自由空间信息生成车道图,以表示检测车道的位置和姿势,以帮助定位环境中的车辆和其他检测对象。检测到的车道的位置可以映射到相应车道内检测到的对象的位置,并且可以基于该映射和车道位置标准从检测到的对象中过滤出非必要对象。例如,车道位置标准可指示基本车道(例如,自我车道、自我车道的右相邻车道、自我车道的左相邻车道等),其中必要对象将被跟踪,并且非基本车道中的对象可被过滤掉以生成过滤后的对象集。与非必要对象类别(例如,行人、交通灯、停车标志、动物、某些车辆类别等)相关联的过滤对象集也可能被过滤掉。因此,可以在不牺牲质量或可靠性的情况下提高系统的效率,因为只有与必要对象类别相关联的对象(例如,汽车、卡车、摩托车手、自行车手)和位于基本车道上的对象可以提供给目标跟踪器进行跟踪。
5.随着时间的推移,需要跟踪的对象数量减少,随着目标跟踪器要处理的数据量减少,检测和跟踪对象的过程可能会相对较少的时间消耗、较少的计算强度和更大的可伸缩
性。此外,通过减少每帧传输的数据量,可以增加每秒处理的帧数,以在相同的时间内生成额外的结果,从而增加系统的目标跟踪计算的粒度。
附图说明
6.以下参考附图详细描述用于自主机器应用的自适应目标跟踪算法的本系统和方法,其中:
7.图1a是示出根据本公开的一些实施例的目标跟踪的示例过程的示例数据流程图;
8.图1b是示出根据本公开的一些实施例的过滤要跟踪的对象的示例过程的示例数据流程图;
9.图2是根据本公开的一些实施例的示例目标跟踪系统的框图;
10.图3a是根据本公开的一些实施例的检测对象和检测车道之间的示例映射的图示;
11.图3b是根据本公开的一些实施例的由基于车道信息的对象过滤器生成的示例过滤对象集的图示;
12.图3c是根据本公开的实施例的由对象文件器基于对象类生成的对象的示例剩余列表的图示;
13.图4是示出根据本公开的一些实施例的用于检测对象、然后过滤掉检测到的对象以减少计算负担,同时还减少有时限操作的运行时间的方法的流程图;
14.图5是显示了根据本公开的一些实施例的方法500的流程图,其用于检测对象,然后过滤掉检测到的对象以减少计算负担,同时还减少有时限操作的运行时间;
15.图6a是根据本公开的一些实施例的示例性自主车辆的图示;
16.图6b是根据本公开的一些实施例的图6a的示例性自主车辆的相机位置和视野示例;
17.图6c是根据本公开的一些实施例的图6a的示例性自主车辆的示例性系统架构的框图;
18.图6d是根据本公开的一些实施例的一个或更多个基于云的服务器与图6a的示例性自主车辆之间通信的系统图;
19.图7是适合用于实施本公开的一些实施例的示例计算设备的框图;和
20.图8是适用于实施本公开的一些实施例的示例数据中心的框图。
具体实施方式
21.公开了与用于自主机器应用的自适应目标跟踪算法相关的系统和方法。尽管本公开可以关于示例性自主车辆600(或者在本文中称为“车辆600”或“自我车辆600”,本文中关于图6a-6d描述了其示例)来描述,但是这并不旨在限制性的。例如,本文描述的系统和方法可由非自主车辆、半自主车辆(例如,在一个或更多个高级驾驶员辅助系统(adas)中)、机器人、仓库或工厂车辆或机器、越野车辆、飞艇、船只和/或其他车辆类型使用。此外,尽管本发明可以关于自动驾驶进行描述,但这并不旨在限制。例如,本文描述的系统和方法可用于机器人(例如,机器人的目标检测和跟踪)、空中系统(例如,无人机或其他飞行器的目标检测和跟踪)、划船系统(例如,船艇的目标检测和跟踪)、模拟环境(例如。,用于在虚拟仿真环境中模拟虚拟车辆的目标检测和跟踪),和/或其他技术领域,如目标检测和目标跟踪。
22.与传统技术相比,当前的系统和方法提供了检测对象的技术,然后过滤掉检测到的对象,以减少计算负担,同时减少有时限操作(如目标跟踪)的运行时间。例如,车辆的各种传感器(例如,相机、雷达传感器、激光雷达传感器等)的输出可以实时或近实时处理,例如,使用一个或更多个计算机视觉算法、机器学习模型,和/或深度神经网络(dnn)
–
在执行跟踪算法以跟踪周围环境中的对象之前,丢弃非必要对象。例如,车辆的实时感知可用于仅检测和分类车辆当前车道、车辆当前车道紧邻右侧的车道和/或车辆当前车道紧邻左侧的车道中的对象。这样,一个或更多个算法(如车道检测算法、目标检测和分类算法,和/或自由空间检测算法)的输出可用于在向目标跟踪算法提供有关待跟踪目标的信息之前,对车辆路径中的重要目标进行分类和/或确定。同样地,通过使用车道信息、自由空间信息、对象类别信息、路径分析中的对象(oipa)和/或车辆定位信息,检测和分类车辆环境中的必要对象的过程可能相对较少耗时,计算强度较小,因为系统可以学习以确定、存储和跟踪仅与车辆环境中的必要对象有关的信息,因此具有更高的可扩展性。
23.本系统和方法能够实时或接近实时地跟踪自我车辆环境中的对象。例如,在跟踪之前,使用各种处理步骤过滤掉某些检测到的对象,仅将最重要或最高优先级的对象信息传递给用于跟踪环境中对象的目标跟踪算法。为了过滤出对象,可以使用各种计算机视觉算法、机器学习模型和/或深度神经网络(dnn)来处理自我车辆传感器生成的传感器数据,以产生对周围环境的理解(例如,通过车道图、定位等)。传感器数据可包括由自我车辆的任何类型传感器(例如,相机、雷达传感器、激光雷达传感器、超声波传感器、全球导航卫星系统(gnss)传感器、惯性测量单元(imu)传感器等)生成的传感器数据,并可以任何可接受的格式表示以进行处理(例如,图像、视频、点云、深度图、距离图像(range images)、其他传感器数据表示等)。
24.传感器数据可用于车道检测、自由空间检测、目标检测和/或分类,最终用于目标跟踪。例如,可以计算与车辆环境中的车道相对应的位置、方向、方位、分类和/或其他信息。此外,在一些实施例中,可以计算将可驾驶自由空间与非可驾驶空间分离的边界的位置,和/或可以计算与可驾驶自由空间相对应的环境区域。还可以检测和/或分类环境中的对象。例如,可以按类和/或实例来检测和分类对象,使得唯一的对象实例最终可以由目标跟踪器跟踪。除此信息外,gnss传感器、imu、高清(hd)地图和/或其他定位信息可用于相对于计算或预测的环境信息(例如,车道图)定位自我车辆和/或其他对象。例如,可以使用计算的车道信息和车辆的定位信息生成车道图。因此,车道图可用于确定行驶路面的布局,并最终确定其上对象的位置。在一些实施例中,与可行驶自由空间相对应的信息也可包括在车道图中,和/或可用于映射要填充到车道的对象(例如,人行道上的对象可能不被跟踪,而行驶表面上的对象可能被跟踪)。
25.然后可使用车道和对象之间的映射来过滤非必要对象,从而确定一组必要对象。例如,可以使用映射来执行路径中对象分析(oipa),以过滤出检测到的参与者的至少一个子集。在非限制性示例中,可以过滤掉不在自我车道、自我车道的右相邻车道和自我车道的左相邻车道(使用oipa、车道图和映射确定)中的每个对象。然后,过滤后的对象集可传递给对象类关联器,该对象类关联器可使用与过滤后的对象集相对应的目标检测信息(例如,类和/或实例信息)来进一步过滤出与非基本类相对应的对象。因此,在非限制性示例中,可以过滤掉不是汽车、卡车、自行车或摩托车的每个剩余对象。然后,可将剩余的对象列表传递
给目标跟踪器,并且目标跟踪器可开始或继续(例如,从跟踪算法的任何数量的先前实例)跟踪对象。
26.在一些实施例中,可以在一个或更多个图形处理单元(gpu)和一个或更多个中央处理单元(cpu)之间分割处理。例如,车道信息、自由空间信息、对象检测和/或分类和/或目标跟踪的计算或预测可以使用一个或更多个gpu执行,而这些输出的处理可以使用一个或更多个cpu执行。此外,在一些实施例中,可以使用两个或多个片上系统(soc)来执行操作。因此,可以使用传输控制协议(tcp)在各个soc之间传递该跟踪数据,并且在soc之间传递的数据的大小直接影响系统的延迟。因此,通过减少需要随时间跟踪的对象的数量,可以减少soc之间传输的数据量,从而提高系统的效率。此外,通过减少每帧传输的数据量,可以增加每秒处理的帧数,以在相同的时间内生成额外的结果,从而提高系统目标跟踪计算的准确度和粒度。
27.现在参考图1a,图1a是一个示例数据流程图,说明了一个示例过程100,该过程用于检测对象,然后过滤掉检测到的对象以减少计算负担,同时还减少有时限操作的运行时间,例如目标跟踪,根据本公开的一些实施例。应理解,本文所述的此布置和其它布置仅作为示例阐述。在高水平上,过程100可包括一个或更多个检测器104,其接收一个或更多个输入,例如传感器数据102,并生成一个或更多个输出,例如一个或更多个车道检测、对象检测和/或自由空间检测,其可用于生成车道图,和/或使用车道图生成器106和/或对象车道分配器108进行对象车道分配。对象过滤器110可以使用车道分配器108的输出来过滤检测到的对象。虽然传感器数据102主要是关于代表图像的图像数据来讨论的,但这并不旨在限制,并且传感器数据102可以包括其他类型的传感器数据,例如但不限于激光雷达数据、声纳数据、雷达数据和/或类似数据
–
例如,由车辆600的一个或更多个传感器生成(图6a-6d)。
28.过程100可包括从一个或更多个传感器生成和/或接收传感器数据102。作为非限制性示例,传感器数据102可从车辆(例如,图6a-6c中并在本文中描述的车辆600)的一个或更多个传感器接收。传感器数据102可由车辆600并在过程100内用于实时或接近实时地导航其环境。传感器数据102可以包括但不限于来自车辆的任何传感器的传感器数据102,包括例如并参考图6a-6c、一个或更多个全球导航卫星系统(gnss)传感器658(如全球定位系统传感器)、一个或更多个雷达传感器660、一个或更多个超声波传感器662、一个或更多个激光雷达传感器664、一个或更多个惯性测量单元(imu)传感器666(如一个或更多个加速计、一个或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁强计等)、一个或更多个麦克风676、一个或更多个立体相机668、一个或更多个广角相机670(例如鱼眼相机)、一个或更多个红外相机672、一个或更多个环绕相机674(例如360度相机)、一个或更多个远程和/或中程相机678、一个或更多个速度传感器644(例如,用于测量车辆600的速度)和/或其他传感器类型。作为另一示例,传感器数据102可以包括从虚拟(例如,测试)环境中的虚拟车辆或其他虚拟对象的任意数量的传感器生成的虚拟传感器数据。在这样的示例中,虚拟传感器可对应于模拟环境中的虚拟车辆或其他虚拟对象(例如,用于测试、训练和/或验证神经网络性能),并且虚拟传感器数据可表示虚拟传感器在模拟或虚拟环境中捕获的传感器数据。
29.在一些实施例中,传感器数据102可包括表示一个或更多个图像的图像数据、表示视频(例如,视频快照)的图像数据和/或表示传感器感测场的传感器数据(例如,激光雷达
传感器的深度图、超声波传感器的值图等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图像数据格式,例如但不限于诸如联合摄影专家组(jpeg)或亮度/色度(yuv)格式的压缩图像,作为源于压缩视频格式(例如h.264/高级视频编码(avc)或h.265/高效视频编码(hevc))的帧的压缩图像,原始图像(例如源于红色-清晰-蓝色(rccb)、红色-清晰(rccc)或其他类型的成像传感器)和/或其他格式。此外,在一些示例中,传感器数据102可在过程100内使用而无需任何预处理(例如,以原始或捕获的格式),而在其他示例中,传感器数据102可经历预处理(例如,噪声平衡、去马赛克(demosaicing)、缩放、裁剪、增强、白平衡、色调曲线调整等),例如使用传感器数据预处理器(未显示))。传感器数据102可以包括原始图像(例如,由一个或更多个图像传感器捕获)、下采样图像、上采样图像、裁剪图像或感兴趣区域(roi)图像、其他增强图像和/或其组合。如本文所使用的,传感器数据102可参考未经处理的传感器数据、预处理的传感器数据或其组合。
30.检测器104可包括车道检测器104a、自由空间检测器104b和/或对象检测器104c。检测器104可包括一个或更多个计算机视觉算法、机器学习模型和/或dnn,其训练用于使用传感器数据102计算车道信息(例如,位置、姿势、几何体等)、自由空间边界位置和/或对象信息(例如,位置、姿势、类别等)。例如但非限制,检测器104可包括使用线性回归、逻辑回归、决策树、支持向量机(svm)、朴素贝叶斯、k-最近邻(knn)、k均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆/lstm、霍普菲尔德、玻尔兹曼、深度信念、反卷积、生成对抗、液态机器等)、感兴趣领域检测算法、计算机视觉算法和/或其他类型的机器学习模型或算法。
31.例如,在检测器104包括dnn——或者更具体地说是卷积神经网络(cnn)的情况下,检测器104可以包括任意数量的层。一个或更多个层可以包括输入层。输入层可保持与传感器数据102相关联的值(例如,在后处理之前或之后)。例如,当传感器数据102是图像时,输入层可以将代表一个或更多个图像的原始像素值的值保持为体积(例如,宽度、高度和颜色通道(例如,rgb),例如32x32x3)。
32.一个或更多个层可包括卷积层。卷积层可以计算连接到输入层中的局部区域的神经元的输出,每个神经元计算它们的权重和它们在输入体积中连接到的小区域之间的点积。卷积层的结果可以是另一个体积,其中一个尺寸基于应用的滤波器数量(例如,宽度、高度和滤波器数量,例如32x32x12,如果12是滤波器数量)。
33.一个或更多个层可包括整流线性单元(relu)层。例如,一个或更多个relu层可以应用逐元素激活函数,例如最大值(0,x),在零处阈值化。relu层的结果体积可能与relu层的输入体积相同。
34.一个或更多个层可包括池化层。池化层可沿空间维度(例如,高度和宽度)执行下采样操作,这可导致体积小于池化层的输入(例如,来自32x32x12输入体积的16x16x12)。
35.一个或更多个层可包括一个或更多个完全连接的层。全连接层中的每个神经元可以连接到前一个体积中的每个神经元。全连接层可以计算类分数,得到的体积可以是1x1x类数。在一些示例中,cnn可以包括全连接层,使得cnn的一个或更多个层的输出可以被提供为cnn的全连接层的输入。在一些示例中,一个或更多个卷积流可由检测器104实现,并且一些或所有卷积流可包括各自的全连接层。
36.在一些非限制性实施例中,检测器104可包括一系列卷积层和最大池化层以促进
图像特征提取,随后是多尺度扩展卷积层和上采样层以促进全局上下文特征提取。
37.尽管本文针对检测器104讨论了输入层、卷积层、池化层、relu层和全连接层,但这并旨在限制。例如,可在一个或更多个机器学习模型104中使用附加或替代层,例如归一化层、softmax层和/或其他层类型。
38.在检测器104包括cnn的实施例中,可根据实施例使用cnn层的不同顺序和数量。换句话说,检测器104的层的顺序和数量不限于任何一种架构。
39.此外,一些层可能包括参数(例如权重和/或偏置),例如卷积层和全连接层,而其他层可能不包括参数,例如relu层和池化层。在一些示例中,参数可由检测器104在训练期间学习。此外,一些层可以包括额外的超参数(例如,学习速率、步幅、时期等),例如卷积层、全连接层和池化层,而其他层可以不包括,例如relu层。参数和超参数不受限制,并且可以根据实施例而不同。
40.检测器104可使用传感器数据102来检测车道、自由空间边界和/或对象,其可最终应用于车道图生成器106以生成车道图和/或对象车道分配器108以将对象与车道图中的车道相关联。例如,车道检测器104a可经训练或编程以检测传感器数据102中的车道和/或关联车道分类。例如,车道检测器104a可计算位置、方向、方位、分类,和/或与使用传感器数据102确定的车辆环境中的车道相对应的其他信息。
41.自由空间检测器104b可经过训练或编程,以使用传感器数据102检测车辆环境中的可驾驶自由空间和/或非可驾驶空间-或与其划分相对应的边界。例如,自由空间检测器104b可计算将可驾驶自由空间与非可驾驶空间分开的边界位置,和/或与可驾驶自由空间相对应的车辆环境区域。
42.车道图生成器106可以使用车道检测器104a和/或自由空间检测器104b的输出作为输入。例如,车道图生成器106可以基于车道和自由空间检测计算一个或更多个车道图。目标车道分配器108可以使用来自一个或更多个gnss传感器、imu、高清(hd)地图和/或其他定位信息的定位信息,相对于计算或预测的车道图或环境信息来定位车辆600(和/或周围对象)。例如,车道图生成器106可以使用来自车道检测器104a的计算车道信息和车辆600的当前位置信息(例如,车道图可以使用车辆600的当前位置信息指示车辆600的自我车道和相对于自我车辆位置的其他车道)。因此,车道图可以表示行驶路面的布局。在一些示例中,车道图可使用点阵列(例如,像素)来表示车道,并包括车道信息源(例如,车道检测器104a、高清地图)、车道分类(例如,当前车道、左车道、右车道、对向车道)和车辆600的定位。通过这种方式,车道图生成器106可以生成表示车道和车辆600在行驶路面上的定位的车道图。在一些示例中,车道图生成器106可以包括车道图中可行驶自由空间的表示。
43.目标检测器104c可经过训练或编程,以基于传感器数据102检测和/或分类车辆600环境中的对象。例如,可按类别和/或实例检测和分类对象,这样,唯一的对象实例最终可以被目标跟踪器112跟踪。目标检测器104可以计算检测到的对象周围的边界框,并且每个检测到的对象可以与一个类关联——例如但不限于:汽车、自行车、停车标志、让行标志、交通灯、行人、卡车、摩托车、和/或目标检测器104c可训练或编程以检测的对象的其他分类。在一些示例中,目标检测器104c可以使用传感器数据检测对象的位置。例如,目标检测器104的输出可对应于与对象和/或对象类相关联的对象位置处的像素,边界形状信息可由目标检测器104c输出,和/或可输出其他对象检测表示。
44.对象车道分配器108可以将车道图生成器106、目标检测器104c和/或自由空间检测器104b的输出作为输入,以生成对象和车道之间的映射,该映射将检测到的对象分配给车道图的车道或将检测到的对象与车道图的车道相关联。例如,可以使用计算的车道信息、车辆600的定位信息和/或关于检测到的对象的信息(例如,对象类别、对象姿势、对象位置等),生成对象到车道的映射。例如,可以基于属于也属于车道的对象的像素,将检测到的对象分配和/或映射到检测到的车道。映射可以包括车道的位置和相应车道内检测到的对象的位置。因此,映射不仅可以表示驾驶表面的布局,还可以表示其上对象的位置。在一些实施例中,对应于可驾驶自由空间的信息也可包括在映射中,和/或可用于确定要包括在映射中的对象(例如,人行道上的对象可以不映射,而驾驶表面上的对象可以映射)。以这种方式,对象车道分配器108可以通过将对象定位到相应的车道,将每个检测到的对象映射或分配到检测到的车道或不可驾驶表面。
45.对象过滤器110可将来自对象车道分配器108和/或目标检测器104c的映射输出作为输入,以从映射对象中过滤出非必要对象,以基于各种标准(例如车道位置标准、对象类型标准等)来确定非必要对象的集合。车道位置标准可包括用于过滤对象的一组规则。例如,在一些示例中,对象过滤器110可以基于映射执行路径中对象分析(oipa),以过滤出检测到的对象的至少一个子集。例如,可以过滤掉不在车辆当前车道、当前车道的右相邻车道和当前车道的左相邻车道中的每个对象(使用oipa和映射确定)。映射中的车道类可用于确定当前车道、当前车道的左相邻车道和当前车道的右相邻车道中的对象。然后可将经过滤的对象集提供给一个或更多个附加滤波器,或提供给目标跟踪器112以进行跟踪。
46.在一些示例中,对象过滤器110可以通过过滤掉对应于非必要对象类的对象来过滤对象集。例如,目标检测器104c的输出——例如对象位置、对象类、对象实例信息等——可用于过滤掉属于非必要(或非期望)对象类的对象。例如,对象滤波器110可以使用与过滤的对象集合相对应的目标检测器104c的输出来进一步过滤出与非必要对象类相对应的对象。在一些示例中,可以过滤掉不属于与汽车、卡车、自行车或摩托车相关联的对象类的过滤对象集的每个对象。因此,在跟踪之前,可能会过滤掉非必要对象(例如,交通灯、行人)。剩余的对象列表随后可传递给目标跟踪器112,并且目标跟踪器112可开始或继续(例如,从跟踪算法的任何数量的先前实例)跟踪剩余的对象列表。应当注意,尽管过滤被描述为包括基于车道信息的过滤,然后是基于对象类的过滤,但这并不意味着限制。在一些示例中,根据实施例,在基于车道信息进行过滤之前,可以基于对象类对检测到的对象进行过滤,和/或可以以任何顺序执行一个或更多个其他过滤类型。
47.目标跟踪器112可以接收与剩余对象列表相对应的对象和车道信息。目标跟踪器112可以具有当前正在跟踪的对象的先前列表,并且目标跟踪器112可以将剩余对象列表与当前正在跟踪的对象的先前列表进行比较,以继续跟踪对象或开始跟踪新对象。因此,随着时间的推移,可以从先前的对象列表中添加和/或删除对象。在一些示例中,目标跟踪器112可以从对象车道分配器108接收剩余对象列表中的每一个的对象关联分数。该分数可以基于关联对象在所分配车道中的置信度。得分低于预定分数的剩余对象列表中的对象可以从要跟踪的对象的更新列表中移除。待跟踪对象的更新列表可发送至车辆600的控制部件进行进一步处理,以协助车辆600的一个或更多个操作,例如路径规划、控制、致动、避障等。
48.现在参考图1b,图1b是示出根据本公开的一些实施例的用于过滤要跟踪的对象的
示例过程120的示例数据流程图。在一些示例中,可以在一个或更多个图形处理单元(gpu)140和一个或更多个中央处理单元(cpu)150之间分割处理。例如,可以使用一个或更多个gpu执行车道信息、自由空间信息、目标检测和/或分类和/或目标跟踪的计算或预测,而这些输出的处理可以使用一个或更多个cpu执行。因此,一个或更多个gpu 140可执行检测器104和/或目标跟踪器112。由检测器104生成的车道信息、自由空间信息和目标检测信息最终可由目标跟踪器112用于跟踪车辆600环境中的对象。这样,车道信息可用于在目标跟踪器112跟踪对象之前确定必要对象。结果,一个或更多个gpu 140可用于有效地计算感知信息,一个或更多个cpu 150可处理感知信息,并且一个或更多个gpu 140可使用来自一个或更多个cpu 150的反馈执行目标跟踪器。在一些实施例中,可以使用一个或更多个并行处理单元(例如,一个或更多个gpu 140的并行处理单元)并行执行一个或更多个处理任务。
49.由一个或更多个gpu 140处理的每个检测器104(例如车道检测器104b、自由空间检测器104b和/或目标检测器104c)的输出可提供给一个或更多个cpu 150进行进一步处理。cpu 150可以处理检测器104的输出,以确定实时或接近实时地跟踪车辆600的安全和有效导航所需的必要对象。cpu 150可以包括车道处理器122、定位器124、车道图生成器106、对象处理器126、路径中对象分析器128和/或跟踪处理器112。车道处理器122可以从车道检测器104a接收作为输入的车道信息。车道处理器122可以处理检测到的车道位置信息和/或车道类别。
50.定位器124可将车道处理器122的输出作为输入,以将车辆600定位在已处理车道内。定位器124还可以基于来自gnss传感器、imu、高清(hd)地图和/或其他定位信息的定位信息来定位车辆。车道图生成器106可以使用处理后的车道信息和定位信息来生成与传感器数据102相关联的车道图。例如,车道图生成器106可以使用来自车道处理器122的计算车道信息和来自定位器124的定位信息生成车道图。因此,车道图可以表示驾驶表面的布局。在一些示例中,车道图可使用点阵列(例如,像素)来表示车道,并包括车道信息源(例如,车道检测器104a、高清地图)、车道分类(例如,当前车道、左车道、右车道、对向车道、交叉车道)和/或车辆600的定位。
51.对象处理器126可以使用目标检测器104c的输出来处理检测到的对象。对象处理器126可以处理对象检测以确定每个检测对象的对象位置和/或分类。作为非限制性示例,对象位置处的像素可与相应的检测对象和/或分类相关联。路径中对象分析器128可确定自我车道(例如,车辆600的当前车道)、自我车道的右相邻车道和自我车道的左相邻车道的车道位置和车道类别信息。路径中对象分析器128生成的车道位置和车道类别信息可以包括点阵列(例如,像素),以表示自我车道、自我车道的右相邻车道和自我车道的左相邻车道中的每一个。路径中对象分析器128可以基于在车道图中检测到的车道的位置内检测到的对象的位置,将检测到的对象与相应的车道相关联。每个对象可与车道图中的车道或不可驾驶区域相关联。
52.对象车道分配器108可将路径中对象分析器128的输出作为输入,以基于车道位置标准和/或对象类别标准执行对象过滤操作。对象车道分配器108可以生成关联车道位置和车道内对象位置的映射。对象车道分配器108可以过滤检测到的对象,以基于车道位置标准确定必要对象的集合。车道位置标准可以包括关于过滤掉与车道子集(例如,自我车道、自我车道的右相邻车道、自我车道的左相邻车道)无关的检测到的对象的规则。此外,在一些
例子中,对象车道分配器108可以接收与对象处理器126处理的过滤对象集的每个对象相关联的类作为输入。对象车道分配器108可以基于对象类标准从过滤对象集进一步过滤出对象,该对象类标准指示对象类为高重要性/优先类(如轿车、卡车、摩托车手、自行车手)和/或非优先对象类(如行人、交通信号灯)。然后,可以对过滤对象集的对象进行过滤,以移除与非优先级对象类关联的对象。
53.对象车道分配器108还可以为剩余的必要或优先对象集合中的每对对象和通道生成关联分数。关联分数可指示对象位于特定基本车道内的概率(例如,自我车道、右邻车道到自我车道、左邻车道到自我车道),和/或对象属于必要或优先对象类别的概率。预定阈值分数可用于确定是否应在目标跟踪器112中预测和/或更新必要或优先对象。在选项134,当与必要或优先对象相关联的关联分数低于阈值时,在方框132处将该对象从考虑中移除。如果关联分数高于阈值,则可在方框136a处在相应车道内的相应位置处预测关联的必要或优先对象。此外,如果必要对象或优先对象存在于先前跟踪对象列表中,则在框136b,必要对象或优先对象的位置可在当前跟踪对象列表中更新。如果在传感器数据102的当前实例中未检测到先前跟踪对象列表中存在的对象,则可从当前跟踪对象列表中移除该对象。
54.剩余对象列表随后可由跟踪处理器130进行处理,以生成和/或更新具有剩余对象列表的位置和/或类别的跟踪对象列表。然后,可以向目标跟踪器112提供用于跟踪的当前跟踪对象列表。
55.现在参考图2,图2示出了根据本发明的一些实施例的用于拥有操作的示例系统200。两个soc可用于处理本文描述的操作——例如,关于图1a-1b。可在第一soc 210和第二soc 240之间划分操作。例如,第一soc 210可包括目标检测器212、车道图生成器214、对象车道分配器216、对象过滤器218、目标跟踪器220和/或一个或更多个控制组件222。第二soc 240可包括目标检测器242
–
例如,一个或更多个相机障碍感知模块。例如,第二soc 240可包括n个相机障碍感知模块,其余模块或过程可在第一soc 210上执行。在该示例中,网络260可用于在第一soc 210和第二soc 240的组件之间传递数据。在一些示例中,网络260可以利用传输控制协议(tcp)在两个soc之间传输数据。例如,第二soc 240的目标检测器242的输出可以经由网络260发送到车道图生成器214、对象车道分配器216、对象滤波器218、目标跟踪器220和/或第一soc 210的其他组件和/或由其使用以进行处理。所示的soc配置仅用于示例目的,并且可以使用附加和/或替代soc配置而不脱离本发明的范围。例如,在使用两个或多个soc的情况下,模块和/或相关任务可在soc之间划分,以提高效率和/或向流程提供额外资源。在一个或更多个实施例中,使用两个或多个soc可允许更多并行处理——不仅针对单个离散硬件组件,而且还跨两个或多个硬件组件。
56.现在参考图3a-3c,图3a-3c示出了根据本公开的一些实施例,应用于检测到的对象和检测到的车道之间的映射的示例对象过滤。例如,图3a示出了用于图像300的检测对象和从对象车道分配器(例如,对象车道分配器108)输出的检测车道之间的示例映射。可以使用边界框检测图像中的对象(例如,汽车312a-312r、314、316a-316b、318a-318c;步行320;红绿灯(322)。可将每个对象映射和/或分配给车道(例如,车道342a-342c)和/或不可驾驶区域(例如,不可驾驶区域344a-344c)。例如,汽车314可以映射到车道342c,汽车316a和316b可以映射到车道342a,行人320可以映射到不可驾驶区域344a,交通灯322可以映射到不可驾驶区域344b。
57.现在参考图3b,图3b示出了根据本公开的一些实施例,由对象过滤器(例如,对象过滤器110)基于车道信息生成的对象的示例过滤集。映射到除车辆当前车道(例如342b)、当前车道右邻车道(例如342a)、当前车道左邻车道(例如342c)以外的车道的对象可以从检测到的对象中过滤掉,以生成过滤后的对象集。然后,过滤的对象集可能包括映射到右相邻车道342a的汽车316a和316b、映射到左相邻车道342c的汽车314、行人320和交通灯322。例如,汽车312a-312r和汽车318a-318c可能会根据映射到当前车道当前车道的右侧相邻车道,以及当前车道的左侧相邻车道(例如,分隔带对面的车道,交叉交通车道)以外的车道而被过滤或丢弃。以这种方式,对象过滤器110可以移除存在于非必要车道中的非必要或非优先级对象,以生成过滤后的对象集。
58.参考图3c,图3c示出了根据本发明的一些实施例,由对象过滤器(例如,对象过滤器110)基于对象类生成的对象的示例剩余列表。可进一步过滤已过滤对象集中的对象(例如,汽车316a、汽车316b、汽车314、行人320、交通灯322)以移除对应于非必要对象类的对象。目标检测器104c的输出(例如,对象位置、分类)可用于确定过滤对象集中对应于非必要对象类的对象。因此,可移除行人320和交通灯322以生成剩余对象列表(例如,汽车316a、汽车316b、汽车314),如剩余边界框所示,作为与必要对象类相对应的必要对象。以这种方式,对象过滤器110可以在将剩余对象列表发送到目标跟踪器112进行跟踪之前,进一步移除与非必要对象类相对应的对象,以便最终实时或近实时地处理和/或执行安全驾驶操作。
59.现在参考图4-5,本文所述的方法400和500的每个块包括可使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。所述方法还可以实现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立或与另一个托管服务组合)或另一个产品的插件提供。此外,通过示例的方式,针对图1的过程100和120描述方法400和500。分别为1a和1b。然而,这些方法可以由任何一个系统或过程和系统的任何组合(包括但不限于本文所述的那些)在任何一个过程中另外或可选地执行。
60.图4是示出根据本公开的一些实施例的用于检测对象,然后过滤掉检测到的对象以减少计算成本,同时还减少有时限操作的运行时间的方法400的流程图。在框b402,方法400包括使用由自我车辆的一个或更多个传感器生成的传感器数据计算车道信息、目标检测信息和目标分类信息。例如,检测器104可以使用传感器数据102计算使用车道检测器104a的车道信息,以及使用目标检测器104c的目标检测信息和对象类信息。
61.在方框b404,方法400包括至少部分基于车道信息和目标检测信息生成表示车道第一位置和车道内对象第二位置的映射。例如,对象车道分配器108可以生成表示车道的第一位置和车道内对象的第二位置的映射。
62.在方框b406,方法400包括至少部分基于映射执行路径中对象分析(oipa),以确定车道子集内对象的第一子集。例如,对象过滤器110可以通过基于映射执行oipa分析来确定对象的第一子集(例如,过滤的对象集)。
63.在框b408,方法400包括至少部分基于目标分类信息确定与对象的第一子集的每个对象相关联的类。例如,对象过滤器110可以基于目标检测器104c输出的目标分类信息来确定与第一对象子集的每个对象相关联的类。
64.在框b410,方法400包括至少部分基于类从对象的第一子集中过滤出一个或更多
个对象,以确定对象的第二子集。例如,对象过滤器110可以从对象的第一子集中过滤出一个或更多个对象(例如,对应于非必要对象类的对象),以基于类确定对象的第二子集(例如,剩余对象列表)。
65.在框b412,方法400包括将代表对象的第二子集的数据传输到用于跟踪对象的第二子集的目标跟踪算法。例如,代表对象的第二子集的数据可以被发送到目标跟踪器112以跟踪对象的第二子集。
66.图5是根据本公开的一些实施例的流程图,显示了用于检测对象,然后过滤掉检测到的对象以减少计算成本,同时还减少有时限操作的运行时间的方法500。在方框b502,方法500包括使用由自我车辆的一个或更多个传感器生成的传感器数据计算车道信息和目标检测信息。例如,检测器104可以使用传感器数据102计算使用车道检测器104a的车道信息和使用目标检测器104c的目标检测信息。
67.在方框b504,方法500包括将对象定位到车道,以至少部分基于车道信息和目标检测信息生成映射。例如,对象车道分配器108可以基于车道检测器104a和目标检测器104c的输出生成将对象定位到车道的映射。
68.在方框b506,方法500包括至少部分基于地图和车道位置标准确定车道子集内的对象子集。例如,对象过滤器110可以基于映射和对象类信息确定车辆当前车道、当前车道的右相邻车道和当前车道的左相邻车道内的过滤对象集和/或剩余对象列表的位置。
69.在框b508,方法500包括将代表对象子集的数据传输到目标跟踪算法,用于跟踪对象的第二子集。例如,代表经过滤的对象集和/或剩余对象列表的数据可被发送到目标跟踪器112,以跟踪经过滤对象集和/或剩余对象列表。
70.示例自动驾驶车辆
71.图6a是根据本发明的一些实施例的示例性自主车辆600的图示。自动驾驶车辆600(或者在本文中称为“车辆600”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、第一响应车辆、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、施工车辆,水下航行器、无人机和/或其他类型的交通工具(例如,无人驾驶和/或容纳一名或更多名乘客的交通工具)。自动驾驶车辆通常按照自动化水平进行描述,由美国交通部下属的国家公路交通安全管理局(nhtsa)定义,以及美国汽车工程师学会(sae)“道路机动车辆驾驶自动化系统相关术语的分类和定义”(标准编号:j3016-201806,于2018年6月15日发布,标准编号:j3016-201609,于2016年9月30日发布,以及本标准的先前和未来版本)。车辆600可以根据自动驾驶级别的3级至5级中的一个或更多个实现功能。例如,根据实施例,车辆600可以具有条件自动化(级别3)、高自动化(级别4)和/或全自动化(级别5)。
72.车辆600可包括底盘、车身、车轮(例如,2、4、6、8、18等)、轮胎、车轴和车辆的其他部件。车辆600可包括推进系统650,例如内燃机、混合动力发电厂、全电动发动机和/或其他推进系统类型。推进系统650可连接至车辆600的传动系,该传动系可包括变速器,以实现车辆600的推进。推进系统650可响应于接收来自节流阀/加速器652的信号进行控制。
73.当推进系统650运行时(例如,当车辆运动时),可使用包括方向盘的转向系统654来引导车辆600(例如,沿着所需路径或路线)。转向系统654可以接收来自转向致动器656的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
74.制动传感器系统646可用来响应于从制动致动器648和/或制动传感器接收到的信
号而操作车辆制动器。
75.一个或更多个控制器636可包括一个或更多个片上系统(soc)604(图6c)和/或一个或更多个gpu,可向车辆600的一个或更多个部件和/或系统提供信号(例如,代表命令)。例如,一个或更多个控制器可通过一个或更多个制动致动器648发送信号以操作车辆制动器,通过一个或更多个转向致动器656操作转向系统654,通过一个或更多个油门/加速器652操作推进系统650。一个或更多个控制器636可包括一个或更多个车载(例如,集成)计算设备(例如,超级计算机),其处理传感器信号,并输出操作命令(例如,表示命令的信号),以启用自动驾驶和/或协助人类驾驶员驾驶车辆600。一个或更多个控制器636可包括用于自动驾驶功能的第一控制器636、用于功能安全功能的第二控制器636、用于人工智能功能的第三控制器636(例如,计算机视觉),用于信息娱乐功能的第四控制器636,用于紧急情况下冗余的第五控制器636,和/或其他控制器。在一些示例中,单个控制器636可处理上述功能中的两个或更多个,两个或更多个控制器636可处理单个功能和/或其任何组合。
76.一个或更多个控制器636可提供用于控制车辆600的一个或更多个部件和/或系统的信号,以响应从一个或更多个传感器接收的传感器数据(例如,传感器输入)。传感器数据可从例如但不限于一个或更多个全球导航卫星系统传感器658(例如,一个或更多个全球定位系统传感器)、一个或更多个雷达传感器660、一个或更多个超声波传感器662、一个或更多个激光雷达传感器664、一个或更多个惯性测量单元(imu)传感器666(例如,一个或更多个加速计、一个或更多个陀螺仪、一个或更多个磁罗盘)接收,磁强计等)、一个或更多个麦克风696、一个或更多个立体相机668、一个或更多个广角相机670(如鱼眼相机)、一个或更多个红外相机672、一个或更多个环绕相机674(如360度相机)、一个或更多个远程和/或中频相机698、一个或更多个速度传感器644(如用于测量车辆600的速度)、一个或更多个振动传感器642、一个或更多个转向传感器640、一个或更多个制动传感器(例如,作为制动传感器系统646的一部分)和/或其他传感器类型。
77.控制器636中的一个或更多个可以从车辆600的仪表组632接收输入(例如,由输入数据表示),并通过人机接口(hmi)显示器634、音频信号器、扬声器等和/或通过车辆600的其他部件提供输出(例如,由输出数据表示、显示数据等)。输出可包括诸如车辆速度、速率、时间、地图数据(例如,图6c的hd地图622)、位置数据(例如,车辆600的位置,例如地图上的位置)、方向、其他车辆的位置(例如,占用网格)等信息,一个或更多个控制器636感知到的关于对象和对象状态的信息等。例如,hmi显示器634可以显示关于一个或更多个对象存在的信息(例如,街道标志、警告标志、交通灯改变等),和/或关于车辆已进行、正在进行、或将进行的驾驶操作的信息(例如,现在换车道,两英里后从34b出口驶出等)。
78.车辆600还包括网络接口624,其可使用一个或更多个无线天线626和/或调制解调器通过一个或更多个网络进行通信。例如,网络接口624可以能够通过lte、wcdma、umts、gsm、cdma2000等进行通信。一个或更多个无线天线626还可以使用一个或更多个局域网(例如蓝牙、蓝牙le、z波、zigbee等和/或低功耗广域网(lpwan),如lorawan、sigfox等)在环境中的对象(例如,车辆、移动设备等)之间实现通信。
79.图6b是根据本发明的一些实施例的图6a的示例性自主车辆600的相机位置和视野示例。相机和各自的视野是一个示例实施例,并不旨在限制。例如,可包括附加和/或替代相机和/或相机可位于车辆600上的不同位置。
80.相机的相机类型可包括但不限于数字相机,该相机可适用于车辆600的部件和/或系统。一个或更多个相机可在汽车安全完整性等级(asil)b和/或其他asil下运行。根据实施例,相机类型可以具有任何图像捕获速率,例如每秒60帧(fps)、120帧、240帧等。相机可以使用卷帘式快门、全局快门、另一种类型的快门或其组合。在一些示例中,滤色器阵列可包括红色透明(rccc)滤色器阵列、红色透明蓝色(rccb)滤色器阵列、红蓝绿色透明(rbgc)滤色器阵列、foveon x3滤色器阵列、拜耳传感器(rggb)滤色器阵列、单色传感器滤色器阵列、和/或其他类型的滤色器阵列。在一些实施例中,可以使用清晰像素相机,例如具有rccc、rccb和/或rbgc滤色器阵列的相机,以努力提高光灵敏度。
81.在一些示例中,一个或更多个摄像头可用于执行高级驾驶员辅助系统(adas)功能(例如,作为冗余或故障安全设计的一部分)。例如,可安装多功能单摄像头,以提供车道偏离警告、交通标志辅助和智能前照灯控制等功能。一个或更多个相机(例如,所有相机)可以同时记录和提供图像数据(例如,视频)。
82.一个或更多个摄像头可安装在安装组件中,如定制设计(3d打印)组件,以切断可能干扰摄像头图像数据捕获能力的杂散光和车内反射(例如,挡风玻璃后视镜反射的仪表板反射)。关于翼镜安装组件,翼镜组件可定制3d打印,以便摄像头安装板与翼镜形状匹配。在一些示例中,一个或更多个相机可以集成到机翼后视镜中。对于侧视图相机,一个或更多个相机也可以集成在驾驶室每个拐角的四根立柱内。
83.具有包括车辆600前方环境部分的视野的相机(例如,前置相机)可用于环绕视图,以帮助识别前向路径和障碍物,以及在一个或更多个控制器636和/或控制soc的帮助下,辅助提供对生成占用网格和/或确定首选车辆路径至关重要的信息。前置相机可用于执行许多与激光雷达相同的adas功能,包括紧急制动、行人检测和防撞。前向摄像头也可用于adas功能和系统,包括车道偏离警告(“ldw”)、自动巡航控制(“acc”)和/或其他功能,如交通标志识别。
84.各种相机可用于前置配置,包括例如包括cmos(互补金属氧化物半导体)彩色成像仪的单目相机平台。另一个示例可以是可用于感知从外围进入视野的对象(例如,行人、交叉交通或自行车)的广角相机670。尽管图6b中仅示出了一个广角相机,但车辆600上可能有任意数量的广角相机670。此外,一个或更多个远程相机698(例如,长角立体相机对)可用于基于深度的对象检测,特别是对于尚未训练神经网络的对象。一个或更多个远程相机698还可用于对象检测和分类以及基本目标跟踪。
85.一个或更多个立体相机668也可包括在前置配置中。一个或更多个立体相机668可以包括集成控制单元,该集成控制单元包括可扩展处理单元,该可扩展处理单元可以在单个芯片上提供可编程逻辑(fpga)和具有集成can或以太网接口的多核微处理器。该单元可用于生成车辆环境的三维地图,包括图像中所有点的距离估计。一个或更多个可替代的立体相机668可包括紧凑型立体视觉传感器,该传感器可包括两个相机镜头(左右各一个)和图像处理芯片,该图像处理芯片可测量从车辆到目标对象的距离并使用生成的信息(例如,元数据)以激活自动紧急制动和车道偏离警告功能。除了本文所述的立体相机之外,或者可选地,可以使用其他类型的立体相机668。
86.具有包括车辆600侧面环境部分的视野的相机(例如,侧视相机)可用于环绕视图,提供用于创建和更新占用网格以及生成侧面碰撞警告的信息。例如,一个或更多个环绕相
机674(例如,如图6b所示的四个环绕相机674)可定位在车辆600上。一个或更多个环绕相机674可包括一个或更多个广角相机670、一个或更多个鱼眼相机、一个或更多个360度相机等。例如,四个鱼眼相机可位于车辆的前部、后部和侧面。在替代布置中,车辆可使用三个环绕摄像头674(例如,左、右和后),并可利用一个或更多个其他摄像头(例如,前置相机)作为第四个环绕视图相机。
87.具有包括车辆600后部环境部分的视野的相机(例如,后视相机)可用于泊车辅助、环绕视野、追尾警告以及创建和更新占用网格。可以使用多种相机,包括但不限于也适合作为前置相机的相机(例如,一个或更多个远程和/或中程相机698、一个或更多个立体相机668、一个或更多个红外相机672等),如本文所述。
88.图6c是根据本发明的一些实施例的图6a的示例性自主车辆600的示例性系统架构的框图。应理解,本文所述的此布置和其它布置仅作为示例阐述。除了所示的布置和元件之外,还可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),或者可以使用其他布置和元件代替所示布置和元件,并且可以完全省略一些元件。此外,本文所描述的许多元件是功能实体,其可以作为离散或分布式组件实现,或者与其他组件结合实现,并且可以以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以通过硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。
89.图6c中车辆600的每个部件、特征和系统均通过总线602连接。总线602可包括控制器局域网(can)数据接口(在本文中也可称为“can总线”)。can可以是车辆600内的网络,用于帮助控制车辆600的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刮器等的驱动。can总线可以配置为具有数十个甚至数百个节点,每个节点具有其自己的唯一标识符(例如,can id)。可以读取can总线以查找方向盘角度、地速(ground speed,)、每分钟发动机转速(rpm)、按钮位置和/或其他车辆状态指示灯。can总线可以符合asil b标准。
90.尽管总线602在本文中被描述为can总线,但这并非旨在限制。例如,除了can总线之外,或者从can总线,还可以使用flexray和/或以太网。此外,尽管使用单线表示总线602,但这并旨在限制性的。例如,可以存在任意数量的总线602,其可以包括一个或更多个can总线、一个或更多个flexray总线、一个或更多个以太网总线和/或使用不同协议的一个或更多个其他类型的总线。在一些示例中,两个或更多个总线602可用于执行不同的功能,和/或可用于冗余。例如,第一总线602可用于碰撞避免功能,第二总线602可用于驱动控制。在任何示例中,每条总线602可与车辆600的任何部件通信,且两条或更多条总线602可与相同部件通信。在一些示例中,车辆内的每个soc 604、每个控制器636和/或每个计算机可以访问相同的输入数据(例如,来自车辆600的传感器的输入),并且可以连接到公共总线,例如can总线。
91.车辆600可包括一个或更多个控制器636,如本文关于图6a所述的控制器。控制器636可用于各种功能。一个或更多个控制器636可以耦合到车辆600的各种其他组件和系统中的任何一个,并且可以用于控制车辆600、车辆600的人工智能、车辆600的信息娱乐等。
92.车辆600可包括一个或更多个片上系统(soc)604。soc 604可包括一个或更多个cpu 606、一个或更多个gpu 608、一个或更多个处理器610、一个或更多个高速缓存612、一个或更多个加速器614、一个或更多个数据存储616和/或未示出的其他组件和特征。一个或更多个soc 604可用于控制各种平台和系统中的车辆600。例如,一个或更多个soc 604可以
与hd地图622组合在系统(例如,车辆600的系统)中,hd地图622可以经由网络接口624从一个或更多个服务器(例如,图6d的服务器678)获得地图刷新和/或更新。
93.一个或更多个cpu 606可以包括cpu集群或cpu复合体(或者在本文中称为“ccplex”)。一个或更多个cpu 606可以包括多个核心和/或二级高速缓存。例如,在一些实施例中,一个或更多个cpu 606可以包括相干多处理器配置中的八个核。在一些实施例中,一个或更多个cpu 606可包括四个双核集群,其中每个集群具有专用二级缓存(例如,2mb二级高速缓存)。一个或更多个cpu 606(例如,ccplex)可被配置为支持同时集群操作,使得cpu 606的集群的任何组合在任何给定时间处于活动状态。
94.一个或更多个cpu 606可实现包括以下一个或更多个特征的功率管理能力:单个硬件块可在空闲时自动时钟选通以节省动态功率;当内核由于执行wfi/wfe指令而未主动地执行指令时,可以对每个内核时钟进行选通;每个核心可以独立地进行功率选通;当所有核心都被时钟选通或电源选通时,每个核心集群可以独立地进行时钟选通;和/或当所有核心都是功率选通时,每个核心集群可以独立地功率选通。一个或更多个cpu 606可以进一步实现用于管理功率状态的增强算法,其中指定了允许的功率状态和预期唤醒时间,并且硬件/微码确定为核心、集群和ccplex进入的最佳电源状态。处理核心可支持软件中简化的电源状态输入序列,并将工作卸载到微码。
95.一个或更多个gpu 608可以包括集成的gpu(或者在本文中称为“igpu”)。gpu 608可以是可编程的,并且可以对并行工作负载是高效的。在一些示例中,一个或更多个gpu 608可以使用增强的张量指令集。一个或更多个gpu 608可以包括一个或更多个流微处理器,其中每个流微处理器可以包括一级高速缓存(例如,具有至少96kb存储容量的一级高速缓存),并且两个或更多个流微处理器可以共享二级高速缓存(例如,具有512kb存储容量的二级高速缓存)。在一些实施例中,一个或更多个gpu 608可包括至少八个流式微处理器。一个或更多个gpu 608可以使用一个或更多个计算应用程序编程接口(api)。此外,一个或更多个gpu 608可以使用一个或更多个并行计算平台和/或编程模型(例如,nvidia的cuda)。
96.一个或更多个gpu 608可进行功率优化,以在汽车和嵌入式用例中获得最佳性能。例如,一个或更多个gpu 608可在鳍型场效应晶体管(finfet)上制造。然而,这并非旨在限制,并且可以使用其他半导体制造工艺来制造一个或更多个gpu 608。每个流式微处理器可合并多个分割成多个块的混合精度处理核心。例如,但不限于,64个pf32核和32个pf64核可被划分为四个处理块。在这样的示例中,可以为每个处理块分配16个fp32核、8个fp64核、16个int32核、两个用于深度学习矩阵算法的混合精度nvidia张量核、l0指令高速缓存、线程束调度器、分派单元和/或64kb寄存器文件。此外,流式微处理器可包括独立的并行整数和浮点数据路径,以通过混合计算和寻址计算来提供工作负载的有效执行。流式微处理器可以包括独立的线程调度能力,以实现并行线程之间更细粒度的同步和协作。流式微处理器可以包括组合的一级数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。
97.一个或更多个gpu 608可包括高带宽存储器(hbm)和/或16gb hbm2存储器子系统,以在一些示例中提供约900gb/秒峰值存储器带宽。在一些示例中,除了hbm存储器之外,或者可选地从hbm存储器使用同步图形随机存取存储器(sgram),例如第五代图形双数据速率同步随机存取存储器(gddr5)。
98.第五代gpu 608可包括统一内存技术,其包括访问计数器,以允许更准确地将内存
页迁移到最频繁访问它们的处理器,从而提高处理器之间共享内存范围的效率。在一些示例中,地址转换服务(ats)支持可用于允许一个或更多个gpu 608直接访问一个或更多个cpu 606页表。在这样的示例中,当一个或更多个gpu 608存储器管理单元(mmu)经历未命中时,地址转换请求可被发送到一个或更多个cpu 606。作为响应,一个或更多个cpu 606可在其页表中查找地址的虚拟到物理映射,并将转换发送回一个或更多个gpu 608。因此,统一存储器技术可允许一个或更多个cpu 606和一个或更多个gpu 608两者的存储器的单个统一虚拟地址空间,从而简化一个或更多个gpu 608编程和将应用程序移植到一个或更多个gpu 608。
99.此外,一个或更多个gpu 608可包括访问计数器,其可跟踪一个或更多个gpu 608对其他处理器的存储器的访问频率。访问计数器可帮助确保将内存页移动到访问页面最频繁的处理器的物理内存中。
100.一个或更多个soc 604可包括任意数量的高速缓存612,包括本文所述的高速缓存612。例如,一个或更多个高速缓存612可以包括对一个或更多个cpu 606和一个或更多个gpu 608(例如,连接一个或更多个cpu 606和一个或更多个gpu 608两者)都可用的l3高速缓存。高速缓存612可包括可跟踪线的状态的回写高速缓存,例如通过使用高速缓存一致性协议(例如,mei、mesi、msi等)。尽管可以使用较小的缓存大小,但根据实施例,l3缓存可以包括4mb或更多。
101.一个或更多个soc 604可包括一个或更多个算术逻辑单元(alu),该算术逻辑单元可用于执行与车辆600的各种任务或操作相关的处理,例如处理dnn。此外,一个或更多个soc 604可包括用于在系统内执行数学运算的一个或更多个浮点单元(fpu)或其他数学协处理器或数字协处理器类型。例如,一个或更多个soc 104可以包括集成为cpu 606和/或gpu 608内的执行单元的一个或更多个fpu。
102.一个或更多个soc 604可包括一个或更多个加速器614(例如,硬件加速器、软件加速器或其组合)。例如,一个或更多个soc 604可以包括硬件加速集群,该硬件加速集群可以包括优化的硬件加速器和/或大型片上存储器。大型片上存储器(例如4mb的sram)可以使硬件加速集群加速神经网络和其他计算。硬件加速集群可用于补充一个或更多个gpu 608并卸载一个或更多个gpu 608的一些任务(例如,释放一个或更多个gpu 608的更多周期以执行其他任务)。例如,一个或更多个加速器614可用于足够稳定以适于加速的目标工作负载(例如,感知、卷积神经网络(cnn)等)。本文使用的术语“cnn”可包括所有类型的cnn,包括基于区域或区域卷积神经网络(rcnn)和快速rcnn(例如,用于目标检测)。
103.一个或更多个加速器614(例如,硬件加速集群)可包括一个或更多个深度学习加速器(dla)。一个或更多个dla可包括一个或更多个张量处理单元(tpu),其可被配置为每秒为深度学习应用和推理提供额外的10万亿操作。tpu可以是配置为执行图像处理功能(例如,用于cnn、rcnn等)并针对其进行优化的加速器。一个或更多个dla还可以针对特定的神经网络类型和浮点运算以及推理进行优化。一个或更多个dla的设计可以提供比通用gpu更高的每毫米性能,并且大大超过cpu的性能。一个或更多个tpu可以执行多个功能,包括单实例卷积功能,例如,支持特征和权重的int8、int16和fp16数据类型,以及后处理器功能。
104.一个或更多个dla可针对各种功能中的任何一种,在处理或未处理的数据上快速有效地执行神经网络,尤其是cnn,包括但不限于:用于使用来自相机传感器的数据进行对
象识别和检测的cnn;利用相机传感器的数据进行距离估计的cnn;用于紧急车辆检测和识别并使用麦克风数据进行检测的cnn;用于使用来自摄像头传感器的数据来进行面部识别和车主识别的cnn;和/或用于安全和/或安全相关事件的cnn。
105.一个或更多个dla可以执行一个或更多个gpu 608的任何功能,例如,通过使用推理加速器,设计者可以针对一个或更多个dla或一个或更多个gpu 608执行任何功能。例如,设计者可以将cnn和浮点操作的处理集中在一个或更多个dla上,并将其他功能留给一个或更多个gpu 608和/或一个或更多个其他加速器614。
106.一个或更多个加速器614(例如,硬件加速集群)可包括可编程视觉加速器(pva),其在本文中也可称为计算机视觉加速器。一个或更多个pva可设计和配置为加速用于高级驾驶员辅助系统(adas)、自动驾驶和/或增强现实(ar)和/或虚拟现实(vr)应用的计算机视觉算法。一个或更多个pva可在性能和灵活性之间提供平衡。例如,每个pva可包括例如但不限于任何数量的精简指令集计算机(risc)内核、直接存储器访问(dma)和/或任何数量的向量处理器。
107.risc内核可与图像传感器(例如,本文所述的任何相机的图像传感器)、一个或更多个图像信号处理器等交互。每个risc核可以包括任意数量的存储器。risc核心可以使用多种协议中的任何一种,具体取决于实施例。在一些示例中,risc内核可以执行实时操作系统(rtos)。risc核心可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储器设备来实现。例如,risc内核可以包括指令高速缓存和/或紧密耦合的ram。
108.dma可使pva组件独立于一个或更多个cpu 606访问系统内存。dma可支持用于优化pva的任何功能,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,dma可支持多达六个或更多维度的寻址,其可包括块宽度、块高度、块深度、水平块步进、垂直块步进和/或深度步进。
109.矢量处理器可以是可编程处理器,其设计可以高效灵活地执行计算机视觉算法的编程,并提供信号处理能力。在一些示例中,pva可包括pva核心和两个向量处理子系统分区。pva核心可包括处理器子系统、一个或更多个dma引擎(例如,两个dma引擎)和/或其他外围设备。向量处理子系统可以作为pva的主处理引擎运行,并且可以包括向量处理单元(vpu)、指令高速缓存和/或向量存储器(例如vmem)。vpu核心可以包括数字信号处理器,例如,单指令、多数据(simd),超长指令字(vliw)数字信号处理器。simd和vliw的结合可以提高吞吐量和速度。
110.每个向量处理器可包括指令高速缓存,并可耦合至专用存储器。结果,在一些示例中,每个向量处理器可被配置为独立于其他向量处理器执行。在其他示例中,包括在特定pva中的向量处理器可被配置为采用数据并行。例如,在一些实施例中,包括在单个pva中的多个向量处理器可以在图像的不同区域上执行相同的计算机视觉算法。在其他示例中,包括在特定pva中的向量处理器可以在同一图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或图像的部分上执行不同的算法。除其他事项外,任何数量的pva可以包括在硬件加速集群中,并且任何数量的向量处理器可以包括在每个pva中。此外,pva可包括额外的纠错码(ecc)存储器,以增强整体系统安全性。
111.一个或更多个加速器614(例如,硬件加速集群)可包括计算机视觉网络片上和sram,用于为一个或更多个加速器614提供高带宽、低延迟sram。在一些示例中,片上存储器
可包括至少4mb sram,包括但不限于,八个现场可配置内存块,可由pva和dla访问。每对存储器块可以包括高级外围总线(apb)接口、配置电路、控制器和多路复用器。可以使用任何类型的存储器。pva和dla可通过为pva和dla提供高速内存访问的主干线访问内存。主干可包括将pva和dla互连至存储器(例如,使用apb)的片上计算机视觉网络。
112.片上计算机视觉网络可包括一个接口,该接口在传输任何控制信号/地址/数据之前,确定pva和dla均提供就绪且有效的信号。这种接口可以提供用于传输控制信号/地址/数据的独立相位和独立信道,以及用于连续数据传输的突发式通信。此类接口可符合iso 26262或iec 61508标准,但也可使用其他标准和协议。
113.在一些示例中,一个或更多个soc 604可包括实时光线跟踪硬件加速器,如2018年8月10日提交的第16/101232号美国专利申请中所述。实时光线跟踪硬件加速器可用于快速有效地确定对象的位置和范围(例如,在世界模型内),生成实时可视化模拟,用于雷达信号解释、声音传播合成和/或分析、声纳系统模拟、一般波传播模拟、与激光雷达数据进行比较,以用于定位和/或其他功能和/或其他用途。在一些实施例中,一个或更多个树遍历单元(ttu)可用于执行一个或更多个射线跟踪相关操作。
114.一个或更多个加速器614(例如,硬件加速器集群)在自动驾驶方面有着广泛的用途。pva可能是一种可编程视觉加速器,可用于ada和自动驾驶车辆的关键加工阶段。pva的能力非常适合需要以功耗低且延迟低进行可预测处理的算法域。换句话说,pva在半密集或常规密集计算上表现良好,即使在小数据集上也是如此,这些数据集需要低延迟和低功耗的可预测运行时间。因此,在自主车辆平台的背景下,pva被设计为运行经典的计算机视觉算法,因为它们在目标检测和整数数学运算方面非常有效。
115.例如,根据本技术的一个实施例,pva用于执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,尽管这不是为了限制。3-5级自主驾驶的许多应用需要即时运动估计/立体匹配(例如,运动结构、行人识别、车道检测等)。pva可对来自两个单目相机的输入执行计算机立体视觉功能。
116.在一些示例中,pva可用于执行密集光流。根据处理原始雷达数据(例如,使用4d快速傅里叶变换)提供处理后的雷达。在其他示例中,pva用于飞行时间深度处理,例如,通过处理原始飞行时间数据来提供处理后的飞行时间数据。
117.dla可用于运行任何类型的网络,以增强控制和驾驶安全性,例如,包括为每个目标检测输出置信度测量值的神经网络。这样的置信值可以解释为概率,或者提供每个检测相对于其他检测的相对“权重”。该置信值使系统能够进一步决定哪些检测应被视为真阳性检测而不是假阳性检测。例如,系统可以设置置信度的阈值,并且仅考虑超过阈值的检测作为真阳性检测。在自动紧急制动(aeb)系统中,假阳性检测将导致车辆自动执行紧急制动,这显然是不希望的。因此,只有最可靠的检测才应被视为aeb的触发因素。dla可以运行神经网络来回归置信值。神经网络可将至少一些参数子集作为其输入,例如边界框尺寸、获得的地平面估计(例如,从另一子系统)、与车辆600方位、距离相关的惯性测量单元(imu)传感器666输出,从神经网络和/或其他传感器(例如,激光雷达传感器664或雷达传感器660)等获得的对象的三维位置估计。
118.一个或更多个soc 604可包括一个或更多个数据存储616(例如存储器)。数据存储616可以是soc 604的片上存储器,其可以存储要在gpu和/或dla上执行的神经网络。在一些
示例中,数据存储616的容量可以足够大,以存储用于冗余和安全的多个神经网络实例。数据存储612可包括二级或三级高速缓存612。如本文所述,对一个或更多个数据存储616的引用可包括对与pva、dla和/或一个或更多个其他加速器614相关联的存储器的引用。
119.一个或更多个soc 604可包括一个或更多个处理器610(例如嵌入式处理器)。处理器610可以包括引导和电源管理处理器,该处理器可以是专用处理器和子系统,用于处理引导电源和管理功能以及相关安全实施。引导和电源管理处理器可以是一个或更多个soc 604引导序列的一部分,并且可以提供运行时电源管理服务。引导电源和管理处理器可提供时钟和电压编程、系统低电源状态转换协助、soc 604热传感器和温度传感器的管理和/或soc 604电源状态的管理。每个温度传感器可实现为输出频率与温度成比例的环形振荡器,并且一个或更多个soc 604可使用环形振荡器检测一个或更多个cpu 606、一个或更多个gpu 608和/或一个或更多个加速器614的温度。如果确定温度超过阈值,引导和电源管理处理器可进入温度故障例行程序,并将一个或更多个soc 604置于低功率状态和/或将车辆600置于司机安全停车模式(例如,使车辆600安全停车)。
120.一个或更多个处理器610还可包括一组可作为音频处理引擎的嵌入式处理器。音频处理引擎可以是音频子系统,该音频子系统能够通过多个接口和广泛且灵活的音频i/o接口实现对多通道音频的完全硬件支持。在一些示例中,音频处理引擎是具有专用ram的数字信号处理器的专用处理器核心。
121.一个或更多个处理器610还可包括常开处理器引擎,该引擎可提供必要的硬件功能,以支持低功耗传感器管理和唤醒用例。常开处理器引擎可以包括处理器核心、紧密耦合的ram、支持外围设备(例如定时器和中断控制器)、各种i/o控制器外围设备和路由逻辑。
122.一个或更多个处理器610还可包括安全集群引擎,该引擎包括专用处理器子系统,用于处理汽车应用的安全管理。安全集群引擎可以包括两个或更多个处理器核心、紧密耦合的ram、支持外围设备(例如定时器、中断控制器等)和/或路由逻辑。在安全模式下,两个或多个内核可在锁步模式下运行,并作为具有比较逻辑的单个内核运行,以检测其操作之间的任何差异。
123.一个或更多个处理器610还可包括实时相机引擎,该引擎可包括用于处理实时相机管理的专用处理器子系统。
124.一个或更多个处理器610还可以包括高动态范围信号处理器,该处理器可以包括图像信号处理器,该图像信号处理器是作为相机处理管道一部分的硬件引擎。
125.一个或更多个处理器610可包括视频图像合成器,该视频图像合成器可为处理块(例如,在微处理器上实现),其实现视频回放应用程序所需的视频后处理功能,以生成播放器窗口的最终图像。视频图像合成器可在一个或更多个广角相机670、一个或更多个环绕相机674和/或驾驶舱内监控相机传感器上执行镜头失真校正。驾驶舱内监控相机传感器优选地由运行在高级soc的另一实例上的神经网络监控,该神经网络被配置为识别舱内事件并相应地响应。驾驶舱内系统可执行唇读,以激活蜂窝服务和拨打电话、口述电子邮件、更改车辆目的地、激活或更改车辆的信息娱乐系统和设置,或提供语音激活的网络冲浪。某些功能仅在车辆以自动模式运行时才可供驾驶员使用,否则将禁用。
126.视频图像合成器可包括用于空间和时间降噪的增强的时间降噪。例如,在视频中发生运动的情况下,噪声降低适当地加权空间信息,从而减小由相邻帧提供的信息的权重。
在图像或图像的一部分不包括运动的情况下,由视频图像合成器执行的时间噪声降低可以使用来自前一图像的信息来降低当前图像中的噪声。
127.视频图像合成器也可配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用时,视频图像合成器还可用于用户界面合成,并且不需要gpu 608连续渲染新表面。即使当一个或更多个gpu 608上电并且在进行3d渲染时处于活动状态,视频图像合成器也可用于卸载一个或更多个gpu 608以改进性能和响应性。
128.一个或更多个soc 604还可包括用于接收来自相机的视频和输入的移动工业处理器接口(mipi)相机串行接口、高速接口和/或可用于相机和相关像素输入功能的视频输入块。一个或更多个soc 604还可以包括一个或更多个输入/输出控制器,其可以由软件控制,并且可以用于接收未指定特定角色的i/o信号。
129.一个或更多个soc 604还可包括广泛的外围接口,以实现与外围设备、音频编解码器、电源管理和/或其他设备的通信。一个或更多个soc 604可用于处理来自相机(例如,通过千兆多媒体串行链路和以太网连接)、传感器(例如,可通过以太网连接的一个或更多个激光雷达传感器664、一个或更多个雷达传感器660等)、来自总线602的数据(例如,车辆600的速度、方向盘位置等)、来自一个或更多个gnss传感器658的数据(例如,通过以太网或can总线连接)。一个或更多个soc 604还可以包括专用的高性能大容量存储控制器,该控制器可以包括其自己的dma引擎,并且可以用于将一个或更多个cpu 606从常规数据管理任务中解放出来。
130.一个或更多个soc 604可以是一个端到端平台,具有灵活的体系架构,跨越自动化水平3-5,从而提供一个全面的功能安全体系架构,该体系架构利用并有效利用计算机视觉和adas技术实现多样性和冗余,为灵活可靠的驱动软件堆栈以及深度学习工具提供了平台。与传统系统相比,一个或更多个soc604可以更快、更可靠、甚至更节能和节省空间。例如,当一个或更多个加速器614与一个或更多个cpu 606、一个或更多个gpu 608和一个或更多个数据存储616组合时,可为3-5级自主车辆提供快速、高效的平台。
131.因此,该技术提供了传统系统无法实现的能力和功能。例如,计算机视觉算法可以在cpu上执行,cpu可以使用高级编程语言(例如c编程语言)来配置,以在各种各样的视觉数据上执行各种各样的处理算法。然而,cpu通常无法满足许多计算机视觉应用程序的性能要求,例如与执行时间和功耗相关的应用程序。特别是,许多cpu无法实时执行复杂的目标检测算法,这是车载adas应用的要求,也是实际3-5级自主车辆的要求。
132.与传统系统相比,通过提供cpu复合体、gpu复合体和硬件加速集群,本文描述的技术允许同时和/或顺序执行多个神经网络,并允许将结果组合在一起以实现3-5级自主驾驶功能。例如,在dla或dgpu(例如,一个或更多个gpu 620)上执行的cnn可以包括文本和字识别,从而允许超级计算机读取和理解交通标志,包括神经网络尚未针对其专门训练的标志。dla还可以包括能够识别、解释和提供符号的语义理解的神经网络,并将该语义理解传递给cpu复合体上运行的路径规划模块。
133.另一个例子是,可以同时运行多个神经网络,如3级、4级或5级驾驶所需。例如,由“警告:闪烁的灯光指示结冰情况”和电灯组成的警告标志可以由多个神经网络独立或共同解释。标志本身可通过第一个部署的神经网络(例如,经过训练的神经网络)识别为交通标志,文本“闪光灯指示结冰条件”可由第二个部署的神经网络解释,当检测到闪光灯时,通知
车辆路径规划软件(优选地在cpu复合体上执行)存在结冰情况。可通过在多个帧上操作第三个部署的神经网络来识别闪光灯,通知车辆路径规划软件是否存在闪光灯。所有三个神经网络可同时运行,例如在dla内和/或在一个或更多个gpu 608上。
134.在一些示例中,用于面部识别和车主识别的cnn可使用相机传感器的数据来识别经授权的驾驶员和/或车辆600的所有者的存在。当所有者靠近驾驶员车门并打开车灯时,可使用常开传感器处理引擎解锁车辆,以及,在安全模式下,当所有者离开车辆时禁用车辆。通过这种方式,一个或更多个soc 604提供了防盗和/或劫车保护。
135.在另一个示例中,用于紧急车辆检测和识别的cnn可使用来自麦克风696的数据来检测和识别紧急车辆警报器。与使用通用分类器检测警报器和手动提取特征的传统系统不同,一个或更多个soc(s)604使用cnn对环境和城市声音进行分类,以及对视觉数据进行分类。在优选实施例中,对dla上运行的cnn进行训练以识别紧急车辆的相对关闭速度(例如,通过使用多普勒效应)。cnn还可接受训练,以识别特定于车辆运行区域的应急车辆,如一个或更多个gnss传感器658所识别。因此,例如,当在欧洲运行时,cnn将寻求检测欧洲警报,当在美国时,cnn将寻求仅识别北美警报。一旦检测到紧急车辆,可使用控制程序在超声波传感器662的帮助下执行紧急车辆安全例行程序,使车辆减速、靠边停车、停车和/或使车辆怠速,直到一个或更多个紧急车辆通过。
136.车辆可包括一个或更多个cpu 618(例如,一个或更多个离散cpu或一个或更多个dcpu),其可通过高速互连(例如pcie)耦合至一个或更多个soc 604。例如,一个或更多个cpu 618可以包括x86处理器。cpu 618可用于执行各种功能中的任何一种,包括仲裁adas传感器和soc 604之间可能不一致的结果,和/或监测一个或更多个控制器636和/或信息娱乐soc 630的状态和健康状况。
137.车辆600可包括一个或更多个gpu 620(例如,一个或更多个离散gpu或一个或更多个dgpu),其可通过高速互连(例如,nvidia的nvlink)耦合至soc 604。一个或更多个gpu 620可以提供额外的人工智能功能,例如通过执行冗余和/或不同的神经网络,并且可以用于基于来自车辆600的传感器的输入(例如,传感器数据)训练和/或更新神经网络。
138.车辆600还可以包括网络接口624,网络接口624可以包括一个或更多个无线天线626(例如,用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等)。网络接口624可用于通过互联网实现与云(例如,与一个或更多个服务器678和/或其他网络设备)、与其他车辆和/或与计算设备(例如,乘客的客户端设备)的无线连接。为了与其他车辆通信,可在两辆车辆之间建立直接链路和/或建立间接链路(例如,通过网络和互联网)。可使用车对车通信链路提供直接链路。车辆到车辆通信链路可向车辆600提供关于车辆600附近车辆的信息(例如,车辆600前面、侧面和/或后面的车辆)。该功能可能是车辆600的协作自适应巡航控制功能的一部分。
139.网络接口624可包括提供调制和解调功能并使一个或更多个控制器636能够通过无线网络通信的soc。网络接口624可以包括用于从基带到射频的上转换和从射频到基带的下转换的射频前端。频率转换可以通过众所周知的过程来执行,和/或可以使用超外差过程来执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过lte、wcdma、umts、gsm、cdma2000、蓝牙、蓝牙le、wi-fi、z-wave、zigbee、lorawan和/或其他无线协议进行通信的无线功能。
140.车辆600可进一步包括一个或更多个数据存储628,其可包括片外(例如,soc外)。数据存储628可包括一个或更多个存储元件,包括ram、sram、dram、vram、闪存、硬盘和/或可存储至少一位数据的其他组件和/或设备。
141.车辆600还可包括一个或更多个gnss传感器658。一个或更多个gnss传感器658(例如,gps、辅助gps传感器、差分gps(dgps)传感器等)用于协助测绘、感知、占用网格生成和/或路径规划功能。可以使用任意数量的gnss传感器658,包括例如但不限于使用具有以太网到串行(rs-232)网桥的usb连接器的gps。
142.车辆600还可包括一个或更多个雷达传感器660。即使在黑暗和/或恶劣天气条件下,车辆600也可使用一个或更多个雷达传感器660进行远程车辆检测。雷达功能安全等级可以为asil b。一个或更多个雷达传感器660可以使用can和/或总线602(例如,传输由一个或更多个雷达传感器660生成的数据)进行控制和访问目标跟踪数据,在一些示例中,通过访问以太网访问原始数据。可使用多种雷达传感器类型。例如,但不限于,一个或更多个雷达传感器660可适用于前、后和侧面雷达使用。在一些示例中,使用脉冲多普勒雷达传感器。
143.一个或更多个雷达传感器660可包括不同的配置,例如窄视场的远程、宽视场的短程、短距离侧面覆盖等。在一些示例中,远程雷达可用于自适应巡航控制功能。远程雷达系统可提供通过两次或两次以上独立扫描实现的广阔视野,例如在250米范围内。一个或更多个雷达传感器660可帮助区分静态和移动对象,并可由adas系统用于紧急制动辅助和前向碰撞警告。远程雷达传感器可能包括具有多个(例如,六个或更多)固定雷达天线和高速can和flexray接口的单基地多模雷达。在具有六个天线的示例中,中央四个天线可创建聚焦波束图案,设计用于以较高速度记录车辆周围的600个环境,且相邻车道的交通干扰最小。另外两个天线可以扩大视野,使其能够快速检测进入或离开车辆600车道的车辆。
144.例如,中程雷达系统可包括高达660米(前)或80米(后)的范围,以及高达42度(前)或650度(后)的视野。短程雷达系统可能包括但不限于设计安装在后保险杠两端的雷达传感器。当安装在后保险杠两端时,此类雷达传感器系统可能会产生两束光束,持续监测车辆后部和旁边的盲点。
145.adas系统中可使用近程雷达系统进行盲点检测和/或车道变换辅助。
146.车辆600还可包括一个或更多个超声波传感器662。一个或更多个超声波传感器662可位于车辆600的前部、后部和/或侧面,可用于泊车辅助和/或创建和更新占用网格。可使用多种超声波传感器662,不同的超声波传感器662可用于不同的检测范围(例如,2.5m、4m)。一个或更多个超声波传感器662可在asil b的功能安全水平下工作。
147.车辆600可包括一个或更多个激光雷达传感器664。一个或更多个激光雷达传感器664可用于对象和行人检测、紧急制动、防撞和/或其他功能。一个或更多个激光雷达传感器664的功能安全等级可以为asil b。在一些示例中,车辆600可包括可使用以太网(例如,向千兆以太网交换机提供数据)的多个激光雷达传感器664(例如,两个、四个、六个等)。
148.在一些示例中,一个或更多个激光雷达传感器664可以能够提供360度视野中的对象及其距离列表。一个或更多个商用激光雷达传感器664的广告范围约为600m,准确度为2cm-3cm,并支持例如600mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的激光雷达传感器664。在此类示例中,一个或更多个激光雷达传感器664可作为小型设备实施,该小型设备可嵌入车辆600的前部、后部、侧面和/或角落。在此类示例中,一个或更多个
激光雷达传感器664可提供高达120度的水平和35度的垂直视野,即使对于低反射率对象,其范围也为200m。前安装的一个或更多个激光雷达传感器664可配置为45度到135度之间的水平视野。
149.在一些示例中,也可以使用激光雷达技术,如3d闪光激光雷达。3d闪光激光雷达使用激光闪光作为传输源,照亮车辆周围约200米。闪光激光雷达装置包括一个接收器,该接收器记录激光脉冲传输时间和每个像素上的反射光,而每个像素又对应于从车辆到对象的范围。闪光激光雷达可以利用每一次激光闪光生成高准确度、无失真的环境图像。在一些示例中,可部署四个闪光激光雷达传感器,一个位于车辆600的每侧。可用的3d闪光激光雷达系统包括固态3d凝视阵列激光雷达相机,除风扇(例如,非扫描激光雷达设备)外,无任何运动部件。闪光激光雷达设备每帧可使用5纳秒i类(眼睛安全)激光脉冲,并可捕获3d距离点云和共同寄存的强度数据形式的反射激光。通过使用闪光激光雷达,并且因为闪光激光雷达是没有运动部件的固态设备,所以一个或更多个激光雷达传感器664可以不易受到运动模糊、振动和/或冲击的影响。
150.车辆可能还包括一个或更多个imu传感器666。在一些示例中,一个或更多个imu传感器666可位于车辆600后轴的中心。一个或更多个imu传感器666可以包括例如但不限于一个或更多个加速计、一个或更多个磁强计、一个或更多个陀螺仪、一个或更多个磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,一个或更多个imu传感器666可包括加速计和陀螺仪,而在九轴应用中,一个或更多个imu传感器666可包括加速计、陀螺仪和磁强计。
151.在一些实施例中,一个或更多个imu传感器666可实现为微型、高性能gps辅助惯性导航系统(gps/ins),该系统结合了微电子机械系统(mems)惯性传感器、高灵敏度gps接收机和先进的卡尔曼滤波算法,以提供位置、速度、姿态的估计。因此,在一些示例中,一个或更多个imu传感器666可通过直接观察和关联从gps到一个或更多个imu传感器666的速度变化,使车辆600能够估计航向,而无需来自磁性传感器的输入。在一些示例中,一个或更多个imu传感器666和一个或更多个gnss传感器658可组合在单个集成单元中。
152.车辆可能包括放置在车辆600内和/或周围的一个或更多个麦克风696。一个或更多个麦克风696可用于紧急车辆检测和识别等。
153.车辆还可包括任意数量的相机类型,包括一个或更多个立体相机668、一个或更多个广角相机670、一个或更多个红外相机672、一个或更多个环绕相机674、一个或更多个远程和/或中程相机698和/或其他相机类型。相机可用于捕获车辆600整个外围的图像数据。使用的相机类型取决于车辆600的实施例和要求,相机类型的任何组合可用于提供车辆600周围的必要覆盖范围。此外,根据实施例,相机的数量可以不同。例如,车辆可包括六个相机、七个相机、十个相机、十二个相机和/或其他数量的相机。作为示例,相机可支持但不限于千兆多媒体串行链路(gmsl)和/或千兆以太网。本文将参照图6a和图6b更详细地描述每个照相机。
154.车辆600还可包括一个或更多个振动传感器642。一个或更多个振动传感器642可测量车辆部件(如车轴)的振动。例如,振动的变化可能表明路面的变化。在另一个示例中,当使用两个或多个振动传感器642时,振动之间的差异可用于确定路面的摩擦或滑动(例如,当振动差异在动力驱动轴和自由旋转轴之间时)。
155.车辆600可包括adas系统638。在一些示例中,adas系统638可包括soc。adas系统638可包括自动/自适应/自动巡航控制(acc)、协同自适应巡航控制(cacc)、前向碰撞警告(fcw)、自动紧急制动(aeb)、车道偏离警告(ldw)、车道保持辅助(lka)、盲点警告(bsw)、后交叉交通警告(rctw)、碰撞警告系统(cws),车道对中(lc)和/或其他特征和功能。
156.acc系统可使用一个或更多个雷达传感器660、一个或更多个激光雷达传感器664和/或一个或更多个相机。acc系统可包括纵向acc和/或横向acc。纵向acc监测和控制与车辆600正前方车辆的距离,并自动调整车速,以保持与前方车辆的安全距离。横向acc执行距离保持,并建议车辆600在必要时改变车道。侧向acc与其他adas应用相关,如lca和cws。
157.cacc使用来自其他车辆的信息,这些信息可通过网络接口624和/或一个或更多个无线天线626,通过无线链路,或通过网络连接(例如,通过互联网)间接从其他车辆接收。直接链路可以由车辆到车辆(v2v)通信链路提供,而间接链路可以是基础设施到车辆(i2v)通信链路。一般来说,v2v通信概念提供了关于前面车辆的信息(例如,车辆600正前方和同一车道上的车辆),而i2v通信概念提供了关于前方交通的信息。cacc系统可包括i2v和v2v信息源之一或两者。考虑到车辆600前方的车辆信息,cacc可能更可靠,并且有可能改善交通流的平稳性并减少道路上的拥堵。
158.fcw系统被设计为提醒驾驶员注意危险,以便驾驶员采取纠正措施。fcw系统使用耦合到专用处理器、dsp、fpga和/或asic的前向摄像头和/或一个或更多个雷达传感器660,该专用处理器、dsp、fpga和/或asic电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。fcw系统可提供警告,例如声音、视觉警告、振动和/或快速制动脉冲。
159.aeb系统检测到与其他车辆或其他对象即将发生的前向碰撞,如果驾驶员未在规定的时间或距离参数内采取纠正措施,aeb系统可能会自动应用制动器。aeb系统可使用耦合到专用处理器、dsp、fpga和/或asic的一个或更多个前置相机和/或一个或更多个雷达传感器660。当aeb系统检测到危险时,通常首先提醒驾驶员采取纠正措施以避免碰撞,如果驾驶员未采取纠正措施,aeb系统可自动应用制动器以防止或至少减轻预计碰撞的影响。aeb系统可包括动态制动支撑和/或碰撞迫近制动等技术。
160.ldw系统提供视觉、听觉和/或触觉警告,如方向盘或座椅振动,以在车辆600穿过车道标记时提醒驾驶员。当驾驶员通过激活转向信号指示有意偏离车道时,ldw系统不会激活。ldw系统可使用耦合到专用处理器、dsp、fpga和/或asic的前侧朝向相机,该专用处理器、dsp、fpga和/或asic电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
161.lka系统是ldw系统的一种变体。如果车辆600开始驶出车道,lka系统提供转向输入或制动以纠正车辆600。
162.bsw系统检测并警告汽车盲点内的车辆驾驶员。bsw系统可提供视觉、听觉和/或触觉警报,以指示合流或变道不安全。当驾驶员使用转向信号时,系统可能会提供附加警告。bsw系统可使用耦合到专用处理器、dsp、fpga和/或asic的后侧朝向相机和/或雷达传感器660,该专用处理器、dsp、fpga和/或asic电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
163.当车辆600倒车时检测到后摄像头范围外的对象时,rctw系统可提供视觉、听觉和/或触觉通知。一些rctw系统包括aeb,以确保应用车辆制动器以避免碰撞。rctw系统可以使用一个或更多个一个或更多个后向雷达传感器660,该传感器耦合到专用处理器、dsp、
fpga和/或asic,该专用处理器、dsp、fpga和/或asic电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
164.传统的adas系统可能容易出现假阳性结果,这可能会使驾驶员感到恼火和分心,但通常不会造成灾难性后果,因为adas系统会提醒驾驶员,并允许驾驶员决定是否确实存在安全状况,并采取相应的行动。然而,在自主式车辆600中,在结果冲突的情况下,车辆600自身必须决定是听取来自主计算机还是辅助计算机(例如,第一控制器636或第二控制器636)的结果。例如,在一些实施例中,adas系统638可以是用于向备份计算机模块提供感知信息的备份和/或辅助计算机。备用计算机合理性监视器可以在硬件组件上运行冗余的不同软件,以检测感知和动态驾驶任务中的故障。来自adas系统638的输出可以提供给监控mcu。如果主计算机和辅助计算机的输出冲突,监控mcu必须确定如何协调冲突,以确保安全运行。
165.在一些示例中,主计算机可配置为向监控mcu提供置信分数,指示主计算机对所选结果的置信度。如果置信度得分超过阈值,则监控mcu可遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。如果置信度得分不符合阈值,并且主计算机和辅助计算机指示不同的结果(例如,冲突),则监控mcu可以在计算机之间进行仲裁,以确定适当的结果。
166.监控mcu可配置为运行经过训练和配置的一个或更多个神经网络,以根据主计算机和辅助计算机的输出确定辅助计算机提供假警报的条件。因此,监控mcu中的一个或更多个神经网络可以学习辅助计算机的输出何时可信,何时不可信。例如,当辅助计算机是基于雷达的fcw系统时,监控mcu中的一个或更多个神经网络可以学习fcw系统何时识别事实上不是危险的金属对象,例如触发警报的排水格栅或人孔盖。类似地,当辅助计算机是基于相机的ldw系统时,监控mcu中的神经网络可以学习在自行车或行人在场且车道偏离实际上是最安全的操纵时覆盖ldw。在包括在监控mcu上运行的一个或更多个神经网络的实施例中,监控mcu可包括适于运行具有相关联的存储器的一个或更多个神经网络的dla或gpu中的至少一个。在优选实施例中,监控mcu可包括和/或包括为soc 604的组件。
167.在其他示例中,adas系统638可包括使用传统计算机视觉规则执行adas功能的辅助计算机。因此,辅助计算机可以使用经典的计算机视觉规则(if-then),并且在监控mcu中存在一个或更多个神经网络可以提高可靠性、安全性和性能。例如,多样化的实现和有意的非标识使整个系统更具容错性,特别是对由软件(或软硬件接口)功能引起的故障。例如,如果在主计算机上运行的软件中存在软件缺陷或错误,并且在辅助计算机上运行的不相同的软件代码提供相同的总体结果,则监控mcu可对总体结果的正确性有更大的信心,主计算机上的软件或硬件缺陷并没有导致重大错误。
168.在一些示例中,adas系统638的输出可馈入主计算机的感知块和/或主计算机的动态驱动任务块。例如,如果adas系统638指示由于正前方对象引起的前向碰撞警告,则感知块可在识别对象时使用该信息。在其他示例中,如本文所述,二级计算机可以具有其自己的经过训练的神经网络,从而降低假阳性的风险。
169.车辆600还可包括信息娱乐soc 630(例如,车内信息娱乐系统(ivi))。尽管示出并描述为soc,但信息娱乐系统可以不是soc,并且可以包括两个或多个分立组件。信息娱乐soc 630可包括可用于提供音频(例如,音乐、个人数字助理、导航指令、新闻、无线电等)、视
频(例如,电视、电影、流媒体等)、电话(例如,免提通话)、网络连接(例如,lte、wi-fi等)的硬件和软件的组合,和/或向车辆600提供信息服务(例如,导航系统、后驻车辅助、无线电数据系统、车辆相关信息,如燃油油位、行驶总距离、制动燃油油位、机油油位、车门打开/关闭、空气滤清器信息等)。例如,信息娱乐soc 630可以是收音机、磁盘播放器,导航系统、视频播放器、usb和蓝牙连接、车载电脑、车内娱乐、wi-fi、方向盘音频控制、免提语音控制、抬头显示器(hud)、hmi显示器634、远程通信设备、控制面板(例如,用于控制和/或与各种组件、特征和/或系统交互),和/或其他组件。信息娱乐soc 630还可用于向车辆用户提供信息(例如,视觉和/或听觉),例如来自adas系统638的信息、自主驾驶信息,例如计划车辆机动、轨迹、周围环境信息(例如,交叉口信息、车辆信息,道路信息等)和/或其他信息。
170.信息娱乐soc 630可包括gpu功能。信息娱乐soc 630可通过总线602(例如,can总线、以太网等)与车辆600的其他设备、系统和/或部件进行通信。在一些示例中,信息娱乐soc 630可以耦合到监控mcu,使得信息娱乐系统的gpu可以在一个或更多个主控制器636(例如,车辆600的主计算机和/或备用计算机)发生故障的情况下执行一些自驱动功能。在这样的示例中,信息娱乐soc 630可将车辆600置于司机至安全停车模式,如本文所述。
171.车辆600还可包括仪表组632(例如,数字仪表板、电子仪表组、数字仪表板等)。仪表组632可包括控制器和/或超级计算机(例如,离散控制器或超级计算机)。仪表组632可包括一组仪表,如车速表、燃油油位、机油压力、转速表、里程表、转向指示灯、换档位置指示灯、一个或更多个安全带警告灯、一个或更多个驻车制动警告灯、一个或更多个发动机故障灯、安全气囊(srs)系统信息、照明控制、安全系统控制、,导航信息等。在一些示例中,信息可在信息娱乐soc 630和仪表组632之间显示和/或共享。换句话说,仪表组632可作为信息娱乐soc 630的一部分包括在内,反之亦然。
172.图6d是根据本公开的一些实施例的一个或更多个基于云的服务器与图6a的示例性自主车辆600之间通信的系统图。系统676可包括一个或更多个服务器678、一个或更多个网络690和车辆,包括车辆600。一个或更多个服务器678可包括多个gpu 684(a)-684(h)(统称为gpu 684)、pcie交换机682(a)-682(h)(统称为pcie交换机682),和/或cpu 680(a)-680(b)(本文统称为cpu 680)。gpu 684、cpu 680和pcie交换机可通过高速互连互连,例如但不限于nvidia开发的nvlink接口688和/或pcie连接686。在一些示例中,gpu 684通过nvlink和/或nv交换机soc连接,gpu 684和pcie交换机682通过pcie互连连接。尽管图示了八个gpu 684、两个cpu 680和两个pcie交换机,但这并不是为了限制。根据实施例,一个或更多个服务器678中的每一个可以包括任意数量的gpu 684、cpu 680和/或pcie交换机。例如,一个或更多个服务器678可各自包括八个、十六个、三十二个和/或更多gpu 684。
173.一个或更多个服务器678可通过一个或更多个网络690从车辆接收代表图像的图像数据,该图像显示意外或变化的路况,例如最近开始的道路作业。一个或更多个服务器678可以通过一个或更多个网络690向车辆发送神经网络692、更新的神经网络692和/或地图信息694,包括关于交通和路况的信息。对地图信息694的更新可以包括对hd地图622的更新,例如关于建筑场地、坑洞、绕道、洪水和/或其他障碍物的信息。在一些示例中,神经网络692、更新后的神经网络692和/或地图信息694可源于从环境中的任意数量的车辆接收的数据中表示的新的训练和/或经验,和/或基于在数据中心执行的训练(例如,使用一个或更多个服务器678和/或其他服务器)。
174.一个或更多个服务器678可用于基于训练数据训练机器学习模型(例如,神经网络)。训练数据可由车辆生成,和/或可在模拟中生成(例如,使用游戏引擎)。在一些示例中,训练数据被标记(例如,神经网络受益于监督学习)和/或经历其他预处理,而在其他示例中,训练数据未被标记和/或预处理(例如,神经网络不需要监督学习)。训练可根据任何一类或更多类机器学习技术执行,包括但不限于:监督训练、半监督训练、无监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主成分和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测以及任何变体或组合。一旦机器学习模型被训练,机器学习模型可被车辆使用(例如,通过一个或更多个网络传输到车辆690,和/或机器学习模型可被一个或更多个服务器678用于远程监控车辆)。
175.在一些示例中,一个或更多个服务器678可以从车辆接收数据,并将数据应用到最新的实时神经网络,以进行实时智能推理。一个或更多个服务器678可包括深度学习超级计算机和/或由gpu 684供电的专用ai计算机,例如由nvidia开发的dgx和dgx站机器。然而,在一些示例中,一个或更多个服务器678可包括仅使用cpu供电的数据中心的深度学习基础设施。
176.一个或更多个服务器678的深度学习基础设施可以快速实时推理,并可以使用该能力评估和查证车辆600中处理器、软件和/或相关联的硬件的健康状况。例如,深度学习基础设施可以从车辆600接收定期更新,例如,车辆600在该图像序列中定位的图像和/或对象序列(例如,通过计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可运行其自身的神经网络来识别对象,并将其与车辆600识别的对象进行比较,如果结果不匹配且基础设施得出结论,车辆600中的ai出现故障,一个或更多个服务器678可向车辆600发送信号,指示车辆600的故障安全计算机承担控制、通知乘客并完成安全停车操作。
177.对于推理,一个或更多个服务器678可包括一个或更多个gpu 684和一个或更多个可编程推理加速器(例如nvidia的tensorrt)。gpu供电的服务器和推理加速的结合可能使实时响应成为可能。在其他示例中,例如性能不太关键的地方,可以使用由cpu、fpga和其他处理器供电的服务器进行推断。
178.示例计算设备
179.图7是适用于实施本公开的一些实施例的示例计算设备700的框图。计算设备700可包括直接或间接耦合以下设备的互连系统702:存储器704、一个或更多个中央处理单元(cpu)706、一个或更多个图形处理单元(gpu)708、通信接口710、输入/输出(i/o)端口712、输入/输出组件714、电源716、一个或更多个呈现组件718(例如,显示器)和一个或更多个逻辑单元720。在至少一个实施例中,一个或更多个计算设备700可包括一个或更多个虚拟机(vm),和/或其任何组件可包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,一个或更多个gpu 708可以包括一个或更多个vgpu,一个或更多个cpu706可以包括一个或更多个vcpu,和/或一个或更多个逻辑单元720可以包括一个或更多个虚拟逻辑单元。因此,一个或更多个计算设备700可包括离散组件(例如,专用于计算设备700的完整gpu)、虚拟组件(例如,专用于计算设备700的gpu的一部分)或其组合。
180.尽管图7中的各个模块显示为通过互连系统702与线路连接,但这并非旨在限制,仅为清楚起见。例如,在一些实施例中,诸如显示设备的呈现组件718可以被视为i/o组件
714(例如,如果显示器是触摸屏)。作为另一示例,cpu 706和/或gpu 708可以包括存储器(例如,除了gpu 708、cpu706和/或其他组件的存储器之外,存储器704还可以代表存储设备)。换句话说,图7的计算设备仅仅是说明性的。不区分“工作站”、“服务器”、“笔记本电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型,正如在图7的计算设备的范围内所设想的那样。
181.互连系统702可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。互连系统702可包括一个或更多个总线或链路类型,例如工业标准体系结构(isa)总线、扩展工业标准体系结构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连直通(pcie)总线,和/或其他类型的总线或链路。在一些实施例中,组件之间存在直接连接。例如,cpu 706可以直接连接到存储器704。此外,cpu 706可以直接连接到gpu 708。在组件之间存在直接连接或点对点连接的情况下,互连系统702可以包括用于执行连接的pcie链路。在这些示例中,计算设备700中不需要包括pci总线。
182.存储器704可包括各种计算机可读介质中的任何一种。计算机可读介质可以是可由计算设备700访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
183.计算机存储介质可以包括易失性和非易失性介质和/或以任何方法或技术实现的可移除和不可移除介质,用于存储信息,例如计算机可读指令、数据结构、程序模块和/或其他数据类型。例如,存储器704可以存储计算机可读指令(例如,表示一个或更多个程序和/或一个或更多个程序元素的指令),例如操作系统。计算机存储介质可包括但不限于ram、rom、eeprom、闪存或其他存储技术、cd-rom、数字多功能磁盘(dvd)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备,或可用于存储所需信息且可由计算设备700访问的任何其他介质。如本文所使用的,计算机存储介质本身不包括信号。
184.计算机存储介质可将计算机可读指令、数据结构、程序模块和/或包含在调制数据信号(例如载波或其他传输机制)中的其他数据类型,并包括任何信息传递介质。术语“调制数据信号”可指以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可以包括有线介质,例如有线网络或直接有线连接,以及无线介质,例如声学、rf、红外和其他无线介质。上述任何组合也应包括在计算机可读介质的范围内。
185.一个或更多个cpu 706可被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件,以执行本文所述的一个或更多个方法和/或过程。一个或更多个cpu 706可各自包括一个或更多个能够同时处理多个软件线程的核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。一个或更多个cpu 706可以包括任何类型的处理器,并且可以根据所实现的计算设备700的类型包括不同类型的处理器(例如,对于移动设备具有较少内核的处理器和对于服务器具有较多内核的处理器)。例如,根据计算设备700的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(例如数学协处理器)之外,计算设备700还可以包括一个或更多个cpu 706。
186.除了一个或更多个cpu 706之外,或者从一个或更多个cpu 706选择,一个或更多个gpu 708可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件来执行本文所述的一个或更多个方法和/或过程。一个或更多个gpu 708可以是集成gpu(例如,具有一个或更多个cpu 706和/或一个或更多个gpu 708可以是离散gpu)。在实施例中,一个或更多个gpu 708可以是一个或更多个cpu 706的协处理器。计算设备700可以使用一个或更多个gpu 708来渲染图形(例如,3d图形)或执行通用计算。例如,一个或更多个gpu 708可用于gpu(gpgpu)上的通用计算。一个或更多个gpu 708可以包括数百个或数千个内核,这些内核能够同时处理数百个或数千个软件线程。一个或更多个gpu 708可响应于渲染命令(例如,经由主机接口接收的来自一个或更多个cpu 706的渲染命令)生成用于输出图像的像素数据。一个或更多个gpu 708可以包括图形存储器,例如显示器存储器,用于存储像素数据或任何其他合适的数据,例如gpgpu数据。显示器存储器可以包括作为存储器704的一部分。一个或更多个gpu 708可以包括两个或更多个并行操作的gpu(例如,通过链路)。链路可直接连接gpu(例如,使用nvlink)或通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每个gpu 708可为输出的不同部分或不同输出(例如,第一gpu用于第一图像,第二gpu用于第二图像)生成像素数据或gpgpu数据。每个gpu可以包括自己的内存,也可以与其他gpu共享内存。
187.除了一个或更多个cpu 706和/或一个或更多个gpu 708之外,或者从一个或更多个cpu 706和/或一个或更多个gpu 708选择,一个或更多个逻辑单元720可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件执行本文所述的一个或更多个方法和/或过程。在实施例中,一个或更多个cpu 706、一个或更多个gpu 708和/或一个或更多个逻辑单元720可以离散地或联合地执行方法、过程和/或其部分的任意组合。逻辑单元720中的一个或更多个可以是cpu 706和/或gpu 708中的一个或更多个的一部分和/或集成在其中,和/或逻辑单元720中的一个或更多个可以是分立组件,或以其他方式位于一个或更多个cpu 706和/或一个或更多个gpu 708外部,一个或更多个逻辑单元720可以是一个或更多个cpu 706和/或一个或更多个gpu 708的协处理器。
188.一个或更多个逻辑单元720的示例包括一个或更多个处理核心和/或其组件,例如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理集群(gpc)、纹理处理集群(tpc)、流式多处理器(sm),树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或外围组件互连直通(pcie)元件,和/或诸如此类。
189.通信接口710可以包括一个或更多个接收器、发射器和/或收发器,这些接收器、发射器和/或收发器使计算设备700能够通过包括有线和/或无线通信的电子通信网络与其他计算设备通信。通信接口710可以包括组件和功能,以支持通过多个不同网络中的任何一个进行通信,例如无线网络(例如,wi-fi、z-wave、蓝牙、蓝牙le、zigbee等)、有线网络(例如,通过以太网或infiniband进行通信)、低功耗广域网(例如,lorawan、sigfox,等)和/或互联网。
190.i/o端口712可使计算设备700与其他设备逻辑耦合,包括i/o组件714、一个或更多个呈现组件718和/或其他组件,其中一些组件可内置(例如,集成在)计算设备700中。说明
性i/o组件714包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、卫星天线、扫描仪、打印机、无线设备等。i/o组件714可以提供自然用户界面(nui),该自然用户界面处理由用户生成的空中手势、语音或其他生理输入。在一些情况下,可以将输入传输到适当的网络元件以进行进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪的任意组合,以及与计算设备700的显示器相关联的触摸识别(如下更详细地描述)。计算设备700可以包括深度相机,例如立体相机系统、红外相机系统、rgb相机系统、触摸屏技术,以及这些的组合,用于手势检测和识别。此外,计算设备700可包括能够检测运动的加速计或陀螺仪(例如,作为惯性测量单元(imu)的一部分)。在一些示例中,加速度计或陀螺仪的输出可由计算设备700用于渲染沉浸式增强现实或虚拟现实。
191.电源716可包括硬接线电源、电池电源或其组合。电源716可以向计算设备700供电,以使计算设备700的组件能够工作。
192.一个或更多个呈现组件718可包括显示器(例如显示器、触摸屏、电视屏幕、平视显示器(hud)、其他显示类型或其组合)、扬声器和/或其他演示组件。一个或更多个呈现组件718可以从其他组件(例如,一个或更多个gpu 708、一个或更多个cpu 706等)接收数据,并输出数据(例如,作为图像、视频、声音等)。
193.示例数据中心
194.图8示出了可在本公开的至少一个实施例中使用的示例数据中心800。数据中心800可以包括数据中心基础设施层810、框架层820、软件层830和/或应用层840。
195.如图8所示,数据中心基础设施层810可包括资源协调器812、分组计算资源814和节点计算资源(“节点c.r.s”)816(1)-816(n),其中“n”表示任何整数。在至少一个实施例中,节点c.r.s 816(1)-816(n)可包括但不限于任何数量的中央处理单元(“cpu”)或其他处理器(包括加速器、现场可编程门阵列(fpga)、图形处理器或图形处理单元(gpu)等)、存储设备(例如,动态只读存储器),在一些实施例中,贮存设备(例如固态或磁盘驱动器)、网络输入/输出(“nw i/o”)设备、网络交换机、虚拟机(“vm”)、电源模块和/或冷却模块等,节点c.r.s 816(1)-816(n)中的一个或更多个节点c.r.s可对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点c.r.s 816(1)-8161(n)可以包括一个或更多个虚拟组件,例如vgpu、vcpu和/或类似组件,和/或节点c.r.s 816(1)-816(n)中的一个或更多个可以对应于虚拟机(vm)。
196.在至少一个实施例中,分组计算资源814可包括位于一个或更多个机架(未示出)内的节点c.r.s 816的单独分组,或位于不同地理位置(也未示出)的数据中心内的多个机架。分组计算资源814内的节点c.r.s 816的单独分组可包括分组计算、网络、内存或存储资源,其可被配置或分配以支持一个或更多个工作负载。在至少一个实施例中,包括cpu、gpu和/或其他处理器的多个节点c.r.s 816可分组在一个或更多个机架内,以提供计算资源以支持一个或更多个工作负载。一个或更多个机架还可以包括任意组合的任意数量的电源模块、冷却模块和/或网络交换机。
197.资源协调器822可配置或以其他方式控制一个或更多个节点c.r.s816(1)-816(n)和/或分组计算资源814。在至少一个实施例中,资源协调器822可包括用于数据中心800的软件设计基础设施(“sdi”)管理实体。资源协调器822可包括硬件、软件或其一些组合。
198.在至少一个实施例中,如图8所示,框架层820可包括作业调度器832、配置管理器834、资源管理器836,和/或分布式文件系统838。框架层820可包括支持软件层830的软件832和/或应用层840的一个或更多个应用842的框架。软件832或一个或更多个应用842可分别包括基于网页的服务软件或应用,例如亚马逊网络服务、谷歌云和微软azure提供的服务。框架层820可以是,但不限于,一种自由的开源软件网页应用框架,例如apache sparktm(以下简称“spark”),它可以利用分布式文件系统838进行大规模数据处理(例如,“大数据”)。在至少一个实施例中,作业调度器832可以包括spark驱动器,以促进数据中心800的各个层所支持的工作负载的调度。配置管理器834可以配置不同的层,例如软件层830和框架层820,包括spark和分布式文件系统838,以支持大规模数据处理。资源管理器836可以能够管理映射到或分配用于支持分布式文件系统838和作业调度器832的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可包括数据中心基础设施层810处的分组计算资源814。资源管理器1036可与资源协调器812协调以管理这些映射或分配的计算资源。
199.在至少一个实施例中,包括在软件层830中的软件832可包括由节点c.r.s 816(1)-816(n)、分组计算资源814和/或框架层820的分布式文件系统838的至少部分使用的软件。一种或多种软件可包括但不限于互联网网页搜索软件,电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
200.在至少一个实施例中,包括在应用层840中的应用842可以包括由节点c.r.s 816(1)-816(n)、分组计算资源814和/或框架层820的分布式文件系统838的至少部分使用的一种或多种类型的应用,但不限于任何数量的基因组学应用、感知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,pytorch、tensorflow、caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
201.在至少一个实施例中,配置管理器834、资源管理器836和资源协调器812中的任何一个都可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实施任何数量和类型的自修改动作。自修改动作可使数据中心800的数据中心操作员免于做出可能错误的配置决策,并可能避免数据中心未充分利用和/或性能不佳的部分。
202.根据本文所述的一个或更多个实施例,数据中心800可包括用于训练一个或更多个机器学习模型或使用一个或更多个机器学习模型预测或推理信息的工具、服务、软件或其他资源。例如,一个或更多个机器学习模型可通过使用上述关于数据中心800的软件和/或计算资源,根据神经网络架构计算权重参数来训练。在至少一个实施例中,与一个或更多个神经网络相对应的经过训练或部署的机器学习模型可用于通过使用通过一个或更多个训练技术(例如但不限于本文所述的训练技术)计算的权重参数,使用上述关于数据中心800的资源来推理或预测信息。
203.在至少一个实施例中,数据中心800可以使用cpu、专用集成电路(asic)、gpu、fpga和/或其他硬件(或相应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上述一个或更多个软件和/或硬件资源可配置为服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
204.示例网络环境
205.适用于实施本发明实施例的网络环境可包括一个或更多个客户端设备、服务器、网络附接存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设
备类型(例如,每个设备)可以在图7的一个或更多个计算设备700的一个或更多个实例上实现——例如,每个设备可以包括计算设备700的类似组件、特征和/或功能。另外,后端设备(服务器,nas等)可被包括为数据中心800的一部分,其示例在本文中参照图8更详细地描述。
206.网络环境的组件可通过有线、无线或两者兼有的一个或更多个网络相互通信。该网络可以包括多个网络,或者网络的网络。举例来说,该网络可包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络(例如互联网和/或公共交换电话网(pstn))和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点的组件(以及其他组件)可以提供无线连接。
207.兼容的网络环境可能包括一个或更多个对等网络环境——在这种情况下,服务器可能不包括在网络环境中——以及一个或更多个客户机-服务器网络环境——在这种情况下,一个或更多个服务器可能包括在网络环境中。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
208.在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境及其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器,以及在一个或更多个服务器上实现的分布式文件系统,其可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或一个或更多个应用程序可分别包括基于网页的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网页的服务软件或应用(例如,通过经由一个或更多个应用编程接口(api)访问服务软件和/或应用)。框架层可以是,但不限于,一种免费的开源软件网页应用框架,例如,可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
209.基于云的网络环境可提供执行本文所述计算和/或数据存储功能(或其中一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一种都可以从中央或核心服务器(例如,一个或更多个数据中心的服务器)分布到多个位置,这些数据中心可以分布在一个州、一个地区、一个国家、全球等地。如果与用户(例如,客户端设备)的连接相对靠近一个或更多个边缘服务器,则一个或更多个核心服务器可将功能的至少一部分指定给一个或更多个边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
210.一个或更多个客户端设备可包括本文关于图7所述的一个或更多个示例计算设备700的至少一些组件、特征和功能。作为示例而非限制,客户端设备可体现为个人计算机(pc)、膝上型计算机、移动设备、智能手机、平板计算机、,智能手表、可穿戴计算机、个人数字助理(pda)、mp3播放器、虚拟现实耳机、全球定位系统(gps)或设备、视频播放器、相机、监控设备或系统、车辆、船只、飞行器、虚拟机、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、设备、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合或任何其他合适的设备。
211.本公开可在计算机代码或机器可用指令的一般上下文中描述,包括由计算机或其他机器(如个人数据助理或其他手持设备)执行的计算机可执行指令,如程序模块。通常,程序模块包括例程、程序、对象、组件、数据结构等,是指执行特定任务或实现特定抽象数据类
型的代码。本公开可以在多种系统配置中实施,包括手持设备、消费电子产品、通用计算机、更多专业计算设备,等。本发明还可在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。
212.如本文所用,关于两个或多个元素的“和/或”的叙述应解释为仅指一个元素或元素的组合。例如,“元素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中的至少一个。
213.为了满足法定要求,本文对本公开的主题内容进行了详细描述。然而,描述本身并不打算限制本公开的范围。相反,发明人已经设想,所要求保护的主题内容也可以以其他方式体现,包括与本文件中描述的步骤类似的不同步骤或步骤组合,以及其他现有或未来技术。此外,尽管术语“步骤”和/或“块”可在本文中用于暗示所采用的方法的不同元素,但除非明确描述了各个步骤的顺序,否则不应将术语解释为暗示本文所公开的各个步骤之间的任何特定顺序。
技术特征:
1.一种方法,包括:使用由自我车辆的一个或更多个传感器生成的传感器数据,计算与所述自我车辆的环境相对应的环境信息;至少部分基于所述环境信息,生成表示所述环境中一个或更多个车道的第一位置和所述车道内的对象的第二位置的映射;至少部分地基于所述环境信息,执行路径中对象分析(oipa),以确定所述车道的子集内的所述对象的第一子集;至少部分地基于所述环境信息,确定与所述对象的所述第一子集中的每个对象相关联的类;至少部分地基于所述类,过滤来自所述对象的所述第一子集的一个或更多个对象,以确定所述对象的第二子集;和将表示所述对象的所述第二子集的数据发送到用于跟踪所述对象的所述第二子集的目标跟踪算法。2.根据权利要求1所述的方法,其中所述计算使用一个或更多个图形处理单元(gpu)来执行,并且所述过滤使用一个或更多个中央处理单元(cpu)来执行。3.根据权利要求1所述的方法,其中所述环境信息包括车道信息、目标检测信息或目标分类信息中的至少一个。4.根据权利要求3所述的方法,其中所述环境信息至少包括车道信息,并且其中,计算所述车道信息是使用第一深度神经网络(dnn)来执行的。5.根据权利要求3所述的方法,其中所述环境信息至少包括目标检测信息,并且其中,计算所述目标检测信息是使用第二dnn或第一计算机视觉算法(cva)来执行的。6.根据权利要求3所述的方法,其中所述环境信息至少包括目标分类信息,并且其中计算所述目标分类信息是使用所述第二dnn、第三dnn、第一cva或第二cva来执行的。7.根据权利要求1所述的方法,其中生成所述映射还至少部分基于定位信息。8.根据权利要求1所述的方法,其中所述计算还包括计算自由空间信息,并且所述自由空间信息被用于确定所述对象的所述第二子集。9.根据权利要求1所述的方法,其中发送所述数据是从第一片上系统(soc)到第二soc的。10.根据权利要求1所述的方法,其中所述车道的所述子集包括所述自我车辆的自我车道、所述自我车道的左侧相邻车道和所述自我车道的右侧相邻车道。11.一种系统,包括:自我车辆的一个或更多个传感器;一个或更多个处理器;和一个或更多个存储指令的存储器设备,当所述指令由所述一个或更多个处理器执行时,使所述一个或更多个处理器执行操作,所述操作包括:使用所述自我车辆的一个或更多个传感器生成的传感器数据,计算车道信息和目标检测信息;至少部分地基于所述车道信息和所述目标检测信息,将对象定位到车道以生成映射;至少部分基于所述映射和车道位置标准,确定所述车道的子集内的所述对象的子集;
和将表示所述对象的所述子集的数据发送到用于跟踪所述对象的第二子集的目标跟踪算法。12.根据权利要求11所述的系统,其中所述计算是使用一个或更多个图形处理单元(gpu)来执行的,并且所述确定和所述定位是使用一个或更多个中央处理单元(cpu)来执行的。13.根据权利要求11所述的系统,其中确定所述对象的所述子集至少部分基于路径中对象分析(oipa)。14.根据权利要求11所述的系统,其中所述计算还包括计算自由空间信息,并且所述自由空间信息被用于确定所述对象的所述子集。15.根据权利要求11所述的系统,其中所述传输所述数据是从第一片上系统(soc)到第二soc。16.根据权利要求11所述的系统,其中所述车道的所述子集包括所述自我车辆的自我车道、所述自我车道的左侧相邻车道和所述自我车道的右侧相邻车道。17.根据权利要求11所述的系统,还包括:至少部分地基于计算出的目标分类信息,确定与一个或更多个对象相关联的一个或更多个类,其中,确定所述对象的所述子集进一步至少部分地基于所述一个或更多个类。18.一种方法,包括:使用一个或更多个图形处理单元(gpu)处理由自我车辆的一个或更多个传感器生成的传感器数据;使用所述一个或更多个gpu并至少部分地基于所述处理,计算对应于车道位置信息的第一数据和对应于所述自我车辆的环境的对象位置信息;使用一个或更多个中央处理器(cpu)并至少部分基于第一数据,生成表示车道的第一位置和所述车道内的对象的第二位置的映射;使用所述一个或更多个cpu并至少部分地基于表示所述映射的第二数据,确定自我车道内的对象的子集和所述自我车道的一个或更多个相邻车道;和将表示所述对象的所述子集的第三数据发送到使用所述一个或更多个gpu或所述一个或更多个cpu执行的目标跟踪算法。19.根据权利要求18所述的方法,其中所述传输所述数据是从第一片上系统(soc)到第二soc。20.根据权利要求18所述的方法,其中使用一个或更多个并行处理单元执行对所述传感器数据的处理。21.根据权利要求18所述的方法,还包括:至少部分地基于计算出的目标分类信息,确定与一个或更多个对象相关联的一个或更多个类,其中,所述确定所述对象的所述子集进一步至少部分地基于所述一个或更多个类。22.根据权利要求18所述的方法,其中所述第一数据进一步表示自由空间信息,并且所述自由空间信息被用于确定所述对象的所述子集。
23.根据权利要求18所述的方法,其中确定所述对象的所述子集是使用路径中对象分析(oipa)来执行的。
技术总结
本发明公开了自主机器应用中的自适应目标跟踪算法。在各种示例中,车道位置标准和对象类标准可用于确定要跟踪的环境中的一组对象。例如,车道信息、自由空间信息和/或目标检测信息可用于从使用对象检测算法检测的对象中过滤掉或丢弃非必要对象(例如,不在自我车道或相邻车道中的对象)。此外,与非必要对象类相对应的对象可被过滤掉,以生成待跟踪的对象的最终过滤集,其数量可低于检测对象的实际数量。因此,目标跟踪可能仅在最终过滤的对象集上执行,从而减少系统的计算需求和运行时间,而不会牺牲关于更相关对象的目标跟踪准确度和可靠性。和可靠性。和可靠性。
技术研发人员:A
受保护的技术使用者:辉达公司
技术研发日:2021.09.03
技术公布日:2022/3/8