首页> 中国专利> 具有自适应加权输入的注视确定机器学习系统

具有自适应加权输入的注视确定机器学习系统

摘要

本发明公开了具有自适应加权输入的注视确定机器学习系统,公开了通过使用面部朝向信息(例如,面部特征点)修改从主体的眼睛的图像确定的眼睛方向信息来确定注视方向的机器学习系统和方法。系统输入包括所述主体的眼睛的眼部裁剪,以及面部朝向信息(例如,输入图像中的主体的面部的面部特征点)。面部朝向信息或者面部特征点信息被用于确定注视方向的粗略预测以及学习描述主体面部姿势的特征的上下文向量。然后使用该上下文向量来自适应地重新加权从眼部裁剪确定的眼睛方向特征。然后,将重新加权的特征与粗略注视预测相结合,以确定注视方向。

著录项

  • 公开/公告号CN112989914A

    专利类型发明专利

  • 公开/公告日2021-06-18

    原文格式PDF

  • 申请/专利权人 辉达公司;

    申请/专利号CN202011475665.X

  • 发明设计人 N·普里;

    申请日2020-12-14

  • 分类号G06K9/00(20060101);G06N3/04(20060101);G06N20/00(20190101);

  • 代理机构11336 北京市磐华律师事务所;

  • 代理人汪洋

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 11:29:13

说明书

本申请主张在2019年12月16日提交的美国临时专利申请号为62/948,789的权益,其全部公开内容在此全文引入作为参考。

本公开的实施例总体上涉及机器学习系统。更具体来说,本公开的实施例涉及具有自适应加权输入的注视确定机器学习系统。

最近开发的卷积神经网络(CNN)用来估计主体的注视方向。例如,这种CNN可以从所述主体的输入图像中确定主体正在观看的所述方向。这使得使用此类CNN的系统能够跟踪主体的注视,以及相应地实时做出反应。

然而,传统的注视确定系统并非没有缺点。这些系统的整体性能和鲁棒性仍然有限,特别是在边界情况或极端情况下(例如,在头部姿势变化较大,或者面部或眼睛部分遮挡的情况下)。

因此,本文描述的系统和方法提供更健壮的注视确定系统,所述更健壮的注视确定系统与面部特征点信息相对应,作为自适应地重新加权系统输入。典型的注视确定系统可以利用摄像机或其他图像确定装置,以及处理器(例如,诸如CNN之类的能够执行机器学习网络推断操作的并行处理器)。在本公开的某些实施例中,所述系统可以接收与相机拍摄主体的图像相对应的图像数据。一个或更多个机器学习网络构建为将与主体的至少一只眼睛相对应的所述图像的一个或更多个部分作为输入,并输出相关联特征,其中这些特征与所述至少一只主体眼睛的注视方向相对应。然后,使用所述主体的面部姿势信息来修改这些与眼睛相关特征。通过一个或更多个机器学习模型可以确定这个面部姿势信息,所述机器学习模型被配置成接收所述主体的所述图像以及生成所述面部姿势信息作为输出。然后,可以使用面部姿势信息来确定与主体面部姿势相对应的上下文特征,以及确定注视方向的估计。也就是说,一个或更多个机器学习模型可以根据输入的面部姿势信息来确定上下文向量和注视方向估计二者。

然后,可以根据所述上下文向量来修改所述眼睛相关特征,并且可以根据这些修改的特征来确定注视。更具体地说,修改的所述眼睛相关特征可以与所述估计的注视方向相结合,并且可以根据该组合可以确定注视。以这种方式,根据经过面部姿势信息修改的眼睛图像信息和注视方向的初始估计来确定注视方向,其中这个初始估计可以根据面部特征点(landmark)来确定。

然后,所述确定的注视方向可以任何方式使用,例如启动系统的任何操作。例如,确定的所述注视方向可以用于启动车辆的任何操作(例如,自动驾驶车辆)。

如上所述,面部姿势信息用于确定上下文向量和注视方向估计。所述面部姿势信息可以是指示主体面部空间朝向的任何信息,例如由所述输入图像确定的一组面部特征点。一个或更多个机器学习模型可以处理所述面部姿势信息(例如,面部特征点),来生成上下文向量和注视方向估计,其中所述上下文向量具有的元素是与所述主体的面部姿势相对应的特征,即所述主体面部的所述位置和朝向。

可以通过任何方式完成眼睛相关特征的修改。例如,可以使用上下文向量来确定权重值,所述权重值可以与所述眼睛相关特征相乘。也就是说,可以通过将所述眼睛相关特征初始值乘以相应的权重值来确定所述修改后的眼睛相关特征。

因此,本公开的实施例使用所述输入图像的一些部分来确定这些眼睛方向特征,以及使用面部朝向信息来修改这些眼睛方向特征。然后根据所述修改后的眼睛方向特征来确定注视方向。可以使用各种机器学习模型来确定眼睛方向特征,并且可以通过诸如并行处理电路之类的计算电路来执行在该处理中使用的所述各种操作。通过这种方式,注视方向不仅仅根据所述输入图像的一些部分(例如,眼部裁剪)来确定的,而且根据这些眼部裁剪输出的信息可以根据所述主体面部朝向来修改,然后根据这个修改后的输出来确定注视方向。

如上所述,使用输入面部方向来确定面部朝向特征的上下文向量。在本公开的实施例中,相应地可以根据机器学习模型来确定主体的所述注视方向,所述机器学习模型具有面部朝向特征作为输入,所述面部朝向特征与所述主体面部朝向、所述注视方向的估计和所述主体的至少一只眼睛的所述图像的一部分相对应。

附图说明

考虑到以下结合附图的详细描述,本公开的上述和其他目的和优点将显而易见,在附图中,相同的参考字符指代相同的部分,其中:

图1为概念地说明本公开实施例的注视确定过程功能的流程图;

图2为本公开实施例的表示示例性注视确定机器学习模型的框图;

图3为本公开实施例的表示注视确定系统的框图;

图4A为根据本公开的一些实施例的示例性自动驾驶车辆的图示;

图4B为根据本公开的一些实施例的用于图4A的示例性自动驾驶车辆的相机位置和视野的实例;

图4C为根据本公开的一些实施例的用于图4A的示例性自动驾驶车辆的示例性系统架构的框图;

图4D为根据本公开一些实施例的图4A的一个或更多个基于云的服务器与所述自动驾驶车辆示例之间通信的系统图;

图5为适合用于实现本公开一些实施例的示例计算设备的框图;以及

图6为根据本公开实施例的用于表示确定注视方向的处理步骤的流程图。

在至少一个实施例中,本公开涉及机器学习系统和方法,所述机器学习系统和方法通过使用面部朝向信息(例如,面部特征点)来修改从主体(subject)眼睛图像确定的眼睛方向信息,从而确定注视方向。系统输入包括所述主体的所述眼睛的眼部裁剪(eyecrop),以及所述主体面部的在输入图像中面部特征点等面部朝向信息。面部朝向信息(例如,面部特征点信息)用于确定注视方向的粗略预测,以及用于学习描述主体面部姿势特征的上下文向量。然后,利用上下文向量自适应地对由眼部裁剪确定的眼睛方向特征进行加权。然后,重新加权特征和粗略注视预测相结合来确定注视方向。

图1是概念性地表示本公开实施例的注视确定过程的功能的流程图。一个或更多个眼部裁剪100和一组面部特征点110用作一个或更多个机器学习模型的输入。训练这些机器学习模型以从输入的眼部裁剪100输出一组特征120,并且以输出注视向量的上下文向量130和粗略预测140二者。粗略预测140是所述主体的所述注视方向的估计。特征120根据上下文向量130重新加权,以产生一组重新加权的特征150。更具体地讲,从概念上根据上下文向量130的特征指示的所述注视方向,赋予特征120不同的权重。因此,对应于特定方向上的注视的上下文向量130的特征转换为同样对应于该方向上的注视的特征120的更大权重值。因此,在最终确定注视方向时,给予指示注视的特征120与由面部特征点110所指示的注视更大的权重。

将重新加权特征150与粗略预测140相连接,并且将这些量结合在一起用于确定注视方向。通过这种方式,面部特征点信息可用于修改眼睛图像中的确定注视的所述处理。更具体地说,所述主体的面部的朝向以特征向量和注视方向估计的形式,用于增强或校正从输入图像(例如,眼部裁剪)获取的所述注视估计。因此,眼部裁剪信息随着所述主体的面部的方向而增加,从而产生更准确的注视结果。

图2为本公开实施例的表示示例性注视确定机器学习模型的框图。在至少一个实施例中,图2的机器学习模型包括特征提取层215、220和225,以及完全连接层255,其布置如图所示。特征提取层215具有左眼图像输入200,以及具有右眼图像输入210的特征提取层225。特征提取层215和225可以根据任何方法分别提取其各自的输入图像200、210的特征。例如,特征提取层215和225各自可以为CNN的特征学习部分,以任何合适的方式构造,并且使用任何适合于提取主体眼睛特征的卷积内核和池化层。因此,特征提取层或块215、225的每个输出特征可以代表在各自的输入图像200、210中表示的所述眼睛的所述注视方向。

由于特征提取层215和225,各自被配置作为分析眼睛的输入,为了提高效率,它们相应的权重值可以共享或等同。然而,本公开的实施例考虑了特征提取层215和225中的每一个的任何权重值,无论是共享的还是其他的。

在至少一个实施例中,特征提取层220具有一组面部特征点205或一组主体的面部的标志点作为输入,所述特征提取层可以任何方式确定。与特征提取层215和225类似,特征提取层220可以是CNN的任何特征学习部分,以任何合适的方式构造,并且使用适合于提取面部特征点的特征的任何卷积内核和池化层。特征提取层220的输出是一组面部朝向特征235,其可以代表所述面部的所述朝向,通过所述面部的所述朝向可以确定面部特征点205,以及所述输出注视向量230的估计值。面部朝向特征235可以被组合到上下文向量中,但是所述面部朝向特征可以是以任何方式布置的任何信息集,所述信息集的传达所述面部的所述朝向,所述面部从面部特征点205和眼部裁剪200和210中获取。输出注视向量230的所述估计可以为方向的任何估计,例如在三维空间中定义注视向量的一组角度。

在任何一组面部特征点205中,本公开的实施例考虑使用任意数量的标志。例如,每组面部特征点205可以包括64个或104个标志。

特征提取层215和225的输出分别输入到通道注意力网络(channel attentionnetworks)240和245中,上下文向量235被输入到两个通道注意力网络240和245中。因此,每个通道注意力网络240、245分别接收上下文向量235的副本,以及特征提取层220和225其中一个输出特征。

通道注意力网络240和245各自从其输入上下文向量235学习权重,并将这些权重乘以从特征提取层215和225输入的相应特征。通道注意力网络240和245可以各自根据任何方法来确定权重值。例如,通道注意力网络240和245各自可以为通道注意力网络的编码器部分,所述编码器部分以任何合适的方式构造以确定注意权重,所述注意权重用于重新加权由特征提取层215和225输出特征的注意权重,其中注意权重与特征对注视方向的贡献量相对应。在至少一个实施例中,注意权重可以被确定,例如根据任何函数,所述函数如从0.0到1.0的西格玛函数(sigmoid function),双曲正切函数等。在至少一个实施例中,注意权重可乘以其相应的输入特征,以重新加权每个特征,所述输入特征来自特征提取层215和225。

本公开的实施例考虑任意数量的特征,所述特征由每一个特征提取层215和225输出。在一些实施例中,所述特征数量可以取决于特征提取层215和225的结构,即,设计用于输出的特征提取层215和225的数量。例如,特征提取层215和225可以被配置为输出512个特征,所述特征针对每个输入的眼部裁剪。在一些实施例中,特征提取层220还可以设计为输出与层215和225相同数量的特征。然后,在该示例中,层220还可以被配置为输出用于每个面部特征点205的输入集的512个特征。然后,通道注意力网络240和245可以各自确定512个权重值,每个权重值由特征提取层215和225针对每个特征输出。

然后,与每个眼睛输入200和210相对应的重新加权特征从通道注意力网络240和245输出到级联块250,所述级联块中它们彼此连接且用于估计的注视向量230。级联结果包括由主体的面部的朝向的加权的眼睛注视方向特征,以及对所述主体的注视方向的估计,然后,所述级联结果被输入到完全连接层255。完全连接层255可以为适合于将描述特征和注视方向的输入注视分类为指示主体正在注视的方向的方向分类的任何分类器。例如,完全连接层255可以为多层感知器,或者卷积神经网络的任何其他完全连接层,配置和训练所述完全连接层,用于将输入特征和方向分类为若干个离散注视方向中的一个。因此,完全连接层255可以输出所述主体的注视方向的可能性。

可以观察到,上下文向量235细化所述注视相关信息,所述注视相关信息由左眼部裁剪和右眼部裁剪确定。也就是说,本公开的实施例使用关于所述主体的面部的所述朝向信息(例如,面部特征点205),用来提高由输入眼部裁剪提供的注视信息的所述准确性。因此,可以使用传送面部朝向信息的任何输入来代替面部特征点205。作为一个示例,本发明的实施例考虑了输入的使用,例如所述主体的声音方向,例如通过放置在所述主体附近的一组麦克风检测到的输入。在这样的实施例中,特征提取层220可以被构造成从麦克风提取的音频信号的记录特征。作为另一示例,特征提取层220的输入可以为一组面部特征点,所述面部特征点代表来自一组参考标志的变化,而不是标志位置点。在这样的实施例中,特征提取层220可以被构造成根据标志点中的变化而提取特征,或许参考如下所述的存储在存储器408中的标志的参考集合,或者可能在标志变化集合上而不是在标志点集合上被训练。

图3为本文公开实施例的表示注视确定系统的框图。本图中的计算设备300可以为含有处理电路的任何电子计算设备,所述处理电路能够执行本公开实施例的注视确定操作,所述计算设备300与相机310和注视辅助系统320进行电子通信。在操作中,相机310捕捉主体图像并传输给计算设备300,计算设备300随后实现例如图2的机器学习模型,从相机310的图像中确定图2中示出的输入,并且计算所述主体的所述输出注视方向。所述计算设备300将该注视方向传输到注视辅助系统320,所述注视辅助系统响应地采取动作或执行一个或更多个操作。

注视辅助系统320可以为能够执行一个或更多个动作的的任何系统,所述一个或更多个动作基于从计算设备300接收到的所述注视方向。本公开中考虑了相机310、计算设备300和注视辅助系统320的任何配置。作为一个示例,所述注视辅助系统320可以为能够确定驾驶员或另一乘客的注视方向并对其作出反应的自动驾驶车辆,例如以下描述的自动驾驶车辆400。在该示例中,相机310和计算设备300可以定位在所述车辆内部,而所述注视辅助系统320可以代表所述车辆本身。相机310可以放置在车辆内部允许其观看驾驶员或乘客的任何位置。因此,相机310可以捕捉所述驾驶员的图像并且将其发送到计算设备300,计算设备300计算所述输入200、205、215、220和225,并确定驾驶员的所述注视方向。然后,可以将所述注视方向发送到例如另一个软件模块,该软件模块确定车辆可以采取的响应动作。例如,所述所述车辆可以确定一位分心的或者不注意道路情况的驾驶员的所述注视方向,并且可以响应地启动任何类型的操作。此类操作可以包括向驾驶员发出的任何类型的警告(例如,视觉或听觉警告、平视显示器上的警告等)、自动驾驶启动、制动或转弯操作或任何其他操作。计算设备300可以定位装有注视辅助系统320车辆的内部作为本地处理器,或者可以为从相机310接收图像并将注视方向或指令无线地发送到装有注视辅助系统320车辆的远程处理器。

作为另一示例,注视辅助系统320可以为虚拟现实或增强现实系统,所述系统能够响应于用户的运动和注视显示图像。在本示例中,注视辅助系统320包括虚拟现实或增强现实显示器,例如用户佩戴并配置成向其投射图像的头戴设备。相机310和计算设备300可以放置在头戴设备内部,通过相机310捕捉用户眼睛的图像,并且通过计算设备300确定他或她的注视方向。然后,所述注视方向可以被传送到虚拟现实或增强现实显示器,所述显示器可以相应的执行任何动作。例如,为了节省计算资源,注视辅助系统320可以仅呈现在所述用户视野内的那些虚拟现实或增强现实元素,所述用户视野可通过所述确定的注视方向而确定。类似地,注视辅助系统320可以提醒用户注意被确定在用户视野之外但用户可能希望避免或可能感兴趣的对象或事件。与上面的自动驾驶车辆示例一样,虚拟现实或增强现实系统的计算设备300可以放置在系统320内部,例如,放置在头戴设备内部,或者可以位于远程,以便将图像无线地发送到计算设备300,并且计算出的注视方向可以无线地发送回头戴设备,继而所述头戴设备可以执行各种响应操作。

作为又一示例,注视辅助系统320可以为基于计算机的广告系统,所述广告系统确定用户正在观看哪些广告。更具体地说,注视辅助系统320可以为任何电子计算系统或设备,例如台式计算机、笔记本电脑、智能手机、服务器计算机等。相机310和计算设备300可以置入该指向所述用户的计算设备中,例如置入或接近所述计算机设备的所述显示器。相机310可以捕捉所述用户的图像,并且计算设备300可以确定他或她的注视方向。然后,可以将确定的注视方向发送到注视辅助系统320,例如为用户显示广告的计算设备300、远程计算设备等。然后,所述计算设备可以使用计算出的所述注视方向来确定用户正在关注哪个广告,从而提供关于各种广告的有效性的信息。

图4A为根据本公开的一些实施例的示例性自动驾驶车辆的图示。自动驾驶车辆400(或者替代地在本文中被称为“车辆400”)可以包括但不限于客运车辆,例如汽车、卡车、公共汽车、急救车、往返车(shuttle)、电动或机动自行车、摩托车、消防车、警车、救护车、船只、施工车辆、水下飞行器、无人机和/或其他类型的车辆(例如,无人驾驶和/或可容纳一名或更多名乘客的车辆)。通常按照美国运输部下属的国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related to DrivingAutomation Systems for On-Road Motor Vehicles”(于2018年6月15日发布的标准号J3016-201806,于2016年9月30日发布的标准号J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别来描述自动驾驶车辆。车辆400可能能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆400可能能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。

车辆400可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的组件以及车辆的其他组件。车辆400可以包括推进系统450,例如内燃机、混合动力装置、全电动发动机和/或另一种推进系统类型。推进系统450可以连接到可以包括变速器的车辆400的传动系,以便实现车辆400的推进。可以响应于接收到来自油门/加速器452的信号而控制推进系统450。

可以包括方向盘的转向(steering)系统454可以用来在推进系统450操作时(例如,在车辆运动时)使车辆400转向(例如,沿着期望的路径或路线)。转向系统454可以接收来自转向致动器456的信号。对于全自动(5级)功能而言,方向盘可以是可选的。

制动传感器系统446可以用来响应于接收到来自制动致动器448和/或制动传感器的信号而操作车辆制动。

可以包括一个或更多个CPU、一个或更多个片上系统(SoC)404(图4C)和/或一个或更多个GPU的一个或更多个控制器436,可以向车辆400的一个或更多个组件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送信号,以经由一个或更多个制动致动器448操作车辆制动、经由一个或更多个转向致动器456操作转向系统454、和/或经由一个或更多个油门/加速器452操作推进系统450。一个或更多个控制器436可以包括一个或更多个机载(例如,集成)计算设备(例如,超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如,表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆400。一个或更多个控制器436可以包括用于自主驾驶功能的第一控制器436、用于功能性安全功能的第二控制器436、用于人工智能功能(例如,计算机视觉)的第三控制器436、用于信息娱乐功能的第四控制器436、用于紧急情况下的冗余的第五控制器436和/或其他控制器。在一些示例中,单个控制器436可以处理上述功能中的两个或更多个,两个或更多个控制器436可以处理单个功能和/或其任意组合。

一个或更多个控制器436可以响应于接收自一个或更多个传感器的传感器数据(例如,传感器输入),提供用于控制车辆400的一个或更多个组件和/或系统的信号。传感器数据可以从传感器接收,传感器类型例如但不限于一个或更多个全球导航卫星系统传感器458(例如,一个或更多个全球定位系统传感器)、一个或更多个RADAR传感器460、一个或更多个超声传感器462、一个或更多个LIDAR传感器464、一个或更多个惯性测量单元(IMU)传感器466(例如,一个或更多个加速度计、一个或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁力计等)、一个或更多个麦克风496、一个或更多个立体相机468、一个或更多个广角相机470(例如,鱼眼相机)、一个或更多个红外相机472、一个或更多个环绕相机474(例如,360度相机)、远程相机和/或中程相机498、一个或更多个速度传感器444(例如,用于测量车辆400的速率)、一个或更多个振动传感器442、一个或更多个转向传感器440、一个或更多个制动传感器(例如,作为制动传感器系统446的部分)和/或其他传感器类型。

控制器436中的一个或更多个可以接收来自车辆400的仪表组432的输入(例如,由输入数据表示),并且经由人机接口(HMI)显示器434、声音信号器、扬声器和/或经由车辆400的其他组件提供输出(例如,由输出数据、显示数据等表示的)。这些输出可以包括诸如车速、速率、时间、地图数据(例如,图4C的HD地图422)、位置数据(例如,车辆400例如在地图上的位置)、方向、其他车辆的位置(例如,占用网格)之类的信息,如由一个或更多个控制器436所感知的关于对象和对象状态的信息等等。例如,HMI显示器434可以显示关于一个或更多个对象(例如路牌、警示牌、交通信号灯变化等)的存在的信息和/或关于驾驶操作车辆已经做出、正在做出或者将会做出的信息(例如,现在变道、两英里后离开34B,等等)。

车辆400进一步包括网络接口424,其可以使用一个或更多个无线天线426和/或一个或更多个调制解调器以通过一个或更多个网络进行通信。例如,网络接口424可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等进行通信。一个或更多个无线天线426也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如,车辆、移动设备等等)之间的通信。

图4B为根据本公开一些实施例的用于图4A的示例自动驾驶车辆400的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆400上的不同位置。

用于照相机的照相机类型可以包括但不限于可以适于与车辆400的组件和/或系统一起使用的数字相机。所述一个或更多个相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、420fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用于努力提高光敏感度。

在一些示例中,所述照相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如,作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如,全部相机)可以同时记录和提供图像数据(例如,视频)。

所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如,仪表板的反射在挡风玻璃镜中的反射)。关于后视镜安装组件,后视镜组件可以是定制3-D打印的,使得照相机安装板匹配后视镜的形状。在一些示例中,一个或更多个照相机可以集成到后视镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个角落的四根柱子内。

具有包括车辆400前面的环境部分的视场的相机(例如,前向相机)可以用于环视,以及在一个或更多个控制器436和/或控制SoC的帮助下帮助识别前向路径和障碍物,从而提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前向相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前向相机也可以用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。

各种各样的相机可以用于前向配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机470,其可以用来感知从周边进入视野的对象(例如行人、十字路口交通或者自行车)。尽管图4B中图示出仅仅一个广角相机,但是在车辆400上可以存在任意数量的广角相机470。此外,远程相机498(例如,远程立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机498也可以用于对象检测和分类以及基本的对象跟踪。

一个或更多个立体相机468也可以包括在前向配置中。立体相机468可以包括集成控制单元,该集成控制单元包括可缩放处理单元,其可以提供可编程逻辑(例如,FPGA)以及在单个芯片上具有集成的CAN或以太网接口的多核微处理器。这样的单元可以用来生成车辆环境的3D地图,包括针对图像中的所有点的距离估计。可替代的立体相机468可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如,元数据)来激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机468。

具有包括车辆400的侧面的环境部分的视场的相机(例如,侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,一个或更多个环绕相机474(例如,如图4B中所示的四个环绕相机474)可以置于环绕车辆400。一个或更多环绕相机474可以包括一个或更多个广角相机470、一个或更多个鱼眼相机、一个或更多个360度相机和/或类似物。例如,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机474(例如,左边、右边和后面),并且可以利用一个或更多个其他相机(例如,前向相机)作为第四环视相机。

具有包括车辆400的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的照相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机498、立体相机468、红外相机472等等)的相机。

图4C为根据本公开一些实施例的用于图4A的示例自动驾驶车辆400的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如,机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。

图4C中车辆400的组件、特征和系统中的每一个被图示为经由总线402连接。总线402可以包括控制器区域网络(CAN)数据接口(可替代地,本文被称为“CAN总线”)。CAN可以是车辆400内部的网络,用来辅助控制车辆400的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的致动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如,CAN ID)。可以读取CAN总线以找到方向盘角度、地面速度、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示器。CAN总线可以是ASIL B兼容的。

尽管这里将总线402描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线402,但是这并不意图是限制性的。例如,可以存在任意数量的总线402,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或使用不同协议的一条或更多条其他类型的总线。在一些示例中,两条或更多条总线402可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线402可以用于碰撞避免功能,并且第二总线402可以用于致动控制。在任何示例中,每条总线402可以与车辆400的任何组件通信,并且两条或更多条总线402可以与相同的组件通信。在一些示例中,车辆内的每个SoC 404、每个控制器436和/或每个计算机可以有权访问相同的输入数据(例如,来自车辆400的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。

车辆400可以包括一个或更多个控制器436,例如本文关于图4A所描述的那些控制器。控制器436可以用于各种各样的功能。控制器436可以耦合到车辆400的任何其他不同的组件和系统,并且可以用于车辆400的控制、车辆400的人工智能、用于车辆400的信息娱乐和/或类似物。

车辆400可以包括一个或更多个片上系统(SoC)404。SoC 404可以包括一个或更多个CPU 406、一个或更多个GPU 408、一个或更多个处理器410、一个或更多个高速缓存412、一个或更多个加速器414、一个或更多个数据存储416和/或未图示出的其他组件和特征。在各种各样的平台和系统中,一个或更多个SoC 404可以用来控制车辆400。例如,一个或更多个SoC 404可以在系统(例如,车辆400的系统)中与HD地图422结合,所述HD地图可以经由网络接口424从一个或更多个服务器(例如,图4D的一个或更多个服务器478)获得地图刷新和/或更新。

一个或更多个CPU 406可以包括CPU集群或者CPU复合体(可替代地,本文被称为“CCPLEX”)。CPU 406可以包括多个核心和/或L2高速缓存。例如,在一些实施例中,一个或更多个CPU 406在一致性多处理器配置中可以包括八个核心。在一些实施例中,一个或更多个CPU 406可以包括四个双核心集群,其中每个集群具有专用的L2高速缓存(例如,2MB L2高速缓存)。一个或更多个CPU 406(例如,CCPLEX)可以被配置为支持同时集群操作,使得CPU406的集群的任意组合能够在任何给定时间是活动的。

CPU 406可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;当每个核心由于WFI/WFE指令的执行而未主动执行指令时,可以对每个核心时钟进行门控;每个核心可以独立地进行功率门控;当所有核心都进行时钟门控或者功率门控时,可以独立地对每个核心集群进行时钟门控;和/或当所有核心都进行功率门控时,可以独立地对每个核心集群进行功率门控。CPU 406可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核心、集群和CCPLEX确定要进入的最佳的功率状态。处理核心可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。

一个或更多个GPU 408可以包括集成的GPU(可替代地,本文中被称为“iGPU”)。一个或更多个GPU 408可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,一个或更多个GPU 408可以使用增强张量指令集。一个或更多个GPU 408可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如,具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多个可以共享L2高速缓存(例如,具有512KB存储能力的L2高速缓存)。在一些实施例中,一个或更多个GPU 408可以包括至少八个流式微处理器。一个或更多个GPU 408可以使用基于计算机的应用编程接口(API)。此外,一个或更多个GPU 408可以使用一个或更多个并行计算平台和/或编程模型(例如,NVIDIA的CUDA)。

在汽车和嵌入式使用的情况下,可以对一个或更多个GPU 408进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制一个或更多个造GPU 408。然而,这并不意图是限制性的,并且一个或更多个GPU 408可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核心。例如且非限制性地,可以将64个PF32核心和32个PF64核心划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核心、8个FP64核心、16个INT32核心、用于深层学习矩阵算术的两个混合精度NVIDIA张量核心、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。

一个或更多个GPU 408可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子系统。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。

一个或更多个GPU 408可以包括统一存储器技术,其包括访问计数器以允许存储器页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的存储器范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 408直接访问一个或更多个CPU 406页表。在这样的示例中,当一个或更多个GPU 408存储器管理单元(MMU)经历遗漏时,可以将地址转换请求传输至一个或更多个CPU 406。作为响应,一个或更多个CPU406可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回一个或更多个GPU408。这样,统一存储器技术可以允许单个统一虚拟地址空间用于一个或更多个CPU 406和一个或更多个GPU 408二者的存储器,从而简化了GPU 408编程和将应用程序移植(port)到一个或更多个GPU 408。

此外,一个或更多个GPU 408可以包括访问计数器,其可以跟踪一个或更多个GPU408访问其他处理器的存储器的频率。访问计数器可以帮助确保存储器页面移至最频繁地访问这些页面的处理器的物理存储器。

一个或更多个SoC 404可以包括任意数量的高速缓存412,包括本文描述的那些高速缓存。例如,一个或更多个高速缓存412可以包括一个或更多个CPU 406和一个或更多个GPU 408二者可用的L3高速缓存(例如,其连接到一个或更多个CPU 406和一个或更多个GPU408二者)。一个或更多个高速缓存412可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如,MEI、MESI、MSI等)跟踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。

一个或更多个SoC 404可以包括算术逻辑单元(一个或更多个ALU),所述算术逻辑单元可以用于执行关于车辆400的各种任务或操作的处理,例如处理DNN。此外,一个或更多个SoC 404可包括用于在系统内执行数学运算的浮点单元(一个或更多个FPU)或其他数学协处理器或数字协处理器类型。例如,一个或更多个SoC 104可以包括作为一个或更多个CPU 406和/或一个或更多个GPU 408内的执行单元集成的一个或更多个FPU。

一个或更多个SoC 404可以包括一个或更多个加速器414(例如,硬件加速器、软件加速器或者其组合)。例如,一个或更多个SoC 404可以包括硬件加速集群,其可以包括优化的硬件加速器和/或大型片上存储器。该大型片上存储器(例如,4MB SRAM)可以使得硬件加速集群能够加速神经网络和其他计算。硬件加速集群可以用来补充一个或更多个GPU 408,并且卸载一个或更多个GPU 408的一些任务(例如,释放一个或更多个GPU 408的更多周期以用于执行其他任务)。作为一个示例,一个或更多个加速器414可以用于足够稳定以易于控制加速的有针对性的工作负载(例如,感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如,用于对象检测)。

一个或更多个加速器414(例如,硬件加速集群)可以包括一个或更多个深度学习加速器(DLA)。一个或更多个DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如,用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。一个或更多个DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。一个或更多个DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。一个或更多个TPU可以执行若干功能,包括单示例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。

一个或更多个DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。

一个或更多个DLA可以执行GPU 408的任何功能,并且通过使用推理加速器,例如,设计者可以将一个或更多个DLA或一个或更多个GPU 408作为目标用于任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在一个或更多个DLA上,并且将其他功能留给一个或更多个GPU 408和/或一个或更多个其他加速器414。

一个或更多个加速器414(例如,硬件加速集群)可以包括一个或更多个可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。一个或更多个PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。一个或更多个PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核心、直接内存访问(DMA)和/或任意数量的向量处理器。

RISC核心可以与图像传感器(例如,本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核心中的每一个可以包括任意数量的存储器。取决于实施例,RISC核心可以使用若干协议中的任何协议。在一些示例中,RISC核心可以执行实时操作系统(RTOS)。RISC核新可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核心可以包括指令高速缓存和/或紧密耦合的RAM。

DMA可以使得一个或更多个PVA的组件能够独立于一个或更多个CPU 406访问系统存储器。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。

向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法并且提供信号处理能力的编程。在一些示例中,PVA可以包括PVA核心和两个向量处理子系统分区。PVA核心可以包括处理器子系统、一个或更多个DMA引擎(例如,两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如,VMEM)。VPU核心可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。

向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速集群中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,一个或更多个PVA可以包括附加的纠错码(ECC)存储器,以增强总体系统安全性。

一个或更多个加速器414(例如,硬件加速集群)可以包括片上计算机视觉网络和SRAM,以提供用于一个或更多个加速器414的高带宽、低延迟SRAM。在一些示例中,片上存储器存可以包括由例如且不限于八个现场可配置的存储块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对存储块可以包括高级外围总线(APB)接口、配置电路、控制器和复用器。可以使用任何类型的存储器。PVA和DLA可以经由向PVA和DLA提供存储器的高速访问的主干(backbone)访问存储器。主干可以包括将PVA和DLA互连到存储器的片上计算机视觉网络(例如,使用APB)。

片上计算机视觉网络可以包括接口,该接口在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。

在一些示例中,一个或更多个SoC 404可以包括例如在2018年8月10日提交的美国专利申请号为16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如,世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可用于执行一个或更多个光线跟踪相关操作。

一个或更多个加速器414(例如,硬件加速器集群)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自动驾驶车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自动驾驶车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。

例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。

在一些示例中,PVA可以用来执行密集的光流。例如,在发射下一个雷达脉冲之前,可以使用所述PVA来处理原始RADAR数据(例如,使用4D快速傅立叶变换)以提供经处理的RADAR信号。在其他示例中,例如,通过处理原始飞行时间数据以提供经处理的飞行时间数据,将PVA用于飞行时间深度处理。

DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如,从另一个子系统)获得的地平面估计,与从神经网络和/或其他传感器(例如,一个或更多个LIDAR传感器464或一个或更多个RADAR传感器460)获得的对象的车辆400朝向、距离、3D位置估计相关的IMU传感器466的输出,等等。

一个或更多个SoC 404可以包括一个或更多个数据存储器416(例如,存储器)。一个或更多个数据存储器416可以是一个或更多个SoC 404的片上存储器,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,一个或更多个数据存储器416可以容量足够大以存储神经网络的多个示例。一个或更多个数据存储器412可以包括一个或更多个L2或L3高速缓存412。对一个或更多个数据存储器416的引用可以包括对与如本文所描述的PVA、DLA和/或一个或更多个其他加速器414关联的内存的引用。

一个或更多个SoC 404可以包括一个或更多个处理器410(例如,嵌入式处理器)。一个或更多个处理器410可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是一个或更多个SoC 404启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、一个或更多个SoC 404热和温度传感器管理和/或一个或更多个SoC 404功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且一个或更多个SoC 404可以使用环形振荡器检测一个或更多个CPU 406、一个或更多个GPU 408和/或一个或更多个加速器414的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将一个或更多个SoC 404置于较低功率状态和/或将车辆400置于司机安全停车模式(例如,使车辆400安全停车)。

一个或更多个处理器410可以进一步包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是音频子系统,其允许实现对于通过多个接口以及一系列广泛而灵活的音频I/O接口为硬件提供多通道音频的完全硬件支持。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核心。

一个或更多个处理器410可以进一步包括始终在线的处理器引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在线的处理器引擎可以包括处理器核心、紧密耦合的RAM、支持外围设备(例如,定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。

一个或更多个处理器410可以进一步包括安全集群引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全集群引擎可以包括两个或更多处理器核心、紧密耦合的RAM、支持外围设备(例如,定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多个核心可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单个核心。

一个或更多个处理器410可以进一步包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。

一个或更多个处理器410可以进一步包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是硬件引擎,该硬件引擎是相机处理管线的部分。

一个或更多个处理器410可以包括可以是(例如,在微处理器上实现)处理块的视频图像合成器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像合成器可以对一个或更多个广角相机470、一个或更多个环绕相机474和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个示例上的神经网络监控,其被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活蜂窝服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。

视频图像合成器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像合成器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。

视频图像合成器也可以被配置为对输入立体透镜帧执行立体校正。当正在使用操作系统桌面时,视频图像合成器可以进一步用于用户接口组成,并且无需一个或更多个GPU408连续地渲染(render)新的表面。甚至在一个或更多个GPU 408上电并且处于活动状态,进行3D渲染时,视频图像合成器可以用来卸载一个或更多个GPU 408的负担以提高性能和响应能力。

一个或更多个SoC 404可以进一步包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。一个或更多个SoC 404可以进一步包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。一个或更多个SoC 404可以进一步包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。一个或更多个SoC 404可以用来处理来自(例如,通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如,可以通过以太网连接的一个或更多个LIDAR传感器464、一个或更多个RADAR传感器460等等)的数据,来自总线402的数据(例如,车辆400的速率、方向盘位置等等),来自(例如,通过以太网或CAN总线连接的)一个或更多个GNSS传感器458的数据。一个或更多个SoC 404可以进一步包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放一个或更多个CPU 406。

一个或更多个SoC 404可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。一个或更多个SoC404可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与一个或更多个CPU 406、一个或更多个GPU 408和一个或更多个数据存储器416结合时,一个或更多个加速器414可以提供用于3-5级自动驾驶车辆的快速高效平台。

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

与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速集群,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如,一个或更多个GPU 420)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以进一步包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。

作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由第一部署的神经网络(例如,经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰状况”可以由第二部署的神经网络解释,该第二部署的神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作第三部署的神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在一个或更多个GPU 408上同时运行。

在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆400的授权的驾驶员和/或车主的存在。常开传感器处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,一个或更多个SoC 404提供了防范盗窃和/或劫车的安全性。

在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风496的数据来检测并且识别应急车辆警报器(siren)。与使用通用分类器检测警报器并且手动地提取特征的常规系统形成对比的是,一个或更多个SoC 404使用CNN以对环境和城市声音分类以及对视觉数据进行分类。在优选的实施例中,训练在DLA上运行的CNN以识别应急车辆的相对接近速率(例如,通过使用多普勒效应)。CNN也可以被训练为识别如一个或更多个GNSS传感器458所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报器,并且当在美国时,CNN将寻求识别仅仅北美的警报器。一旦检测到应急车辆,在一个或更多个超声传感器462的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到一个或更多个应急车辆通过。

车辆可以包括可以经由高速外设部件互连(例如,PCIe)耦合到SoC 404的一个或更多个CPU 418(例如,分立的一个或更多个CPU或一个或更多个dCPU)。一个或更多个CPU418可以包括例如X86处理器。一个或更多个CPU 418可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与一个或更多个SoC 404之间潜在地不一致的结果,和/或监控控制器436和/或信息娱乐SoC 430的状态和健康状况。

车辆400可以包括可以经由高速互连(例如,NVIDIA的NVLINK)耦合到一个或更多个SoC 404的一个或更多个GPU 420(例如,分立的一个或更多个GPU或一个或更多个dGPU)。一个或更多个GPU 420可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆400的传感器的输入(例如,传感器数据)来训练和/或更新神经网络。

车辆400可以进一步包括网络接口424,该网络接口可以包括一个或更多个无线天线426(例如,用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口424可以用来使能通过因特网与云(例如,与一个或更多个服务器478和/或其他网络设备)、与其他车辆和/或与计算设备(例如,乘客的客户端设备)的无线连接。为了与其他车辆进行通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如,跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆400提供关于接近车辆400的车辆(例如,车辆400前面、侧面和/或后面的车辆)的信息。该功能可以是车辆400的协作自适应巡航控制功能的部分。

网络接口424可以包括提供调制和解调功能并且使得一个或更多个控制器436能够通过无线网络通信的SoC。网络接口424可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。

车辆400可以进一步包括可包括片外(例如,一个或更多个SoC 404外)存储装置的一个或更多个数据存储器428。一个或更多个数据存储器428可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。

车辆400可以进一步包括一个或更多个GNSS传感器458(例如,GPS和/或辅助GPS传感器),以用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的一个或更多个GNSS传感器458,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。

车辆400可以进一步包括一个或更多个RADAR传感器460。一个或更多个RADAR传感器460可以甚至在黑暗和/或恶劣天气条件下也由车辆400用于远程车辆检测。RADAR功能安全级别可以是ASIL B。一个或更多个RADAR传感器460可以使用CAN和/或总线402(例如,以由一个或更多个传输RADAR传感器460生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,一个或更多个RADAR传感器460可以适合前面、后面和侧面RADAR使用。在一些示例中,使用一个或更多个脉冲多普勒RADAR传感器。

一个或更多个RADAR传感器460可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多个独立扫描实现的广阔视场(例如,在250m范围内)。一个或更多个RADAR传感器460可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前向碰撞警告。远程RADAR传感器可以包括具有多根(例如,六个或更多个)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六个天线的示例中,中央四个天线可以创建聚焦的波束图,其被设计为在较高速率下以来自邻近车道的最小交通干扰记录车辆400的周围环境。其他两个天线可以扩展视场,使得快速地检测进入或离开车辆400的车道的车辆成为可能。

作为一个示例,中程RADAR系统可以包括高达460m(前面)或80m(后面)的范围以及高达42度(前面)或450度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。

短程RADAR系统可以在ADAS系统中用于盲点检测和/或变道辅助。

车辆400可以进一步包括一个或更多个超声传感器462。可以置于车辆400的前面、后面和/或侧面的一个或更多个超声传感器462可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的一个或更多个超声传感器462,并且一个或更多个不同的超声传感器462可以用于不同的检测范围(例如,2.5m、4m)。一个或更多个超声传感器462可以操作于功能安全级别的ASIL B。

车辆400可以包括一个或更多个LIDAR传感器464。一个或更多个LIDAR传感器464可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。一个或更多个LIDAR传感器464可以为功能安全级别的ASIL B。在一些示例中,车辆400可以包括可以使用以太网(例如,以将数据提供给千兆以太网交换机)的多个LIDAR传感器464(例如,两个、四个、六个等等)。

在一些示例中,一个或更多个LIDAR传感器464可能够对360度视场提供对象及其距离的列表。商业上可用的一个或更多个LIDAR传感器464可以具有例如近似100m的广告范围,精度为2cm-3cm,支持100Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器464。在这样的示例中,一个或更多个LIDAR传感器464可以实现为可以嵌入到车辆400的前面、后面、侧面和/或拐角的小型设备。在这样的示例中,一个或更多个LIDAR传感器464可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的一个或更多个LIDAR传感器464可以被配置用于45度与135度之间的水平视场。

在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆400的每一侧一个。可用的3D闪光LIDAR系统包括风扇以外的没有移动部件(moving part)的固态3D视线阵列LIDAR相机(例如,非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有移动部件的固态设备,一个或更多个LIDAR传感器464可以不太容易受到运动模糊、振动和/或震动的影响。

该车辆可以进一步包括一个或更多个IMU传感器466。在一些示例中,一个或更多个IMU传感器466可以位于车辆400的后轴的中心。一个或更多个IMU传感器466可以包括例如且不限于一个或更多个加速度计、一个或更多个磁力计、一个或更多个陀螺仪、一个或更多个磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,一个或更多个IMU传感器466可以包括加速度计和陀螺仪,而在九轴应用中,一个或更多个IMU传感器466可以包括加速度计、陀螺仪和磁力计。

在一些实施例中,一个或更多个IMU传感器466可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,一个或更多个IMU传感器466可以使得车辆400能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到一个或更多个IMU传感器466的速度变化并且将其相关来估计方向(heading)。在一些示例中,一个或更多个IMU传感器466和一个或更多个GNSS传感器458可以结合到单个集成单元中。

该车辆可以包括置于车辆400中和/或车辆400周围的一个或更多个麦克风496。除别的以外,一个或更多个麦克风496可以用于应急车辆检测和识别。

该车辆可以进一步包括任意数量的相机类型,包括一个或更多个立体相机468、一个或更多个广角相机470、一个或更多个红外相机472、一个或更多个环绕相机474、一个或更多个远程和/或中程相机498和/或其他相机类型。这些相机可以用来捕获车辆400整个外围周围的图像数据。使用的相机类型取决于实施例和车辆400的要求,并且相机类型的任意组合可以用来提供车辆400周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图4A和图4B更详细地进行了描述。

车辆400可以进一步包括一个或更多个振动传感器442。一个或更多个振动传感器442可以测量车辆的诸如车轴之类的组件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多个振动传感器442时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如,当动力驱动轴与自由旋转轴之间存在振动差异时)。

车辆400可以包括ADAS系统438。在一些示例中,ADAS系统438可以包括SoC。ADAS系统438可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后方交叉交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。

ACC系统可以使用一个或更多个RADAR传感器460、一个或更多个LIDAR传感器464和/或一个或更多个相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆400前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆400改变车道。横向ACC与诸如LC和CWS之类的其他ADAS应用程序有关。

CACC使用来自其他车辆的信息,该信息可以经由网络接口424和/或一个或更多个无线天线426经由无线链路或者通过网络连接(例如,通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如,紧接在车辆400前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆400前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。

FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前向相机和/或一个或更多个RADAR传感器460,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动组件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。

AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个前向相机和/或一个或更多个RADAR传感器460。当AEB系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。

LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆400穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。

LKA系统是LDW系统的变型。如果车辆400开始离开车道,那么LKA系统提供纠正车辆400的转向输入或制动。

BSW系统检测并向驾驶员警告汽车盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器460,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。

RCTW系统可以在车辆400倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器460,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。

常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是通常不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自动驾驶车辆400中,在冲突结果的情况下,车辆400本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如,第一控制器436或第二控制器436)的结果。例如,在一些实施例中,ADAS系统438可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统438的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。

在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的指示,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如,冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。

监督MCU可以被配置为运行神经网络,一个或更多个神经网络被训练并且被配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的一个或更多个神经网络可以了解何时能够信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的一个或更多个神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的一个或更多个神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的一个或更多个神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括一个或更多个SoC 404的组件和/或作为一个或更多个SoC 404的部件而被包括。

在其他示例中,ADAS系统438可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在的一个或更多个神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误,并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且使用主计算机上的软件或硬件中的漏洞不造成重大的错误。

在一些示例中,ADAS系统438的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统438由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,如本文所述,辅助计算机可以具有它自己的神经网络,其被训练从而降低假阳性的风险。

车辆400可以进一步包括信息娱乐SoC 430(例如,车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的组件。信息娱乐SoC 430可以包括可以用来向车辆400提供音频(例如,音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如,TV、电影、流媒体等等)、电话(例如,免提呼叫)、网络连接(例如,LTE、Wi-Fi等等)和/或信息服务(例如,导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门打开/关闭、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 430可以包括收音机、磁盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、Wi-Fi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器434、远程信息处理设备、控制面板(例如,用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 430可以进一步用来向车辆的用户提供信息(例如,视觉的和/或听觉的),例如来自ADAS系统438的信息,诸如规划的车辆操纵、轨迹、周围环境信息(例如,交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。

信息娱乐SoC 430可以包括GPU功能。信息娱乐SoC 430可以通过总线402(例如,CAN总线、以太网等)与车辆400的其他设备、系统和/或组件通信。在一些示例中,信息娱乐SoC 430可以耦合至监督MCU,使得在主控制器436(例如,车辆400的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC 430可以如本文所描述的将车辆400置于司机安全停车模式。

车辆400可以进一步包括仪表组432(例如,数字仪表板、电子仪表组、数字仪表面板等等)。仪表组432可以包括控制器和/或超级计算机(例如,分立的控制器或超级计算机)。仪表组432可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、一个或更多个安全带警告灯、一个或更多个停车制动警告灯、一个或更多个发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 430和仪表组432之间共享。换言之,仪表组432可以作为信息娱乐SoC 430的部分而被包括,或者反之亦然。

图4D为根据本公开一些实施例的一个或更多个基于云的服务器与图4A的示例自动驾驶车辆400之间的通信的系统示意图。系统476可以包括一个或更多个服务器478、一个或更多个网络490以及包括车辆400在内的车辆。一个或更多个服务器478可以包括多个GPU484(A)-484(H)(这里统称为GPU 484)、PCIe交换机482(A)-482(H)(这里统称为PCIe交换机482)和/或CPU 480(A)-480(B)(这里统称为CPU 480)。GPU 484、CPU 480和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口488之类的高速互连和/或PCIe连接486互连。在一些示例中,GPU 484经由NVLink和/或NVSwitch SoC连接,并且GPU 484和PCIe交换机482经由PCIe互连连接。尽管图示出八个GPU 484、两个CPU 480和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器478中的每一个可以包括任意数量的GPU484、CPU 480和/或PCIe交换机。例如,一个或更多个服务器478中的每一个可以包括八个、十六个、三十二个和/或更多GPU 484。

一个或更多个服务器478可以通过一个或更多个网络490并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。一个或更多个服务器478可以通过一个或更多个网络490并且向车辆传输神经网络492、更新的神经网络492和/或地图信息494,包括关于交通和道路状况的信息。对地图信息494的更新可以包括对于HD地图422的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络492、更新的神经网络492和/或地图信息494可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如,使用一个或更多个服务器478和/或其他服务器)的经验产生。

一个或更多个服务器478可以用来至少部分地基于训练数据训练机器学习模型(例如,神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如,使用游戏引擎)。在一些示例中,训练数据被标记(例如,在神经网络受益于有监督学习的情况下)和/或对其进行其他预处理,而在其他示例中,没有对训练数据进行标记和/或预处理(例如,在神经网络无需有监督学习的情况下)。可以根据机器学习技术的任何一个或更多个类来执行训练,包括但不限于诸如:监督训练、半监督训练、无监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主成分和聚类分析),多线性子空间学习,流形学习,表示学习(包括备用字典学习),基于规则的机器学习,异常检测,及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如,通过一个或更多个网络490传输至车辆),和/或机器学习模型可以由一个或更多个服务器478用来远程地监控车辆。

在一些示例中,一个或更多个服务器478可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。一个或更多个服务器478可以包括由一个或更多个GPU 484供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,一个或更多个服务器478可以包括仅使用CPU供电的数据中心的深度学习基础设施。

一个或更多个服务器478的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆400中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆400的定期更新,例如图像序列和/或车辆400已经定位的位于该图像序列中的对象(例如,经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆400识别的对象相比较,如果结果不匹配并且该基础设施得出车辆400中的AI发生故障的结论,那么一个或更多个服务器478可以向车辆400传输信号,指示车辆400的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。

为了推理,一个或更多个服务器478可以包括一个或更多个GPU 484和一个或更多个可编程推理加速器(例如,NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。

图5为适合用于实现本公开一些实施例的一个或更多个示例计算设备500的框图。计算设备500可以包括直接或间接耦合下列设备的总线的互连系统502:存储器504,一个或更多个中央处理单元(CPU)506,一个或更多个图形处理单元(GPU)508,通信接口510的I/O端口512,输入/输出组件514,电源516,以及一个或更多个呈现组件518(例如,一个或更多个显示器),以及一个或更多个逻辑单元520。

尽管图5的各个框被示为经由具有线路的总线的互连系统502连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件518可以被认为是I/O组件514(例如,如果显示器为触摸屏)。作为另一个示例,CPU 506和/或GPU 508可以包括存储器(例如,存储器504可以表示除了GPU 508、CPU 506和/或其他组件的内存以外的存储设备)。换言之,图5的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”、“增强现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图5的计算设备的范围内。

所述互连系统502可以表示一条或更多条连接或者总线,例如地址总线、数据总线、控制总线或者其组合。所述互连系统502可以包括一种或更多种连接或者总线类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外设部件互连(PCI)总线、高速外设部件互连(PCIe)总线,和/或另一种类型的总线或者连接。在一些实施例中,组件之间存在直接连接。例如,CPU 506可以直接连接到存储器504。此外,CPU 506可以直接连接到GPU 508。在组件之间存在直接或点对点连接的情况下,互连系统502可以包括用于执行连接的PCIe链路。在这些示例中,PCI总线不需要包括在计算设备500中。

存储器504可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备500访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。

计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器504可以存储计算机可读指令(例如,其表示一个或更多个程序和/或一个或更多个程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备500访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。

计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。

一个或更多个CPU 506可以被配置为执行至少某些计算机可读指令以便控制计算设备500的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。一个或更多个CPU 506中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。一个或更多个CPU 506可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备500的类型(例如,具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备500的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备500还可以包括一个或更多个CPU506。

除了一个或更多个CPU 506或者作为CPU 506的替代,可以将一个或更多个GPU508配置为执行计算机可读指令中的至少一部分,以控制计算设备500的一个或更多个组件来执行本文所述的一个或更多个方法和/或处理。GPU 508中的一个或更多个可以是集成GPU(例如,具有CPU 506中的一个或更多个)和/或GPU 508中的一个或更多个可以是离散GPU。在实施例中,GPU 508中的一个或更多个可以是一个或更多个CPU 506的协处理器。一个或更多个计算设备500可以使用一个或更多个GPU 508来呈现图形(例如,3D图形)或者执行通用计算。例如,一个或更多个GPU 508可用于GPU(GPGPU)上的通用计算。一个或更多个GPU 508可以包括能够同时处理数百或数千个软件线程的数百或数千个核心。一个或更多个GPU 508可以响应于渲染命令(例如,经由主机接口接收的来自一个或更多个CPU 506的渲染命令)而生成用于输出图像的像素数据。一个或更多个GPU 508可以包括诸如显示内存之类的图形存储器,用于存储像素数据或任何其他合适的数据,例如GPGPU数据。显示存储器可以作为存储器504的部分而被包括。一个或更多个GPU 508可以包括并行操作的两个或更多个GPU(例如,经由链路)。链路可以直接连接GPU(例如,使用NVLINK),或者可以通过交换机连接GPU(例如,使用NVSwitch)。当组合在一起时,每个GPU 508可以生成用于输出的不同部分或者用于不同输出的像素数据或者GPGPU数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的存储器,或者可以与其他GPU共享存储器。

除了一个或更多个CPU 506和/或一个或更多个GPU 508,一个或更多个逻辑单元520可以被配置为执行至少一些计算机可读指令,以控制计算设备500的一个或更多个组件以执行本文所述的一个或更多个方法和/或处理中的至少一些计算机可读指令。在实施例中,一个或更多个CPU 506、一个或更多个GPU 508和/或一个或更多个逻辑单元520可以离散地或联合地执行方法、过程和/或其部分的任何组合。一个或更多个所述逻辑单元520可以是一个或更多个所述CPU 506和/或所述GPU 508中的一部分和/或集成在一个或更多个所述CPU 506和/或所述GPU 508中,和/或一个或更多个所述逻辑单元520可以是分立组件或所述CPU 506和/或所述GPU 508的外部组件。在实施例中,逻辑单元520中的一个或更多个可以是一个或更多个CPU 506和/或一个或更多个GPU 508的协处理器。

一个或更多个逻辑单元520的示例包括一个或更多个处理核心和/或其组件,例如一个或更多个张量核心(TC),一个或更多个张量处理单元(TPU),一个或更多个像素视觉核心(PVC),一个或更多个视觉处理单元(VPU),一个或更多个图形处理集群(GPC),一个或更多个纹理处理集群(TPC),一个或更多个流式多处理器(SM),一个或更多个树遍历单元(TTU),一个或更多个人工智能加速器(AIA),一个或更多个深度学习加速器(DLA),一个或更多个算术逻辑单元(ALU),一个或更多个专用集成电路(ASIC),一个或更多个浮点单元(FPU),I/O元件,外设部件互连(PCI)或高速外设部件互连(PCIe)元素等。

通信接口510可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备500能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口510可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如,Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如,通过以太网或InfiniBand通信)、低功率广域网(例如,LoRaWAN、SigFox等等)和/或因特网。

I/O端口512可以使得计算设备500能够逻辑地耦合到包括I/O组件514、一个或更多个呈现组件518和/或其他组件在内的其他设备,其中一些可以内置到(例如,集成到)计算设备500中。说明性I/O组件514包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件514可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些示例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备500的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备500可以包括诸如立体相机系统之类的深度相机、红外相机系统、RGB相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备500可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备500用来渲染沉浸式增强现实或者虚拟现实。

电源516可以包括硬接线电源、电池电源或者其组合。电源516可以向计算设备500供电以使得计算设备500的组件能够操作。

一个或更多个呈现组件518可以包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。一个或更多个呈现组件518可以接收来自其他组件(例如,一个或更多个GPU 508、一个或更多个CPU 506等等)的数据,并且输出该数据(例如,作为图像、视频、声音等等)。

图6为根据本公开实施例的用于表示确定注视方向的处理步骤的流程图。当计算设备300接收由相机300拍摄的主体的图像时(步骤600),可以开始图6的处理。然后,计算设备300在所述接收到的图像中识别所述主体的面部和眼睛(步骤610)。可以使用任何方法或过程将主体面部定位在图像中,所述任何方法或过程包括已知的基于计算机视觉的面部检测过程,所述面部检测过程无需使用神经网络即可检测面部,例如边缘检测方法,特征搜索方法,概率面部模型,图形匹配,定向梯度直方图(HOG)输入分类器(例如,支持向量机),HaarCascade分类器等。面部定位也可以使用使用基于神经网络的面部识别方法来执行,例如采用深度神经网络(DNN)面部识别方案的方法以及其他方法。本公开的实施例还考虑了根据同一所述图像的所述主体的眼睛的位置。可以任何方式进行眼睛定位,例如通过已知的基于计算机视觉的眼睛检测处理,所述眼睛检测处理包括以上所述的任何一种基于非神经网络的技术,基于神经网络的眼睛识别方法,等等。

一旦所述主体的所述面部和眼睛处在所述接收的图像内,计算设备300就确定所述定位的面部特征点(步骤620)。面部特征点可以是与面部的特征元素或代表性的部分相对应的任何点或者位置,并且可以使用任何方法或过程进行识别。可以使用任何已知的基于计算机视觉的标志检测处理来定位面部特征点,而无需使用神经网络即可识别,例如边缘检测方法,特征搜索方法,概率面部模型,图形匹配,定向梯度直方图(HOG)输入分类器(例如,支持向量机),HaarCascade分类器等。也可以使用基于神经网络的面部识别方法(例如采用基于DNN的面部识别方案的方法)以及任何其他方法来执行标志检测。

然后选择眼部裁剪(步骤630),例如通过已知方式围绕步骤610中标识的每个眼睛绘制边界框,并且相应地裁剪图像。然后将步骤630的眼部裁剪和步骤620的面部特征点输入到本发明实施例的机器学习模型(例如,特征提取层215、220和225,通道关注力网络240和245以及完全连接层255),用来计算注视估计230、上下文向量235,以及如上所述从特征提取层215和225输出的眼睛方向特征(步骤640)。然后,将上下文向量235和来自特征提取层215和225的输出特征输入到通道关注网络240和245,以计算加权的眼睛特征(步骤650),所述加权眼睛特征与注视估计230连接并输入到完全连接层255以计算注视方向(步骤660)。然后将该注视方向输出到注视辅助系统320(步骤660),该系统可以基于其接收的注视方向执行任何一个或更多个动作(步骤670)。

本公开的实施例的任何所述完全连接层和特征提取层的训练可以通过任何合适的方式进行。在某些实施例中,本公开的实施例的全连接层和特征提取层可以以监督的方式进行训练,所述训练方式使用已知注视方向的主体的标记输入图像。在一些实施例中,可以端到端地训练本公开的实施例的模型架构。

本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。

如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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中的至少一个。

这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。

为了解释,上述描述使用了特定的术语,以提供对本公开的透彻理解。然而,对于本领域的技术人员将显而易见的是,所述具体细节不需要用于实践公开的方法和系统。因此,出于说明和描述的目的,本文给出了本发明的特定实施方式的前述描述。它们并不旨在穷举或将本发明限制为所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。例如,可以使用任何面部朝向信息来确定上下文向量和注视估计,并且本发明的实施例不限于面部特征点的使用。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本公开的方法和系统,以及具有适合所设想的特定用途的各种修改的各种实施例。另外,各种已公开或以其他方式公开的实施例的不同特征可以混合搭配或以其他方式组合,以创建本公开所设想的其他实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号