在自主驾驶应用中使用神经网络执行故障检测
文献发布时间:2023-06-19 11:54:11
背景技术
自动驾驶系统和高级驾驶员辅助系统(ADAS)可以利用传感器(例如,相机)来执行各种任务-例如但不限于车道保持、车道变更、车道分配、车道检测、对象检测、路径规划、相机校准和本地化。为了执行其中的许多任务,可以使用机器学习模型(尤其是深度神经网络(DNN))来执行至少一些处理。结果,为了使这些系统以自主或半自主驾驶功能所需的安全级别运行,机器学习模型需要在其实现的整个生命周期内按预期执行。
然而,用于执行这些DNN的软件和/或硬件可能会受到多种因素的损害-导致暂时性故障和/或永久性故障-其可能导致不准确的预测,从而可能损害DNN的有效性。作为示例,DNN中的故障的潜在原因可以包括执行DNN的处理单元中的硬件故障和/或底层DNN的软件故障。因此,鲁棒而准确地检测与DNN相关联的故障的能力可以允许自主和/或ADAS系统实时或近乎实时地做出关键决策-例如建议或实施纠正措施以实现有效和安全的驾驶。例如,准确、有效且及时地识别DNN故障可以使系统识别依赖于DNN预测的系统操作何时受损,并因此允许系统执行纠正操作,例如操作控制返回人类驾驶员或执行安全操纵(例如,拉到路边)。
在常规系统中,可以通过DNN的冗余执行来确定DNN的弹性和/或故障覆盖。例如,可以在相同的输入数据上执行DNN的两个或更多个实例,并且可以将两个或更多个实例的输出相互比较以确定是否存在任何差异。但是,运行DNN的多个实例既是存储器密集型的又是处理密集型的,在某些情况下,还需要额外的硬件利用来运行并发实例。另外,这些常规系统要求经常在每次迭代时比较DNN的两个或更多个实例的输出,这进一步增加了计算费用。由于这些常规方法在底层系统上的计算负担,执行这些过程可阻止实时或接近实时的故障检测能力。
发明内容
本公开的实施例涉及神经网络中的故障检测。公开了使用技术来使用神经网络的单个实例来检测硬件和/或软件系统的一个或更多个组件中的暂时性和/或永久性故障的系统和方法。
与诸如如上所述的常规系统相反,本公开的系统可以实现深度神经网络(DNN),用于通过使用图案(motifs)、水印和/或签名(例如,签名图像)作为DNN的输入(或对输入的修改)来检测执行DNN的至少硬件和/或软件中的故障。作为本文描述的过程的结果,与常规方法相比,可以使用DNN的单个实例执行具有增加的故障覆盖的故障分析-从而减少了计算费用,并可以实时或近实时地进行部署。例如,由于本系统的实时能力,DNN中的故障检测可以作为部署中运行的内置自测(BIST)系统的一部分执行。
图案、水印和/或签名可以用作DNN的输入或附加到输入(例如,附加到传感器数据)。在非限制性实施例中,可以选择图案、水印和/或签名以利用已经针对其训练了DNN的下游任务。例如,在训练DNN进行对象检测,或专门检测车辆、行人和骑自行车的人的情况下,图案、水印和/或签名可以表示车辆、行人和/或骑自行车的人。可以将针对图案、水印和/或签名的DNN预测与针对它们的预期预测进行比较,并可以分析不一致之处以确定是否存在故障。通过附加和/或使用图案、水印和/或签名作为输入,图案、水印和/或签名可以由DNN的单个实例处理–与需要DNN的多个实例用于故障检测的常规系统相比,减少了计算资源,同时减少了运行时间以允许实时部署。
下面参考附图详细描述用于神经网络中的故障检测的当前系统和方法,其中:
图1是根据本公开的一些实施例的示出用于检测神经网络中的暂时性故障的过程的示例数据流程图;
图2包括根据本公开的一些实施例的被训练为检测对象的神经网络的示例图示;
图3A-图3B包括根据本公开的一些实施例的将图案附加到输入图像的示例图示;
图4是根据本公开的一些实施例的用于分析网络的输出以进行故障检测的过程的示例图示;
图5是根据本公开的一些实施例的用于检测神经网络中的故障的过程的示例图示;
图6是根据本公开的一些实施例的示出用于使用图案和/或水印来检测神经网络中的故障的方法的流程图;
图7是根据本公开的一些实施例的示出用于检测神经网络中的故障的过程的示例数据流程图;
图8A-图8C包括根据本公开的一些实施例的用于确定神经网络中的故障的签名输入的示例图示;
图9是根据本公开的一些实施例的示出用于使用签名来检测神经网络中的故障的方法的流程图;
图10A是根据本公开的一些实施例的示例性自主车辆的图示。
图10B是根据本公开的一些实施例的用于图10A的示例性自主车辆的相机位置和视野的示例;
图10C是根据本公开的一些实施例的用于图10A的示例性自主车辆的示例性系统架构的框图;
图10D是根据本公开的一些实施例的用于在一个或更多个基于云的服务器与图10A的示例性自主车辆之间进行通信的系统图;以及
图11是适合用于实现本公开的一些实施例的示例性计算设备的框图。
具体实施方式
公开了与神经网络中的故障检测有关的系统和方法。本文所述的系统和方法可以用于增强现实、虚拟现实、机器人技术、安全和监督、医学成像、自主或半自主机器应用、游戏、金融服务、市场和销售、政府应用、石油和天然气技术、天气预报和/或使用神经网络或其他机器学习模型的任何其他技术空间,并因此可能从与之相关的故障检测中受益。尽管可以针对示例自主车辆1000(在本文中可替代地被称为“车辆1000”或“自主车辆1000”,其示例相对于图10A-图10D进行描述)来描述本公开,但这是并不旨在进行限制。例如,本文描述的系统和方法可以由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助系统(ADAS)中)、机器人、仓库车辆、越野车辆、飞行船只、轮船、穿梭车、应急车辆、摩托车、电动或机动自行车、飞机、建筑车辆、水下航行器、无人机和/或其他车辆类型。另外,尽管本公开的故障可以主要是指与底层系统的硬件和/或软件有关的任何暂时性或永久性故障,但这并不旨在进行限制。例如,在本文描述了暂时性故障检测的情况下,这样的示例也可以用于永久故障检测,反之亦然。类似地,除了暂时性故障和永久性故障之外或作为其替代,本公开的系统和方法可用于间歇性故障检测和/或其他类型的故障检测,而不脱离本公开的范围。
暂时性故障检测方法
如本文所述,与神经网络故障检测的常规方法相比,当前系统使用图案、水印和/或签名(例如,签名图像)作为DNN的输入或作为输入的修改来检测DNN中的暂时性和/或永久性故障。结果,可以使用DNN的单个实例来执行DNN的故障分析-从而与常规系统相比减少计算支出,并使得能够实时或近实时地进行部署。在一些非限制性实施例中,例如对于暂时性故障检测,可以将图案或水印附加到输入数据(例如,表示图像的图像数据)以实现使用DNN的故障检测。例如,可以将与训练DNN以进行的预测的类型相对应的图案或水印附加到输入数据,从而利用经训练的DNN进行故障预测。在这样的实施例中,可以将关于图案或水印的DNN的预测与关于图案或水印的DNN的预期预测进行比较,并且可以分析不一致以确定是否存在故障。
关于使用DNN检测一个或更多个故障,可以从布置在车辆(例如,自主车辆、半自主车辆等)上或以其他方式与之相关联的传感器(例如,相机、LIDAR、RADAR等)接收传感器数据(例如,图像、视频、深度图、点云等)。可以将图案引入(例如,附加)至传感器数据以生成表示传感器数据和图案的输入数据。可以将输入数据应用于训练为基于输入数据生成预测(例如,对象的位置和/或类别,线、车道、标志等的位置,十字路口,路径等)的DNN。这样,图案或水印可以对应于训练DNN以预测的对象、线等的类型和/或类别。
然后,DNN可以输出与传感器数据和包括在输入数据中的图案相对应的预测。然后可以使用故障检测器将DNN的预测与对应于图案的预期预测进行比较。例如,预期预测可以包括图案的实际位置和/或类别标签,其在将图案引入输入数据时可能已经被存储。比较可以包括比较与输入数据相对应的位置和/或类别标签,以确保预测至少包括关于图案的准确或预期预测。基于该比较,可以例如通过识别DNN的预测是否不对应于故障检测器已知的图案信息来确定网络的准确性或弹性,或者相对于图案信息,该预测在阈值精度之外。
例如,当与图案相对应的预期预测在DNN的预测中表示时,可以确定DNN预测是准确的,并且至少在DNN的处理方面,可以将DNN或支持的硬件和/或软件视为无故障的。类似地,当与图案相对应的预期预测未在DNN的预测中表示时,可以确定DNN预测是不准确的,系统和/或DNN可能会丢弃或忽略这些预测,或者支持的硬件和/或软件可能被认为包含故障(例如,暂时性故障)。在此类示例中,如果检测到故障,则可以采取纠正措施,例如将车辆的控制权移交给驾驶员,执行安全操纵和/或将DNN的处理卸载或转移至其他组件(例如,冗余架构)。在一些示例中,可以在将传感器数据输入到DNN的每次迭代中应用图案。这样,系统可以持续解决故障,从而增加系统的安全性。但是,这并不旨在是限制性的,并且可以以不同的间隔(例如,随机地)、输入数据的每隔一个实例、输入数据的每三个实例、输入数据的每十个实例等来附加图案。
在一些示例中,可以从训练期间DNN遇到的模式中选择图案。例如,可以训练DNN进行对象检测,包括输出与在传感器数据中检测到的对象的预测位置相对应的预测。在这样的示例中,可以选择图案以匹配在训练数据集中的训练期间神经网络遇到的对象。通过这种方式,可以利用DNN的训练来确定网络是否存在暂时性故障,并且DNN可能不需要重新训练就可以检测出图案。此外,可以在输入数据的不同迭代中改变图案的位置、数量、类别和/或类型,从而创建具有增加的故障覆盖的鲁棒的故障检测系统。
现在参考图1,图1是根据本公开的一些实施例的示例数据流程图,其示出了用于使用图案和/或水印的神经网络中的故障检测的示例过程100。尽管本文关于图1主要描述的检测类型是暂时性或永久性故障检测,这不旨在是限制性的,并且其仅出于示例目的。例如,在不脱离本公开的范围的情况下,过程100可以用于检测和分类故障的任意数量的属性和/或原因,例如本文所述的那些。
过程100可以包括从一个或更多个传感器生成和/或接收传感器数据102。作为非限制性示例,传感器数据102可以从车辆(例如,图10A-图10C的车辆1000,并且在本文中描述)的一个或更多个传感器接收。车辆可以在过程100中使用传感器数据102,以实时或接近实时地检测和分类神经网络故障。传感器数据102可以包括但不限于来自车辆的任何传感器的传感器数据102,任何传感器包括例如以及参考图10A-图10C:一个或更多个全球导航卫星系统(GNSS)传感器1058(例如,一个或更多个全球定位系统传感器),一个或更多个RADAR传感器1060,一个或更多个超声传感器1062,一个或更多个LIDAR传感器1064,一个或更多个惯性测量单元(IMU)传感器1066(例如,加速度计、陀螺仪、磁罗盘、磁力计等),一个或更多个麦克风1076,一个或更多个立体相机1068,一个或更多个广角相机1070(例如,鱼眼相机),一个或更多个红外相机1072,一个或更多个环绕相机1074(例如,360度相机),一个或更多个远程和/或中程相机1078,一个或更多个速度传感器1044(例如,用于测量车辆1000的速度)和/或其他传感器类型。作为另一示例,传感器数据102可以包括从虚拟车辆或其他虚拟对象的任何数量的传感器生成的虚拟传感器数据。在这样的示例中,虚拟传感器可以对应于模拟环境中的虚拟车辆或其他虚拟对象(例如,用于测试、训练和/或验证神经网络性能),并且虚拟传感器数据可以表示由模拟或虚拟环境中的虚拟传感器捕获的传感器数据。这样,通过使用虚拟传感器数据,可以在模拟环境中使用模拟数据来测试、训练和/或验证本文所述的一个或更多个机器学习模型108,这可允许在真实环境之外测试更极端的场景,在这种环境下,此类测试可能不太安全。
在一些实施例中,传感器数据102可以包括表示一个或更多个图像的图像数据,表示视频的图像数据(例如,视频的快照)和/或表示传感器的感测场的表示的传感器数据(例如,LIDAR传感器的深度图、超声传感器的值图等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图像数据格式,例如但不限于,诸如联合图像专家组(JPEG)或亮度/色度(YUV)格式之类的压缩图像,作为源自诸如H.264/高级视频编码(AVC)或H.265/高效视频编码(HEVC)之类的压缩视频格式的帧的压缩图像,诸如源自红色透明蓝色(RCCB)、红色透明(RCCC)或其他类型的成像传感器的原始图像和/或其他格式。另外,在一些示例中,传感器数据102可以在过程100内使用而无需任何预处理(例如,以原始或捕获的格式),而在其他示例中,传感器数据102可以进行预处理(例如,噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,例如使用传感器数据预处理器(未示出))。如本文中所使用的,传感器数据102可以参考未处理的传感器数据、预处理的传感器数据或其组合。
一个或更多个图案104可以包括但不限于与传感器数据102一起包括(例如,附加)以生成组合的传感器数据106的图案和/或水印。在一些实施例中,一个或更多个图案104可以用与训练一个或更多个机器学习模型108以进行的预测的类型相对应的图像数据来表示。例如,对于经训练以检测和/或分类诸如汽车、卡车、道路标志、行人等的一个或更多个对象的一个或更多个机器学习模型108,可以选择一个或更多个图案104作为汽车、卡车、道路标志和/或行人的图像。在另一个示例中,对于训练为检测和/或分类车道的一个或更多个机器学习模型108,可以选择一个或更多个图案104作为车道的一个或更多个附加线或一个或更多个车道标记。这样,在一些示例中,一个或更多个图案104可以表示一个或更多个机器学习模型108在训练和/或推理期间已经遇到的模式。在这样的示例中,可以选择一个或更多个图案104以匹配在训练数据集中的训练期间一个或更多个机器学习模型108所遇到的对象。这样,可以利用对一个或更多个机器学习模型108的训练来确定网络是否具有暂时性故障,并且可以不需要对一个或更多个机器学习模型108进行重新训练或单独地训练以检测一个或更多个图案104。
在其他示例中,可以使用与组合传感器数据106相似的训练传感器数据来训练一个或更多个机器学习模型108。例如,在训练期间,可以在训练传感器数据上附加或增强一个或更多个图案,使得一个或更多个机器学习模型108被训练为直接预测一个或更多个图案104。在这样的示例中,可以训练一个或更多个机器学习模型108以用于关于训练传感器数据的一个或更多个第一任务以及关于一个或更多个图案104的一个或更多个第二任务。作为非限制示例,可以在与LIDAR数据相对应的深度图上训练一个或更多个机器学习模型108,并且可以在深度图上附加要检测的对象的一个或更多个图案104。这样,可以训练机器学习模型108以使用深度图进行预测,同时也可以训练一个或更多个机器学习模型108以进行与一个或更多个图案104相对应的不同预测。在其他实施例中,训练中一个或更多个图案104的使用可以用于与一个或更多个机器学习模型108的主任务相同的任务(例如,对象检测)。
组合传感器数据106可以包括表示传感器数据102和一个或更多个图案104的组合的数据。组合传感器数据106可以用作一个或更多个机器学习模型108的输入。在一些示例中,在每次迭代时,组合传感器数据106中可以包括相似的类型、数量和/或类别的一个或更多个图案104,或者确切的类型、数量和/或类别的一个或更多个图案104。在其他示例中,可以在每次迭代时将不同类型、数量或类别的一个或更多个图案104引入传感器数据102。另外,一个或更多个图案104的位置和/或大小在整个迭代中可以保持恒定,或者可以在不同的迭代中改变。在一些实施例中,为了增加故障覆盖,可以在组合传感器数据106的不同迭代中改变一个或更多个图案104的位置、类型、数量、类别和/或大小。例如,由于处理一个或更多个机器学习模型108的底层硬件和/或软件的不同部分可以通过在不同的迭代中移动、调整大小或以其他方式更改一个或更多个图案104来处理与组合传感器数据106的不同部分相对应的信息,因此底层硬件和/或软件的更大范围可进行故障测试。
在非限制性实施例中,可以使用与第一空间分辨率的完整图像或其他表示(例如,没有一个或更多个图案104)相对应的训练数据(例如,训练图像或其他训练数据表示)来训练一个或更多个机器学习模型108。在这样的实施例中,在推理期间,可以将传感器数据102或其图像或其他表示从第一空间分辨率缩小到第二空间分辨率,并且可以将一个或更多个图案104附加到传感器数据102上以生成第一空间分辨率的组合传感器数据106。这样,训练传感器数据可以具有与包括一个或更多个图案104的组合传感器数据106相同的空间分辨率,从而允许针对下游任务(例如,对象检测、线回归)使用与推理期间使用的组合传感器数据106不同(例如,不具有一个或更多个图案104)的训练传感器数据来训练一个或更多个机器学习模型108。在这样的实施例中,一个或更多个图案104可以如本文中所描述的那样表示一个或更多个机器学习模型108被训练以在诸如某些类型的对象或环境的其他特征上检测或回归的表示。这样,经训练以执行特定任务而无需考虑故障检测的一个或更多个机器学习模型108,然后可以具有在推理中实现的本文所述的故障检测方法(例如,向传感器数据102附加或以其他方式添加一个或更多个图案104),而不影响一个或更多个机器学习模型108的性能或不需要重新训练。作为非限制性示例,除其他事项外,图3A-图3B示出了原始图像如何缩小尺寸并在其上附加一个或更多个图案104以生成组合传感器数据106。
来自组合传感器数据106的一个或更多个图案104的位置、类别、数量、大小和/或类型可以被跟踪和/或存储为一个或更多个预期预测112。在一个或更多个图案104在每次迭代中被固定的情况下,则一个或更多个预期预测112也可以是固定的,并且仅存储一次。在一个或更多个图案104是动态的情况下,可以随时间追踪一个或更多个图案104的位置、类别、数量、大小和/或类型,并存储以供故障检测器114用于确定是否存在故障。例如,故障检测器114可以将来自一个或更多个输出110的数据与一个或更多个预期预测112进行比较,以看一个或更多个输出110与一个或更多个预期预测112是否对齐(例如,如果图案是图像的右上方的A类的车辆,则故障检测器114可能会在一个或更多个输出110中查找指示图像的右上方存在A类的车辆的数据-例如,由边界框的位置表示)。在一些示例中,一个或更多个预期预测112可以被存储为数据结构,该数据结构存储每个图案104所位于的像素位置和/或一个或更多个图案104的对应类型和/或类别。
一个或更多个机器学习模型108可以将由组合传感器数据106表示的一个或更多个图像或其他数据表示(例如,来自LIDAR数据的深度图或点云,来自RADAR数据的图像等)用作输入以生成一个或更多个输出110。在非限制性示例中,一个或更多个机器学习模型108可以将由组合传感器数据106表示的一个或更多个图像作为输入(例如,在向传感器数据102附加一个或更多个图案104之后)以生成一个或更多个输出110。尽管本文相对于使用神经网络(尤其是DNN)作为一个或更多个机器学习模型108描述了示例,但这并不旨在是限制性的。例如但不限于,本文描述的一个或更多个机器学习模型108可以包括任何类型的机器学习模型,诸如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯(
一个或更多个机器学习模型108的一个或更多个输出110可以包括与组合传感器数据106相对应的预测。例如,一个或更多个机器学习模型的一个或更多个输出可以包括类型、类别、大小、位置、值和/或与组合传感器数据106相对应的其他信息。例如,对于训练为检测对象的一个或更多个机器学习模型108,一个或更多个输出110可以包括与对象和/或与其关联的类别标签相对应的边界形状的顶点的像素位置。在一些实施例中,用于一个或更多个预测的一个或更多个机器学习模型108的输出可以包括置信度值。例如,在预测模式区域中的每个像素,或者对于每个预测模式(或其顶点),可以为训练一个或更多个机器学习模型108以预测的每个类别类型输出置信度值,并确定最高置信度以作为对象的类别。这样,一旦确定了最高置信度类别,就可以将该类别与一个或更多个预期预测112进行比较,以确定是否存在问题,并最终确定是否存在故障。
为了确定故障,如本文所述,可以由故障检测器114分析或比较一个或更多个机器学习模型108的一个或更多个输出110和一个或更多个预期预测112,以确定关于从组合传感器数据106确定的一个或更多个预期预测112的一个或更多个输出110的准确性。作为关于对象检测的另一个非限制性示例,对于引入到传感器数据102的一个或更多个图案104中的每个图案,可以将相对于组合传感器数据106包括实际位置和/或实际类别标签的一个或更多个预期预测112与一个或更多个输出110中的预测位置和/或预测类别标签进行比较以检查预测或结果的准确性。
基于该比较,可以确定一个或更多个机器学习模型108的准确性或弹性,例如通过识别一个或更多个机器学习模型108的预测或一个或更多个输出110是否不对应于故障检测器114已知的图案信息,或者预测是否超出关于图案信息的阈值精度。在一些示例中,当每个图案104的一个或更多个预期预测112在一个或更多个输出110中表示时,故障检测器114可以确定一个或更多个机器学习模型108的预测是准确的,并且一个或更多个机器学习模型108的底层硬件和/或软件没有故障。类似地,当每个图案104的一个或更多个预期预测112未在一个或更多个输出110中表示时,故障检测器114可以确定一个或更多个机器学习模型108的预测是不准确的,并且一个或更多个机器学习模型108的底层硬件和/或软件有故障。在一个示例中,一个或更多个输出110必须包括组合传感器数据106中的每个图案104的表示,用于确定一个或更多个机器学习模型108为无故障的。当发现一个或更多个机器学习模型108的结果不准确时,一个或更多个机器学习模型108可以被确定为具有暂时性故障。这可以允许系统使用一个或更多个机器学习模型108的单个实例执行故障检测,同时在一些实施例中,利用一个或更多个机器学习模型108的训练来实时或近乎实时地检测故障。
一旦做出有故障或无故障的确定,该信息可以被传递到系统的一个或更多个组件以做出一个或更多个控制决策116。例如,在该系统是本文所述的车辆1000的情况下,故障确定可以传递到自动驾驶软件栈的一个或更多个层(例如,规划层、控制层、世界模型管理器、感知层、驱动栈的避障层、驱动栈的致动层等),以确定一个或更多个合适的控制决策116。例如,在关于图案信息的预测超出阈值精度的情况下,一个或更多个机器学习模型108的一些或所有输出可以相对于一个或更多个控制决策116跳过或忽略。在一些示例中,例如在一个或更多个机器学习模型108的预测不准确且无法用于车辆1000的安全操作的情况下,一个或更多个控制决策116可以包括将控制交还给驾驶员(例如,退出自主或半自主操作),或者执行紧急或安全操作(例如,停下来、拉到路边或其组合)。这样,一个或更多个控制决策116可以包括建议用于有效和安全驾驶的一种或更多种纠正措施,诸如忽略一个或更多个机器学习模型108的某些结果。在任何示例中,以及关于自主或半自主驾驶,一个或更多个控制决策116可以包括与自主驾驶软件栈(在本文中可替代地被称为“驱动栈”)的神经网络管理器层、驱动栈的感知层、驱动栈的世界模型管理层、驱动栈的规划层、驱动栈的控制层、驱动栈的避障层和/或驱动栈的致动层相对应的任何决策。在没有检测到故障的示例中,一个或更多个控制决策116仍可能受到该信息的影响。例如,在未接收到指示一个或更多个机器学习模型108工作正常的指示或信号的情况下(例如,在每次迭代、以某间隔等),可能不依赖或使用自动驾驶软件栈的某些功能或特征。在一些示例中,过程100可以在系统内运行的任何数量的一个或更多个机器学习模型108上执行。例如,自动驾驶软件栈可能依赖成百上千的一个或更多个机器学习模型108来进行有效且安全的操作,并且其中的任何数量都可能要经过过程100,以确保故障不会干扰安全有效的操作。这样,如本文所述,可使用一个或更多个机器学习模型108针对对应于驱动栈的一个或更多个层的任何数量的不同操作来分别确定一个或更多个输出110的精度。例如,可以使用第一机器学习模型针对驱动栈的感知层确定对象检测操作的第一精度,并且可以使用训练为对车道线回归的第二机器学习模型针对驱动栈的规划层确定路径规划的第二精度。
现在参考图2,图2是根据本公开的一些实施例的被训练以检测对象的一个或更多个示例机器学习模型108的图示。如本文所述,用于对象检测的一个或更多个机器学习模型108仅出于示例目的,并且可以使用其他类型的一个或更多个机器学习模型108,而不会脱离本公开的范围。另外,尽管主要示出了车辆、树木和建筑物作为用于检测的对象的示例,但这并不旨在是限制性的。作为另外的非限制性示例,可以训练一个或更多个机器学习模型108以执行针对使用云或云结构的图像的预报预测、针对使用图像的深度预测(例如,即使使用LIDAR数据、RADAR数据和/或图像数据的组合来进行训练)、针对使用传感器数据等预测海上石油或天然气管道的状况等的推理。
参照图2,例如,一个或更多个机器学习模型108可以被训练为将代表图像202的传感器数据102作为输入,并且可以输出与图像202中的对象相对应的预测208。预测208可以基于由一个或更多个机器学习模型108计算的一个或更多个对象位置和/或相关联的对象类别(例如,类别标签)而生成。例如,基于检测到的对象的形状、大小和/或位置,可以将每个对象分类为汽车、公共汽车、停车标志、行人、卡车、树木、建筑物等,例如,基于一个或更多个机器学习模型108已被训练为检测的类别的数量。一个或更多个机器学习模型108可以输出逐像素输出数据206,每个像素都与基于预测的对象分类(或空类别)的值相关联,或者可以输出对应于一个或更多个对象的回归像素位置或与其相对应的边界形状。
参照图3A-图3B,图3A-3B是根据本公开的一些实施例的将图案附加到输入图像的示例图示。例如,一个或更多个机器学习模型108可以使用表示组合图像310的图像数据(其包括表示输入图像302和一个或更多个图案304的数据)作为输入,以生成组合图像310的预测。参考图3A,输入图像302可以引入图案304(例如,图案304A、304B、304C)以生成组合图像310,其中图案304被附加在输入图像302上。如本文所述,在一些示例中,输入图像可以被下采样(例如,按10%、20%、35%等)以生成下采样图像306,并且可以将图案304引入到下采样图像306。在一些实施例中,图案304可以位于下采样图像306内,使得它们位于下采样图像306的边界之外,同时保持组合图像310的空间分辨率等于或小于原始输入图像302的空间分辨率。例如,可以沿着下采样图像306外部的边界(例如,顶部边界,底部边界,侧边界或它们的组合)添加图案304A、图案304B以及图案304C,其中对图案304的大小进行调整,以使组合图像310的空间分辨率与原始输入图像302的空间分辨率相似或相同(例如,对一个或更多个机器学习模型108进行训练并对其编程的空间分辨率)。
现在参考图3B,图3B示出了将图案附加到由车辆的图像传感器捕获的图像的示例图示。例如,一个或更多个机器学习模型108可以使用表示组合图像330的图像数据(其包括表示由车辆1000的图像传感器捕获的输入图像322和一个或更多个图案324的数据)以生成组合图像330的预测。类似于以上关于组合图像310的描述,输入图像322可以引入图案324(例如,图案324A、324B、324C)以生成组合图像330。
尽管图3A至图3B包括分别将图案304和324附加至原始输入图像302和322的边界,但这并不旨在是限制性的。例如,图案可以被添加在原始图像内、可以被添加在原始图像的边界之外或其组合。另外,尽管原始输入图像302和322被描述为分别在附加图案304和324之前被下采样,但这并不旨在是限制性的。例如,在训练和推理期间,原始图像的大小可以保持不变,并且可以在原始图像中添加图案,或者在训练过程中使用的图像也可以包括为图案指定的部分(例如,一个或更多个机器学习模型108可以在训练数据上被训练,该训练数据还包括图案,或者至少包括其中可以插入图案的附加部分。
现在参考图4,图4是根据本公开的一些实施例的用于针对故障检测使用机器学习模型来生成输出的过程的示例说明。过程400可以包括用于将引入有图案的图像数据应用于一个或更多个机器学习模型108以生成与原始图像数据和引入的图案相对应的输出的图1过程100的实例的视觉表示。作为非限制性示例,可以在过程400中训练一个或更多个机器学习模型108以用于对象检测,并且特别是用于检测汽车、卡车和树木。在推理期间,一个或更多个机器学习模型108可以将与代表由车辆(例如,车辆1000)的传感器捕获的图像的传感器数据102(例如,图像数据)相对应的组合传感器数据106与图案104A、104B和104C相结合作为输入实例。一个或更多个机器学习模型108然后可以生成输出406(例如,逐像素输出数据,其中每个像素与基于预测的对象分类(或空类别)的值相关联,像素对应于相对于组合传感器数据106的定位或位置),其可以对应于与传感器数据102有关的预测410A以及与一个或更多个图案104有关的预测410B。一个或更多个输出110可以包括区域的对象信息(例如,边界框、类别标签、位置),在该区域中预测每个对象位于组合传感器数据106中。
尽管描述为单独的预测410A和410B,但这并不旨在是限制性的。实际上,预测410A和410B可以对应于单个预测集,并且故障检测器114可以确定预测是否包括与一个或更多个图案104相对应的预测410B的子集,以及那些预测410B是否准确。
在一些示例中,基于检测到每个对象的位置(例如,区域、像素),可以将针对一个或更多个图案104的预测410B与组合传感器数据106中的一个或更多个图案104的已知或实际位置进行比较,以确定一个或更多个机器学习模型108的准确性,从而确定是否存在故障。例如,并且参考图5,可以将一个或更多个机器学习模型108的预测410B与一个或更多个预期预测112进行比较,以确定一个或更多个机器学习模型108的结果的准确性。可以基于由一个或更多个机器学习模型108输出的一个或更多个图案104的一个或更多个预期预测112和一个或更多个预测410B之间的一对一比较,在比较框B512处检测一个或更多个机器学习模型108中的故障。在图4和图5的非限制性示例中,一个或更多个预期预测112可以包括组合传感器数据106中的每个图案104的类别标签和/或位置。当将图案104A、104B和104C附加到传感器数据102或以其他方式添加到传感器数据102以生成组合传感器数据106时,可能已经存储了用于图案104A、104B以及104C的一个或更多个预期预测112。
可以将每个图案的一个或更多个预期预测112与一个或更多个机器学习模型108的预测410B进行比较。如果关于图案104A、104B和104C中的任何一个的一个或更多个预测112和一个或更多个预测410B之间存在差异(例如,在位置、类别标签等),则系统可以确定在一个或更多个机器学习模型108中检测到(在框B514A处)潜在故障。如果一个或更多个预期预测112与一个或更多个图案104A、104B和104C中的每一个的一个或更多个预测410B相匹配,则系统可以确定在一个或更多个机器学习模型108中未检测到(在框B514B处)故障。在其他示例中,当检测到(在框B514A处)准确性错误时,一个或更多个机器学习模型108可以被确定为具有暂时性故障。此外,可以基于在一个或更多个机器学习模型108中是否检测到故障来做出控制决策。在一些示例中,对于确定没有故障时组合传感器数据106的每个实例,预测410A可以是底层系统所依赖的。
现在参考图6,本文描述的方法600的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理器执行存储在存储器中的指令来执行。方法600也可以体现为存储在计算机存储介质上的计算机可用指令。方法600可以由独立应用、服务或托管服务(独立于另一托管服务或与其结合)或另一产品的插件提供,仅举几例。另外,通过示例的方式,相对于图1的过程100描述了方法600。然而,该方法600可以附加地或替代地由任何一个系统执行或在任何一个过程,或系统和过程的任何组合内执行,包括但不限于本文所述的那些。
图6是示出根据本公开的一些实施例的用于使用图案和/或水印来检测神经网络中的故障的方法600的流程图。在框B602处,方法600包括生成表示由传感器以及附加到传感器数据的一个或更多个图案捕获的传感器数据的第一数据。例如,可以生成第一数据(例如,组合传感器数据106),该第一数据表示传感器数据(例如,一个或更多个传感器数据102)和附加到传感器数据的图案(例如,一个或更多个图案104)。
在框B604处,方法600包括将第一数据应用于神经网络。例如,第一数据(例如,组合传感器数据106)可以被应用(例如,作为输入)到一个或更多个机器学习模型108(例如,神经网络,诸如DNN)。
在框B606处,方法600包括使用神经网络计算第二数据,该第二数据表示相对于第一数据的神经网络的预测。例如,一个或更多个机器学习模型108可以计算与一个或更多个机器学习模型108的预测相关联的一个或更多个输出110(例如,类别标签、位置、像素、值、置信度等)。
在框B608处,方法600包括将第二数据与第三数据进行比较,第三数据表示与由第一数据表示的一个或更多个图案相对应的预期预测。例如,由故障检测器114将一个或更多个机器学习模型108的一个或更多个输出110与一个或更多个预期预测112(例如,一个或更多个图案104的实际位置和/或类别标签)进行比较。对于组合传感器数据106的一个或更多个实例,故障检测器114可将一个或更多个机器学习模型108的一个或更多个输出110与一个或更多个图案104的每一个的一个或更多个预期预测112进行比较。
在框B610处,方法600包括:当至少部分地基于比较预期预测在神经网络的预测中表示时,确定预测是准确的。例如,当一个或更多个预期预测112在一个或更多个机器学习模型108的一个或更多个输出110中表示时,故障检测器114可以确定预测(例如,一个或更多个输出110)是准确的。当在一个或更多个输出110中找到一个或更多个图案104中的每一个的一个或更多个预期预测112时,或当确定阈值相似度(例如,对于对象检测而言,只要边界形状的顶点的预测位置相对于一个或更多个预期预测112在95%精度、98%精度等以内)时,故障检测器114可以确定一个或更多个预期预测112在一个或更多个输出110中表示。
在框B612处,方法600包括:当至少部分地基于比较预期预测未在神经网络的预测中表示时,确定预测是不准确的。例如,当一个或更多个预期预测112未在一个或更多个机器学习模型108的一个或更多个输出110中表示时,故障检测器114可以确定预测(例如,一个或更多个输出110)是不准确的。当在一个或更多个输出110中未找到用于一个或更多个图案104中的至少一个的一个或更多个预期预测112,或者一个或更多个预期预测112在一个或更多个预期预测112的阈值相似度之外时,故障检测器114可以确定一个或更多个预期预测112未在一个或更多个输出110中表示。
永久性故障检测方法
为了检测永久性故障,可以将表示签名图像的输入数据作为输入提供给深度神经网络(DNN),其中对DNN进行训练以预测相对于签名图像的某签名,或者对DNN进行训练以对与签名图像相似的图像进行预测,使得预期的签名是已知的。在这样的实施例中,签名图像可以被间歇地应用于DNN,并且可以将预测的签名与预期的签名进行比较以确定是否检测到故障。
在实施例中,为了检测DNN中的一个或更多个永久性故障,可以从传感器(例如,相机、LIDAR传感器、RADAR传感器等)接收传感器数据(例如,图像、视频、深度图等)。在对应于自主车辆的非限制性示例中,传感器可以设置在自主或半自主车辆上或与其相关联。捕获的传感器数据可以应用于DNN,例如作为图像序列,作为深度图序列等。在一些实施例中,在将传感器数据应用于神经网络的同时,可以将签名图像(例如,包括图案的图像、基本图像、徽标等)间歇地应用于DNN。例如,可以以一间隔、每x个图像、随机地等等应用签名图像。在应用签名图像的迭代中,可以将DNN的实际预测与相对于签名图像的DNN的预期预测进行比较。
可以基于预期预测与实际预测的比较来确定DNN的预测的准确性。例如,预期预测可以包括故障检测器可能已知的签名,并且可以将DNN的输出签名与该签名进行比较。在一些示例中,可以使用阈值,使得关于签名图像的DNN的预测应该在与预期预测的阈值相似度之内。当确定DNN的输出不准确时,可以认为与DNN的处理相对应的硬件和/或软件具有永久性故障。在这样的示例中,可以采取纠正措施,例如将车辆的控制权移交给驾驶员,执行安全操纵和/或将DNN的处理卸载或转移到其他组件(例如,冗余架构)。
参照图7,图7是根据本公开的一些实施例的示出用于使用签名来检测神经网络中的故障的过程700的示例数据流程图。过程700可以用于检测任何机器学习模型108中的永久性故障,例如但不限于本文所述的那些。另外,如本文所述,过程700不限于仅检测永久性故障,并且可用于检测其他类型的故障而不脱离本公开的范围,例如暂时性或间歇性故障。一个或更多个机器学习模型108可以接收传感器数据102作为输入,该传感器数据102可以类似于本文描述的传感器数据102。尽管主要针对表示一个或更多个图像的图像数据讨论了传感器数据102,但这并不旨在是限制性的。在一些实施例中,例如,传感器数据102可以包括来自一个或更多个LIDAR传感器、RADAR传感器、SONAR传感器、超声传感器、IMU传感器和/或其他传感器类型(例如,关于图10A-图10C描述的传感器和/或相机)的数据。
用作一个或更多个机器学习模型108的输入的传感器数据102可以包括原始图像(例如,如由一个或更多个图像传感器捕获的)、下采样图像、上采样图像、经裁剪的图像或感兴趣区域(ROI)的图像、为其他系统注释或从其他系统输出的标签图像、在轴上翻转或以其他方式增强的图像,或其组合。在一些非限制性实施例中,传感器数据102可以表示由一个或更多个传感器(例如,车辆1000的相机)捕获的图像,和/或可以表示从用于测试和/或生成训练图像的虚拟环境中捕获的图像(例如,虚拟或模拟环境中虚拟车辆的虚拟相机)。在一些示例中,可以将传感器数据102作为图像序列、深度图序列和/或另一传感器数据表示的序列应用于一个或更多个机器学习模型108。
间歇地,在将传感器数据102应用于一个或更多个机器学习模型的同时,签名数据704可以应用于一个或更多个机器学习模型108。签名数据704可以表示签名图像(例如,包括图案的图像、基本图像、徽标等),这些签名图像可能与训练一个或更多个机器学习模型108以预测的样式(pattern)(例如,对象、车道、线条等)完全不同或与之相似。签名数据704可以在传感器数据102的序列内以固定或变化的间隔被应用于一个或更多个机器学习模型108。例如,可以以间隔、每x个图像、随机地等应用签名数据704。签名数据704可以包括一个或更多个签名图像。在每次迭代中,可以将相同或不同的签名图像应用于一个或更多个机器学习模型108。例如,在应用不同的签名图像的情况下,可以存储任意数量的签名图像和一个或更多个相应的预期预测112,并且可以将签名图像依次、随机地等应用于一个或更多个机器学习模型108。
一个或更多个机器学习模型108可以是经训练以基于传感器数据102(或其他数据类型,如本文所述)进行预测的任何机器学习模型(例如,神经网络、DNN、CNN等)。在实施例中,一个或更多个机器学习模型108可被配置为基于传感器数据102和签名数据704分别生成一个或更多个输出110。例如,在一些实施例中,可以训练一个或更多个机器学习模型108以相对于签名数据704的一个或更多个签名图像来预测某个(例如,预期的)签名,并且可以训练一个或更多个机器学习模型108以相对于传感器数据102计算不同的预测。在这样的示例中,训练一个或更多个机器学习模型108可以包括关于签名数据704使用第一损失函数并且关于传感器数据102使用第二损失函数。在其他示例中,可以训练一个或更多个机器学习模型108以针对类似于签名数据704的签名图像的图像来预测一个或更多个某签名。在两个示例中,可以为签名数据704存储一个或更多个预期预测112,以便故障检测器114可以将一个或更多个输出110与一个或更多个预期预测112进行比较。在一些示例中,还可以存储一个或更多个签名图像在传感器数据102序列内的放置(例如,图像编号、图像间隔等),以帮助故障检测器114确定哪些输出110对应于签名数据704。
在应用了签名数据704的情况下,一个或更多个机器学习模型108可以将签名数据704作为输入,并生成与其相对应的一个或更多个输出110。故障检测器114可以将这些输出110与签名数据704的一个或更多个预期预测112进行比较,以确定是否存在故障。在一些非限制性实施例中,故障检测器114可以使用与签名数据704相对应的信息(例如,序列内的放置、预期要输出的签名的类型等)来对照由一个或更多个机器学习模型108计算的一个或更多个输出110进行检查。比较可以包括将预期签名与预测签名进行比较,以确保一个或更多个输出110至少包括相对于签名数据704的一个或更多个准确(例如,在阈值之内)预测(例如,与一个或更多个预期预测112相比)。
基于该比较,可以确定一个或更多个机器学习模型108的准确性或弹性,例如通过识别一个或更多个机器学习模型108的预测或一个或更多个输出110是否不对应于故障检测器114已知的预期签名,或者预测是否在关于预期签名信息的阈值精度之外。在一些示例中,当在签名数据704的每次迭代中一个或更多个预期预测112都在一个或更多个输出110中表示时,故障检测器114可以确定一个或更多个机器学习模型108的预测是准确的,并且与一个或更多个机器学习模型108相对应的底层软件和/或硬件没有故障。类似地,当在签名数据704的每次迭代中一个或更多个预期预测112未在一个或更多个输出110中表示时,故障检测器114可以确定一个或更多个机器学习模型108的预测是不准确的,并且对应于一个或更多个机器学习模型108的底层软件和/或硬件有故障。
一旦确定了有故障或无故障,就可以将该信息传递给系统的一个或更多个组件以做出一个或更多个控制决策116。例如,在该系统是本文所述的车辆1000的情况下,可以将故障确定传递到自动驾驶软件栈的一个或更多个层,以确定一个或更多个适当的控制决策116。例如,在预测在相对于签名数据704的阈值精度之外的情况中,相对于一个或更多个控制决策116,可以跳过或忽略一个或更多个机器学习模型108的一个或更多个输出110中的一些或全部。在一些示例中,例如在一个或更多个机器学习模型108的预测不准确且不可用于车辆1000的安全操作的情况下,一个或更多个控制决策116可以包括将控制交还给驾驶员(例如,退出自主或半自主操作),或者执行紧急情况或安全操纵(例如,停下来、拉到路边或其组合)。由于故障的类型可能是永久性故障,因此可以生成指示符或信号,其指示在允许进一步操作之前需要进行诊断或测试,至少针对一个或更多个机器学习模型108影响的功能。在没有检测到故障的示例中,一个或更多个控制决策116仍可能受到该信息的影响。例如,在未接收到指示一个或更多个机器学习模型108正常工作的指示或信号的情况下(例如,在每次迭代、在间隔内等),可不依赖或使用自动驾驶软件栈的某些功能或特征。在一些示例中,过程100可以在系统内运行的任何数量的一个或更多个机器学习模型108上执行。例如,自动驾驶软件栈可以依赖成百上千的机器学习模型108来进行有效且安全的操作,并且其中任何数量的机器学习模型都可能要经过过程700,以确保故障不会干扰安全有效的操作。这样,如本文所述,可以使用一个或更多个机器学习模型108针对对应于驱动器栈的一个或更多个层的任何数量的不同操作来分别确定一个或更多个输出110的精度。
现在参考图8A-8C,图8A-8C是根据本公开的一些实施例的用于确定神经网络中的故障的签名输入的示例图示。例如,在实施例中,签名图像(例如,签名图像810、820和/或830)可以间歇地应用于一个或更多个机器学习模型108,以代替传感器数据102来测试执行一个或更多个机器学习模型108的底层软件和/或硬件中的故障。例如,一个或更多个签名图像可以以间隔、每x个图像、随机地等应用于一个或更多个机器学习模型108。在应用签名图像的迭代中,可以将DNN的实际预测与相对于签名图像的DNN的预期预测进行比较。
一个或更多个机器学习模型可以被训练以相对于签名图像来预测签名,或者可以被训练以对类似于签名图像的图像进行预测,使得预期的签名是已知的。可以训练一个或更多个机器学习模型108以对任何数量的签名图像进行预测。对于非限制性示例,一个或更多个机器学习模型108可以被训练以相对于图8A的图像810预测签名,或者可以被训练以预测关于图像810、820或830中的每一个的签名。在使用不止一种签名图像类型的情况下,由于底层软件和/或硬件的不同部分可能涉及针对不同签名图像的处理,因此可能会增加故障覆盖。图像810、820和830仅是示例,并且不旨在是限制性的。签名图像可以包括任何图像类型,或者可以包括另一种类型的传感器数据表示或其他数据类型表示(例如,财务数据)。
现在参考图9,本文描述的方法900的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理器执行存储在存储器中的指令来执行。方法900也可以体现为存储在计算机存储介质上的计算机可用指令。方法900可以由独立应用程序、服务或托管服务(独立于另一托管服务或与其组合),或另一产品的插件提供,仅举几例。另外,通过示例的方式,相对于图7的过程700描述了方法900。然而,该方法900可以附加地或可替代地由任何一个系统或在任何一个过程中,或由系统或过程的任何组合执行,包括但不限于本文所述的那些。
图9是示出根据本公开的一些实施例的用于使用签名图像来检测神经网络中的故障的方法900的流程图。在框B902处,方法900包括将表示由传感器捕获的多个传感器数据实例的第一数据应用于神经网络。例如,表示传感器数据(例如,传感器数据102)的第一数据可以被应用(例如,作为输入)到一个或更多个机器学习模型108(例如,神经网络,诸如DNN)。
在框B904处,方法900包括在将第一数据应用到神经网络期间,将表示签名输入的第二数据间歇地应用到神经网络。例如,在将传感器数据102应用于一个或更多个机器学习模型108的同时,可以将签名输入(例如,签名数据704)间歇地应用于一个或更多个机器学习模型108。
在框B906处,方法900包括将表示至少部分地基于第二数据计算的神经网络的输出的第三数据与表示至少部分地基于第二数据的神经网络的预期输出的第四数据进行比较。例如,一个或更多个机器学习模型108的一个或更多个输出110可以与一个或更多个预期预测112(例如,预期输出)进行比较,一个或更多个预期预测112包括签名输入的预期预测。故障检测器114可以将一个或更多个输出110与签名数据704的一个或更多个预期预测112进行比较。
在框B908处,方法900包括当至少部分地基于神经网络的预测,输出对应于预期输出时,确定该预测是准确的。例如,如果一个或更多个输出110对应于一个或更多个预期预测112,则故障检测器114可以确定一个或更多个机器学习模型108的预测(例如,一个或更多个输出110)是准确的。当一个或更多个输出110包括签名数据704的一个或更多个预期预测112时,故障检测器114可以确定预测是准确的。
在框B910处,方法900包括当至少部分地基于神经网络的预测,输出不对应于预期输出时,确定该预测是不准确的。例如,如果一个或更多个输出110不对应于一个或更多个预期预测112,则故障检测器114可以确定一个或更多个机器学习模型108的预测(例如,一个或更多个输出110)是不准确的。当一个或更多个输出110不包括针对签名数据704的一个或更多个预期预测112时,故障检测器114可以确定预测是不准确的。
示例性自主车辆
图10A是根据本公开的一些实施例的示例性自主车辆1000的图示。如本文所述,在一些非限制性实施例中,例如在自动驾驶软件栈中包括一个或更多个机器学习模型108的情况下,车辆1000可以表示执行对一个或更多个机器学习模型108的测试的底层系统。例如,车辆1000可以在部署期间执行内置自测试(BIST),并且根据过程100和700对一个或更多个机器学习模型100的测试可以被包括在车辆1000的BIST内。自主车辆1000(在本文中可替代地被称为“车辆1000”)可以包括但不限于乘用车,例如汽车,卡车,公共汽车,急救车,穿梭车,电动或机动自行车,摩托车,消防车,警车,救护车,船只,建筑车辆,水下航行器,无人机和/或另一种类型的车辆(例如,无人驾驶和/或容纳一个或更多个乘客)。一般按照自动化级别来描述自动驾驶汽车,该自动化级别由美国运输部下属的国家公路交通安全管理局(NHTSA)和汽车工程师协会(SAE)“与用于道路机动车辆的驾驶自动化系统有关的术语的分类和定义(Taxonomy and Definitions for Terms Related to Driving AutomationSystems for On-Road Motor Vehicles)”(于2018年6月15日发布的标准号J3016-201806,于2016年9月30日发布的标准号J3016-201609,以及该版本的以前和将来的版本此标准)来定义。车辆1000可能能够根据自动驾驶级别的级别3至级别5中的一个或更多个来进行功能,例如,取决于实施例,车辆1000可以具有条件自动化(级别3)、高度自动化(级别4)和/或全自动化(级别5)。
车辆1000可以包括诸如车辆的底盘,车身,车轮(例如,2个、4个、6个、8个、18个等),轮胎,车轴和其他组件之类的组件。车辆1000可包括推进系统1050,例如内燃机,混合动力装置,全电动发动机和/或另一种推进系统类型。推进系统1050可以连接至车辆1000的传动系,该传动系可以包括变速器,以实现车辆1000的推进。可以响应于从油门/加速器1052接收到信号来控制推进系统1050。
可以包括方向盘的转向系统1054,其可用于在推进系统1050操作时(例如,当车辆在运动中)来操纵车辆1000(例如,沿着期望的路径或路线)。转向系统1054可以从转向致动器1056接收信号。方向盘对于全自动化(级别5)功能可以是可选的。
制动传感器系统1046可用于响应于接收到来自制动致动器1048和/或制动传感器的信号来操作车辆制动器。
可以包括一个或更多个片上系统(SoC)1004(图10C)和/或一个或更多个GPU的一个或更多个控制器1036,其可以向车辆1000的一个或更多个组件和/或系统提供信号(例如,代表命令)。例如,一个或更多个控制器可以发送信号以经由一个或更多个制动致动器1048来操作车辆制动器,以经由一个或更多个转向致动器1056来操作转向系统1054,以经由一个或更多个油门/加速器1052来操作推进系统1050。一个或更多个控制器1036可包括一个或更多个机载(例如,集成的)计算设备(例如,超级计算机),其处理传感器信号,并输出操作命令(例如,表示命令的信号)以实现自动驾驶和/或协助驾驶员驾驶车辆1000。一个或更多个控制器1036可包括用于自动驾驶功能的第一控制器1036,用于功能性安全功能的第二控制器1036,用于人工智能功能(例如,计算机视觉)的第三控制器1036,用于信息娱乐功能的第四控制器1036,用于紧急情况下的冗余的第五控制器1036和/或其他控制器。在一些示例中,单个控制器1036可以处理上述功能中的两个或更多个,两个或更多个控制器1036可以处理单个功能和/或其任何组合。
一个或更多个控制器1036可响应于从一个或更多个传感器(例如,传感器输入)接收的传感器数据,提供用于控制车辆1000的一个或更多个组件和/或系统的信号。传感器数据可以从例如但不限于全球导航卫星系统传感器1058(例如,一个或更多个全球定位系统传感器),一个或更多个雷达传感器1060,一个或更多个超声波传感器1062,一个或更多个LIDAR接收传感器1064,一个或更多个惯性测量单元(IMU)传感器1066(例如,一个或更多个加速度计,一个或更多个陀螺仪,一个或更多个磁罗盘,一个或更多个磁力计等),一个或更多个麦克风1096,一个或更多个立体相机1068,一个或更多个广角相机1070(例如,鱼眼相机),一个或更多个红外相机1072,一个或更多个环绕相机1074(例如,360度相机),一个或更多个远程和/或中程相机1098,一个或更多个速度传感器1044(例如,用于测量车辆1000的速度),一个或更多个振动传感器1042,一个或更多个转向传感器1040,一个或更多个制动传感器(例如,作为制动传感器系统1046的一部分)和/或其他传感器类型。
一个或更多个控制器1036可以从车辆1000的仪表板1032接收输入(例如,由输入数据表示),并经由人机界面(HMI)显示器1034、声音信号器、扬声器和/或经由车辆1000的其他组件提供输出(例如,由输出数据、显示数据等表示)。输出可包括信息,诸如车速、速度、时间、地图数据(例如,图10C的HD地图1022)、位置数据(例如,车辆的1000位置,例如在地图上)、方向、其他车辆的位置(例如,占用网格),关于对象的信息以及由一个或更多个控制器1036感知到对象的状态等。例如,HMI显示器1034可以显示关于一个或更多个对象的存在的信息(例如,路牌、警告标志、交通信号灯改变等)和/或关于驾驶操作车辆已经、正在或将要进行的信息(例如,现在改变车道、在两英里处的34B出口驶出等)。
车辆1000进一步包括网络接口1024,其可以使用一个或更多个无线天线1026和/或一个或更多个调制解调器通过一个或更多个网络进行通信。例如,网络接口1024可能能够通过LTE,WCDMA,UMTS,GSM,CDMA2000等进行通信。一个或更多个无线天线1026还可以使用一个或更多个局域网(例如,蓝牙(Bluetooth)、蓝牙LE、Z波(Z-Wave)、ZigBee等)和/或一个或更多个低功耗广域网(LPWAN)(例如,LoRaWAN、SigFox等),使环境中的对象(例如,车辆、移动设备等)之间进行通信。
图10B是根据本公开的一些实施例的图10A的示例性自主车辆1000的相机位置和视野的示例。相机和各自的视野是一个示例实施例,并且不旨在进行限制。例如,可以包括附加的和/或替代的相机和/或相机可以位于车辆1000上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆1000的组件和/或系统一起使用的数字相机。一个或更多个相机可以以汽车安全完整性级别(ASIL)B和/或以另一个ASIL进行操作。取决于实施例,相机类型可以具有任何图像捕获速率,例如60帧每秒(fps),1020fps,240fps等。相机可能能够使用滚动快门、全局快门、另一种类型的快门或其组合。在一些示例中,滤色器阵列可以包括红色透明的透明透明(RCCC)滤色器阵列,红色透明的透明蓝色(RCCB)滤色器阵列,红色蓝色绿色透明(RBGC)滤色器阵列,Foveon X3滤色器阵列,拜耳(Bayer)传感器(RGGB)滤色器阵列,单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,可以使用透明像素相机,例如具有RCCC、RCCB和/或RBGC滤色器阵列的相机,以努力提高光灵敏度。
在一些示例中,一个或更多个相机可以用于执行高级驾驶员辅助系统(ADAS)功能(例如,作为冗余或故障安全设计的一部分)。例如,可以安装多功能单声道相机以提供包括车道偏离警告、交通标志辅助和智能大灯控制在内的功能。一个或更多个相机(例如,所有相机)可以同时记录并提供图像数据(例如,视频)。
一个或更多个相机可以安装在安装组件中,例如定制设计的(3D打印)组件中,以便从汽车内切出杂散光和反光(例如,仪表板的反射在挡风玻璃镜中反光),其可能会影响相机的图像数据捕获能力。关于后视镜安装组件,后视镜组件可以定制3D打印的,以便相机安装板与后视镜的形状相匹配。在一些示例中,一个或更多个相机可以被集成到后视镜中。对于侧视相机,一个或更多个相机也可以集成在机舱的每个角落的四个支柱内。
具有包括车辆1000前面的环境的一部分的视野的相机(例如,前向相机)可用于环视,以及在一个或更多个控制器1036和/或控制SoC的帮助下帮助识别向前的路径和障碍物,从而提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前向相机可用于执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和避免碰撞。前向相机也可用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自动巡航控制(“ACC”)和/或其他功能(例如,交通标志识别)。
可以用于前向配置的各种相机,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪的单目相机平台。另一个示例可以是一个或更多个广角照相机1070,其可以用于感知从外围进入的对象(例如,行人、过马路或自行车)。尽管在图10B中仅示出了一个广角相机,但是车辆1000上可以有任意数量的广角相机1070。另外,一个或更多个远程相机1098(例如,远程立体相机对)可以用于基于深度的对象检测,尤其是对于尚未训练神经网络的对象。远程相机1098也可以用于对象检测和分类以及基本物体跟踪。
一个或更多个立体相机1068也可以被包括在前向配置中。一个或更多个立体相机1068可以包括集成控制单元,该集成控制单元包括可缩放处理单元,该可缩放处理单元可以提供编程逻辑(FPGA)和具有单个芯片上集成的CAN或以太网接口的多核微处理器。这样的单元可用于生成车辆环境的3D地图,包括图像中所有点的距离估计。可选的一个或更多个立体相机1068可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右分别一个)和图像处理芯片,该图像处理芯片可以测量从车辆到目标对象的距离。并使用生成的信息(例如,元数据)来激活自主紧急制动和车道偏离警告功能。除了本文所述的立体相机之外,附加地或者替代地可以使用其他类型的一个或更多个立体相机1068。
具有包括车辆1000侧面的环境的一部分的视野的相机(例如,侧视相机)可以用于环视,从而提供用于创建和更新占用网格的信息,以及生成侧面碰撞警告。例如,一个或更多个环绕相机1074(例如,如图10B所示的四个环绕相机1074)可以定位在车辆1000上。一个或更多个环绕相机1074可以包括一个或更多个广角相机1070、一个或更多个鱼眼相机、一个或更多个360度相机等。例如,四个鱼眼相机可以放置在车辆的前、后和侧面。在替代布置中,车辆可以使用三个环绕相机1074(例如,左、右和后面),并且可以利用一个或更多个其他相机(例如,前向相机)作为第四环视相机。
具有包括车辆1000的后方的环境的部分的视野的相机(例如,后视相机)可以用于停车辅助、环视、后方碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于还适合作为一个或更多个前向相机的相机(例如,一个或更多个远程相机和/或中程相机1098,一个或更多个立体相机1068,一个或更多个红外相机1072等),如本文所述。
图10C是根据本公开的一些实施例的图10A的示例性自主车辆1000的示例性系统架构的框图。应当理解,本文描述的这种布置和其他布置仅作为示例阐述。除了或代替所示的那些,可以使用其他布置和元件(例如,机器、界面、功能、命令、功能的分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,其可以被实现为离散或分布式组件或与其他组件结合,并且以任何合适的组合和位置来实现。本文描述的由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以通过处理器执行存储在存储器中的指令来执行。
图10C中的车辆1000的组件、特征和系统中的每一个都示出为经由总线1002连接。总线1002可以包括控制器局域网(CAN)数据接口(在本文中可替代地被称为“CAN总线”)。CAN可以是车辆1000内部的网络,用于帮助控制车辆1000的各种特征和功能,例如制动器的致动、加速、制动、转向、雨刷等。CAN总线可以被配置为具有数十个甚至数百个节点,每个节点都具有其自己的唯一标识符(例如,CAN ID)。可以读取CAN总线以查找方向盘角度、地面速度、发动机每分钟转数(RPM)、按钮位置和/或其他车辆状态指示器。CAN总线可以符合ASIL B。
尽管在本文中将总线1002描述为CAN总线,但这并不旨在是限制性的。例如,除了或替代于CAN总线,可以使用FlexRay和/或以太网。另外,尽管使用单条线来表示总线1002,但这并不旨在是限制性的。例如,可以有任意数量的总线1002,其可以包括一个或更多个CAN总线,一个或更多个FlexRay总线,一个或更多个以太网总线,和/或使用不同协议的一种或更多种其他类型的总线。在一些示例中,两个或更多个总线1002可以用于执行不同的功能,和/或可以用于冗余。例如,第一总线1002可以用于碰撞避免功能,并且第二总线1002可以用于致动控制。在任何示例中,每个总线1002可以与车辆1000的任何组件通信,并且两个或更多个总线1002可以与相同的组件通信。在一些示例中,车辆内的每个SoC 1004、每个控制器1036和/或每个计算机可以访问相同的输入数据(例如,来自车辆1000的传感器的输入),并且可以连接到公共总线,例如CAN总线。
车辆1000可以包括一个或更多个控制器1036,例如本文关于图10A所描述的。控制器1036可用于多种功能。控制器1036可以耦合到车辆1000的各种其他组件和系统中的任何一个,并且可以用于控制车辆1000、车辆1000的人工智能、车辆1000的信息娱乐等。
车辆1000可以包括一个或更多个片上系统(SoC)1004。SoC 1004可以包括一个或更多个CPU 1006、一个或更多个GPU 1008、一个或更多个处理器1010、一个或更多个高速缓存1012、一个或更多个加速器1014、一个或更多个数据存储器1016和/或其他未示出的组件和特征。一个或更多个SoC 1004可以用于在各种平台和系统中控制车辆1000。例如,一个或更多个SoC 1004可以在系统(例如,车辆1000的系统)中与HD地图1022组合,该HD地图1022可以经由网络接口1024从一个或更多个服务器(例如,图10D的一个或更多个服务器1078)获得地图刷新和/或更新。
一个或更多个CPU 1006可以包括CPU集群或CPU复合体(在本文中可替代地被称为“CCPLEX”)。一个或更多个CPU 1006可以包括多个核心和/或L2高速缓存。例如,在一些实施例中,一个或更多个CPU 1006可以在相互耦合的多处理器配置中包括八个核心。在一些实施例中,一个或更多个CPU 1006可以包括四个双核心集群,其中每个集群具有专用的L2高速缓存(例如,2MB L2高速缓存)。CPU 1006(例如,CCPLEX)可以被配置为支持同时的集群操作,使得一个或更多个CPU 1006的集群的任何组合能够在任何给定时间被激活。
一个或更多个CPU 1006可以实现包括以下一项或更多项功能的功率管理功能:在空闲时可以自动对各个硬件模块进行时钟门控以节省动态功耗;当核心由于执行WFI/WFE指令而未主动执行指令时,可以控制每个核心时钟;每个核心都可以独立供电当;所有核心被时钟门控或功率门控时,每个核心集群可以被独立地时钟门控;当所有核心都被功率门控时,和/或每个核心集群可以被独立地功率门控。一个或更多个CPU 1006可以进一步实现用于管理功率状态的增强算法,其中指定了允许的功率状态和预期的唤醒时间,并且硬件/微码确定了针对核心、集群和CCPLEX输入的最佳功率状态。处理核心可以在软件中支持简化的功率状态输入序列,而将工作分担到微码上。
一个或更多个GPU 1008可包括集成的GPU(在本文中可替代地被称为“iGPU”)。一个或更多个GPU 1008可以是可编程的,并且对于并行工作负载可以是有效的。在一些示例中,一个或更多个GPU 1008可以使用增强的张量指令集。一个或更多个GPU 1008可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如,具有至少96KB的存储容量的L1高速缓存),以及两个或更多个流式微处理器可以共享L2高速缓存(例如,具有512KB存储容量的L2高速缓存)。在一些实施例中,一个或更多个GPU 1008可包括至少八个流式微处理器。一个或更多个GPU 1008可以使用一个或更多个计算应用程序编程接口(一个或更多个API)。此外,一个或更多个GPU 1008可以使用一个或更多个并行计算平台和/或编程模型(例如,NVIDIA的CUDA)。
一个或更多个GPU 1008可以被功率优化以在汽车和嵌入式用例中获得最佳性能。例如,可以在鳍式(Fin)场效应晶体管(FinFET)上制造一个或更多个GPU 1008。然而,这不意图是限制性的,并且可以使用其他半导体制造工艺来制造一个或更多个GPU 1008。每个流式微处理器可以包含划分为多个块的多个混合精度处理核心。例如但不限于,可以将64个PF32核心和32个PF64核心划分为四个处理块。在这样的示例中,可以为每个处理块分配16个FP32核心、8个FP64核心、16个INT32核心、两个用于深度学习矩阵算术的混合精度NVIDIA TENSOR CORE、L0指令高速缓存、线程束(warp)调度程序、分派单元和/或64KB寄存器文件。另外,流式微处理器可以包括独立的并行整数和浮点数据路径,以提供混合了计算和寻址计算的工作负载的有效执行。流式微处理器可以包括独立的线程调度功能,以实现并行线程之间更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享存储单元,以便在简化编程的同时提高性能。
一个或更多个GPU 1008可以包括高带宽存储器(HBM)和/或16GB HBM2存储器子系统,以在一些示例中提供约900GB/秒的峰值存储带宽。在一些示例中,除了或替代于HBM存储器,可以使用同步图形随机存取存储器(SGRAM),例如图形双倍数据速率类型五同步随机存取存储器(GDDR5)。
一个或更多个GPU 1008可以包括统一存储器技术,该统一存储器技术包括访问计数器,以允许将存储器页面更准确地迁移到最频繁访问它们的处理器,从而提高处理器之间共享的存储器范围的效率。在一些示例中,地址转换服务(ATS)支持可以用于允许一个或更多个GPU 1008直接访问一个或更多个CPU 1006页表。在这样的示例中,当一个或更多个GPU 1008存储器管理单元(MMU)经历未命中时,地址转换请求可以被发送到一个或更多个CPU1006。作为响应,一个或更多个CPU 1006可以在其页面中查找用于地址的虚拟到物理映射,并将转换发送回一个或更多个GPU1008。这样,统一存储器技术可以允许单个统一虚拟地址空间用于一个或更多个CPU 1006和一个或更多个GPU 1008的存储器二者。从而简化了一个或更多个GPU 1008的编程以及将应用程序移植到一个或更多个GPU 1008。
另外,一个或更多个GPU 1008可以包括访问计数器,该访问计数器可以追踪一个或更多个GPU 1008对其他处理器的存储器的访问频率。访问计数器可以帮助确保将存储器页面移至最频繁访问页面的处理器的物理存储器中。
一个或更多个SoC 1004可包括任何数量的高速缓存1012,包括本文所述的那些。例如,一个或更多个高速缓存1012可包括可用于一个或更多个CPU 1006和一个或更多个GPU 1008二者(例如,其连接一个或更多个CPU 1006和一个或更多个GPU 1008二者)的L3高速缓存。一个或更多个高速缓存1012可以包括回写高速缓存,该回写高速缓存可以例如通过使用高速缓存一致性协议(例如,MEI、MESI、MSI等)来追踪行(line)的状态。尽管可以使用较小的高速缓存大小,但是根据实施例,L3高速缓存可以包括4MB或更多。
一个或更多个SoC 1004可以包括一个或更多个加速器1014(例如,硬件加速器、软件加速器或其组合)。例如,一个或更多个SoC 1004可以包括硬件加速集群,该硬件加速集群可以包括优化的硬件加速器和/或大的片上存储器。大的片上存储器(例如,4MB的SRAM)可以使硬件加速集群加速神经网络和其他计算。硬件加速集群可用于补充一个或更多个GPU 1008并卸载一个或更多个GPU 1008的一些任务(例如,释放一个或更多个GPU 1008的更多周期用于执行其他任务)。作为示例,一个或更多个加速器1014可以用于足够稳定以适于加速的目标工作负载(例如,感知、卷积神经网络(CNN)等)。本文所使用的术语“CNN”可包括所有类型的CNN,包括基于区域或区域卷积神经网络(RCNN)和快速RCNN(例如,用于对象检测)。
一个或更多个加速器1014(例如,硬件加速集群)可以包括一个或更多个深度学习加速器(DLA)。一个或更多个DLA可包括一个或更多个Tensor处理单元(TPU),可将其配置为针对深度学习应用程序和推理提供每秒额外的10万亿个操作。TPU可以是配置为执行图像处理功能(例如,用于CNN、RCNN等)并针对其优化的加速器。可以针对神经网络类型和浮点运算以及推理的特定集合进一步优化DLA。一个或更多个DLA的设计可以提供比通用GPU更高的每毫米性能,并且大大超过了CPU的性能。一个或更多个TPU可以执行多种功能,包括单实例卷积功能,例如支持针对特征和权重的INT8、INT16和FP16数据类型,以及后处理器功能。
一个或更多个DLA可以针对多种功能中的任何功能,在处理或未处理的数据上快速有效地执行神经网络,尤其是CNN,包括例如但不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估算的CNN;用于使用来自麦克风的数据进行紧急车辆检测以及识别和检测的CNN;用于使用来自相机传感器的数据进行人脸识别和车主识别的CNN;以及/或用于安全和/或安全相关事件的CNN。
一个或更多个DLA可以执行一个或更多个GPU 1008的任何功能,并且例如,通过使用推理加速器,设计者可以针对任何功能将一个或更多个DLA或一个或更多个GPU 1008作为目标。例如,设计者可以将CNN的处理和浮点运算集中在一个或更多个DLA上,并将其他功能留给一个或更多个GPU 1008和/或一个或更多个其他加速器1014。
一个或更多个加速器1014(例如,硬件加速集群)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地被称为计算机视觉加速器。一个或更多个PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS),自动驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用程序的计算机视觉算法。一个或更多个PVA可以在性能和灵活性之间取得平衡。例如,每个PVA可以包括例如但不限于任意数量的精简指令集计算机(RISC)核心、直接存储器访问(DMA)和/或任意数量的向量处理器。
RISC核心可以与图像传感器(例如,本文描述的任何相机的图像传感器)、图像信号处理器等交互。每个RISC核心可以包括任何数量的存储器。取决于实施例,RISC核心可以使用多种协议中的任何一种。在某些示例中,RISC核心可以执行实时操作系统(RTOS)。可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备来实现RISC核心。例如,RISC核心可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可使一个或更多个PVA的组件能够独立于一个或更多个CPU 1006访问系统存储器。DMA可支持用于向PVA提供优化的任何数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持多达六个或更多个寻址的维度,其可以包括块宽度、块高度、块深度、水平块步进、垂直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为有效且灵活地执行用于计算机视觉算法并提供信号处理能力的编程。在一些示例中,PVA可以包括PVA核心和两个向量处理子系统分区。PVA核心可以包括处理器子系统,一个或更多个DMA引擎(例如,两个DMA引擎)和/或其他外围设备。向量处理子系统可以用作PVA的主要处理引擎,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量存储器(例如,VMEM)。VPU核心可以包括数字信号处理器,例如,单指令、多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以提高吞吐量和速度。
每个向量处理器可以包括指令高速缓存,并且可以耦合到专用存储器。结果,在一些示例中,每个向量处理器可以被配置为独立于其他向量处理器执行。在其他示例中,特定PVA中包含的向量处理器可以配置为采用数据并行性。例如,在一些实施例中,单个PVA中包括的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上。在其他示例中,包括在特定PVA中的向量处理器可以在同一图像上同时执行不同的计算机视觉算法,甚至可以在顺序图像或图像的一部分上执行不同的算法。其中,在硬件加速集群中可以包括任何数量的PVA,并且在每个PVA中可以包括任何数量的向量处理器。另外,一个或更多个PVA可以包括附加的纠错码(ECC)存储器,以增强整体系统安全性。
一个或更多个加速器1014(例如,硬件加速集群)可以包括片上计算机视觉网络和SRAM,用于为一个或更多个加速器1014提供高带宽,低等待时间的SRAM。片上存储器可以包括至少4MB的SRAM,其包括例如但不限于八个现场可配置的存储器块,其可以由PVA和DLA两者访问。每对存储块可包括高级外围总线(APB)接口、配置电路、控制器和多路复用器。可以使用任何类型的存储器。PVA和DLA可以通过为PVA和DLA提供对存储器的高速访问的主干来访问存储器。主干网可以包括片上计算机视觉网络,其将PVA和DLA互连到存储器(例如,使用APB)。
片上计算机视觉网络可包括接口,该接口在传输任何控制信号/地址/数据之前确定PVA和DLA均提供就绪和有效信号。这样的接口可以提供用于发送控制信号/地址/数据的单独的阶段和单独的信道,以及用于连续数据传输的突发型通信。尽管可以使用其他标准和协议,但这种类型的接口可以符合ISO 26262或IEC 61508标准。
在一些示例中,一个或更多个SoC 1004可包括实时射线追踪硬件加速器,诸如在2018年8月10日提交的美国专利申请号16/101,232中描述的。跟踪硬件加速器可用于快速有效地确定对象的位置和范围(例如,在世界模型内),以生成实时可视化模拟,用于RADAR信号解释,用于声音传播合成和/或分析,用于模拟SONAR系统,用于一般的波传播仿真,与用于定位和/或其他功能的LIDAR数据进行比较,和/或用于其他用途。
一个或更多个加速器1014(例如,硬件加速器集群)具有用于自动驾驶的广泛用途。PVA可以是可编程的视觉加速器,可用于ADAS和自动驾驶汽车的关键处理阶段。在低功耗和低延迟下PVA的能力与需要可预测的处理的算法域良好匹配。换句话说,PVA在半密集或密集的常规计算中表现出色,即使在小型数据集上也是如此,这些数据集需要具有低延迟和低功耗的可预测的运行时间。因此,在用于自主车辆平台的上下文中,PVA被设计为运行经典的计算机视觉算法,因为它们在对象检测和整数数学运算方面非常有效。
例如,根据本技术的一个实施例,PVA用于执行计算机立体视觉。在某些示例中,可以使用基于半全局匹配的算法,尽管这并不旨在进行限制。用于级别3-5自动驾驶的许多应用程序都需要即时进行运动估计/立体匹配(例如,来自运动的结构、行人识别、车道检测等)。PVA可以对来自两个单眼相机的输入执行计算机立体视觉功能。
在一些示例中,PVA可以用于执行密集的光流。根据处理原始雷达数据(例如,使用4D快速傅立叶(Fourier)变换)以提供处理后的雷达数据。在其他示例中,例如,通过处理原始飞行时间数据以提供经处理的飞行时间数据,将PVA用于飞行时间深度处理。
DLA可以用于运行任何类型的网络以增强控制和驾驶安全性,包括例如神经网络,该神经网络输出用于每个对象检测的置信度的量度。这样的置信度值可以被解释为概率,或者表示为提供每个检测相对于其他检测的相对“权重”。此置信度使系统可以做出进一步的决定,关将哪些检测应被视为真正的阳性检测而不是假阳性检测。例如,系统可以为置信度设置阈值,并且仅将超过阈值的检测视为真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会导致车辆自动执行紧急制动,这显然是不希望的。因此,应仅将最有把握的检测视为AEB的触发。DLA可以运行用于回归置信度值的神经网络。神经网络可以将参数的至少一些子集作为其输入,例如包围盒尺寸,获得的地面估计(例如,从另一个子系统获得),与从神经网络和/或其他传感器(例如,一个或更多个LIDAR传感器1064或一个或更多个RADAR传感器1060)等获得的对象的车辆1000的方向、距离、3D位置估计相关的惯性测量单元(IMU)传感器1066的输出,等等。
一个或更多个SoC 1004可以包括一个或更多个数据存储器1016(例如,存储器)。一个或更多个数据存储器1016可以是一个或更多个SoC 1004的片上存储器,其可以存储要在一个或更多个GPU和/或DLA上执行的神经网络。在一些示例中,一个或更多个数据存储器1016可以具有足够大的容量以存储神经网络的多个实例以用于冗余和安全。一个或更多个数据存储器1012可以包括一个或更多个L2或L3高速缓存1012。对一个或更多个数据存储器1016的引用可以包括对与PVA、DLA和/或一个或更多个其他加速器1014相关联的存储器的引用,如本文所述。
一个或更多个SoC 1004可以包括一个或更多个处理器1010(例如,嵌入式处理器)。一个或更多个处理器1010可以包括启动和电源管理处理器,该启动和电源管理处理器可以是专用处理器和子系统,以处理启动电源和管理功能以及相关的安全实施。启动和电源管理处理器可以是一个或更多个SoC 1004启动序列的一部分,并且可以提供运行时电源管理服务。启动电源和管理处理器可以提供时钟和电压编程,协助系统低功耗状态转换,一个或更多个SoC 1004热和温度传感器的管理和/或一个或更多个SoC 1004电源状态的管理。每个温度传感器可以被实现为其输出频率与温度成比例的环形振荡器,并且一个或更多个SoC 1004可以使用环形振荡器来检测一个或更多个CPU 1006、一个或更多个GPU 1008和一个或更多个加速器1014的温度。如果确定温度超过阈值,则启动和电源管理处理器可以进入温度故障例程,并将一个或更多个SoC 1004置于较低的功耗状态和/或将车辆1000置于司机进入安全停车模式(例如,将车辆1000安全停车)。
一个或更多个处理器1010可以进一步包括一组嵌入式处理器,其可以用作音频处理引擎。音频处理引擎可以是音频子系统,它能够通过多个接口以及广泛且灵活范围的音频I/O接口为硬件提供对多通道音频的完全硬件支持。在某些示例中,音频处理引擎是专用处理器核心,其具有带专用RAM的数字信号处理器。
一个或更多个处理器1010可以进一步包括始终在线处理器引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。始终在线的处理器引擎可以包括处理器核心、紧密耦合的RAM、支持外围设备(例如,定时器和中断控制器)、各种I/O控制器外围设备以及路由逻辑。
一个或更多个处理器1010还可包括安全集群引擎,该安全集群引擎包括用于处理汽车应用的安全管理的专用处理器子系统。安全集群引擎可以包括两个或更多个处理器核心、紧密耦合的RAM、支持外围设备(例如,计时器、中断控制器等)和/或路由逻辑。在安全模式下,两个或更多个核心可以以锁步模式运行,并可以用作具有比较逻辑的单个核心,以检测其操作之间的任何差异。
一个或更多个处理器1010还可以包括实时相机引擎,该实时相机引擎可以包括用于处理实时相机管理的专用处理器子系统。
一个或更多个处理器1010还可包括高动态范围信号处理器,该高动态范围信号处理器可包括图像信号处理器,该图像信号处理器是作为相机处理管线的一部分的硬件引擎。
一个或更多个处理器1010可以包括视频图像合成器,该视频图像合成器可以是处理块(例如,在微处理器上实现),该处理块实现视频回放应用程序所需的视频后处理功能以产生用于播放器窗口的最终图像。视频图像合成器可以在一个或更多个广角相机1070、一个或更多个环绕相机1074和/或一个或更多个舱内监控相机传感器上执行镜头畸变校正。优选由在高级SoC的另一个实例上运行的神经网络来监控一个或更多个舱内监控相机传感器,该神经网络配置为识别舱内事件并相应地做出响应。舱内系统可以执行唇读以激活蜂窝电话服务并拨打电话、指示电子邮件、更改车辆的目的地、激活或更改车辆的信息娱乐系统和设置、或者提供语音激活的网上冲浪。某些功能仅在车辆以自主模式运行时才对驾驶员可用,否则将被禁用。
视频图像合成器可以包括用于空间和时间降噪二者的增强的时间降噪。例如,在视频中发生运动的情况下,降噪会适当地加权空间信息,从而减小相邻帧提供的信息的权重。在图像或图像的一部分不包括运动的情况下,由视频图像合成器执行的时间降噪可以使用来自先前图像的信息来降低当前图像中的噪声。
视频图像合成器还可以被配置为对输入的立体透镜帧执行立体校正。当使用操作系统桌面时,视频图像合成器还可用于用户界面合成,并且不需要一个或更多个GPU 1008连续渲染新表面。即使当一个或更多个GPU 1008通电并且使其活跃地进行3D渲染时,视频图像合成器也可以被用于卸载一个或更多个GPU 1008以提高性能和响应性。
一个或更多个SoC 1004可以进一步包括用于从相机接收视频和输入的移动工业处理器接口(MIPI)相串行接口、高速接口和/或可以用于相机和相关的像素输入功能的视频输入块。一个或更多个SoC 1004还可以包括输入/输出控制器,该输入/输出控制器可以由软件控制,并且可以被用于接收未提交给特定角色的I/O信号。
一个或更多个SoC 1004可以进一步包括广泛的外围接口,以使得能够与外围设备、音频编解码器、电源管理和/或其他设备进行通信。一个或更多个SoC 1004可以用于处理来自相机(例如,通过千兆位多媒体串行链路和以太网连接的)、传感器(例如,一个或更多个LIDAR传感器1064,一个或更多个RADAR传感器1060等,其可以通过以太网连接)的数据,来自总线1002的数据(例如,车辆1000的速度、方向盘位置等),来自一个或更多个GNSS传感器1058的数据(例如,通过以太网或CAN总线连接)。一个或更多个SoC 1004可以进一步包括专用高性能海量存储控制器,其可以包括它们自己的DMA引擎,并且可以用于将一个或更多个CPU 1006从常规数据管理任务中释放出来。
一个或更多个SoC 1004可以是具有跨自动化级别3-5的灵活架构的端到端平台,从而提供综合功能安全架构,该架构可以利用并有效利用计算机视觉和ADAS技术来实现多样性和冗余性,其为灵活、可靠的驾驶软件堆栈以及深度学习工具提供了一个平台。一个或更多个SoC 1004可以比常规系统更快、更可靠,并且甚至在能量效率和空间效率上也更高。例如,一个或更多个加速器1014当与一个或更多个CPU 1006、一个或更多个GPU 1008以及一个或更多个数据存储器1016结合时,可以提供用于级别3-5自主车辆的快速、有效的平台。
因此,该技术提供了常规系统无法实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,CPU可以使用高级编程语言(例如,C编程语言)配置为在多种视觉数据执行多种处理算法。但是,CPU通常无法满足许多计算机视觉应用程序的性能要求,例如与执行时间和功耗有关的性能要求。特别是,许多CPU无法实时执行复杂的对象检测算法,该算法是车载ADAS应用程序的要求,也是实用级别3-5自主车辆的要求。
与常规系统相反,通过提供CPU复合体(complex)、GPU复合体和硬件加速集群,本文描述的技术允许同时和/或顺序执行多个神经网络,并将结果组合在一起以启用级别3-5自动驾驶功能。例如,在DLA或dGPU(例如,一个或更多个GPU 1020)上执行的CNN可以包括文本和单词识别,从而允许超级计算机读取和理解交通标志,包括神经网络尚未专门训练过的标志。DLA可以进一步包括神经网络,该神经网络能够识别、解释并提供标志的语义理解,并将该语义理解传递给在CPU复合体上运行的路径规划模块。
作为另一个示例,如级别3、4或5的驱动所要求的,可以同时运行多个神经网络。例如,由几个神经网络可以独立或共同解释由“警告:闪烁的灯指示冰冻状况”连通电灯一起组成的警告标志。该标志本身可以由第一部署的神经网络(例如,已经训练过的神经网络)识别为交通标志,文本“闪烁的灯指示冰冻状况”可以由第二部署的神经网络来解释,该第二神经网络通知车辆的路径规划软件(最好在CPU复合体上执行),当检测到闪烁的灯光时,即表示有冰冻状况。可以通过在多个帧上操作第三部署的神经网络来识别闪烁的灯,并向车辆的路径规划软件通知闪烁的灯的存在(或不存在)。所有三个神经网络可以同时运行,例如在DLA内和/或在一个或更多个GPU 1008上。
在一些示例中,用于面部识别和车辆所有者识别的CNN可以使用来自机传感器的数据来识别车辆1000的授权驾驶员和/或所有者的存在。当所有者近驾驶员门并打开照明灯时,常开传感器处理引擎可以用于解锁车辆,并且在安全模式中,当所有者离开车辆时,常开传感器处理引擎可以用于将禁用车辆。以此方式,一个或更多个SoC 1004提供提供防止盗窃和/或劫车的保障。
在另一个示例中,用于紧急车辆检测和识别的CNN可以使用来自麦克风1096的数据来检测和识别紧急车辆警报器。与使用通用分类器检测警笛并手动提取特征的常规系统相比,一个或更多个SoC 1004使用CNN对环境和城市声音进行分类,并对视觉数据进行分类。在优选实施例中,训练在DLA上运行的CNN以识别紧急车辆的相对接近速度(例如,通过使用多普勒效应)。如由一个或更多个GNSS传感器1058所标识,还可以训练CNN以识别特定于该车辆正在运行的区域的紧急车辆。因此,例如,当在欧洲运行时,CNN将寻求检测欧洲警报器,而在美国时,CNN只会寻求识别北美警报器。一旦检测到紧急车辆,就可以在一个或更多个超声波传感器1062的辅助下使用控制程序来执行紧急车辆安全例程、减速车辆、将车辆驶至路边、停放车辆和/或使车辆闲置,直到一个或更多个紧急车辆通过。
车辆可以包括一个或更多个CPU 1018(例如,一个或更多个离散CPU或一个或更多个dCPU),其可以通过高速互连(例如,PCIe)耦合到一个或更多个SoC 1004。例如,一个或更多个CPU 1018可以包括X86处理器。例如,一个或更多个CPU 1018可用于执行多种功能中的任何功能,包括在ADAS传感器和一个或更多个SoC 1004之间潜在的仲裁不一致的结果,和/或监视一个或更多个控制器1036和/或信息SoC 1030的状态和健康。
车辆1000可以包括一个或更多个GPU 1020(例如,一个或更多个离散GPU或一个或更多个dGPU),其可以经由高速互连(例如,NVIDIA的NVLINK)耦合到一个或更多个SoC1004。一个或更多个GPU 1020可以例如通过执行冗余和/或不同的神经网络来提供附加的人工智能功能,并且可以用于基于来自车辆1000的传感器的传感器的输入(例如,传感器数据)来训练和/或更新神经网络。
车辆1000可以进一步包括网络接口1024,其可以包括一个或更多个无线天线1026(例如,用于不同通信协议的一个或更多个无线天线,诸如蜂窝天线,蓝牙天线等)。使用网络接口1024以使能够在因特网上与云(例如,与一个或更多个服务器1078和/或其他网络设备)、与他车辆和/或与计算设备(例如,客户端设备)无线连接。为了与其他车辆通信,可以在两个车辆之间建立直接链路和/或可以建立间接链路(例如,通过网络和因特网)。可以使用车辆到车辆的通信链路来提供直接链路。车辆到车辆的通信链路可以向车辆1000提供与车辆1000附近的车辆有关的信息(例如,在车辆1000前面、侧面和/或后面的车辆)。该功能可以是车辆1000的协作自适应巡航控制功能的一部分。
网络接口1024可以包括SoC,该SoC提供调制和解调功能并使一个或更多个控制器1036能够通过无线网络进行通信。网络接口1024可以包括射频前端,用于从基带到射频的上转换以及从射频到基带的下转换。频率转换可以通过公知的过程和/或可以使用超外差过程来执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN和/或其他无线协议进行通信的无线功能。
车辆1000可以进一步包括一个或更多个数据存储器1028,其可以包括片外(例如,一个或更多个SoC 1004之外)存储器。一个或更多个数据存储器1028可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一位数据的其他组件和/或设备。
车辆1000还可包括一个或更多个GNSS传感器1058。一个或更多个GNSS传感器1058(例如,GPS和/或辅助GPS传感器),以辅助地图绘制、感知、占用网格的产生和/或路径规划功能。可以使用任何数量的一个或更多个GNSS传感器1058,包括但不限于,例如,使用具有以太网到串行(RS-232)桥的USB连接器的GPS。
车辆1000还可包括一个或更多个RADAR传感器1060。即使在黑暗和/或恶劣天气条件下,车辆1000也可将一个或更多个RADAR传感器1060用于远程车辆检测。RADAR功能安全等级可以是ASIL B。一个或更多个RADAR传感器1060可以使用CAN和/或总线1002(例如,以传输由一个或更多个RADAR传感器1060产生的数据)来进行控制和访问对象跟踪数据。在某些示例中,可以访问以太网以访问原始数据。可以使用多种类型的RADAR传感器。例如但不限于,一个或更多个RADAR感器1060可适合于前、后和侧面RADAR使用。在一些示例中,使用了一个或更多个脉冲多普勒RADAR传感器。
一个或更多个RADAR传感器1060可以包括不同的配置,例如具有窄视野的远程、具有宽视野的近程、近程侧面覆盖等。在一些示例中,远程RADAR可以是用于自适应巡航控制功能。远程RADAR系统可以提供两次或更多次独立扫描(例如,在250m范围内)实现的广阔视野。一个或更多个RADAR传感器1060可以帮助区分静态对象和运动对象,并且可以被ADAS系统用于紧急制动辅助和向前碰撞警告。远程RADAR传感器可以包括具有多个(例如,六个或更多个)固定RADAR天线以及高速CAN和FlexRay接口的单基地多模(monostaticmultimodal)RADAR。在具有六个天线的示例中,中央的四个天线可以创建聚焦的波束图,该波束图被设计为以较高的速度记录车辆1000的周围环境,而相邻车道的交通干扰最小。另外两个天线可以扩大视野,从而可以快速检测进入或离开车辆1000车道的车辆。
作为示例,中程RADAR系统可包括高达1060m(前)或80m(后)的范围,以及高达42度(前)或1050度(后)的视野。短程RADAR系统可能包括但不限于安装在后保险杠的两端的RADAR传感器。当安装在后保险杠的两端时,此类RADAR传感器系统可能会产生两个光束,不断监视车辆后部和附近的盲点。
短程RADAR系统可以在ADAS系统中用于盲点检测和/或车道改变辅助。
车辆1000还可包括一个或更多个超声传感器1062。可以位于车辆1000的前、后和/或侧面的一个或更多个超声传感器1062可用于停车辅助和/或创建和更新占用网格。可以使用各种各样的一个或更多个超声传感器1062,并且可以将一个或更多个不同的超声传感器1062用于不同的检测范围(例如,2.5m、4m)。一个或更多个超声传感器1062可以在ASIL B的功能安全等级下操作。
车辆1000可以包括一个或更多个LIDAR传感器1064。一个或更多个LIDAR传感器1064可用于对象和行人检测、紧急制动、避免碰撞和/或其他功能。一个或更多个LIDAR传感器1064可以是功能安全等级ASIL B。在一些示例中,车辆1000可以包括可以使用以太网(例如,以提供数据到千兆以太网交换机)的多个LIDAR传感器1064(例如,两个、四个、六个等)。
在一些示例中,一个或更多个LIDAR传感器1064能够为360度视野提供对象及其距离的列表。例如,市售的一个或更多个LIDAR传感器1064可以具有大约1000m的广告范围,具有2cm-3cm的精度,并且例如支持1000Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1064。在这样的示例中,一个或更多个LIDAR传感器1064可以被实现为可以嵌入到车辆1000的前、后、侧面和/或拐角中的小型设备。在这样的示例中,即使对于低反射率对象,一个或更多个LIDAR传感器1064也可以提供高达1020度的水平视野和35度的垂直视野,并且具有200m的范围。一个或更多个前向LIDAR传感器1064可被配置用于45度至135度之间的水平视野。
在一些示例中,也可以使用诸如3D闪光(flash)LIDAR的LIDAR技术。3D闪光LIDAR使用激光闪光作为传输源,以照亮大约200m的车辆周围。闪光LIDAR单元包括接收器,该接收器记录激光脉冲的传播时间和每个像素上的反射光,这些像素又对应于从车辆到对象的范围。闪光LIDAR雷达可以使每个激光闪光都能生成高度准确且无失真的周围环境图像。在一些示例中,可以部署四个闪光LIDAR传感器,在车辆1000的每一侧各部署一个。除了风扇(例如,非扫描LIDAR设备)以外,可用的3D闪光LIDAR系统包括不具有移动部件的固态3D视线阵列LIDAR相机。闪光LIDAR雷达设备每帧可以使用5纳秒的I类(人眼安全)激光脉冲,并且可以以3D范围点云和共同注册的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且由于闪光LIDAR是不具有移动部件的固态设备,所以一个或更多个LIDAR传感器1064可能较不易受运动模糊、振动和/或冲击的影响。
车辆还可包括一个或更多个IMU传感器1066。在一些示例中,一个或更多个IMU传感器1066可位于车辆1000的后轴中心。一个或更多个IMU传感器1066可以包括,例如但不限于,一个或更多个加速度计、一个或更多个磁力计、一个或更多个陀螺仪、一个或更多个磁罗盘和/或其他传感器类型。在一些示例中,诸如在六轴应用中,一个或更多个IMU传感器1066可包括加速度计和陀螺仪,而在九轴应用中,一个或更多个IMU传感器1066可包括加速度计、陀螺仪和磁力计。
在一些实施例中,一个或更多个IMU传感器1066可以被实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合了微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和先进的卡尔曼滤波算法,可提供位置、速度和姿态的估算值。这样,在一些示例中,一个或更多个IMU传感器1066可以使车辆1000通过直接观察并关联从GPS到一个或更多个IMU传感器1066的速度变化而无需估计来自磁传感器的输入就可以估计航向。在一些示例中,一个或更多个IMU传感器1066和一个或更多个GNSS传感器1058可以组合在单个集成单元中。
车辆可以包括放置在车辆1000内和/或周围的一个或更多个麦克风1096。一个或更多个麦克风1096可以用于紧急车辆检测和识别等。
车辆可以进一步包括任何数量的相机类型,包括一个或更多个立体相机1068、一个或更多个广角相机1070、一个或更多个红外相机1072、一个或更多个环绕相机1074、一个或更多个远程和/或或中程相机1098,和/或其他相机类型。相机可以用于捕获车辆1000的整个外围周围的图像数据。所使用的相机的类型取决于车辆1000的实施例和要求,并且可以使用相机类型的任何组合以提供车辆1000周围必要的覆盖范围。此外,相机的数量可以根据实施例而不同。例如,车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或其他数量的相机。作为示例但不限于,相机可以支持千兆位多媒体串行链路(GMSL)和/或千兆位以太网。在本文参照图10A和图10B更详细地描述了每个相机。
车辆1000还可包括一个或更多个振动传感器1042。一个或更多个振动传感器1042可以测量车辆的部件(例如,一个或更多个轴)的振动。例如,振动的变化可以指示路面的变化。在另一示例中,当使用两个或更多个振动传感器1042时,振动之间的差异可用于确定路面的摩擦或打滑(例如,当振动差异在动力驱动轴与自由旋转之间时)。
车辆1000可以包括ADAS系统1038。在一些示例中,ADAS系统1038可以包括SoC。ADAS系统1038可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前撞警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲区警告(BSW)、后方交通警告(RCTW)、碰撞警告系统(CWS)、车道对中(LC)和/或其他功能。
ACC系统可以使用一个或更多个RADAR传感器1060、一个或更多个LIDAR雷达传感器1064和/或照相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监视并控制到紧邻车辆1000前方的车辆的距离,并自动调节车速以保持距前方车辆的安全距离。横向ACC执行距离保持,并在必要时建议车辆1000改变车道。横向ACC与其他ADAS应用程序有关,例如LCA和CWS。
CACC使用来自其他车辆的信息,该信息可以经由无线链路或者间接经由网络连接(例如,通过因特网)经由网络接口1024和/或一个或更多个无线天线1026从其他车辆接收。直接链路可以由车辆到车辆(V2V)的通信链接提供,而间接链接可以是基础设施到车辆(I2V)的通信链接。通常,V2V通信概念提供关于紧接在前的车辆(例如,紧接在车辆1000之前且与之在同一车道上的车辆)的信息,而I2V通信概念提供关于更前方车辆的信息。CACC系统可以包括I2V和V2V信息源之一或两者。给定车辆1000之前的车辆的信息,CACC可以更可靠,并且具有改善交通流的平滑度并减少道路上的拥堵的潜力。
FCW系统被设计为警告驾驶员危险,以便驾驶员可以采取纠正措施。FCW系统使用前向相机和/或一个或更多个RADAR传感器1060,其耦合到专用处理器、DSP、FPGA和/或ASIC,并电耦合至诸如显示器、扬声器和/或振动组件之类的驾驶员反馈。FCW系统可以提供警告,例如以声音、视觉警告、振动和/或快速制动脉冲的形式。
AEB系统检测到与另一车辆或其他对象的即将发生的向前碰撞,并且如果驾驶员在指定的时间或距离参数内未采取纠正措施,则可以自动施加制动。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个前向相机和/或一个或更多个RADAR传感器1060。当AEB系统检测到危险时,通常会先警告驾驶员采取纠正措施以避免碰撞,如果驾驶员未采取纠正措施,则AEB系统可能会自动施加制动以试图防止或至少减轻预测碰撞的影响。AEB系统可能包括动态制动支持和/或碰撞即将发生的制动之类的技术。
LDW系统提供视觉、听觉和/或触觉警告,例如方向盘或座椅振动,以在车辆1000越过车道标记时向驾驶员发出警报。当驾驶员通过激活转向信号灯指示有意偏离车道时,LDW系统不会激活。LDW系统可以使用与专用处理器、DSP、FPGA和/或ASIC耦合的面向正面的相机,其电耦合到诸如显示器、扬声器和/或振动组件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆1000开始离开车道,则LKA系统提供转向输入或制动以校正车辆1000。
BSW系统检测并警告汽车盲区中的车辆驾驶员。BSW系统可以提供视觉、听觉和/或触觉警报,以指示合并或更改车道不安全。当驾驶员使用转向灯时,系统可能会提供附加警告。BSW系统可以使用与专用处理器、DSP、FPGA和/或ASIC耦合的面向后方的相机和/或一个或更多个RADAR传感器1060,其电耦合至诸如显示器、扬声器和/或振动组件之类的驾驶员反馈。
当车辆1000倒车时在后相机机范围之外检测到对象时,RCTW系统可以提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB,以确保应用车辆制动器以避免碰撞。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个面向后方的RADAR传感器1060,其电耦合到诸如显示器、扬声器和/或振动组件之类的驾驶员反馈。
常规的ADAS系统可能易于产生误报结果,可能使驾驶员烦恼并分散他们的注意力,但通常不是灾难性的,因为ADAS系统会警告驾驶员并允许驾驶员确定安全状况是否确实存在并采取相应行动。然而,在自主车辆1000中,在结果冲突的情况下,车辆1000本身必须决定是否听从主要计算机或辅助计算机(例如,第一控制器1036或第二控制器1036)的结果。例如,在一些实施例中,ADAS系统1038可以是用于将感知信息提供给备用计算机合理性模块的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件组件上运行冗余的各种软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统1038的输出可以被提供给监督MCU。如果主计算机和辅助计算机的输出发生冲突,则监控MCU必须确定如何协调冲突,以确保安全运行。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度得分,以指示主计算机对所选结果的置信度。如果置信度得分超过阈值,则监督MCU可能会遵循主计算机的指示,而不管辅助计算机是否提供冲突或不一致的结果。在置信度得分不满足阈值的情况下,并且在主计算机和辅助计算机指示不同结果的情况下(例如,冲突),监督MCU可以在计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行一个或更多个神经网络,该神经网络被训练和配置为基于主要计算机和辅助计算机的输出来确定辅助计算机提供错误警报的条件。因此,监控MCU中的一个或更多个神经网络可以学习何时可以信任辅助计算机的输出,以及何时不能信任该辅助计算机的输出。例如,当辅助计算机是基于RADAR的FCW系统时,监控MCU中的一个或更多个神经网络可以学习FCW系统何时识别实际上不是危险的金属对象,例如会触发警报的排水格栅或井盖。类似地,当辅助计算机是基于相机的LDW系统时,当存在骑自行车的人或行人并且实际上车道偏离是最安全的操作时,监控MCU中的神经网络可以学会覆盖LDW。在包括在监督MCU上运行的一个或更多个神经网络的实施例中,监督MCU可以包括DLA或GPU中的至少一个,其适合于运行具有相关联的存储器的一个或更多个神经网络。在优选实施例中,监督MCU可以包括和/或被包括为一个或更多个SoC 1004的组件。
在其他示例中,ADAS系统1038可以包括使用传统的计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典计算机视觉规则(如果-则),并且监督MCU中的一个或更多个神经网络的存在可以提高可靠性、安全性和性能。例如,多样化的实现和有意的非同一性使整个系统更加容错,尤其是对由软件(或软件-硬件界面)功能引起的故障。例如,如果在主计算机上运行的软件中存在软件漏洞或错误,并且在辅助计算机上运行的不相同的软件代码提供了相同的总体结果,则监督MCU可以更有把握地认为总体结果为正确,并且主计算机上的软件或硬件中的漏洞不会引起实质性错误。
在一些示例中,ADAS系统1038的输出可以被馈送到主计算机的感知块和/或主计算机的动态驾驶任务块中。例如,如果ADAS系统1038指示由于紧邻前方的对象而导致的前向碰撞警告,则感知块可以在识别对象时使用该信息。在其他示例中,如本文所述,辅助计算机可以具有其自己的神经网络,该神经网络经过训练从而降低了误报的风险。
车辆1000还可包括信息娱乐SoC 1030(例如,车载信息娱乐系统(IVI))。尽管被示出并描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多个分立组件。信息娱乐SoC 1030可包括硬件和软件的组合,其可用于提供音频(例如,音乐、个人数字助理、导航指令、新闻、广播等)、视频(例如,电视、电影、流媒体等)、电话(例如,免提通话)、网络连接(例如,LTE、WiFi等)和/或信息服务(例如,导航系统、后停车辅助、无线电数据系统、与车辆相关的信息,例如燃油水平、总覆盖距离、制动燃油水平、油位、车门打开/关闭、空气滤清器信息等)至车辆1000。例如,信息娱乐SoC 1030可以通过收音机、磁盘播放器、导航系统、视频播放器、USB和蓝牙连接、汽车、车载娱乐、WiFi、方向盘音频控制、免提语音控制、平视显示器(HUD)、HMI显示器1034、远程信息处理设备、控制面板(例如,用于控制各种组件、特征和/或系统和/或与之交互)和/或其他组件。信息娱乐SoC 1030还可用于向车辆的一个或更多个用户提供信息(例如,视觉和/或听觉的),诸如来自ADAS系统1038的信息、自主驾驶信息(诸如计划的车辆操纵)、轨迹、周围环境信息(例如,交叉路口信息、车辆信息、道路信息等)和/或其他信息。
信息娱乐SoC 1030可以包括GPU功能。信息娱乐SoC 1030可以通过总线1002(例如,CAN总线、以太网等)与车辆1000的其他设备、系统和/或组件通信。在一些示例中,信息娱乐SoC 1030可以耦合至监控MCU,使得在一个或更多个主控制器1036(例如,车辆1000的主计算机和/或备用计算机)发生故障的情况下,信息娱乐系统的GPU可以执行一些自动驾驶功能。在这样的示例中,信息娱乐SoC 1030可使车辆1000进入司机到安全停止模式,如本文所述。
车辆1000还可包括仪表板1032(例如,数字仪表板、电子仪表板、数字仪表板等)。仪表板1032可以包括控制器和/或超级计算机(例如,离散控制器或超级计算机)。仪表板1032可包括一组仪表,例如车速表、燃料水平、油压、转速表、里程表、转弯指示器、换档位置指示器、一个或更多个安全带警告灯、一个或更多个停车制动器警告灯、一个或更多个发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等。在某些示例中,信息可以在信息娱乐SoC 1030和仪表板1032之间显示和/或共享。换句话说,仪表板1032可以被包括作为信息娱乐SoC 1030的一部分,反之亦然。
图10D是根据本公开的一些实施例的用于在一个或更多个基于云的服务器与图10A的示例性自主车辆1000之间进行通信的系统图。系统1076可包括一个或更多个服务器1078、一个或更多个网络1090和车辆,该车辆包括车辆1000。一个或更多个服务器1078可包括多个GPU 1084(A)-1084(H)(在本文中被统称为GPU 1084)、PCIe交换机1082(A)-1082(H)(在本文中被统称为PCIe交换机1082)和/或CPU 1080(A)-1080(B)(在本文中被统称为CPU1080)。GPU 1084、CPU 1080和PCIe交换机可以与诸如但不限于由NVIDIA开发的NVLink接口1088和/或PCIe连接1086之类的高速互连互连。在一些示例中,GPU 1084通过NVLink和/或NVSwitch SoC连接,并且GPU 1084和PCIe交换机1082通过PCIe互连连接。尽管示出了八个GPU 1084、两个CPU 1080和两个PCIe交换机,但这并不旨在进行限制。取决于实施例,每个服务器1078可以包括任何数量的GPU 1084、CPU 1080和/或PCIe交换机。例如,一个或更多个服务器1078可各自包括八个、十六个、三十二个和/或更多个的GPU 1084。
一个或更多个服务器1078可以通过一个或更多个网络1090并从车辆接收表示图像的图像数据,该图像示出了意外或改变的道路状况(例如,最近开始的道路工程)。一个或更多个服务器1078可以在一个或更多个网络1090上并且向车辆传输神经网络1092、更新的神经网络1092和/或地图信息1094,包括关于交通和道路状况的信息。对地图信息1094的更新可以包括对于HD地图1022的更新,诸如关于施工现场、坑洼、便道、洪水和/或其他障碍物的信息。在一些示例中,神经网络1092、更新的神经网络1092和/或地图信息1094可能已经由从环境中的任何数量的车辆接收的数据中表示的新训练和/或经验产生,和/或基于在数据中心执行的培训(例如,使用一个或更多个服务器1078和/或其他服务器)。
一个或更多个服务器1078可用于基于训练数据训练机器学习模型(例如,神经网络)。训练数据可以由车辆产生,和/或可以在模拟中产生(例如,使用游戏引擎)。在一些示例中,训练数据被标记(例如,其中神经网络受益于监督学习)和/或经过其他预处理,而在其他示例中,未对训练数据进行标记和/或预处理(例如,其中神经网络不需要监督学习)。一旦训练了机器学习模型,则机器学习模型可以被车辆使用(例如,通过一个或更多个网络1090传输到车辆,和/或机器学习模型可以被一个或更多个服务器1078使用以远程监控车辆。
在一些示例中,一个或更多个服务器1078可以从车辆接收数据并且将数据应用于最新实时神经网络以用于实时智能推理。一个或更多个服务器1078可以包括由一个或更多个GPU 1084供电的深度学习超级计算机和/或专用AI计算机,例如由NVIDIA开发的DGX和DGX Station机器。然而,在一些示例中,一个或更多个服务器1078可以包括仅使用CPU供电的数据中心的深度学习基础设施。
一个或更多个服务器1078的深度学习基础设施可以具有快速、实时的推理能力,并且可以使用该能力来评估和验证车辆1000中的处理器、软件和/或相关联硬件的健康。例如,深度学习基础设施可以从车辆1000接收周期更新,例如车辆1000在该图像序列中所定位的图像序列和/或对象(例如,通过计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行其自己的神经网络以识别对象并将其与车辆1000所识别的对象进行比较,如果结果不匹配并且基础设施得出车辆1000中的AI出现故障,则一个或更多个服务器1078可以向车辆1000发送信号,以指示车辆1000的故障安全计算机采取控制,通知乘客并完成安全停车操作。
为了进行推理,一个或更多个服务器1078可以包括一个或更多个GPU 1084和一个或更多个可编程推理加速器(例如,NVIDIA的TensorRT)。GPU驱动的服务器与推理加速的结合可以使实时响应成为可能。在其他示例中,例如在性能要求不高的地方,可以使用由CPU、FPGA和其他处理器驱动的服务器进行推理。
示例计算设备
图11是适合用于实现本公开一些实施例的示例计算设备1100的框图。例如,一个或更多个机器学习模型108可以在多个系统中的任何一个中执行,并且该系统可以包括计算设备1100的一些或全部组件。这样,使用过程100和700测试故障的底层软件和/或硬件可包括计算设备1100的一个或更多个组件或与其相似的组件。计算设备1100可以包括直接或间接耦合下列设备的总线1102:内存1104,一个或更多个中央处理单元(CPU)1106,一个或更多个图形处理单元(GPU)1108,通信接口1110,输入/输出(I/O)端口1112,输入/输出组件1114,电源1116,以及一个或更多个呈现组件1118(例如显示器)。
尽管图11的各个框被示为经由具有线路的总线1102连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件1118可以被认为是I/O组件1114(例如如果显示器为触摸屏)。作为另一个示例,CPU 1106和/或GPU 1108可以包括内存(例如,内存1104可以表示除了GPU 1108、CPU 1106和/或其他组件的内存以外的存储设备)。换言之,图11的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图11的计算设备的范围内。
总线1102可以表示一条或更多条总线,例如地址总线、数据总线、控制总线或者其组合。总线1102可以包括一种或更多种总线类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线,和/或另一种类型的总线。
内存1104可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备1100访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,内存1104可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备1100访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
通信介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,通信介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
CPU 1106可以被配置为执行计算机可读指令以便控制计算设备1100的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 1106中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 1106可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备1100的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备1100的类型,处理器可以是使用精简指令集计算(RISC)实现的ARM处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备1100还可以包括一个或更多个CPU 1106。
GPU 1108可以由计算设备1100用来渲染图形(例如3D图形)。GPU 1108可以包括能够同时处理数百或数千个软件线程的数百或数千个核。GPU 1108可以响应于渲染命令(例如经由主机接口接收的来自CPU 1106的渲染命令)而生成用于输出图像的像素数据。GPU1108可以包括诸如显示内存之类的用于存储像素数据的图形内存。显示内存可以作为内存1104的部分而被包括。GPU 1108可以包括(例如经由链路)并行操作的两个或更多GPU。当组合在一起时,每个GPU 1108可以生成用于输出图像的不同部分或者用于不同输出图像的像素数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的内存,或者可以与其他GPU共享内存。
在其中计算设备1100不包括GPU 1108的示例中,CPU 1106可以用来渲染图形。
通信接口1110可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备1100能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口1110可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口1112可以使得计算设备1100能够逻辑地耦合到包括I/O组件1114、呈现组件1118和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备1100中。说明性I/O组件1114包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件1114可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备1100的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备1100可以包括诸如立体照相机系统之类的深度照相机、红外照相机系统、RGB照相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备1100可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备1100用来渲染沉浸式增强现实或者虚拟现实。
电源1116可以包括硬接线电源、电池电源或者其组合。电源1116可以向计算设备1100供电以使得计算设备1100的组件能够操作。
呈现组件1118可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件1118可以接收来自其他组件(例如GPU 1108、CPU 1106等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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中的至少一个。
这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
- 在自主驾驶应用中使用神经网络执行故障检测
- 使用深度神经网络执行自主路径导航