CN115909237A - 在自主机器应用程序中使用深度学习的能见度距离估计 - Google Patents

在自主机器应用程序中使用深度学习的能见度距离估计 Download PDF

Info

Publication number
CN115909237A
CN115909237A CN202210947622.XA CN202210947622A CN115909237A CN 115909237 A CN115909237 A CN 115909237A CN 202210947622 A CN202210947622 A CN 202210947622A CN 115909237 A CN115909237 A CN 115909237A
Authority
CN
China
Prior art keywords
data
visibility
sensor data
vehicle
autonomous
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210947622.XA
Other languages
English (en)
Inventor
A·巴基帕耶
A·吉普塔
G·唐
H-J·徐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN115909237A publication Critical patent/CN115909237A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W30/00Purposes of road vehicle drive control systems not related to the control of a particular sub-unit, e.g. of systems using conjoint control of vehicle sub-units
    • B60W30/08Active safety systems predicting or avoiding probable or impending collision or attempting to minimise its consequences
    • B60W30/095Predicting travel path or likelihood of collision
    • B60W30/0956Predicting travel path or likelihood of collision the prediction being responsive to traffic or environmental parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W30/00Purposes of road vehicle drive control systems not related to the control of a particular sub-unit, e.g. of systems using conjoint control of vehicle sub-units
    • B60W30/08Active safety systems predicting or avoiding probable or impending collision or attempting to minimise its consequences
    • B60W30/09Taking automatic action to avoid collision, e.g. braking and steering
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W40/00Estimation or calculation of non-directly measurable driving parameters for road vehicle drive control systems not related to the control of a particular sub unit, e.g. by using mathematical models
    • B60W40/02Estimation or calculation of non-directly measurable driving parameters for road vehicle drive control systems not related to the control of a particular sub unit, e.g. by using mathematical models related to ambient conditions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W2555/00Input parameters relating to exterior conditions, not covered by groups B60W2552/00, B60W2554/00
    • B60W2555/20Ambient conditions, e.g. wind or rain

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Mechanical Engineering (AREA)
  • Transportation (AREA)
  • Automation & Control Theory (AREA)
  • Multimedia (AREA)
  • Probability & Statistics with Applications (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Analysis (AREA)
  • Traffic Control Systems (AREA)
  • Measurement Of Optical Distance (AREA)
  • Closed-Circuit Television Systems (AREA)

Abstract

本公开涉及在自主机器应用程序中使用深度学习的能见度距离估计。在各种例子中,被公开的***和方法使用一个或更多个机器学习模型(MLM)——如深层神经网络(DNN)——来计算输出指示与使用自主或半自主机器的一个或更多个传感器生成的传感器数据相对应的估计能见度距离。一旦使用一个或更多个MLM计算出所述能见度距离,就可以评估传感器数据对该机器的一个或更多个下游任务的可用性。因此,当估计的能见度距离较低时,相对于能见度距离较高时,可以依赖对应的传感器数据以用于较少任务。

Description

在自主机器应用程序中使用深度学习的能见度距离估计
相关申请的交叉引用
本申请涉及2019年9月13日提交的美国非临时申请第16/570187号,在此通过引用将其全文合并于此。
背景技术
自动驾驶***和半自动驾驶***(例如,先进的驾驶辅助***(ADAS))可以利用传感器(例如,相机、激光雷达传感器、雷达传感器等)来执行各种任务,例如盲点监测、自动紧急制动、车道保持、对象检测、障碍躲避和定位。例如,为了使自动驾驶***和ADAS***能够独立高效地运行,可以实时地或接近实时地生成对车辆周围环境的了解。为了准确、高效地了解该车辆周围环境,所述传感器必须生成可用的、未遮挡的传感器数据(例如图像、深度图、点云等的表示)。然而,传感器感知所述周围环境的能力可能会受到各种来源的影响,例如天气(如雨、雾、雪、冰雹、烟雾等)、交通状况、传感器阻塞(如碎片、湿气等)或模糊。因此,所产生的传感器数据可能不能清楚地描述该环境中的车辆、障碍物和/或其他对象。
处理受损能见度距离的传统***使用特征级方法来检测单独的视觉证据的片段,随后将这些特征拼凑在一起,以确定受损的能见度距离的存在。这些传统的方法主要依赖于计算机视觉技术,例如通过分析图像区域中鲜明边缘特征(例如,梯度、颜色、强度上的急剧变化)的缺乏,使用基于颜色的像素分析或其他低级特征分析来检测潜在的能见度问题,和/或带有盲与非盲比输出的二重支持向量机器分类。然而,这种基于特征的计算机视觉技术需要对每个特征进行单独的分析——例如,每个特征是否与能见度有关——以及分析如何针对特定的传感器降低能见度的情况组合不同的特征,由于在现实环境中使用传感器观察到的数据可能会受到各种各样的条件和事件的固有复杂性的影响,因此限制了这种方法的可扩展性。例如,由于执行这些传统方法的计算成本,它们对于实时或接近实时的部署是渲染无效的。
此外,传统***可能依赖于对降低传感器能见度的原因进行分类,如雨、雪、雾、眩光等,但可能无法对所述传感器数据的可用性提供准确的指示。例如,识别图像中的雨可能无法被所述***用于确定对应的图像(或其部分)是否可用于各种自主或半自主任务。在这种情况下,如果有雨,传统***可能认为图像无法使用,即使图像可以清楚地描述该车辆100米以内的所述环境。因此,所述图像可能会被错误地丢弃并且所述一个或更多个任务可能被禁用,而不是依赖于该可见范围内的一个或更多个任务的图像。这样,通过平等对待每一种受损的传感器能见度,不那么恶劣或有害的传感器类型可能会导致传感器数据的实例被视为不可用,即使这种确定可能不完全准确(例如,有小雨的环境图像可以用于一个或更多个操作,而有浓雾的环境图像则不行)。
发明内容
本发明的实施例涉及自主机器应用中用于能见度距离估计的深度神经网络处理,例如,与可识别对象或元素的传感器的最远距离。本公开的***和方法使用一个或更多个机器学习模型(如深度神经网络(DNN))来计算指示估计能见度距离(如:以计算距离或包括距离范围的距离箱的形式)的对应于自主或半自主机器的一个或更多个传感器的输出。例如,通过预测估计的能见度距离,机器在一个或更多个下游任务(如对象检测、对象跟踪、障碍躲避、路径规划、控制决策等)中对相关传感器数据的依赖程度可调整。因此,在估计的能见度距离低(例如,20米或以下)的情况下,相应的传感器数据只能在0级(无自动化)或1级(驾驶员辅助)任务时依赖(例如,根据汽车工程师协会(SAE)自动化级别),或者只能被依赖在距离机器20米以内的预测(例如,超过20米的预测可能被忽略,或者更多的具有更低的可信度)。类似地,另一个例子是,如果估计的能见度距离很高——例如,1000米或更多——所述对应的传感器数据可能被依赖于3级(有条件驾驶自动化)和4级(高驾驶自动化)任务的全部性能,或者可以依赖于对应于机器1000米以内的位置的预测。
以这种方式,并与传统***(如上所述那些)相比,本公开的***和方法不仅可用于确定传感器数据的可用性,而且可以确定用能见度距离定义的所述传感器数据的可用性程度或等级——或能见度距离箱(visibility distance bin)具有相关的能见度距离范围。为训练机器学习模型——例如,DNN——来准确计算能见度距离的输出表示,所述DNN可以使用现实世界数据、增强现实世界的数据、和/或代表包括不同天气、照明、和/或其他条件的传感器数据表示(例如,图像、激光雷达点云等等)的合成数据来训练。每个传感器数据实例可以包括代表能见度距离和/或能见度距离箱的对应地面真实数据。在一些实施例中,可以使用一个或更多个训练过的模型自动生成所述地面真实数据,以便对于给定的参数——例如,雾的密度、雨的湿度、雨的强度等——存在已知的或估计的能见度距离。这样,鲁棒的训练集可以使用所述一个或更多个模型生成(例如,不同的模型可能对应于不同传感器的数据类型,如现实世界、增强、和/或合成),所述机器学习模型可使用训练数据的组合和相关地面真实数据来训练。
附图说明
将深度神经网络处理用于自主机器应用中的能见度距离估计的***和方法详细描述如下,并参考所附图像,其中:
图1是示出了根据本公开的一些实施例的用于训练机器学习模型以计算估计能见度距离的过程的数据流程图;
图2A-2C是根据本公开的一些实施例的具有不同能见度距离的传感器数据的示例可视化;
图3是示出了根据本公开的一些实施例的用于训练机器学习模型以计算估计能见度距离的方法的流程图;
图4是示出了根据本公开的一些实施例的用于部署机器学习模型以计算估计能见度距离的过程的数据流程图;
图5是示出了根据本公开的一些实施例的用于各种对象的传感器数据和对应的能见度距离输出的示例可视化;
图6是示出了根据本公开的一些实施例的用于部署机器学习模型以计算估计能见度距离的方法的流程图;
图7A是根据本公开的一些实施例的示例性自主车辆的图示;
图7B是根据本公开的一些实施例的图7A的示例性自主车辆的相机位置和视野示例;
图7C是根据本公开的一些实施例的图7A的示例性自主车辆的示例性***架构的框图;
图7D是根据本公开的一些实施例的一个或更多个基于云的服务器与图7A的示例性自主车辆之间通信的***图;
图8是适合用于实施本公开的一些实施例的示例计算设备的框图;以及
图9是适用于实施本公开的一些实施例的示例数据中心的框图。
具体实施方式
公开了与在自主机器应用中的能见度距离估计的深度神经网络处理相关的***和方法。尽管本公开可以关于示例性自主车辆700(或者在本文中称为“车辆700”或“自我(ego)车辆700”,其示例是关于图7A-7D描述的),但这并不旨在限制。例如,本文描述的***和方法可由但不限于非自主车辆、半自主车辆(例如,在一个或更多个高级驾驶员辅助***(ADAS)中)、有人驾驶和无人驾驶机器人或机器人平台、仓库车辆、越野车辆、连接到一个或更多个拖车的车辆、飞行船舶、船只、航天飞机、应急响应车辆、摩托车、电动或机动自行车、飞机、施工车辆、水下航行器、无人机和/或其他车辆类型。此外,尽管本公开可以描述为在自主或半自主机器应用中的能见度距离估计,但这并不旨在限制,并且本文描述的***和方法可以用于增强现实、虚拟现实、混合现实、机器人、安全和监视、自主或半自主机器应用,和/或可以分析所述传感器数据的情况和可用性的任何其他技术空间。
训练机器学习模型以计算能见度距离
参考图1,图1是根据本发明的一些实施例的对应于用于训练用于能见度距离估计的机器学习模型示例过程100的数据流程图。应理解,本文所述的此布置和其它布置仅作为示例阐述。除了所示的布置和元件之外,还可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),或者可以使用其他布置和元件代替所示布置和元件,并且可以完全省略一些元件。此外,本文所描述的许多元件是功能实体,其可以作为离散或分布式组件实现,或者与其他组件结合实现,并且可以以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以通过硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。在一些实施例中,本文描述的所述***、方法、和过程可以通过使用与图7A-7D的示例性自主车辆700类似的组件、特征、和/或功能,图8的示例计算设备800和/或图9的示例数据中心900被执行。
可以使用训练数据102(如传感器数据102A、增强数据102B和/或合成数据102C)来训练所述一个或更多个机器学习模型104。例如,所述传感器数据102可能对应于使用自我车辆700的一个或更多个传感器(如立体相机768、雷达传感器760、超声波传感器762,激光雷达传感器764、宽景相机770、环绕相机774,所述自我车辆700的其他传感器,和/或其他类型传感器)生成的现实世界传感器数据。例如,可以使用一个或更多个数据收集车辆来收集所述传感器数据102A,所述车辆在各种条件下收集各种类型的传感器数据102A,例如不同的天气、光照、遮挡和/或其他条件。在实施例中,由于仅使用传感器数据102A来生成足够多样化的训练数据集可能不切实际和/或成本过高,因此可以在现实世界传感器数据102A之外或可选择地从现实世界传感器数据102A中生成增强数据102B和/或合成数据102C。
所述增强数据102B可能对应于增强后的现实世界传感器数据102A(例如,包括各种天气(雾、雪、雨、雨夹雪等)、照明(黑暗、晴天、太阳照射到传感器等)、遮挡、和/或其他条件)来模拟在不同条件下捕获的传感器数据,而不是最初捕获的传感器数据102A的实际条件。例如,在良好天气条件下捕获传感器数据102A,可以使用雨、雾、雪和/或其他条件来增强所述传感器数据102A,以生成所述增强传感器数据102B。另一个例子是,所述传感器数据102A是在小雨下捕获的,所述传感器数据102A可以扩大到包括除小雨以外的大雨和/或雾。要做到这一点,在实施例中,不同级别的雨(如细雨、大雨等等),雾(如浓雾、轻雾等等),雪(例如,大雪、小雪、阵雪等等),和/或其他条件(例如,不同的太阳位置创建不同照明条件下的一个或更多个传感器)可以应用于生成所述增强数据102B。因此,控制一个或更多个条件的参数对应的值可以确定——例如,手动、自动和/或随机——以生成所述增强数据102B。例如,可以确定用于另一条件的雾密度参数、雨强度参数和/或另一参数的值,并且可以基于该值对所述传感器数据102A进行增强,以生成所述增强数据102B。
所述合成数据102C可能对应于使用一个或更多个虚拟机(例如,所述车辆700的虚拟实例)的一个或更多个虚拟传感器(如摄像头、激光雷达传感器、雷达传感器等)在虚拟环境(如:虚拟或模拟环境中的虚拟车辆的虚拟摄像头)生成的传感器数据。例如,可以使用模拟或游戏引擎为所述虚拟机器生成模拟环境,而虚拟传感器可以从模拟环境中生成合成数据102C,以用作训练数据102。为了生成与各种条件(如天气、光照、遮挡等)相对应的模拟或虚拟环境,可以手动、自动和/或随机设置与各种条件相对应的参数值,以生成多种合成数据102C。此外,可以选择或随机选择虚拟环境中的道路布局(如车道数量、曲率、高差变化等)、交通状况、周围环境条件、风景、对象位置和/或类型,以及/或其他因素,以使用合成数据102C进一步多样化所述训练数据102。
为了校准所述增强数据102B和合成数据102C,以确保两者的一致性,从而使训练数据102更准确,可以对增强和模拟参数进行校准。这可能会增加使用具有相同能见度距离标签的增强和模拟生成的数据在视觉上相同或相似的可能性。为了执行所述校准,在实施例中,可策划增强数据102B的实例和合成数据102C的实例,该实例包括与能见度距离对应的相同距离的对象。对于每个实例,可以在(例如但不限于)+2米和(例如但不限于)-2米的距离生成一对增强实例和一对合成实例。然后,评估人员可以确定所述目标对象在所述增强数据102B和合成数据102C的两个实例中是否可见。根据上述示例场景下的实施例,然后可以调整所述参数直到所述对象在距离-2米处可见而在距离+2米处不可见。因此,对于相同的能见度距离,雨、雪、雾等参数可以进行调整,使合成数据或增强数据的最终训练数据在视觉上相似。
在实施例中,所述训练数据102可包括原始数据102A、102B和/或102C、下采样数据、上采样数据、裁剪或感兴趣区域(ROI)数据、翻转或旋转数据、或增强数据,和/或它们的组合,以进一步多样化所述训练数据集并增加训练数据集的鲁棒性。
除了使用地面真实生成器116生成的对应地面真实数据外,训练数据102可用于训练所述机器学习模型104以计算输出106(例如,能见度距离108、距离箱110和/或能见度分级和/或属性112)。虽然本文描述了使用深度神经网络(DNN),特别是卷积神经网络(CNN)作为所述机器学习模型104,但这并不是为了限制。例如,在不限制的情况下,所述机器学习模型104可以包括任何类型的机器学习模型,例如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯(
Figure BDA0003787974040000061
)、K近邻(Knn)、K均值聚类、随机森林、降维算法、梯度提升算法、神经网络(如自编码器、卷积、递归、感知机、长/短记忆/LSTM、霍普菲尔德(Hopfield)、玻尔兹曼(Boltzmann)、深度信念、反卷积、生成对抗、液体状态机等)、计算机视觉算法的机器学习模型和/或其他类型的机器学习模型。
作为示例,例如机器学习模型104包括一个CNN,那么机器学习模型104可以包括任意数量的层。一个或更多个所述的层可以包括一个输入层。输入层可以保存与训练数据102(或部署中的传感器数据402)相关的值(例如,在后处理之前或之后)。例如,当所述训练数据表示图像时,所述输入层可以保存表示图像原始像素值的值作为体积(例如,宽度、高度和颜色通道(如RGB),如32x32x3)。
一个或更多个层可以包括卷积层。该卷积层可以计算输入层中连接到局部区域的神经元的输出,每个神经元计算它们的权重与输入体积中连接到的小区域之间的点积。该卷积层的结果可能是另一个体积,其中维度之一基于应用的过滤器的数量(例如,宽度、高度和过滤器的数量,例如32x32x12,如果12是过滤器的数量)。
一个或更多个层可以包括解卷积层(或转卷积层)。例如,解卷积层的结果可以是另一个体积,其维数比在解卷积层接收的数据的输入维数更高。
一个或更多个层可以包括整流线性单元(ReLU)层。所述提供或更多个ReLU层可以应用逐元素激活的函数,例如max(0,x),阈值为0,作为示例。所述ReLU层的结果体积可以与所述ReLU层的输入的体积相同。
一个或更多个层可以包括池化层。该池化层可以沿着所述空间维度(例如,高度和宽度)执行向下采样操作,这可能导致比池化层的输入更小的体积(例如,从32x32x12输入体积得到16x16x12)。
一个或更多个层可以包括一个或更多个全连接层。全连接层中的每个神经元可以连接到上一卷中的每个神经元。全连接层可以计算分类得分,得到的体积可以是1x1xn,其中n等于所述类的数量。在某些示例中,所述CNN可以包括一个或更多个全连接层,这样所述CNN的一个或更多个层的输出可以作为CNN的一个或更多个完全连接层的输入提供。在一些示例中,一个或更多个卷积流可以由所述一个或更多个机器学习模型104实现,并且部分或所有卷积流可以包括各自的全连接层。
在一些非限制性实施例中,机器学习模型104可能包括一系列卷积和最大池化层,以促进图像特征提取,随后是多尺度扩展卷积和上采样层,以促进全局上下文特征提取。
虽然本文针对机器学习模型104讨论了输入层、卷积层、池化层、ReLU层和全连接层,但这并不旨在限制。例如,在机器学习模型104中可以使用额外或替代的层,如规范化层、SoftMax层和/或其他层类型。
此外,有些层可能包括参数(如权重和/或偏差),如所述卷积层和全连接层,而其他可能不包括,如所述ReLU层和池化层。在一些实施例中,所述参数可以由所述机器学习模型104在训练中学习。此外,一些层可能包括额外的超参数(如学习率、步幅、时期等),如卷积层、全连接层和池化层,而其他层可能不包括,如ReLU层。在实施例中,机器学习模型104在能见度距离上回归,CNN的最后一层的激活函数可以包括ReLU激活函数。在实施例中,机器学习模型104将传感器数据实例分类到距离箱110中,CNN的最后一层的激活函数可以包括SoftMax激活函数。参数和超参数不受限制,并且可以根据实施例不同而不同。
在机器学习模型104包括CNN的实施例中,可以根据所述实施例使用CNN的不同层序和层数。也就是说,CNN的层序和层数并不局限于任何一种架构。
例如,在一个或更多个实施例中,CNN可包括编码器-解码器架构,和/或可包括一个或更多个输出头。例如,CNN可以包括与CNN的特征检测主干相对应的一个或更多个层,特征检测主干的输出(例如,特征映射)可以使用一个或更多个输出头进行处理。例如,第一输出头(包括一个或更多个第一层)可以用来计算能见度距离108,第二输出头(包括一个或更多个第二层)可以用来计算距离箱110,和/或第三输出头(包括一个或更多个第三层)可以用来计算能见度分级/属性112。因此,在使用两个或多个头的地方,所述两个或更多个头可以并行处理来自主干的数据,并且可以训练每个头来准确地预测该输出头的相应输出。然而,在其他实施例中,可以使用单个躯干而无需单独的头部。
地面真实生成器116可用于生成现实世界标签或注释118,作为与现实世界传感器数据102A相对应的地面真实数据。例如,对于在现实世界环境中生成的传感器数据102A(无增强),现实世界的标签或注释可能对应于表示传感器数据102A每个实例的能见度距离的能见度距离标签。现实世界的标签或注释118用于生成地面真实数据,生成的注释或标签可能是在绘制程序(例如,注释程序),计算机辅助设计(CAD)程序,标签程序,另一种类型的程序,所述程序适合生成注释,和/或可能是手绘,在一些示例中。在任何示例中,所述地面真实数据可以是合成产生的(例如,从计算机模型或渲染中生成),真实产生的(例如,从现实世界的数据中设计和生成),机器自动化(例如,使用特征分析和学习从数据中提取特征,然后生成标签),人工注释的(例如,标签器,或注释专家,定义所述标签的位置),和/或它们的组合(例如,人类识别可见对象,计算机确定到对象的距离和相应的能见度距离)。
现实世界标签118可以对应一个实际的能见度距离——例如,米、英尺等——和/或可以对应距离箱(例如,每个距离箱可以包括一个能见度距离值范围)。例如,在距离箱使用处,但不限于此,距离箱可能包括第一箱用于极低能见度(例如,<10米),第二箱用于低能见度(例如,10米至100米),第三箱用于中能见度(例如,100米至1000米),第四箱用于高能见度(例如,1000米至4000米之间),第五箱用于清晰能见度(例如,大于4000米)。虽然这里列出了5个箱,并有相应的范围,但这并不是为了限制,任何数值范围的距离容器的数量都可以在不偏离本公开的范围的情况下使用。这样,对于给定的传感器数据102A的实例,所述传感器数据102A可能被标上能见度距离和/或距离箱,并且这些值可以用来比较(例如,使用损失函数114)训练中机器学习模型104的输出106。在某些情况下,还可以训练机器学习模型104来计算能见度分级和/或属性112——例如,对应于能见度降低的原因,如果存在。在其他实例下,除了能见度距离分级或可以替代能见度距离分级地,机器学习模型104还可以被训练以计算与受损的传感器数据(例如,雨滴落在相机镜头上,雪挡住传感器等)对应的传感器盲区分级。在这种情况下,地面真实数据和输出可能类似于2019年9月13日提交的美国非临时申请No.16570187中描述的数据,在此通过引用将其全文合并于此。
为确定给定的传感器数据102A的实例的能见度距离和/或距离箱,可以使用静态和/或动态对象位置。例如,在某些实例中,一个或更多个深度和距离值可以为环境中对象确定,通过使用一个或更多个机器学习、计算机视觉、深度传感器、和/或其他的输出,并且这些深度和距离值可用于为传感器数据102A的实例确定的能见度距离信息。关于图2,假设200A可视化(包括暴雨)对应于传感器数据102A的实例(例如,来自数据收集车辆相机的图像),深度值可能是基于深度传感器(如激光雷达,雷达等)的输出,机器学习模型或神经网络的输出,计算机视觉算法的输出,和/或另一输出类型而由于车辆202A而已知。在这样的示例中,当数据收集车辆正在生成包括车辆202A的传感器数据102A的实例时,所述数据收集车辆可能正在运行一个或更多个底层进程,以确定环境中物体的深度或距离信息。因此,如果车辆202A是距离数据收集车辆最远的可见对象,并且车辆202A的深度已知,则传感器数据102A实例的能见度距离可能对应于车辆202A的深度或距离(例如,加上附加距离,即202A车辆以外的环境可见,或小于在实施例中202A车辆略微可见或模糊的一些距离)。类似地,对于可视化200B(包括小雨情况),车辆202B可能是可见的,因此可以使用对应所述车辆202B的深度或距离值来确定能见度距离和/或距离箱。
在一些实施例中,除了使用来自传感器、机器学习模型、计算机视觉算法等的深度输出之外或额外地使用来自传感器、机器学习模型、计算机视觉算法等的深度输出,高清晰度(HD)地图可以用来确定环境中静态对象的距离或深度。例如,使用本地化技术来本地化关于HD地图的数据收集车辆,环境中与数据收集工具的本地位置的已知距离的可识别或可见对象可以用来确定给定传感器数据102A的实例的能见度距离。因此,例如在传感器数据102A的实例中交通标志、树、路灯、十字路口、建筑、和/或静态特性可见,并且本地化后从高清地图中得知对象或特征的距离,所述距离或深度可用来作为能见度距离和/或确定距离箱。
在一些实施例中,对能见度距离和/或距离箱的地面真实标签的这种确定可以手动执行。例如,人工注解者可以确定在传感器数据102A实例中可见的最远的对象,确定该对象的相关距离或深度值,并相应地生成地面真值(ground truth)。在其他实施例中,能见度距离和/或距离箱的地面真实标签的确定可能会自动执行,如此,使用深度传感器输出、机器学习模型、DNN、计算机视觉算法、HD地图等识别的最大的对象的深度和距离值(例如,即与数据收集车辆的最远距离)可用作能见度距离值和/或可用于确定传感器数据102A实例的距离箱。
为了生成增强数据102B的地面真实数据,在实施例中可以对传感器数据102A使用类似的过程。例如,环境中对象的已知的距离或深度值可用于确定能见度距离和/或距离箱。此外或可替代地,模型可以被训练以确定增强和能见度距离和/或距离箱的参数值之间的对应或映射。例如,雾参数的值(例如,密度、高度等)可用于增强所述传感器数据102A以产生增强数据102B。然后增强数据102B的实例可以被分析(例如,使用增强后可见物体的已知深度值)以确定能见度距离和/或距离箱。对于任意数量的增强数据102B实例可以重复此过程,直到模型被训练以基于用于增强的参数的值来计算能见度距离和/或距离箱。一旦模型被训练,则此模型可以被用于为自动生成的增强数据自动生成地面真实。例如,所述参数(例如雨、雪、雾、雨夹雪、照明、遮挡等)的值可以被随机化以生成所述增强数据102B,并且这些值(或其组合)可能已知能见度距离和/或距离箱的对应性,且这些能见度距离和/或距离箱可以用作增强数据102B的实例的地面真实。
作为训练模型的示例,或创建参数值与能见度距离和/或距离箱之间的映射,以及关于图2A-2C,可视化200A可能对应于在暴雨时用于生成增强数据102B的降雨参数值。然后注解者或标记者可以确定到车辆202A的距离,照此将该增强数据标记为102B,这可能对应于用于增强所述数据与能见度距离和/或距离箱的一个或更多个参数值之间的一个映射。这个过程会被重复,为可视化200B使用到车辆202B的距离和结果为小雨的参数的值,并为可视化200C使用距汽车202C的距离和结果是明确情况(例如,没有雨则所有雨值为0)的参数的值。虽然雨是用图2A-2C来说明和描述的,这不旨在限制,并且其他情况如雾、雪、冰雹,冰雹、照明、遮挡、及其组合等等可以用来生成增强数据102B,因此地面真实的能见度距离和/或距离箱与所述参数的值之间的映射(或其组合)。
为合成数据102C生成地面真实数据,与传感器数据102A一样类似的过程可以被使用,除了已知的深度信息可能来自于模拟引擎同时对应于模拟的状态数据可包括环境中对象的精确的深度和距离信息。例如,人类注释员可以在模拟中识别根据变化的参数值生成的合成数据102C实例中的最远可见对象,并且从虚拟机的虚拟传感器到最远可见对象的深度或距离可以被用作能见度距离和/或以确定距离箱作为地面真值。此外,或可选地,在实施例中,可以训练模型以确定模拟参数的值与能见度距离和/或距离箱之间的对应或映射。例如,雾参数的值(例如,密度、高度等)可以用来生成模拟的模拟环境,并且可以从该模拟环境里面捕获合成数据102C。然后可以分析合成数据102C的实例(例如,使用模拟中可见物体的已知深度值),以确定能见度距离和/或距离箱。这个过程可以对任意数量的合成数据102C实例重复,直到该模型被训练以根据用于模拟的参数值计算能见度距离和/或距离箱。在一些实施例中,可以使用工具来允许用户识别什么时候特定对象对于特定参数集是可见的或是不可见的。例如,可以将车辆放置在第一个位置,用户可以指示车辆是可见的。然后车辆可能会被移到更远的地方,用户可能会表示车辆仍然可见。然后车辆可能会在所述模拟环境中被移动到更远的地方,并且用户可能会表示车辆不再可见,车辆的这个距离可能被用作地面真实能见度距离和/或以确定距离箱。这个过程可以用不同的参数和不同的对象类型重复,直到模型被练就。一旦模型被立案就,该模型可以被用来为自动生成的合成数据自动生成地面真值。例如,所述参数(例如雨、雪、雾、雨夹雪、光照、遮挡等)的值可以被随机化以生成所述模拟,这些值(或其组合)可能已知对应于能见度距离和/或距离箱,并且这些能见度距离和/或距离箱可以用作合成数据102C的实例的地面真值。
作为训练模型的一个例子,或者创建参数值与能见度距离和/或距离箱之间的映射,并且关于图的映射2A-2C,所述可视化200A可能对应于用于生成大雨的合成数据102C的降雨参数值。然后,注释者或标记者可以确定到车辆202A的距离,如此标记合成数据102C,并且这可能对应于用于生成模拟和能见度距离和/或距离箱的一个或更多个参数值之间的映射。这个过程会重复,为可视化200B使用到车辆202B的距离和结果为小雨的参数值,并为可视化200C使用到车辆202C的距离和结果为明确的情况(例如,所有雨值0则没有雨)的参数值。虽然雨是用图2A-2C来说明和描述的,这不旨在限制,并且其他情况如雾、雪、雨夹雪、冰雹、照明、遮挡、以上的组合等等可以用来生成所述合成数据102C,从而生成地面真实的能见度距离和/或距离箱与参数的值(或组合)之间的映射。
一旦地面真实数据被生成(通过使用地面真实生成器116)以对应使用训练数据102计算的机器学***。当机器学习模型104被训练以回归能见度距离值,回归损失可用作损失函数114。在这样的例子中,所述回归损失可能包括归一化的L1损失,这可以解释在较远的能见度距离上的更高误差以及在较短的能见度距离上的更小误差。在这样的例子中,所述损失可按下列等式(1)计算:
Figure BDA0003787974040000131
其中dpred为机器学习模型104输出的预测能见度距离,dGT为地面真实能见度距离。
在其他例子中,可以使用归一化L2损失,或者可以使用定向归一化L1损失。定向归一化L1损失可能类似于归一化L1损失,但所述损失曲线的斜率可能在正侧更陡,以激励错误向正侧倾斜(例如,在损失水平处支持召回率超过精度)。这个损失函数的最小值可能仍然是0,但是低于地面真值的预测可能会受到更大的惩罚。
在进一步的例子中,高斯距离损失可以用于回归通道,以更多地惩罚距地面真实更远的距离,以及更少地惩罚更接近地面真实的预测(而不是要求完全准确)。在这样的例子中,高估距离可能比低估距离受到更重的惩罚。
在机器学习模型104输出距离箱110(例如,作为分级输出)的实施例中,分级损失可以使用。例如,为了训练机器学习模型104以计算距离箱110,可以使用分类交叉熵损失函数和/或可以使用定向分类交叉熵损失函数。
在机器学***,可以使用一个或更多个关键性能指标(KPI)。例如,可以使用网络(或机器学习模型)级KPI,也可以使用模块级KPI。根据下式(2),网络级KPI可以对训练数据102的每个实例测量相对能见度距离预测误差(RDE):
Figure BDA0003787974040000132
其中dpred为机器学***均值和标准差。
模块级KPI可以通过将预测的能见度距离分类到不同的箱中度量误差。为计算分类(Δclass)中的误差,可采用下式(3):
Δclass=cpred-cGT    (3)
其中c为距离箱标识符(ID)(例如,1对应极低,5对应清晰),cpred为机器学习模型104预测的能见度距离箱ID,cGT为地面真实能见度箱ID。因此,对于正确的预测,Δclass可以为0,如果预测的距离箱高于预期,则为正,如果预测的距离箱低于预期,则为负。这样,Δclass=0可能为真正,Δclass>0为假负,Δclass<0为假正。这可能是由于假正导致自我机器700过于保守(这可能会让使用者感到不舒服),假负导致自我机器700不足够保守(这可能会让使用者感到危险)。使用这些真正、假正和假负的定义,模块可能会被调整以达到优良的精确度和召回率,但在需要时可能会支持召回(例如,可能会支持过度保守)。另外,|Δclass|可以用作预测误差是的指示并可以用损失函数来减小|Δclass|的扩散。
现在参照图3,本文所述的方法300的每个块包括可使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。所述方法300也可以体现为存储在计算机存储介质上的计算机可用指令。所述方法300可以由独立应用程序、服务或托管服务(独立或与另一个托管服务结合)或另一个产品的插件提供,等等。另外,针对图1的过程100和图7A-7D中自我机器700,通过实例描述方法300。然而,该方法300可以额外地或替代地在任何一个进程中和/或由任何一个***执行,或任何进程与***的组合,包括但不限于本文描述的那些。
图3是示出了根据本公开的一些实施例用于训练机器学习模型以计算估计能见度距离的方法300的流程图。在框B302处,方法300包括接收与用于调整与训练传感器数据的实例相对应的能见度的一个或更多个参数相对应的值。例如,可以接收一个或更多个参数的值(例如,雨的强度、雨的湿度、雾的密度、光照情况等)。
在框B304处,方法300包括至少部分地基于所述值生成训练传感器数据的实例。例如,使用一个或更多个参数的值,可以增强传感器数据102A以生成所述增强数据102B和/或可以生成虚拟仿真,并且可以使用虚拟机的虚拟传感器捕获合成数据102C。
在框B306处,方法300包括至少部分地基于所述值确定与所述训练传感器数据的实例相对应的能见度距离。例如,使用一个或更多个训练模型,可以确定一个或更多个参数的一个或更多个值与能见度距离108和/或能见度距离箱110之间的对应关系。
在框B308处,方法300包括使用训练传感器数据的实例和能见度距离作为地面真实数据训练机器学***(使用一个或更多个KPI决定,在实施例中)并为了部署被验证(例如,图4的过程400中)。
计算部署中的能见度距离
参照图4,根据本公开的一些实施例,图4是对应于用于部署用于能见度距离估计的机器学习模型的示例过程400的数据流图。应该理解的是,本文所述的这一布置和其他布置仅作为示例提出。其他的布置和元素(例如,机器、接口、功能、顺序、功能组等)可以用来补充或替代这些显示,有些元素可以完全省略。此外,本文中描述的许多元素都是功能实体,其可以作为离散或分布式组件实现,或与其他组件结合,并在任何合适的组合和位置实现。在此描述的由实体执行的各种功能可能由硬件、固件和/或软件实现。例如,由处理器通过执行存储在内存中的指令可以执行各种函数。在一些实施例中,可以使用与图7A-7D中示例自主车辆700,图8的示例计算设备800,图9的示例数据中心900那些类似的组件、特性和/或功能来执行本文所述的***、方法和过程。
在部署中,过程400可能包括生成和/或接收传感器数据402。传感器数据402可以包括使用自我机器(例如本文中关于图7A-7D所述的自我机器700)的一个或更多个传感器生成的传感器数据。例如,传感器数据402可能类似于关于图1所述的传感器数据102A。因此,传感器数据402可以表示自我机器700的一个或更多个传感器的视场和/或感觉场,例如以图像、激光雷达距离图像、点云等的形式。
机器学习模型104可以接收所述传感器数据402作为输入,并可以处理传感器数据402来计算输出106——所述输出106可能包括能见度距离108、距离箱110和/或能见度分级/属性112。在其中机器学习模型104计算能见度距离108(并不是距离箱110)的实施例中,后处理器404可以用于将能见度距离108阈值设置为距离箱。例如,当距离箱是10米至100米,能见度距离108为78米,所述后处理器可以给传感器数据实例402贴标签或分类为对应于所述距离箱在10米和100米之间,并可以为可用性406分析这些信息。
在任何例子中,无论距离箱110是直接作为机器学习模型104的输出106计算出来的,还是使用后处理器404确定的,都可能有任意数量的距离箱,并且每个距离箱可以包括任何能见度距离值范围。此外,每个箱可能对应于可执行的不同数量的操作。例如,如果传感器数据402在任何方面都没有视觉受损,那么自我机器700可能会依赖传感器数据402进行一组操作。然而,如果传感器数据402在某些方面视觉受损(例如,能见度距离小于最大值),则该组操作中的一个或更多个操作可能被禁用,或可能提供一个指示器,其导致一个或更多个依赖于传感器数据402的组件、特性、和/或功能,以忽略不合适或不可用的传感器数据402的实例。此外,在实施例中,当能见度分级/属性112被计算,该信息还可以被用作可用性406决策的因素,这样相比其他能见度分级与其他距离箱结合,某些距离箱与某些能见度分类相结合可对应不同的可用性。
作为一个非限制性例子,距离箱可能包括第一箱用于极低能见度(例如,<10米),第二箱用于低能见度(例如,10米至100米),第三箱用于中能见度(例如,100米至1000米),第四箱用于高能见度(例如,1000米至4000米),第五箱用于清晰能见度(如,大于4000米)。在本例中,第一箱可能对应于与极大雾或吹雪、强降水或大雨相关的可见范围。第二箱可能对应于与大雾天气相关的可见范围。第三箱可能对应于与中等雾或中度降水或中度毛毛雨相关的可见范围。第四箱可对应于与多云天气条件或小雨或毛毛雨相关的可见范围。所述第五箱可对应于与生成所述传感器数据402的特定传感器的最大可见范围相关的可见范围。
继续这个非限制性的例子,五个箱中的每个箱都对应着自我机器可能执行的各种任务。例如,对于第一箱(例如,极低的能见度距离),只要自我机器以低于阈值的速度(例如,低于每小时25公里)行进,完整的0级、1级和2级低速主动安全功能(例如,车道辅助、自动车道保持、自动巡航控制、自动紧急制动等)的性能就可以使用。然而,如果车辆行驶的速度超过了阈值速度,至少对于传感器数据402的实例而言伴随很低的无能距离,这些功能可能会被禁用。关于第二箱(例如,低能见度距离),完整的0级、1级和2级泊车功能(例如,近距离检测、自动平行泊车对齐等)的性能和低速度主动安全功能可用,只要自我机器以小于一个阈值的速度行进。对于第三箱(例如中等能见度距离),可能会提供0级、1级、2级和2+级驾驶功能的全部性能。关于第四箱(例如,高能见度距离),完整的三级和四级停车功能的性能(例如,自动平行泊车(应用程序),MPP,VVP)可能是可用的,除了第一、第二、第三箱的所述0级、1级、2级和2+级的功能。对于第五箱(例如,清晰的能见度),除了第一、第二、第三和第四个垃圾箱的功能外,还可能具有3级自动驾驶公路功能的全部性能。
在一些实施例中,可用性406可以对应于来自可被使用的传感器数据402的信息的一部分。例如,当所述距离箱已知的,并且所述距离箱对应于100到1000米的范围内,对应传感器数据402和在自我机器700的1000米以内的任何***的输出可以使用,而对应的距离大于1000米的任何输出可能被忽略。在这样一个例子中,当使用目标检测算法在与自我机器700距离200米的地方检测到第一辆车辆,驱动栈408的下游***可能依赖于该检测。然而,当使用目标检测算法在与自我机器700相距1200米的地方检测到第二辆车辆,该检测可能不被依赖。类似的过程也可用于其他任务,如对象跟踪、路径中障碍分析(OIPA)、对象车道分配、定位等。
在任何实施例中,一旦可用性406确定,传感器数据402的实例可以被标记为具有可用性406指示的自主或半自主软件驱动堆栈(“驱动堆栈”)或传输到具有可用性406指示的自主或半自主软件驱动堆栈(“驱动堆栈”),如此,驱动栈408的一个或更多个特性、功能、和/或组件可以被禁用、忽略传感器数据402的实例、和/或以其他方式使用可用性406。驱动栈408可以包括一个或更多个层,例如世界状态管理层,所述世界状态管理层管理世界状态通过使用一个或更多个映射(例如,3D映射)、本地化组件、感知组件和/或诸如此类。此外,自动驾驶软件堆栈可包括规划组件(例如,作为规划层的一部分)、控制组件(例如,作为控制层的一部分)、驱动组件(例如,作为驱动层的一部分)、避障组件(例如,作为避障层的一部分)、和/或其他组件(例如,作为一个或更多个附加的或替代的层的一部分)。因此,可用性406可以向依赖传感器数据402的驱动栈408的任何下游任务提供指示,以便管理传感器数据402的适当使用。
作为示例,对于图5的可视化500,可以使用自我机器700的相机生成代表图像的传感器数据402的实例。传感器数据402的实例可以应用于机器学习模型104,而机器学习模型104可以计算输出106中的一个或更多个。当输出106包括能见度距离108,后处理器404可以将能见度距离108阈值设置为一个距离箱。可用性406可能会基于距离箱(和/或能见度分级/属性112)来确定,并且该信息可能会被驱动栈408使用。例如,当距离箱对应很低的能见度,自动紧急制动(AEB)等安全功能可以用来帮助自我机器700为车辆502A停车,但是,由于可视化500对应的传感器数据402的降低的可用性406,与车辆502B对应的目标检测结果可能不被依赖。
现在参照图6,本文所述方法600的每个块包括一个计算过程,该计算过程可以使用任何硬件、固件和/或软件的组合来执行。例如,处理器可以通过执行存储在内存中的指令来执行各种函数。方法600还可以体现为存储在计算机存储介质上的计算机可用指令。方法600可由独立应用程序、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,针对图4的过程400和图7A-7D的自我车辆700描述方法500和600。然而,此方法可附加地或替代地在任何一个过程中和/或由任何一个***或任何的过程与***的组合执行,包括,但不限于,本文所述的那些。
图6是示出了根据本公开的一些实施例用于部署机器学习模型以计算估计能见度距离的方法600的流程图。在框B602处,方法600包括使用机器学习模型并至少部分地基于使用自我机器的一个或更多个传感器生成的传感器数据,计算指示与传感器数据相对应的能见度距离的数据。例如,机器学习模型104可以使用传感器数据402作为输入,计算一个或更多个输出106。
在框B604处,方法600包括至少部分地基于能见度距离,确定传感器数据对自我机器的一个或更多个操作的可用性。例如,传感器数据402的可用性406可以基于能见度距离108、距离箱110和/或能见度分级/属性112来确定。
在框B606处,方法600包括至少部分地基于传感器数据的可用性执行一个或更多个操作中的至少一个操作。例如,在能见度距离不清楚的情况下,如果所述传感器数据清晰所述操作原本会依赖于传感器数据402的一个或更多个操作可能会失效,并且/或者可能会发出信号以忽略传感器数据402的特定实例。
示例自主车辆
图7A是根据本发明的一些实施例的示例性自主车辆700的图示。自动驾驶车辆700(或者在本文中称为“车辆700”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、第一响应车辆、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、施工车辆,水下航行器、无人机、耦接到拖车的车辆和/或其他类型的交通工具(例如,无人驾驶和/或容纳一名或更多名乘客的交通工具)。自动驾驶车辆通常按照自动化水平进行描述,由美国交通部下属的国家公路交通安全管理局(NHTSA)定义,以及美国汽车工程师学会(SAE)“道路机动车辆驾驶自动化***相关术语的分类和定义”(标准编号:J3016-201806,于2018年6月15日发布,标准编号:J3016-201609,于2016年9月30日发布,以及本标准的先前和未来版本)。车辆700可以根据自动驾驶级别的3级至5级中的一个或更多个实现功能。车辆700可以根据自动驾驶级别中的1级至5级中的一个或更多个实现功能。例如,根据实施例,车辆700可能具有驾驶员辅助(级别1)、部分自动化(级别2)、条件自动化(级别3)、高自动化(级别4)和/或全自动化(级别5)。在此使用的术语“自主”可能包括任何和/或所有类型的自动驾驶汽车700或其他机器,如完全自主、高度自主、有条件自主、部分自主、提供辅助自主、半自主、主要自主、或其他名称。
车辆700可包括底盘、车身、车轮(例如,2、4、6、8、18等)、轮胎、车轴和车辆的其他部件。车辆700可包括推进***750,例如内燃机、混合动力发电厂、全电动发动机和/或其他推进***类型。推进***750可连接至车辆700的传动系,该传动系可包括变速器,以实现车辆700的推进。推进***750可响应于接收来自节流阀/加速器752的信号进行控制。
当推进***750运行时(例如,当车辆运动时),可使用包括方向盘的转向***754来引导车辆700(例如,沿着所需路径或路线)。转向***754可以接收来自转向致动器756的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器***746可用来响应于从制动致动器748和/或制动传感器接收到的信号而操作车辆制动器。
一个或更多个控制器736可包括一个或更多个片上***(SoC)704(图7C)和/或一个或更多个GPU,可向车辆700的一个或更多个部件和/或***提供信号(例如,代表命令)。例如,一个或更多个控制器可通过一个或更多个制动致动器748发送信号以操作车辆制动器,通过一个或更多个转向致动器756操作转向***754,通过一个或更多个油门/加速器752操作推进***750。一个或更多个控制器736可包括一个或更多个车载(例如,集成)计算设备(例如,超级计算机),其处理传感器信号,并输出操作命令(例如,表示命令的信号),以启用自动驾驶和/或协助人类驾驶员驾驶车辆700。一个或更多个控制器736可包括用于自动驾驶功能的第一控制器736、用于功能安全功能的第二控制器736、用于人工智能功能的第三控制器736(例如,计算机视觉),用于信息娱乐功能的第四控制器736,用于紧急情况下冗余的第五控制器736,和/或其他控制器。在一些示例中,单个控制器736可处理上述功能中的两个或更多个,两个或更多个控制器736可处理单个功能和/或其任何组合。
一个或更多个控制器736可提供用于控制车辆700的一个或更多个部件和/或***的信号,以响应从一个或更多个传感器接收的传感器数据(例如,传感器输入)。传感器数据可从例如但不限于一个或更多个全球导航卫星***传感器758(例如,一个或更多个全球定位***传感器)、一个或更多个雷达传感器760、一个或更多个超声波传感器762、一个或更多个激光雷达传感器764、一个或更多个惯性测量单元(IMU)传感器766(例如,一个或更多个加速计、一个或更多个陀螺仪、一个或更多个磁罗盘)接收,磁强计等)、一个或更多个麦克风796、一个或更多个立体相机768、一个或更多个广角相机770(如鱼眼相机)、一个或更多个红外相机772、一个或更多个环绕相机774(如360度相机)、一个或更多个远程和/或中频相机798、一个或更多个速度传感器744(如用于测量车辆700的速度)、一个或更多个振动传感器742、一个或更多个转向传感器740、一个或更多个制动传感器(例如,作为制动传感器***746的一部分)和/或其他传感器类型。
控制器736中的一个或更多个可以从车辆700的仪表组732接收输入(例如,由输入数据表示),并通过人机接口(HMI)显示器734、音频信号器、扬声器等和/或通过车辆700的其他部件提供输出(例如,由输出数据表示、显示数据等)。输出可包括诸如车辆速度、速率、时间、地图数据(例如,图7C的HD地图722)、位置数据(例如,车辆700的位置,例如地图上的位置)、方向、其他车辆的位置(例如,占用网格)等信息,一个或更多个控制器736感知到的关于对象和对象状态的信息等。例如,HMI显示器734可以显示关于一个或更多个对象存在的信息(例如,街道标志、警告标志、交通灯改变等),和/或关于车辆已进行、正在进行、或将进行的驾驶操作的信息(例如,现在换车道,两英里后从34B出口驶出等)。
车辆700还包括网络接口724,其可使用一个或更多个无线天线726和/或调制解调器通过一个或更多个网络进行通信。例如,网络接口724可以能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等进行通信。一个或更多个无线天线726还可以使用一个或更多个局域网(例如蓝牙、蓝牙LE、Z波、ZigBee等和/或低功耗广域网(LPWAN),如LoRaWAN、SigFox等)在环境中的对象(例如,车辆、移动设备等)之间实现通信。
图7B是根据本发明的一些实施例的图7A的示例性自主车辆700的相机位置和视野示例。相机和各自的视野是一个示例实施例,并不旨在限制。例如,可包括附加和/或替代相机和/或相机可位于车辆700上的不同位置。
相机的相机类型可包括但不限于数字相机,该相机可适用于车辆700的部件和/或***。一个或更多个相机可在汽车安全完整性等级(ASIL)B和/或其他ASIL下运行。根据实施例,相机类型可以具有任何图像捕获速率,例如每秒60帧(fps)、120帧、240帧等。相机可以使用卷帘式快门、全局快门、另一种类型的快门或其组合。在一些示例中,滤色器阵列可包括红色透明(RCCC)滤色器阵列、红色透明蓝色(RCCB)滤色器阵列、红蓝绿色透明(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列、和/或其他类型的滤色器阵列。在一些实施例中,可以使用清晰像素相机,例如具有RCCC、RCCB和/或RBGC滤色器阵列的相机,以努力提高光灵敏度。
在一些示例中,一个或更多个摄像头可用于执行高级驾驶员辅助***(ADAS)功能(例如,作为冗余或故障安全设计的一部分)。例如,可安装多功能单摄像头,以提供车道偏离警告、交通标志辅助和智能前照灯控制等功能。一个或更多个相机(例如,所有相机)可以同时记录和提供图像数据(例如,视频)。
一个或更多个摄像头可安装在安装组件中,如定制设计(3D打印)组件,以切断可能干扰摄像头图像数据捕获能力的杂散光和车内反射(例如,挡风玻璃后视镜反射的仪表板反射)。关于翼镜安装组件,翼镜组件可定制3D打印,以便摄像头安装板与翼镜形状匹配。在一些示例中,一个或更多个相机可以集成到机翼后视镜中。对于侧视图相机,一个或更多个相机也可以集成在驾驶室每个拐角的四根立柱内。
具有包括车辆700前方环境部分的视野的相机(例如,前置相机)可用于环绕视图,以帮助识别前向路径和障碍物,以及在一个或更多个控制器736和/或控制SOC的帮助下,辅助提供对生成占用网格和/或确定首选车辆路径至关重要的信息。前置相机可用于执行许多与激光雷达相同的ADAS功能,包括紧急制动、行人检测和防撞。前向摄像头也可用于ADAS功能和***,包括车道偏离警告(“LDW”)、自动巡航控制(“ACC”)和/或其他功能,如交通标志识别。
各种相机可用于前置配置,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪的单目相机平台。另一个示例可以是可用于感知从***进入视野的对象(例如,行人、交叉交通或自行车)的广角相机770。尽管图7B中仅示出了一个广角相机,但车辆700上可能有任意数量的广角相机770。此外,一个或更多个远程相机798(例如,长角立体相机对)可用于基于深度的对象检测,特别是对于尚未训练神经网络的对象。一个或更多个远程相机798还可用于对象检测和分类以及基本目标跟踪。
一个或更多个立体相机768也可包括在前置配置中。一个或更多个立体相机768可以包括集成控制单元,该集成控制单元包括可扩展处理单元,该可扩展处理单元可以在单个芯片上提供可编程逻辑(FPGA)和具有集成CAN或以太网接口的多核微处理器。该单元可用于生成车辆环境的三维地图,包括图像中所有点的距离估计。一个或更多个可替代的立体相机768可包括紧凑型立体视觉传感器,该传感器可包括两个相机镜头(左右各一个)和图像处理芯片,该图像处理芯片可测量从车辆到目标对象的距离并使用生成的信息(例如,元数据)以激活自动紧急制动和车道偏离警告功能。除了本文所述的立体相机之外,或者可选地,可以使用其他类型的立体相机768。
具有包括车辆700侧面环境部分的视野的相机(例如,侧视相机)可用于环绕视图,提供用于创建和更新占用网格以及生成侧面碰撞警告的信息。例如,一个或更多个环绕相机774(例如,如图7B所示的四个环绕相机774)可定位在车辆700上。一个或更多个环绕相机774可包括一个或更多个广角相机770、一个或更多个鱼眼相机、一个或更多个360度相机等。例如,四个鱼眼相机可位于车辆的前部、后部和侧面。在替代布置中,车辆可使用三个环绕摄像头774(例如,左、右和后),并可利用一个或更多个其他摄像头(例如,前置相机)作为第四个环绕视图相机。
具有包括车辆700后部环境部分的视野的相机(例如,后视相机)可用于泊车辅助、环绕视野、追尾警告以及创建和更新占用网格。可以使用多种相机,包括但不限于也适合作为前置相机的相机(例如,一个或更多个远程和/或中程相机798、一个或更多个立体相机768、一个或更多个红外相机772等),如本文所述。
图7C是根据本发明的一些实施例的图7A的示例性自主车辆700的示例性***架构的框图。应理解,本文所述的此布置和其它布置仅作为示例阐述。除了所示的布置和元件之外,还可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),或者可以使用其他布置和元件代替所示布置和元件,并且可以完全省略一些元件。此外,本文所描述的许多元件是功能实体,其可以作为离散或分布式组件实现,或者与其他组件结合实现,并且可以以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以通过硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。
图7C中车辆700的每个部件、特征和***均通过总线702连接。总线702可包括控制器局域网(CAN)数据接口(在本文中也可称为“CAN总线”)。CAN可以是车辆700内的网络,用于帮助控制车辆700的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刮器等的驱动。CAN总线可以配置为具有数十个甚至数百个节点,每个节点具有其自己的唯一标识符(例如,CAN ID)。可以读取CAN总线以查找方向盘角度、地速(ground speed,)、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示灯。CAN总线可以符合ASIL B标准。
尽管总线702在本文中被描述为CAN总线,但这并非旨在限制。例如,除了CAN总线之外,或者从CAN总线,还可以使用FlexRay和/或以太网。此外,尽管使用单线表示总线702,但这并旨在限制性的。例如,可以存在任意数量的总线702,其可以包括一个或更多个CAN总线、一个或更多个FlexRay总线、一个或更多个以太网总线和/或使用不同协议的一个或更多个其他类型的总线。在一些示例中,两个或更多个总线702可用于执行不同的功能,和/或可用于冗余。例如,第一总线702可用于碰撞避免功能,第二总线702可用于驱动控制。在任何示例中,每条总线702可与车辆700的任何部件通信,且两条或更多条总线702可与相同部件通信。在一些示例中,车辆内的每个SoC 704、每个控制器736和/或每个计算机可以访问相同的输入数据(例如,来自车辆700的传感器的输入),并且可以连接到公共总线,例如CAN总线。
车辆700可包括一个或更多个控制器736,如本文关于图7A所述的控制器。控制器736可用于各种功能。一个或更多个控制器736可以耦合到车辆700的各种其他组件和***中的任何一个,并且可以用于控制车辆700、车辆700的人工智能、车辆700的信息娱乐等。
车辆700可包括一个或更多个片上***(SoC)704。SoC 704可包括一个或更多个CPU 706、一个或更多个GPU 708、一个或更多个处理器710、一个或更多个高速缓存712、一个或更多个加速器714、一个或更多个数据存储716和/或未示出的其他组件和特征。一个或更多个SoC 704可用于控制各种平台和***中的车辆700。例如,一个或更多个SoC 704可以与HD地图722组合在***(例如,车辆700的***)中,HD地图722可以经由网络接口724从一个或更多个服务器(例如,图7D的服务器778)获得地图刷新和/或更新。
一个或更多个CPU 706可以包括CPU集群或CPU复合体(或者在本文中称为“CCPLEX”)。一个或更多个CPU 706可以包括多个核心和/或二级高速缓存。例如,在一些实施例中,一个或更多个CPU 706可以包括相干多处理器配置中的八个核。在一些实施例中,一个或更多个CPU 706可包括四个双核集群,其中每个集群具有专用二级缓存(例如,2MB二级高速缓存)。一个或更多个CPU 706(例如,CCPLEX)可被配置为支持同时集群操作,使得CPU 706的集群的任何组合在任何给定时间处于活动状态。
一个或更多个CPU 706可实现包括以下一个或更多个特征的功率管理能力:单个硬件块可在空闲时自动时钟选通以节省动态功率;当内核由于执行WFI/WFE指令而未主动地执行指令时,可以对每个内核时钟进行选通;每个核心可以独立地进行功率选通;当所有核心都被时钟选通或电源选通时,每个核心集群可以独立地进行时钟选通;和/或当所有核心都是功率选通时,每个核心集群可以独立地功率选通。一个或更多个CPU 706可以进一步实现用于管理功率状态的增强算法,其中指定了允许的功率状态和预期唤醒时间,并且硬件/微码确定为核心、集群和CCPLEX进入的最佳电源状态。处理核心可支持软件中简化的电源状态输入序列,并将工作卸载到微码。
一个或更多个GPU 708可以包括集成的GPU(或者在本文中称为“iGPU”)。GPU 708可以是可编程的,并且可以对并行工作负载是高效的。在一些示例中,一个或更多个GPU708可以使用增强的张量指令集。一个或更多个GPU 708可以包括一个或更多个流微处理器,其中每个流微处理器可以包括一级高速缓存(例如,具有至少96KB存储容量的一级高速缓存),并且两个或更多个流微处理器可以共享二级高速缓存(例如,具有512KB存储容量的二级高速缓存)。在一些实施例中,一个或更多个GPU 708可包括至少八个流式微处理器。一个或更多个GPU 708可以使用一个或更多个计算应用程序编程接口(API)。此外,一个或更多个GPU 708可以使用一个或更多个并行计算平台和/或编程模型(例如,NVIDIA的CUDA)。
一个或更多个GPU 708可进行功率优化,以在汽车和嵌入式用例中获得最佳性能。例如,一个或更多个GPU 708可在鳍型场效应晶体管(FinFET)上制造。然而,这并非旨在限制,并且可以使用其他半导体制造工艺来制造一个或更多个GPU 708。每个流式微处理器可合并多个分割成多个块的混合精度处理核心。例如,但不限于,64个PF32核和32个PF64核可被划分为四个处理块。在这样的示例中,可以为每个处理块分配16个FP32核、8个FP64核、16个INT32核、两个用于深度学习矩阵算法的混合精度NVIDIA张量核、L0指令高速缓存、线程束调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可包括独立的并行整数和浮点数据路径,以通过混合计算和寻址计算来提供工作负载的有效执行。流式微处理器可以包括独立的线程调度能力,以实现并行线程之间更细粒度的同步和协作。流式微处理器可以包括组合的一级数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。
一个或更多个GPU 708可包括高带宽存储器(HBM)和/或16GB HBM2存储器子***,以在一些示例中提供约900GB/秒峰值存储器带宽。在一些示例中,除了HBM存储器之外,或者可选地从HBM存储器使用同步图形随机存取存储器(SGRAM),例如第五代图形双数据速率同步随机存取存储器(GDDR5)。
GPU 708可包括统一内存技术,其包括访问计数器,以允许更准确地将内存页迁移到最频繁访问它们的处理器,从而提高处理器之间共享内存范围的效率。在一些示例中,地址转换服务(ATS)支持可用于允许一个或更多个GPU 708直接访问一个或更多个CPU 706页表。在这样的示例中,当一个或更多个GPU 708存储器管理单元(MMU)经历未命中时,地址转换请求可被发送到一个或更多个CPU 706。作为响应,一个或更多个CPU 706可在其页表中查找地址的虚拟到物理映射,并将转换发送回一个或更多个GPU 708。因此,统一存储器技术可允许一个或更多个CPU 706和一个或更多个GPU 708两者的存储器的单个统一虚拟地址空间,从而简化一个或更多个GPU 708编程和将应用程序移植到一个或更多个GPU 708。
此外,一个或更多个GPU 708可包括访问计数器,其可跟踪一个或更多个GPU 708对其他处理器的存储器的访问频率。访问计数器可帮助确保将内存页移动到访问页面最频繁的处理器的物理内存中。
一个或更多个SoC 704可包括任意数量的高速缓存712,包括本文所述的高速缓存712。例如,一个或更多个高速缓存712可以包括对一个或更多个CPU 706和一个或更多个GPU 708(例如,连接一个或更多个CPU 706和一个或更多个GPU 708两者)都可用的L3高速缓存。高速缓存712可包括可跟踪线的状态的回写高速缓存,例如通过使用高速缓存一致性协议(例如,MEI、MESI、MSI等)。尽管可以使用较小的缓存大小,但根据实施例,L3缓存可以包括4MB或更多。
一个或更多个SoC 704可包括一个或更多个算术逻辑单元(ALU),该算术逻辑单元可用于执行与车辆700的各种任务或操作相关的处理,例如处理DNN。此外,一个或更多个SoC 704可包括用于在***内执行数学运算的一个或更多个浮点单元(FPU)或其他数学协处理器或数字协处理器类型。例如,一个或更多个SoC 704可以包括集成为CPU 706和/或GPU 708内的执行单元的一个或更多个FPU。
一个或更多个SoC 704可包括一个或更多个加速器714(例如,硬件加速器、软件加速器或其组合)。例如,一个或更多个SoC 704可以包括硬件加速集群,该硬件加速集群可以包括优化的硬件加速器和/或大型片上存储器。大型片上存储器(例如4MB的SRAM)可以使硬件加速集群加速神经网络和其他计算。硬件加速集群可用于补充一个或更多个GPU 708并卸载一个或更多个GPU 708的一些任务(例如,释放一个或更多个GPU 708的更多周期以执行其他任务)。例如,一个或更多个加速器714可用于足够稳定以适于加速的目标工作负载(例如,感知、卷积神经网络(CNN)等)。本文使用的术语“CNN”可包括所有类型的CNN,包括基于区域或区域卷积神经网络(RCNN)和快速RCNN(例如,用于目标检测)。
一个或更多个加速器714(例如,硬件加速集群)可包括一个或更多个深度学习加速器(DLA)。一个或更多个DLA可包括一个或更多个张量处理单元(TPU),其可被配置为每秒为深度学习应用和推理提供额外的10万亿操作。TPU可以是配置为执行图像处理功能(例如,用于CNN、RCNN等)并针对其进行优化的加速器。一个或更多个DLA还可以针对特定的神经网络类型和浮点运算以及推理进行优化。一个或更多个DLA的设计可以提供比通用GPU更高的每毫米性能,并且大大超过CPU的性能。一个或更多个TPU可以执行多个功能,包括单实例卷积功能,例如,支持特征和权重的INT8、INT16和FP16数据类型,以及后处理器功能。
一个或更多个DLA可针对各种功能中的任何一种,在处理或未处理的数据上快速有效地执行神经网络,尤其是CNN,包括但不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;利用相机传感器的数据进行距离估计的CNN;用于紧急车辆检测和识别并使用麦克风数据进行检测的CNN;用于使用来自摄像头传感器的数据来进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
一个或更多个DLA可以执行一个或更多个GPU 708的任何功能,例如,通过使用推理加速器,设计者可以针对一个或更多个DLA或一个或更多个GPU 708执行任何功能。例如,设计者可以将CNN和浮点操作的处理集中在一个或更多个DLA上,并将其他功能留给一个或更多个GPU 708和/或一个或更多个其他加速器714。
一个或更多个加速器714(例如,硬件加速集群)可包括可编程视觉加速器(PVA),其在本文中也可称为计算机视觉加速器。一个或更多个PVA可设计和配置为加速用于高级驾驶员辅助***(ADAS)、自动驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。一个或更多个PVA可在性能和灵活性之间提供平衡。例如,每个PVA可包括例如但不限于任何数量的精简指令集计算机(RISC)内核、直接存储器访问(DMA)和/或任何数量的向量处理器。
RISC内核可与图像传感器(例如,本文所述的任何相机的图像传感器)、一个或更多个图像信号处理器等交互。每个RISC核可以包括任意数量的存储器。RISC核心可以使用多种协议中的任何一种,具体取决于实施例。在一些示例中,RISC内核可以执行实时操作***(RTOS)。RISC核心可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储器设备来实现。例如,RISC内核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可使PVA组件独立于一个或更多个CPU 706访问***内存。DMA可支持用于优化PVA的任何功能,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可支持多达六个或更多维度的寻址,其可包括块宽度、块高度、块深度、水平块步进、垂直块步进和/或深度步进。
矢量处理器可以是可编程处理器,其设计可以高效灵活地执行计算机视觉算法的编程,并提供信号处理能力。在一些示例中,PVA可包括PVA核心和两个向量处理子***分区。PVA核心可包括处理器子***、一个或更多个DMA引擎(例如,两个DMA引擎)和/或其他***设备。向量处理子***可以作为PVA的主处理引擎运行,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量存储器(例如VMEM)。VPU核心可以包括数字信号处理器,例如,单指令、多数据(SIMD),超长指令字(VLIW)数字信号处理器。SIMD和VLIW的结合可以提高吞吐量和速度。
每个向量处理器可包括指令高速缓存,并可耦合至专用存储器。结果,在一些示例中,每个向量处理器可被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可被配置为采用数据并行。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以在图像的不同区域上执行相同的计算机视觉算法。在其他示例中,包括在特定PVA中的向量处理器可以在同一图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或图像的部分上执行不同的算法。除其他事项外,任何数量的PVA可以包括在硬件加速集群中,并且任何数量的向量处理器可以包括在每个PVA中。此外,PVA可包括额外的纠错码(ECC)存储器,以增强整体***安全性。
一个或更多个加速器714(例如,硬件加速集群)可包括计算机视觉网络片上和SRAM,用于为一个或更多个加速器714提供高带宽、低延迟SRAM。在一些示例中,片上存储器可包括至少4MB SRAM,包括但不限于,八个现场可配置内存块,可由PVA和DLA访问。每对存储器块可以包括高级***总线(APB)接口、配置电路、控制器和多路复用器。可以使用任何类型的存储器。PVA和DLA可通过为PVA和DLA提供高速内存访问的主干线访问内存。主干可包括将PVA和DLA互连至存储器(例如,使用APB)的片上计算机视觉网络。
片上计算机视觉网络可包括一个接口,该接口在传输任何控制信号/地址/数据之前,确定PVA和DLA均提供就绪且有效的信号。这种接口可以提供用于传输控制信号/地址/数据的独立相位和独立信道,以及用于连续数据传输的突发式通信。此类接口可符合ISO26262或IEC 61508标准,但也可使用其他标准和协议。
在一些示例中,一个或更多个SoC 704可包括实时光线跟踪硬件加速器,如2018年8月10日提交的第16/101232号美国专利申请中所述。实时光线跟踪硬件加速器可用于快速有效地确定对象的位置和范围(例如,在世界模型内),生成实时可视化模拟,用于雷达信号解释、声音传播合成和/或分析、声纳***模拟、一般波传播模拟、与激光雷达数据进行比较,以用于定位和/或其他功能和/或其他用途。在一些实施例中,一个或更多个树遍历单元(ttu)可用于执行一个或更多个射线跟踪相关操作。
一个或更多个加速器714(例如,硬件加速器集群)在自动驾驶方面有着广泛的用途。PVA可能是一种可编程视觉加速器,可用于ADA和自动驾驶车辆的关键加工阶段。PVA的能力非常适合需要以功耗低且延迟低进行可预测处理的算法域。换句话说,PVA在半密集或常规密集计算上表现良好,即使在小数据集上也是如此,这些数据集需要低延迟和低功耗的可预测运行时间。因此,在自主车辆平台的背景下,PVA被设计为运行经典的计算机视觉算法,因为它们在目标检测和整数数学运算方面非常有效。
例如,根据本技术的一个实施例,PVA用于执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,尽管这不是为了限制。3-5级自主驾驶的许多应用需要即时运动估计/立体匹配(例如,运动结构、行人识别、车道检测等)。PVA可对来自两个单目相机的输入执行计算机立体视觉功能。
在一些示例中,PVA可用于执行密集光流。根据处理原始雷达数据(例如,使用4D快速傅里叶变换)提供处理后的雷达。在其他示例中,PVA用于飞行时间深度处理,例如,通过处理原始飞行时间数据来提供处理后的飞行时间数据。
DLA可用于运行任何类型的网络,以增强控制和驾驶安全性,例如,包括为每个目标检测输出置信度测量值的神经网络。这样的置信值可以解释为概率,或者提供每个检测相对于其他检测的相对“权重”。该置信值使***能够进一步决定哪些检测应被视为真阳性检测而不是假阳性检测。例如,***可以设置置信度的阈值,并且仅考虑超过阈值的检测作为真阳性检测。在自动紧急制动(AEB)***中,假阳性检测将导致车辆自动执行紧急制动,这显然是不希望的。因此,只有最可靠的检测才应被视为AEB的触发因素。DLA可以运行神经网络来回归置信值。神经网络可将至少一些参数子集作为其输入,例如边界框尺寸、获得的地平面估计(例如,从另一子***)、与车辆700方位、距离相关的惯性测量单元(IMU)传感器766输出,从神经网络和/或其他传感器(例如,激光雷达传感器764或雷达传感器760)等获得的对象的三维位置估计。
一个或更多个SoC 704可包括一个或更多个数据存储716(例如存储器)。数据存储716可以是SoC 704的片上存储器,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,数据存储716的容量可以足够大,以存储用于冗余和安全的多个神经网络实例。数据存储712可包括二级或三级高速缓存712。如本文所述,对一个或更多个数据存储716的引用可包括对与PVA、DLA和/或一个或更多个其他加速器714相关联的存储器的引用。
一个或更多个SoC 704可包括一个或更多个处理器710(例如嵌入式处理器)。处理器710可以包括引导和电源管理处理器,该处理器可以是专用处理器和子***,用于处理引导电源和管理功能以及相关安全实施。引导和电源管理处理器可以是一个或更多个SoC704引导序列的一部分,并且可以提供运行时电源管理服务。引导电源和管理处理器可提供时钟和电压编程、***低电源状态转换协助、SoC 704热传感器和温度传感器的管理和/或SoC 704电源状态的管理。每个温度传感器可实现为输出频率与温度成比例的环形振荡器,并且一个或更多个SoC 704可使用环形振荡器检测一个或更多个CPU 706、一个或更多个GPU 708和/或一个或更多个加速器714的温度。如果确定温度超过阈值,引导和电源管理处理器可进入温度故障例行程序,并将一个或更多个SoC 704置于低功率状态和/或将车辆700置于司机安全停车模式(例如,使车辆700安全停车)。
一个或更多个处理器710还可包括一组可作为音频处理引擎的嵌入式处理器。音频处理引擎可以是音频子***,该音频子***能够通过多个接口和广泛且灵活的音频I/O接口实现对多通道音频的完全硬件支持。在一些示例中,音频处理引擎是具有专用RAM的数字信号处理器的专用处理器核心。
一个或更多个处理器710还可包括常开处理器引擎,该引擎可提供必要的硬件功能,以支持低功耗传感器管理和唤醒用例。常开处理器引擎可以包括处理器核心、紧密耦合的RAM、支持***设备(例如定时器和中断控制器)、各种I/O控制器***设备和路由逻辑。
一个或更多个处理器710还可包括安全集群引擎,该引擎包括专用处理器子***,用于处理汽车应用的安全管理。安全集群引擎可以包括两个或更多个处理器核心、紧密耦合的RAM、支持***设备(例如定时器、中断控制器等)和/或路由逻辑。在安全模式下,两个或多个内核可在锁步模式下运行,并作为具有比较逻辑的单个内核运行,以检测其操作之间的任何差异。
一个或更多个处理器710还可包括实时相机引擎,该引擎可包括用于处理实时相机管理的专用处理器子***。
一个或更多个处理器710还可以包括高动态范围信号处理器,该处理器可以包括图像信号处理器,该图像信号处理器是作为相机处理管道一部分的硬件引擎。
一个或更多个处理器710可包括视频图像合成器,该视频图像合成器可为处理块(例如,在微处理器上实现),其实现视频回放应用程序所需的视频后处理功能,以生成播放器窗口的最终图像。视频图像合成器可在一个或更多个广角相机770、一个或更多个环绕相机774和/或驾驶舱内监控相机传感器上执行镜头失真校正。驾驶舱内监控相机传感器优选地由运行在高级SoC的另一实例上的神经网络监控,该神经网络被配置为识别舱内事件并相应地响应。驾驶舱内***可执行唇读,以激活蜂窝服务和拨打电话、口述电子邮件、更改车辆目的地、激活或更改车辆的信息娱乐***和设置,或提供语音激活的网络冲浪。某些功能仅在车辆以自动模式运行时才可供驾驶员使用,否则将禁用。
视频图像合成器可包括用于空间和时间降噪的增强的时间降噪。例如,在视频中发生运动的情况下,噪声降低适当地加权空间信息,从而减小由相邻帧提供的信息的权重。在图像或图像的一部分不包括运动的情况下,由视频图像合成器执行的时间噪声降低可以使用来自前一图像的信息来降低当前图像中的噪声。
视频图像合成器也可配置为对输入立体镜头帧执行立体校正。当操作***桌面正在使用时,视频图像合成器还可用于用户界面合成,并且不需要GPU 708连续渲染新表面。即使当一个或更多个GPU 708上电并且在进行3D渲染时处于活动状态,视频图像合成器也可用于卸载一个或更多个GPU 708以改进性能和响应性。
一个或更多个SoC 704还可包括用于接收来自相机的视频和输入的移动工业处理器接口(MIPI)相机串行接口、高速接口和/或可用于相机和相关像素输入功能的视频输入块。一个或更多个SoC 704还可以包括一个或更多个输入/输出控制器,其可以由软件控制,并且可以用于接收未指定特定角色的I/O信号。
一个或更多个SoC 704还可包括广泛的***接口,以实现与***设备、音频编解码器、电源管理和/或其他设备的通信。一个或更多个SoC 704可用于处理来自相机(例如,通过千兆多媒体串行链路和以太网连接)、传感器(例如,可通过以太网连接的一个或更多个激光雷达传感器764、一个或更多个雷达传感器760等)、来自总线702的数据(例如,车辆700的速度、方向盘位置等)、来自一个或更多个GNSS传感器758的数据(例如,通过以太网或CAN总线连接)。一个或更多个SoC 704还可以包括专用的高性能大容量存储控制器,该控制器可以包括其自己的DMA引擎,并且可以用于将一个或更多个CPU 706从常规数据管理任务中解放出来。
一个或更多个SoC 704可以是一个端到端平台,具有灵活的体系架构,跨越自动化水平3-5,从而提供一个全面的功能安全体系架构,该体系架构利用并有效利用计算机视觉和ADAS技术实现多样性和冗余,为灵活可靠的驱动软件堆栈以及深度学***台。与传统***相比,一个或更多个SoC704可以更快、更可靠、甚至更节能和节省空间。例如,当一个或更多个加速器714与一个或更多个CPU 706、一个或更多个GPU 708和一个或更多个数据存储716组合时,可为3-5级自主车辆提供快速、高效的平台。
因此,该技术提供了传统***无法实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,CPU可以使用高级编程语言(例如C编程语言)来配置,以在各种各样的视觉数据上执行各种各样的处理算法。然而,CPU通常无法满足许多计算机视觉应用程序的性能要求,例如与执行时间和功耗相关的应用程序。特别是,许多CPU无法实时执行复杂的目标检测算法,这是车载ADAS应用的要求,也是实际3-5级自主车辆的要求。
与传统***相比,通过提供CPU复合体、GPU复合体和硬件加速集群,本文描述的技术允许同时和/或顺序执行多个神经网络,并允许将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如,一个或更多个GPU 720)上执行的CNN可以包括文本和字识别,从而允许超级计算机读取和理解交通标志,包括神经网络尚未针对其专门训练的标志。DLA还可以包括能够识别、解释和提供符号的语义理解的神经网络,并将该语义理解传递给CPU复合体上运行的路径规划模块。
另一个例子是,可以同时运行多个神经网络,如3级、4级或5级驾驶所需。例如,由“警告:闪烁的灯光指示结冰情况”和电灯组成的警告标志可以由多个神经网络独立或共同解释。标志本身可通过第一个部署的神经网络(例如,经过训练的神经网络)识别为交通标志,文本“闪光灯指示结冰条件”可由第二个部署的神经网络解释,当检测到闪光灯时,通知车辆路径规划软件(优选地在CPU复合体上执行)存在结冰情况。可通过在多个帧上操作第三个部署的神经网络来识别闪光灯,通知车辆路径规划软件是否存在闪光灯。所有三个神经网络可同时运行,例如在DLA内和/或在一个或更多个GPU 708上。
在一些示例中,用于面部识别和车主识别的CNN可使用相机传感器的数据来识别经授权的驾驶员和/或车辆700的所有者的存在。当所有者靠近驾驶员车门并打开车灯时,可使用常开传感器处理引擎解锁车辆,以及,在安全模式下,当所有者离开车辆时禁用车辆。通过这种方式,一个或更多个SoC 704提供了防盗和/或劫车保护。
在另一个示例中,用于紧急车辆检测和识别的CNN可使用来自麦克风796的数据来检测和识别紧急车辆警报器。与使用通用分类器检测警报器和手动提取特征的传统***不同,一个或更多个SoC704使用CNN对环境和城市声音进行分类,以及对视觉数据进行分类。在优选实施例中,对DLA上运行的CNN进行训练以识别紧急车辆的相对关闭速度(例如,通过使用多普勒效应)。CNN还可接受训练,以识别特定于车辆运行区域的应急车辆,如一个或更多个GNSS传感器758所识别。因此,例如,当在欧洲运行时,CNN将寻求检测欧洲警报,当在美国时,CNN将寻求仅识别北美警报。一旦检测到紧急车辆,可使用控制程序在超声波传感器762的帮助下执行紧急车辆安全例行程序,使车辆减速、靠边停车、停车和/或使车辆怠速,直到一个或更多个紧急车辆通过。
车辆可包括一个或更多个CPU 718(例如,一个或更多个离散CPU或一个或更多个dCPU),其可通过高速互连(例如PCIE)耦合至一个或更多个SoC 704。例如,一个或更多个CPU 718可以包括X86处理器。CPU 718可用于执行各种功能中的任何一种,包括仲裁ADAS传感器和SoC 704之间可能不一致的结果,和/或监测一个或更多个控制器736和/或信息娱乐SoC 730的状态和健康状况。
车辆700可包括一个或更多个GPU 720(例如,一个或更多个离散GPU或一个或更多个dGPU),其可通过高速互连(例如,NVIDIA的NVLINK)耦合至SoC 704。一个或更多个GPU720可以提供额外的人工智能功能,例如通过执行冗余和/或不同的神经网络,并且可以用于基于来自车辆700的传感器的输入(例如,传感器数据)训练和/或更新神经网络。
车辆700还可以包括网络接口724,网络接口724可以包括一个或更多个无线天线726(例如,用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等)。网络接口724可用于通过互联网实现与云(例如,与一个或更多个服务器778和/或其他网络设备)、与其他车辆和/或与计算设备(例如,乘客的客户端设备)的无线连接。为了与其他车辆通信,可在两辆车辆之间建立直接链路和/或建立间接链路(例如,通过网络和互联网)。可使用车对车通信链路提供直接链路。车辆到车辆通信链路可向车辆700提供关于车辆700附近车辆的信息(例如,车辆700前面、侧面和/或后面的车辆)。该功能可能是车辆700的协作自适应巡航控制功能的一部分。
网络接口724可包括提供调制和解调功能并使一个或更多个控制器736能够通过无线网络通信的SoC。网络接口724可以包括用于从基带到射频的上转换和从射频到基带的下转换的射频前端。频率转换可以通过众所周知的过程来执行,和/或可以使用超外差过程来执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN和/或其他无线协议进行通信的无线功能。
车辆700可进一步包括一个或更多个数据存储728,其可包括片外(例如,SoC外)。数据存储728可包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可存储至少一位数据的其他组件和/或设备。
车辆700还可包括一个或更多个GNSS传感器758。一个或更多个GNSS传感器758(例如,GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于协助测绘、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器758,包括例如但不限于使用具有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆700还可包括一个或更多个雷达传感器760。即使在黑暗和/或恶劣天气条件下,车辆700也可使用一个或更多个雷达传感器760进行远程车辆检测。雷达功能安全等级可以为ASIL B。一个或更多个雷达传感器760可以使用CAN和/或总线702(例如,传输由一个或更多个雷达传感器760生成的数据)进行控制和访问目标跟踪数据,在一些示例中,通过访问以太网访问原始数据。可使用多种雷达传感器类型。例如,但不限于,一个或更多个雷达传感器760可适用于前、后和侧面雷达使用。在一些示例中,使用脉冲多普勒雷达传感器。
一个或更多个雷达传感器760可包括不同的配置,例如窄视场的远程、宽视场的短程、短距离侧面覆盖等。在一些示例中,远程雷达可用于自适应巡航控制功能。远程雷达***可提供通过两次或两次以上独立扫描实现的广阔视野,例如在250米范围内。一个或更多个雷达传感器760可帮助区分静态和移动对象,并可由ADAS***用于紧急制动辅助和前向碰撞警告。远程雷达传感器可能包括具有多个(例如,六个或更多)固定雷达天线和高速CAN和FlexRay接口的单基地多模雷达。在具有六个天线的示例中,中央四个天线可创建聚焦波束图案,设计用于以较高速度记录车辆周围的700个环境,且相邻车道的交通干扰最小。另外两个天线可以扩大视野,使其能够快速检测进入或离开车辆700车道的车辆。
例如,中程雷达***可包括高达760米(前)或80米(后)的范围,以及高达42度(前)或750度(后)的视野。短程雷达***可能包括但不限于设计安装在后保险杠两端的雷达传感器。当安装在后保险杠两端时,此类雷达传感器***可能会产生两束光束,持续监测车辆后部和旁边的盲点。
ADAS***中可使用近程雷达***进行盲点检测和/或车道变换辅助。
车辆700还可包括一个或更多个超声波传感器762。一个或更多个超声波传感器762可位于车辆700的前部、后部和/或侧面,可用于泊车辅助和/或创建和更新占用网格。可使用多种超声波传感器762,不同的超声波传感器762可用于不同的检测范围(例如,2.5m、4m)。一个或更多个超声波传感器762可在ASIL B的功能安全水平下工作。
车辆700可包括一个或更多个激光雷达传感器764。一个或更多个激光雷达传感器764可用于对象和行人检测、紧急制动、防撞和/或其他功能。一个或更多个激光雷达传感器764的功能安全等级可以为ASIL B。在一些示例中,车辆700可包括可使用以太网(例如,向千兆以太网交换机提供数据)的多个激光雷达传感器764(例如,两个、四个、六个等)。
在一些示例中,一个或更多个激光雷达传感器764可以能够提供360度视野中的对象及其距离列表。一个或更多个商用激光雷达传感器764的广告范围约为700m,准确度为2cm-3cm,并支持例如700Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的激光雷达传感器764。在此类示例中,一个或更多个激光雷达传感器764可作为小型设备实施,该小型设备可嵌入车辆700的前部、后部、侧面和/或角落。在此类示例中,一个或更多个激光雷达传感器764可提供高达120度的水平和35度的垂直视野,即使对于低反射率对象,其范围也为200m。前安装的一个或更多个激光雷达传感器764可配置为45度到135度之间的水平视野。
在一些示例中,也可以使用激光雷达技术,如3D闪光激光雷达。3D闪光激光雷达使用激光闪光作为传输源,照亮车辆周围约200米。闪光激光雷达装置包括一个接收器,该接收器记录激光脉冲传输时间和每个像素上的反射光,而每个像素又对应于从车辆到对象的范围。闪光激光雷达可以利用每一次激光闪光生成高准确度、无失真的环境图像。在一些示例中,可部署四个闪光激光雷达传感器,一个位于车辆700的每侧。可用的3D闪光激光雷达***包括固态3D凝视阵列激光雷达相机,除风扇(例如,非扫描激光雷达设备)外,无任何运动部件。闪光激光雷达设备每帧可使用5纳秒I类(眼睛安全)激光脉冲,并可捕获3D距离点云和共同寄存的强度数据形式的反射激光。通过使用闪光激光雷达,并且因为闪光激光雷达是没有运动部件的固态设备,所以一个或更多个激光雷达传感器764可以不易受到运动模糊、振动和/或冲击的影响。
车辆可能还包括一个或更多个IMU传感器766。在一些示例中,一个或更多个IMU传感器766可位于车辆700后轴的中心。一个或更多个IMU传感器766可以包括例如但不限于一个或更多个加速计、一个或更多个磁强计、一个或更多个陀螺仪、一个或更多个磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,一个或更多个IMU传感器766可包括加速计和陀螺仪,而在九轴应用中,一个或更多个IMU传感器766可包括加速计、陀螺仪和磁强计。
在一些实施例中,一个或更多个IMU传感器766可实现为微型、高性能GPS辅助惯性导航***(GPS/INS),该***结合了微电子机械***(MEMS)惯性传感器、高灵敏度GPS接收机和先进的卡尔曼滤波算法,以提供位置、速度、姿态的估计。因此,在一些示例中,一个或更多个IMU传感器766可通过直接观察和关联从GPS到一个或更多个IMU传感器766的速度变化,使车辆700能够估计航向,而无需来自磁性传感器的输入。在一些示例中,一个或更多个IMU传感器766和一个或更多个GNSS传感器758可组合在单个集成单元中。
车辆可能包括放置在车辆700内和/或周围的一个或更多个麦克风796。一个或更多个麦克风796可用于紧急车辆检测和识别等。
车辆还可包括任意数量的相机类型,包括一个或更多个立体相机768、一个或更多个广角相机770、一个或更多个红外相机772、一个或更多个环绕相机774、一个或更多个远程和/或中程相机798和/或其他相机类型。相机可用于捕获车辆700整个***的图像数据。使用的相机类型取决于车辆700的实施例和要求,相机类型的任何组合可用于提供车辆700周围的必要覆盖范围。此外,根据实施例,相机的数量可以不同。例如,车辆可包括六个相机、七个相机、十个相机、十二个相机和/或其他数量的相机。作为示例,相机可支持但不限于千兆多媒体串行链路(GMSL)和/或千兆以太网。本文将参照图7A和图7B更详细地描述每个照相机。
车辆700还可包括一个或更多个振动传感器742。一个或更多个振动传感器742可测量车辆部件(如车轴)的振动。例如,振动的变化可能表明路面的变化。在另一个示例中,当使用两个或多个振动传感器742时,振动之间的差异可用于确定路面的摩擦或滑动(例如,当振动差异在动力驱动轴和自由旋转轴之间时)。
车辆700可包括ADAS***738。在一些示例中,ADAS***738可包括SoC。ADAS***738可包括自动/自适应/自动巡航控制(ACC)、协同自适应巡航控制(CACC)、前向碰撞警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后交叉交通警告(RCTW)、碰撞警告***(CWS),车道对中(LC)和/或其他特征和功能。
ACC***可使用一个或更多个雷达传感器760、一个或更多个激光雷达传感器764和/或一个或更多个相机。ACC***可包括纵向ACC和/或横向ACC。纵向ACC监测和控制与车辆700正前方车辆的距离,并自动调整车速,以保持与前方车辆的安全距离。横向ACC执行距离保持,并建议车辆700在必要时改变车道。侧向ACC与其他ADAS应用相关,如LCA和CWS。
CACC使用来自其他车辆的信息,这些信息可通过网络接口724和/或一个或更多个无线天线726,通过无线链路,或通过网络连接(例如,通过互联网)间接从其他车辆接收。直接链路可以由车辆到车辆(V2V)通信链路提供,而间接链路可以是基础设施到车辆(I2V)通信链路。一般来说,V2V通信概念提供了关于前面车辆的信息(例如,车辆700正前方和同一车道上的车辆),而I2V通信概念提供了关于前方交通的信息。CACC***可包括I2V和V2V信息源之一或两者。考虑到车辆700前方的车辆信息,CACC可能更可靠,并且有可能改善交通流的平稳性并减少道路上的拥堵。
FCW***被设计为提醒驾驶员注意危险,以便驾驶员采取纠正措施。FCW***使用耦合到专用处理器、DSP、FPGA和/或ASIC的前向摄像头和/或一个或更多个雷达传感器760,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。FCW***可提供警告,例如声音、视觉警告、振动和/或快速制动脉冲。
AEB***检测到与其他车辆或其他对象即将发生的前向碰撞,如果驾驶员未在规定的时间或距离参数内采取纠正措施,AEB***可能会自动应用制动器。AEB***可使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个前置相机和/或一个或更多个雷达传感器760。当AEB***检测到危险时,通常首先提醒驾驶员采取纠正措施以避免碰撞,如果驾驶员未采取纠正措施,AEB***可自动应用制动器以防止或至少减轻预计碰撞的影响。AEB***可包括动态制动支撑和/或碰撞迫近制动等技术。
LDW***提供视觉、听觉和/或触觉警告,如方向盘或座椅振动,以在车辆700穿过车道标记时提醒驾驶员。当驾驶员通过激活转向信号指示有意偏离车道时,LDW***不会激活。LDW***可使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
LKA***是LDW***的一种变体。如果车辆700开始驶出车道,LKA***提供转向输入或制动以纠正车辆700。
BSW***检测并警告汽车盲点内的车辆驾驶员。BSW***可提供视觉、听觉和/或触觉警报,以指示合流或变道不安全。当驾驶员使用转向信号时,***可能会提供附加警告。BSW***可使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或雷达传感器760,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
当车辆700倒车时检测到后摄像头范围外的对象时,RCTW***可提供视觉、听觉和/或触觉通知。一些RCTW***包括AEB,以确保应用车辆制动器以避免碰撞。RCTW***可以使用一个或更多个一个或更多个后向雷达传感器760,该传感器耦合到专用处理器、DSP、FPGA和/或ASIC,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
传统的ADAS***可能容易出现假阳性结果,这可能会使驾驶员感到恼火和分心,但通常不会造成灾难性后果,因为ADAS***会提醒驾驶员,并允许驾驶员决定是否确实存在安全状况,并采取相应的行动。然而,在自主式车辆700中,在结果冲突的情况下,车辆700自身必须决定是听取来自主计算机还是辅助计算机(例如,第一控制器736或第二控制器736)的结果。例如,在一些实施例中,ADAS***738可以是用于向备份计算机模块提供感知信息的备份和/或辅助计算机。备用计算机合理性监视器可以在硬件组件上运行冗余的不同软件,以检测感知和动态驾驶任务中的故障。来自ADAS***738的输出可以提供给监控MCU。如果主计算机和辅助计算机的输出冲突,监控MCU必须确定如何协调冲突,以确保安全运行。
在一些示例中,主计算机可配置为向监控MCU提供置信分数,指示主计算机对所选结果的置信度。如果置信度得分超过阈值,则监控MCU可遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。如果置信度得分不符合阈值,并且主计算机和辅助计算机指示不同的结果(例如,冲突),则监控MCU可以在计算机之间进行仲裁,以确定适当的结果。
监控MCU可配置为运行经过训练和配置的一个或更多个神经网络,以根据主计算机和辅助计算机的输出确定辅助计算机提供假警报的条件。因此,监控MCU中的一个或更多个神经网络可以学习辅助计算机的输出何时可信,何时不可信。例如,当辅助计算机是基于雷达的FCW***时,监控MCU中的一个或更多个神经网络可以学习FCW***何时识别事实上不是危险的金属对象,例如触发警报的排水格栅或人孔盖。类似地,当辅助计算机是基于相机的LDW***时,监控MCU中的神经网络可以学习在自行车或行人在场且车道偏离实际上是最安全的操纵时覆盖LDW。在包括在监控MCU上运行的一个或更多个神经网络的实施例中,监控MCU可包括适于运行具有相关联的存储器的一个或更多个神经网络的DLA或GPU中的至少一个。在优选实施例中,监控MCU可包括和/或包括为SoC704的组件。
在其他示例中,ADAS***738可包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。因此,辅助计算机可以使用经典的计算机视觉规则(if-then),并且在监控MCU中存在一个或更多个神经网络可以提高可靠性、安全性和性能。例如,多样化的实现和有意的非标识使整个***更具容错性,特别是对由软件(或软硬件接口)功能引起的故障。例如,如果在主计算机上运行的软件中存在软件缺陷或错误,并且在辅助计算机上运行的不相同的软件代码提供相同的总体结果,则监控MCU可对总体结果的正确性有更大的信心,主计算机上的软件或硬件缺陷并没有导致重大错误。
在一些示例中,ADAS***738的输出可馈入主计算机的感知块和/或主计算机的动态驱动任务块。例如,如果ADAS***738指示由于正前方对象引起的前向碰撞警告,则感知块可在识别对象时使用该信息。在其他示例中,如本文所述,二级计算机可以具有其自己的经过训练的神经网络,从而降低假阳性的风险。
车辆700还可包括信息娱乐SoC 730(例如,车内信息娱乐***(IVI))。尽管示出并描述为SoC,但信息娱乐***可以不是SoC,并且可以包括两个或多个分立组件。信息娱乐SoC 730可包括可用于提供音频(例如,音乐、个人数字助理、导航指令、新闻、无线电等)、视频(例如,电视、电影、流媒体等)、电话(例如,免提通话)、网络连接(例如,LTE、Wi-Fi等)的硬件和软件的组合,和/或向车辆700提供信息服务(例如,导航***、后驻车辅助、无线电数据***、车辆相关信息,如燃油油位、行驶总距离、制动燃油油位、机油油位、车门打开/关闭、空气滤清器信息等)。例如,信息娱乐SoC 730可以是收音机、磁盘播放器,导航***、视频播放器、USB和蓝牙连接、车载电脑、车内娱乐、Wi-Fi、方向盘音频控制、免提语音控制、抬头显示器(HUD)、HMI显示器734、远程通信设备、控制面板(例如,用于控制和/或与各种组件、特征和/或***交互),和/或其他组件。信息娱乐SoC 730还可用于向车辆用户提供信息(例如,视觉和/或听觉),例如来自ADAS***738的信息、自主驾驶信息,例如计划车辆机动、轨迹、周围环境信息(例如,交叉口信息、车辆信息,道路信息等)和/或其他信息。
信息娱乐SoC 730可包括GPU功能。信息娱乐SoC 730可通过总线702(例如,CAN总线、以太网等)与车辆700的其他设备、***和/或部件进行通信。在一些示例中,信息娱乐SoC 730可以耦合到监控MCU,使得信息娱乐***的GPU可以在一个或更多个主控制器736(例如,车辆700的主计算机和/或备用计算机)发生故障的情况下执行一些自驱动功能。在这样的示例中,信息娱乐SoC 730可将车辆700置于司机至安全停车模式,如本文所述。
车辆700还可包括仪表组732(例如,数字仪表板、电子仪表组、数字仪表板等)。仪表组732可包括控制器和/或超级计算机(例如,离散控制器或超级计算机)。仪表组732可包括一组仪表,如车速表、燃油油位、机油压力、转速表、里程表、转向指示灯、换档位置指示灯、一个或更多个安全带警告灯、一个或更多个驻车制动警告灯、一个或更多个发动机故障灯、安全气囊(SRS)***信息、照明控制、安全***控制、,导航信息等。在一些示例中,信息可在信息娱乐SoC 730和仪表组732之间显示和/或共享。换句话说,仪表组732可作为信息娱乐SoC 730的一部分包括在内,反之亦然。
图7D是根据本公开的一些实施例的一个或更多个基于云的服务器与图7A的示例性自主车辆700之间通信的***图。***776可包括一个或更多个服务器778、一个或更多个网络790和车辆,包括车辆700。一个或更多个服务器778可包括多个GPU 784(a)-784(H)(统称为GPU 784)、PCIe交换机782(a)-782(H)(统称为PCIe交换机782),和/或CPU 780(A)-780(B)(本文统称为CPU 780)。GPU 784、CPU 780和PCIe交换机可通过高速互连互连,例如但不限于NVIDIA开发的NVLink接口788和/或PCIE连接786。在一些示例中,GPU 784通过NVLink和/或NV交换机SoC连接,GPU 784和PCIe交换机782通过PCIe互连连接。尽管图示了八个GPU784、两个CPU 780和两个PCIe交换机,但这并不是为了限制。根据实施例,一个或更多个服务器778中的每一个可以包括任意数量的GPU 784、CPU 780和/或PCIe交换机。例如,一个或更多个服务器778可各自包括八个、十六个、三十二个和/或更多gpu 784。
一个或更多个服务器778可通过一个或更多个网络790从车辆接收代表图像的图像数据,该图像显示意外或变化的路况,例如最近开始的道路作业。一个或更多个服务器778可以通过一个或更多个网络790向车辆发送神经网络792、更新的神经网络792和/或地图信息794,包括关于交通和路况的信息。对地图信息794的更新可以包括对HD地图722的更新,例如关于建筑场地、坑洞、绕道、洪水和/或其他障碍物的信息。在一些示例中,神经网络792、更新后的神经网络792和/或地图信息794可源于从环境中的任意数量的车辆接收的数据中表示的新的训练和/或经验,和/或基于在数据中心执行的训练(例如,使用一个或更多个服务器778和/或其他服务器)。
一个或更多个服务器778可用于基于训练数据训练机器学习模型(例如,神经网络)。训练数据可由车辆生成,和/或可在模拟中生成(例如,使用游戏引擎)。在一些示例中,训练数据被标记(例如,神经网络受益于监督学习)和/或经历其他预处理,而在其他示例中,训练数据未被标记和/或预处理(例如,神经网络不需要监督学习)。训练可根据任何一类或更多类机器学习技术执行,包括但不限于:监督训练、半监督训练、无监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主成分和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测以及任何变体或组合。一旦机器学习模型被训练,机器学习模型可被车辆使用(例如,通过一个或更多个网络传输到车辆790,和/或机器学习模型可被一个或更多个服务器778用于远程监控车辆)。
在一些示例中,一个或更多个服务器778可以从车辆接收数据,并将数据应用到最新的实时神经网络,以进行实时智能推理。一个或更多个服务器778可包括深度学习超级计算机和/或由GPU 784供电的专用AI计算机,例如由NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,一个或更多个服务器778可包括仅使用CPU供电的数据中心的深度学习基础设施。
一个或更多个服务器778的深度学习基础设施可以快速实时推理,并可以使用该能力评估和查证车辆700中处理器、软件和/或相关联的硬件的健康状况。例如,深度学习基础设施可以从车辆700接收定期更新,例如,车辆700在该图像序列中定位的图像和/或对象序列(例如,通过计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可运行其自身的神经网络来识别对象,并将其与车辆700识别的对象进行比较,如果结果不匹配且基础设施得出结论,车辆700中的AI出现故障,一个或更多个服务器778可向车辆700发送信号,指示车辆700的故障安全计算机承担控制、通知乘客并完成安全停车操作。
对于推理,一个或更多个服务器778可包括一个或更多个GPU 784和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的结合可能使实时响应成为可能。在其他示例中,例如性能不太关键的地方,可以使用由CPU、FPGA和其他处理器供电的服务器进行推断。
示例计算设备
图8是适用于实施本公开的一些实施例的示例计算设备800的框图。计算设备800可包括直接或间接耦合以下设备的互连***802:存储器804、一个或更多个中央处理单元(CPU)806、一个或更多个图形处理单元(GPU)808、通信接口810、输入/输出(I/O)端口812、输入/输出组件814、电源816、一个或更多个呈现组件818(例如,显示器)和一个或更多个逻辑单元820。在至少一个实施例中,一个或更多个计算设备800可包括一个或更多个虚拟机(VM),和/或其任何组件可包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,一个或更多个GPU 808可以包括一个或更多个vGPU,一个或更多个CPU806可以包括一个或更多个vCPU,和/或一个或更多个逻辑单元820可以包括一个或更多个虚拟逻辑单元。因此,一个或更多个计算设备800可包括离散组件(例如,专用于计算设备800的完整GPU)、虚拟组件(例如,专用于计算设备800的GPU的一部分)或其组合。
尽管图8中的各个模块显示为通过互连***802与线路连接,但这并非旨在限制,仅为清楚起见。例如,在一些实施例中,诸如显示设备的呈现组件818可以被视为I/O组件814(例如,如果显示器是触摸屏)。作为另一示例,CPU 806和/或GPU 808可以包括存储器(例如,除了GPU 808、CPU806和/或其他组件的存储器之外,存储器804还可以代表存储设备)。换句话说,图8的计算设备仅仅是说明性的。不区分“工作站”、“服务器”、“笔记本电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实***”和/或其他设备或***类型,正如在图8的计算设备的范围内所设想的那样。
互连***802可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。互连***802可包括一个或更多个总线或链路类型,例如工业标准体系结构(ISA)总线、扩展工业标准体系结构(EISA)总线、视频电子标准协会(VESA)总线、***组件互连(PCI)总线、***组件互连直通(PCIE)总线,和/或其他类型的总线或链路。在一些实施例中,组件之间存在直接连接。例如,CPU 806可以直接连接到存储器804。此外,CPU 806可以直接连接到GPU 808。在组件之间存在直接连接或点对点连接的情况下,互连***802可以包括用于执行连接的PCIe链路。在这些示例中,计算设备800中不需要包括PCI总线。
存储器804可包括各种计算机可读介质中的任何一种。计算机可读介质可以是可由计算设备800访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或以任何方法或技术实现的可移除和不可移除介质,用于存储信息,例如计算机可读指令、数据结构、程序模块和/或其他数据类型。例如,存储器804可以存储计算机可读指令(例如,表示一个或更多个程序和/或一个或更多个程序元素的指令),例如操作***。计算机存储介质可包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能磁盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备,或可用于存储所需信息且可由计算设备800访问的任何其他介质。如本文所使用的,计算机存储介质本身不包括信号。
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或包含在调制数据信号(例如载波或其他传输机制)中的其他数据类型,并包括任何信息传递介质。术语“调制数据信号”可指以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可以包括有线介质,例如有线网络或直接有线连接,以及无线介质,例如声学、RF、红外和其他无线介质。上述任何组合也应包括在计算机可读介质的范围内。
一个或更多个CPU 806可被配置为执行至少一些计算机可读指令,以控制计算设备800的一个或更多个组件,以执行本文所述的一个或更多个方法和/或过程。一个或更多个CPU 806可各自包括一个或更多个能够同时处理多个软件线程的核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。一个或更多个CPU 806可以包括任何类型的处理器,并且可以根据所实现的计算设备800的类型包括不同类型的处理器(例如,对于移动设备具有较少内核的处理器和对于服务器具有较多内核的处理器)。例如,根据计算设备800的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(例如数学协处理器)之外,计算设备800还可以包括一个或更多个cpu 806。
除了一个或更多个CPU 806之外,或者从一个或更多个CPU 806选择,一个或更多个GPU 808可以被配置为执行至少一些计算机可读指令,以控制计算设备800的一个或更多个组件来执行本文所述的一个或更多个方法和/或过程。一个或更多个GPU 808可以是集成GPU(例如,具有一个或更多个CPU 806和/或一个或更多个GPU 808可以是离散GPU)。在实施例中,一个或更多个GPU 808可以是一个或更多个CPU 806的协处理器。计算设备800可以使用一个或更多个GPU 808来渲染图形(例如,3D图形)或执行通用计算。例如,一个或更多个GPU 808可用于GPU(GPGPU)上的通用计算。一个或更多个GPU 808可以包括数百个或数千个内核,这些内核能够同时处理数百个或数千个软件线程。一个或更多个GPU 808可响应于渲染命令(例如,经由主机接口接收的来自一个或更多个CPU 806的渲染命令)生成用于输出图像的像素数据。一个或更多个GPU 808可以包括图形存储器,例如显示器存储器,用于存储像素数据或任何其他合适的数据,例如GPGPU数据。显示器存储器可以包括作为存储器804的一部分。一个或更多个GPU 808可以包括两个或更多个并行操作的GPU(例如,通过链路)。链路可直接连接GPU(例如,使用NVLINK)或通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每个GPU 808可为输出的不同部分或不同输出(例如,第一GPU用于第一图像,第二GPU用于第二图像)生成像素数据或GPGPU数据。每个GPU可以包括自己的内存,也可以与其他GPU共享内存。
除了一个或更多个CPU 806和/或一个或更多个GPU 808之外,或者从一个或更多个CPU 806和/或一个或更多个GPU 808选择,一个或更多个逻辑单元820可以被配置为执行至少一些计算机可读指令,以控制计算设备800的一个或更多个组件执行本文所述的一个或更多个方法和/或过程。在实施例中,一个或更多个CPU 806、一个或更多个GPU 808和/或一个或更多个逻辑单元820可以离散地或联合地执行方法、过程和/或其部分的任意组合。逻辑单元820中的一个或更多个可以是CPU 806和/或GPU 808中的一个或更多个的一部分和/或集成在其中,和/或逻辑单元820中的一个或更多个可以是分立组件,或以其他方式位于一个或更多个CPU 806和/或一个或更多个GPU 808外部,一个或更多个逻辑单元820可以是一个或更多个CPU 806和/或一个或更多个GPU 808的协处理器。
一个或更多个逻辑单元820的示例包括一个或更多个处理核心和/或其组件,例如数据处理单元(DPU)、张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM),树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、***组件互连(PCI)或***组件互连直通(PCIe)元件,和/或诸如此类。
通信接口810可以包括一个或更多个接收器、发射器和/或收发器,这些接收器、发射器和/或收发器使计算设备800能够通过包括有线和/或无线通信的电子通信网络与其他计算设备通信。通信接口810可以包括组件和功能,以支持通过多个不同网络中的任何一个进行通信,例如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或InfiniBand进行通信)、低功耗广域网(例如,LoRaWAN、SigFox,等)和/或互联网。在一个或更多个实施例中,逻辑单元820和/或通信接口810可以包括一个或更多个数据处理单元(DPU)以将通过网络和/或通过互连***802接收的数据直接传输到一个或更多个GPU 808(例如,存储器)。
I/O端口812可使计算设备800与其他设备逻辑耦合,包括I/O组件814、一个或更多个呈现组件818和/或其他组件,其中一些组件可内置(例如,集成在)计算设备800中。说明性I/O组件814包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、卫星天线、扫描仪、打印机、无线设备等。I/O组件814可以提供自然用户界面(NUI),该自然用户界面处理由用户生成的空中手势、语音或其他生理输入。在一些情况下,可以将输入传输到适当的网络元件以进行进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪的任意组合,以及与计算设备800的显示器相关联的触摸识别(如下更详细地描述)。计算设备800可以包括深度相机,例如立体相机***、红外相机***、RGB相机***、触摸屏技术,以及这些的组合,用于手势检测和识别。此外,计算设备800可包括能够检测运动的加速计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分)。在一些示例中,加速度计或陀螺仪的输出可由计算设备800用于渲染沉浸式增强现实或虚拟现实。
电源816可包括硬接线电源、电池电源或其组合。电源816可以向计算设备800供电,以使计算设备800的组件能够工作。
一个或更多个呈现组件818可包括显示器(例如显示器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示类型或其组合)、扬声器和/或其他演示组件。一个或更多个呈现组件818可以从其他组件(例如,一个或更多个GPU 808、一个或更多个CPU 806、DPU等)接收数据,并输出数据(例如,作为图像、视频、声音等)。
示例数据中心
图9示出了可在本公开的至少一个实施例中使用的示例数据中心900。数据中心900可以包括数据中心基础设施层910、框架层920、软件层930和/或应用层940。
如图9所示,数据中心基础设施层910可包括资源协调器912、分组计算资源914和节点计算资源(“节点C.R.s”)916(1)-916(N),其中“N”表示任何整数。在至少一个实施例中,节点C.R.s 916(1)-916(N)可包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等)、存储设备(例如,动态只读存储器),在一些实施例中,贮存设备(例如固态或磁盘驱动器)、网络输入/输出(“NW I/O”)设备、网络交换机、虚拟机(“VM”)、电源模块和/或冷却模块等,节点C.R.s 916(1)-916(N)中的一个或更多个节点C.R.s可对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点C.R.s 916(1)-9161(N)可以包括一个或更多个虚拟组件,例如vGPU、vCPU和/或类似组件,和/或节点C.R.s 916(1)-916(N)中的一个或更多个可以对应于虚拟机(VM)。
在至少一个实施例中,分组计算资源914可包括位于一个或更多个机架(未示出)内的节点C.R.s 916的单独分组,或位于不同地理位置(也未示出)的数据中心内的多个机架。分组计算资源914内的节点C.R.s 916的单独分组可包括分组计算、网络、内存或存储资源,其可被配置或分配以支持一个或更多个工作负载。在至少一个实施例中,包括CPU、GPU、DPU和/或其他处理器的多个节点C.R.s 916可分组在一个或更多个机架内,以提供计算资源以支持一个或更多个工作负载。一个或更多个机架还可以包括任意组合的任意数量的电源模块、冷却模块和/或网络交换机。
资源协调器922可配置或以其他方式控制一个或更多个节点C.R.s 916(1)-916(N)和/或分组计算资源914。在至少一个实施例中,资源协调器922可包括用于数据中心900的软件设计基础设施(“SDI”)管理实体。资源协调器922可包括硬件、软件或其一些组合。
在至少一个实施例中,如图9所示,框架层920可包括作业调度器932、配置管理器934、资源管理器936,和/或分布式文件***938。框架层920可包括支持软件层930的软件932和/或应用层940的一个或更多个应用942的框架。软件932或一个或更多个应用942可分别包括基于网页的服务软件或应用,例如亚马逊网络服务、谷歌云和微软Azure提供的服务。框架层920可以是,但不限于,一种自由的开源软件网页应用框架,例如Apache SparkTM(以下简称“Spark”),它可以利用分布式文件***938进行大规模数据处理(例如,“大数据”)。在至少一个实施例中,作业调度器932可以包括Spark驱动器,以促进数据中心900的各个层所支持的工作负载的调度。配置管理器934可以配置不同的层,例如软件层930和框架层920,包括Spark和分布式文件***938,以支持大规模数据处理。资源管理器936可以能够管理映射到或分配用于支持分布式文件***938和作业调度器932的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可包括数据中心基础设施层910处的分组计算资源914。资源管理器936可与资源协调器912协调以管理这些映射或分配的计算资源。
在至少一个实施例中,包括在软件层930中的软件932可包括由节点C.R.s 916(1)-916(N)、分组计算资源914和/或框架层920的分布式文件***938的至少部分使用的软件。一种或多种软件可包括但不限于互联网网页搜索软件,电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
在至少一个实施例中,包括在应用层940中的应用942可以包括由节点C.R.s 916(1)-916(N)、分组计算资源914和/或框架层920的分布式文件***938的至少部分使用的一种或多种类型的应用,但不限于任何数量的基因组学应用、感知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
在至少一个实施例中,配置管理器934、资源管理器936和资源协调器912中的任何一个都可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实施任何数量和类型的自修改动作。自修改动作可使数据中心900的数据中心操作员免于做出可能错误的配置决策,并可能避免数据中心未充分利用和/或性能不佳的部分。
根据本文所述的一个或更多个实施例,数据中心900可包括用于训练一个或更多个机器学习模型或使用一个或更多个机器学习模型预测或推理信息的工具、服务、软件或其他资源。例如,一个或更多个机器学习模型可通过使用上述关于数据中心900的软件和/或计算资源,根据神经网络架构计算权重参数来训练。在至少一个实施例中,与一个或更多个神经网络相对应的经过训练或部署的机器学习模型可用于通过使用通过一个或更多个训练技术(例如但不限于本文所述的训练技术)计算的权重参数,使用上述关于数据中心900的资源来推理或预测信息。
在至少一个实施例中,数据中心900可以使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或相应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上述一个或更多个软件和/或硬件资源可配置为服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适用于实施本发明实施例的网络环境可包括一个或更多个客户端设备、服务器、网络附接存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图8的一个或更多个计算设备800的一个或更多个实例上实现——例如,每个设备可以包括计算设备800的类似组件、特征和/或功能。另外,后端设备(服务器,NAS等)可被包括为数据中心900的一部分,其示例在本文中参照图9更详细地描述。
网络环境的组件可通过有线、无线或两者兼有的一个或更多个网络相互通信。该网络可以包括多个网络,或者网络的网络。举例来说,该网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络(例如互联网和/或公共交换电话网(PSTN))和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点的组件(以及其他组件)可以提供无线连接。
兼容的网络环境可能包括一个或更多个对等网络环境——在这种情况下,服务器可能不包括在网络环境中——以及一个或更多个客户机-服务器网络环境——在这种情况下,一个或更多个服务器可能包括在网络环境中。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境及其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器,以及在一个或更多个服务器上实现的分布式文件***,其可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或一个或更多个应用程序可分别包括基于网页的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网页的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是,但不限于,一种免费的开源软件网页应用框架,例如,可以使用分布式文件***进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可提供执行本文所述计算和/或数据存储功能(或其中一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一种都可以从中央或核心服务器(例如,一个或更多个数据中心的服务器)分布到多个位置,这些数据中心可以分布在一个州、一个地区、一个国家、全球等地。如果与用户(例如,客户端设备)的连接相对靠近一个或更多个边缘服务器,则一个或更多个核心服务器可将功能的至少一部分指定给一个或更多个边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
一个或更多个客户端设备可包括本文关于图7所述的一个或更多个示例计算设备700的至少一些组件、特征和功能。作为示例而非限制,客户端设备可体现为个人计算机(PC)、膝上型计算机、移动设备、智能手机、平板计算机、,智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位***(GPS)或设备、视频播放器、相机、监控设备或***、车辆、船只、飞行器、虚拟机、无人机、机器人、手持通信设备、医院设备、游戏设备或***、娱乐***、车辆计算机***、嵌入式***控制器、遥控器、设备、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合或任何其他合适的设备。
本公开可在计算机代码或机器可用指令的一般上下文中描述,包括由计算机或其他机器(如个人数据助理或其他手持设备)执行的计算机可执行指令,如程序模块。通常,程序模块包括例程、程序、对象、组件、数据结构等,是指执行特定任务或实现特定抽象数据类型的代码。本公开可以在多种***配置中实施,包括手持设备、消费电子产品、通用计算机、更多专业计算设备,等。本发明还可在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。
如本文所用,关于两个或多个元素的“和/或”的叙述应解释为仅指一个元素或元素的组合。例如,“元素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中的至少一个。
为了满足法定要求,本文对本公开的主题内容进行了详细描述。然而,描述本身并不打算限制本公开的范围。相反,发明人已经设想,所要求保护的主题内容也可以以其他方式体现,包括与本文件中描述的步骤类似的不同步骤或步骤组合,以及其他现有或未来技术。此外,尽管术语“步骤”和/或“块”可在本文中用于暗示所采用的方法的不同元素,但除非明确描述了各个步骤的顺序,否则不应将术语解释为暗示本文所公开的各个步骤之间的任何特定顺序。

Claims (20)

1.一种处理器,包括:
一个或更多个电路,用于:
使用机器学习模型并至少部分地基于使用自我机器的一个或更多个传感器生成的传感器数据,计算指示与所述传感器数据相对应的能见度距离的数据;
至少部分地基于所述能见度距离,确定所述传感器数据对所述自我机器的一个或更多个操作的可用性;以及
至少部分地基于所述传感器数据的所述可用性,执行所述一个或更多个操作中的至少一个操作。
2.如权利要求1所述的处理器,还包括:至少部分地基于所述传感器数据的所述可用性确定避免执行所述一个或更多个操作中的至少一个自主或半自主操作。
3.如权利要求1所述的处理器,其中所述数据的计算包括对所述能见度距离的值进行回归。
4.如权利要求3所述的处理器,还包括:
至少部分地基于所述能见度距离的值,从与所述传感器数据相对应的多个能见度距离箱中确定能见度距离箱,
其中所述能见度距离箱指示所述传感器数据对所述自我机器的所述一个或更多个操作的可用性。
5.如权利要求1所述的处理器,其中所述数据指示多个能见度距离箱中的一个能见度距离箱,并且此外其中所述能见度距离箱指示所述传感器数据对于所述自我机器的一个或更多个操作的可用性。
6.如权利要求1所述的处理器,其中所述一个或更多个操作包括对象跟踪、对象检测、路径规划、障碍躲避或高级驾驶辅助***ADAS操作中的至少一个。
7.如权利要求1所述的处理器,其中所述机器学习模型包括深度神经网络DNN,所述DNN使用现实世界数据、增强现实世界数据和合成数据的组合来训练。
8.如权利要求1所述的处理器,其中所述处理器被包括在以下至少一项中:
用于自主或半自主机器的控制***;
用于自主或半自主机器的感知***;
用于执行模拟操作的***;
用于执行深度学习操作的***;
使用边缘设备实现的***;
使用机器人实现的***;
合并一个或更多个虚拟机VM的***;
至少部分在数据中心中实现的***;或
至少部分使用云计算资源实现的***。
9.一种***,包括:
一个或更多个传感器;以及
一个或更多个处理单元,用于至少部分地基于使用机器学习模型计算的相关能见度距离来确定使用所述一个或更多个传感器生成的传感器数据实例的可用性,所述机器学习模型至少部分通过以下方式训练:
接收与用于调整能见度的一个或更多个参数相对应的值,所述能见度与训练传感器数据的实例相对应;
至少部分地基于所述值生成所述训练传感器数据的实例;
至少部分地基于所述值确定与所述训练传感器数据的实例相对应的能见度距离;以及
使用所述训练传感器数据的实例和所述能见度距离作为地面真实数据来训练机器学习模型。
10.如权利要求9所述的***,其中所述参数对应于天气条件、照明条件或遮挡条件。
11.如权利要求9所述的***,其中所述确定所述能见度距离包括使用所述值来计算所述能见度距离。
12.如权利要求11所述的***,其中所述值被应用于经训练的模型,所述经训练的模型确定所述一个或更多个参数的相应值和能见度距离之间的对应关系。
13.如权利要求12所述的***,其中使用注释或标签来训练所述经训练的模型,所述注释或标签指示与使用所述一个或更多个参数的相关值生成的训练传感器数据的实例相对应的能见度距离。
14.如权利要求9所述的***,其中所述训练传感器数据的实例与现实世界传感器数据的实例相对应,并且生成所述训练传感器数据的实例包括使用与所述一个或更多个参数相对应的所述值增强所述现实世界传感器数据的实例以生成所述训练传感器数据的实例。
15.如权利要求9所述的***,其中所述训练传感器数据的实例与传感器数据的合成实例相对应,并且生成所述传感器数据的合成实例包括:
将与所述一个或更多个参数相对应的所述值应用到模拟引擎以生成模拟;以及
在所述模拟内使用一个或更多个虚拟传感器来捕获所述传感器数据的合成实例。
16.如权利要求9所述的***,其中训练所述机器学习模型来计算指示能见度距离的数据,并且所述训练包括使用损失函数,所述损失函数惩罚对所述能见度距离的高估多于对所述能见度距离的低估。
17.如权利要求9所述的***,其中所述***被包括在以下至少一项中:
用于自主或半自主机器的控制***;
用于自主或半自主机器的感知***;
用于执行模拟操作的***;
用于执行深度学习操作的***;
使用边缘设备实现的***;
使用机器人实现的***;
合并一个或更多个虚拟机VM的***;
至少部分在数据中心中实现的***;或
至少部分使用云计算资源实现的***。
18.一种处理器,包括:
处理电路,用于至少部分地基于使用机器学习模型计算的与传感器数据的实例相关联的能见度距离来确定与所述传感器数据的实例相对应的机器的一组适当操作。
19.如权利要求18所述的处理器,其中至少部分地基于能见度距离低于阈值能见度距离,至少一个操作不被包括在所述一组适当操作中。
20.如权利要求18所述的处理器,其中所述一组适当操作至少部分地基于落在与所述一组适当操作相对应的能见度距离箱内的所述能见度距离来确定。
CN202210947622.XA 2021-09-29 2022-08-09 在自主机器应用程序中使用深度学习的能见度距离估计 Pending CN115909237A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/449,306 US20230110027A1 (en) 2021-09-29 2021-09-29 Visibility distance estimation using deep learning in autonomous machine applications
US17/449,306 2021-09-29

Publications (1)

Publication Number Publication Date
CN115909237A true CN115909237A (zh) 2023-04-04

Family

ID=85477104

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210947622.XA Pending CN115909237A (zh) 2021-09-29 2022-08-09 在自主机器应用程序中使用深度学习的能见度距离估计

Country Status (4)

Country Link
US (1) US20230110027A1 (zh)
JP (1) JP2023051713A (zh)
CN (1) CN115909237A (zh)
DE (1) DE102022124361A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230127418A (ko) * 2022-02-24 2023-09-01 삼성디스플레이 주식회사 타일형 표시 장치
CN117766014B (zh) * 2024-02-21 2024-04-19 北京怀美科技有限公司 辐照检测存储器芯片的测试方法
CN117953445B (zh) * 2024-03-26 2024-05-28 南京大学 基于交通监控相机雨天道路能见度测定方法、***及介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952058B2 (en) * 2016-08-29 2018-04-24 Denso International America, Inc. Driver visibility detection system and method for detecting driver visibility
US11508049B2 (en) * 2018-09-13 2022-11-22 Nvidia Corporation Deep neural network processing for sensor blindness detection in autonomous machine applications
US11170299B2 (en) * 2018-12-28 2021-11-09 Nvidia Corporation Distance estimation to objects and free-space boundaries in autonomous machine applications

Also Published As

Publication number Publication date
JP2023051713A (ja) 2023-04-11
US20230110027A1 (en) 2023-04-13
DE102022124361A1 (de) 2023-03-30

Similar Documents

Publication Publication Date Title
US11928822B2 (en) Intersection region detection and classification for autonomous machine applications
US11688181B2 (en) Sensor fusion for autonomous machine applications using machine learning
US11906660B2 (en) Object detection and classification using LiDAR range images for autonomous machine applications
US11508049B2 (en) Deep neural network processing for sensor blindness detection in autonomous machine applications
US20210201145A1 (en) Three-dimensional intersection structure prediction for autonomous driving applications
US20210309248A1 (en) Using Image Augmentation with Simulated Objects for Training Machine Learning Models in Autonomous Driving Applications
US11651215B2 (en) Landmark detection using curve fitting for autonomous driving applications
US20210406679A1 (en) Multi-resolution image patches for predicting autonomous navigation paths
CN113950702A (zh) 在视频分析应用中使用相关滤波器的多对象跟踪
CN114155272A (zh) 自主机器应用中的自适应目标跟踪算法
US20230110713A1 (en) Training configuration-agnostic machine learning models using synthetic data for autonomous machine applications
US20230110027A1 (en) Visibility distance estimation using deep learning in autonomous machine applications
US20230213945A1 (en) Obstacle to path assignment for autonomous systems and applications
US20240001957A1 (en) Using image augmentation with simulated objects for training machine learning models in autonomous driving applications
CN116767245A (zh) 使用自主***和应用的神经网络的地图信息对象数据管理
CN118119981A (zh) 用于自主***和应用的使用机器学习的自由空间检测
US20230260136A1 (en) Dynamic object detection using lidar data for autonomous machine systems and applications
US12026955B2 (en) Assigning obstacles to lanes using neural networks for autonomous machine applications
EP3850539A2 (en) Deep neural network processing for sensor blindness detection in autonomous machine applications
US20230177839A1 (en) Deep learning based operational domain verification using camera-based inputs for autonomous systems and applications
CN113496290B (zh) 使用采用模拟对象增强的图像训练机器学习模型
US20230391365A1 (en) Techniques for generating simulations for autonomous machines and applications
US20240087333A1 (en) Techniques for identifying occluded objects using a neural network
US20240028041A1 (en) Ground surface estimation using depth information for autonomous systems and applications
CN117034024A (zh) 使用神经网络用于自主***和应用的区域的地理空间集群

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination