CN115315709A - 自主***中用于行为预测的基于模型的增强学习及应用 - Google Patents

自主***中用于行为预测的基于模型的增强学习及应用 Download PDF

Info

Publication number
CN115315709A
CN115315709A CN202180022518.3A CN202180022518A CN115315709A CN 115315709 A CN115315709 A CN 115315709A CN 202180022518 A CN202180022518 A CN 202180022518A CN 115315709 A CN115315709 A CN 115315709A
Authority
CN
China
Prior art keywords
vehicle
mlm
data
actors
location
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
CN202180022518.3A
Other languages
English (en)
Inventor
N·斯莫良斯基
A·加米涅夫
L·王
D·尼斯特
O·博埃尔·博安
I·库尔卡尼
杨方凯
J·额
A·德伊尔曼吉
R·巴尔加瓦
R·阿维夫
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 CN115315709A publication Critical patent/CN115315709A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0088Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • 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/042Knowledge-based neural networks; Logical representations of neural networks
    • 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
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Business, Economics & Management (AREA)
  • Game Theory and Decision Science (AREA)
  • Medical Informatics (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)
  • Traffic Control Systems (AREA)
  • Control Of Driving Devices And Active Controlling Of Vehicle (AREA)

Abstract

在各种示例中,增强学习被用于训练至少一个机器学习模型(MLM)以通过借助在真实世界数据上训练的深度神经网络(DNN),通过使用模仿学习来预测一个或更多个活动者的移动以定义世界模型,从而来控制车辆。DNN可以从真实世界数据中被训练以从输入属性中预测活动者的属性,例如位置和/或移动。预测可以定义在模拟器中的环境的状态,并且输入到DNN中的一个或更多个活动者的一个或更多个属性可以被模拟器修改或控制以模拟可能在其他情况下不可行的条件。MLM可以借助由DNN做出的预测来预测车辆的一个或更多个动作。

Description

自主***中用于行为预测的基于模型的增强学习及应用
背景技术
利用试错法的机器学习技术(例如增强学习(RL))可以被用于训练用于计划的最优策略,并控制机器人应用中的操作。然而,使用增强学习来为自主或半自主车辆训练驾驶策略可能正具有挑战性。例如,在机器人技术中,可以在模拟器中进行训练,或者以非常受限的方式在真实机器人***中进行训练。然而,由于领域差异和建模差异将经训练的模拟器策略转移到车辆上是困难的。例如,根据常规方法,为实现精确的结果,用于使用增强学习来训练驾驶策略的模拟器可能需要模拟所有的所述驾驶情况,这将是不可行的。另外,直接将增强学习技术应用于真实机器人***可能违反安全要求,由于它们可能需要将驾驶者、机器操作者,自主***本身或在该本地环境中的对象/活动者置于危险状况下。这些问题有助于限制增强学习算法在自主车辆的规划和控制上的较为广泛的应用。
发明内容
本公开的实施例涉及用于行为预测的基于模型的增强学习。公开了可以通过借助在真实世界数据上建立的模型来使用增强学习(RL)训练模型的***和方法。
与传统***(例如所描述的那些)相比,公开的方法可以使用增强学习来训练至少一个机器学习模型(MLM),其可以附加地或替代地涉及机器学习模型或以基于ML的模型,用于控制车辆(例如,实施驾驶策略),通过借助基于真实世界数据训练的深度神经网络(DNN)来预测一个或更多个活动者的移动以定义世界模型。例如,所述DNN可以从真实世界数据中被训练以从输入属性中预测活动者的属性,例如位置和/或移动。所述预测可以定义模拟器中所述环境的状态,并且输入到DNN的一个或更多个活动者的一个或更多个属性可以被所述模拟器(例如,使用试探法)修改或控制来模拟可能在其他情况下不可行的条件(例如,活动者向车辆移动)。MLM可以借助由DNN做出的预测来预测车辆的一个或更多个动作。这些预测可以在DNN之后使用经典预测模型来进行推测。环境的状态可以被用于给由MLM使用价值函数做出的预测打分,这可以所述MLM的目标。在一个或更多个实施例中,价值函数可以被一个或更多个MLM学习。经训练的MLM然后可以被部署在自主车辆中以用于预测和/或控制交通(以及其他真实世界情境)中的活动者,可以包括预测所述本车辆和/或其他活动者的移动。
附图说明
下面参考附图详细来描述本发明的用于行为预测的基于模型的增强学习的***和方法,其中:
图1A是示出了根据本公开的一些实施例的模型训练***的示例的图;
图1B是示出了根据本公开的一些实施例的、预测被用于自主车辆的规划和控制中的示例的图;
图2是示出了根据本公开的一些实施例的、预测机器学习模型的示例输入和输出的可视化的图;
图3是图示了根据本公开的一些实施例的预测神经网络的潜在空间的编码和解码的图;
图4包括根据本公开的一些实施例的、预测环境中的一个或更多个活动者的轨迹的过程的示例数据流程图;
图5描绘了根据本公开的一些实施例的、适于在图4的过程的至少一个实施例中实现的示例深度神经网络(DNN)架构;
图6描绘了根据本公开的一些实施例的、活动者的在地图上重叠的示例轨迹的视觉表示;
图7图示了根据本公开的一些实施例的、使用经典机械运动算法扩展预测路径的示例;
图8是示出了根据本公开的一些实施例的、用于训练机器学习模型以利用使用DNN预测的活动者位置来进行预测的方法的流程图;
图9是示出了根据本公开的一些实施例的、用于训练机器学习模型以使用DNN作为世界模型来进行预测的方法的流程图;
图10是示出了根据本公开的一些实施例的、用于基于预测控制自主车辆的方法的流程图;
图11A是根据本公开的一些实施例的示例自主车辆的图;
图11B是根据本公开的一些实施例的图11A的示例自主车辆的相机位置和视野的示例;
图11C是根据本公开的一些实施例的图11A的示例自主车辆的示例***架构的框图;
图11D是根据本公开的一些实施例的用于在基于云的服务器与图11A的示例自主车辆之间通信的***图;
图12是适合用于实现本公开的一些实施例的示例计算设备的框图;以及
图13是适合用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
公开了与用于行为预测的基于模型的增强学***台、仓库车辆、越野车辆、连接至一辆或更多辆拖车的车辆、飞行船只、船、摆渡车、应急车辆、摩托车、电动自行车或机动自行车、飞机、施工车辆、潜水艇、无人机和/或其他交通工具类型使用。此外,尽管本公开可以结合自主车辆的行为预测进行描述,但是这不旨在限制,并且本文描述的那些***和方法可以用于增强现实、虚拟现实、混合现实、机器人学、安全和监视,自主或半自主机器应用,和/或可以使用预测的其他任意技术空间。
在被使用来训练至少一个MLM(其在本文中也可以称为策略网络)以预测车辆的一个或更多个动作之前,DNN或其他MLM(其可能也被本文称为预测网络)可以被训练以根据一个或更多个输入属性预测一个或更多个活动者(这可能包括所述本车辆和/或在所述本车辆附近的一个或更多个活动者)的一个或更多个输出属性。
在一个或更多个实施例中,可以使用表明在一时段期间环境中一个或更多个活动者的移动的一个或更多个真实世界车辆传感器来生成用于训练DNN的训练数据集。该训练数据集可以在许多不同的真实世界情境中使用来自各种不同车辆的各种类型的车辆传感器(例如,照相机、LiDAR传感器、雷达传感器等)的任意组合来生成。交通难以建模,所以真实世界传感器数据可以被用于训练DNN以学习活动者将如何改变。例如,活动者的轨迹可以从真实世界数据中被提取,并且被用于定义DNN的输入,以及地面实况数据。在一个或更多个实施例中,训练数据集可以包括与本车辆移动有关的数据,或以其他方式与本车辆移动有关的数据相关联。这是因为本车辆的移动可以影响本车辆周围其他活动者的移动,以及因为本车辆的移动也可以如本文所讨论的那样被预测。
一旦被训练(例如,为了预测交通中的活动者的移动),DNN可以被用于在模拟中定义世界模型以应用增强学习(RL)来训练策略网络。例如,由DNN做出的预测可以限定在模拟中所代表的环境。在一个更多个示例中,经训练的DNN可以用作模拟中的交通模型。策略网络也可以被训练以基于由DNN做的预测来做出车辆的一个或更多个动作的预测(例如,预测车辆的一个或更多个轨迹)。例如,策略网络可以学习如何通过模拟中的训练来做出对一个或更多个活动者的一个或更多个轨迹的预测。在一个或更多个实施例中,模拟可以修改或控制世界模型的状态中的被输入到DNN中的一个或更多个活动者的一个或更多个属性,以便模拟这些活动者采取的动作(例如,车辆向车辆移动,车辆行驶在道路边,不安全的行车条件等)。因此,策略网络可以从模拟情境中学习,这些模拟情景在真实世界训练数据中可能是不可用或稀少的。
RL技术可以与该模拟一起被用于根据一个或更多个策略来训练策略网络。例如,策略网络可以学习如何针对给定目标(例如,作为输入或隐含在训练中的)的车辆和由DNN编码的交通信息来规划一个或更多个最好的动作。目标的示例可以包括到达某个目的地,跟随另一车辆等。当利用策略网络所做预测的运动规划器选择一个或更多个动作时,它可能与交通模型和所预测的未来轨迹交互,并且可以相应地改变或更新这些动作。在模拟器中的这样的可能性可能在所有可能的未来(其依赖于规划器的动作)重演,并且策略网络可以被训练以达到鉴于该目标的最佳状态(和/或避免不佳状态)。
在一个或更多个实施例中,一个或更多个规划器/策略网络可以使用DNN的内部潜在状态作为其世界状态表示来进行训练,允许训练被简化。模拟器可以通过以下步骤逐步在环境中迭代:使用DNN以在潜在空间中生成预测,然后将预测解码到度量真实世界空间,根据预测和一个或更多个物理模型移动活动者中的一个或更多个,然后将已改变的世界再次编码到潜在空间中以用于在下一步中重新预测。以这种方式,一个或更多个规划器/策略网络可以学习针对给定其当前目标(例如,地图上要到达的目标)的车辆和被编码为DNN的潜在空间向量的当前交通状况(以及其过去交通状况(在一些实施例中))来推断一个或更多个最好的动作(例如,轨迹)。
在一个或更多个实施例中,用于训练策略网络的增强学习可以应用价值函数(其可以至少基于由DNN预测的环境的一个或更多个状态而被评估)来给由MLM所做的预测打分。例如,奖励可能与策略网络的一个或更多个目标相关联,而惩罚可能与冲突或其他预测的或推断的网络状态相关联。在一个或更多个实施例中,价值函数可以包括一个或更多个状态价值函数和/或q函数,并且价值函数的状态可以对应于在DNN的潜在空间中的时间和位置。在一个或更多个实施例中,可以至少部分使用活动者-评价者算法来实施增强学习。例如,策略网络可以充当活动者,而价值函数网络被训练以预测价值函数的得分,可以充当评价者。
一旦策略网络和/或价值函数被充分训练,策略网络和/或价值函数可以被用于计划和/或控制真实世界情境中的自主车辆。例如,网络可以被用于(例如,逐帧地)做出预测,该预测可以由运动规划器使用以控制车辆。作为示例,策略网络可以基于输入到DNN中的环境的状态来预测一个或更多个活动者(例如,对象和/或自主车辆)的一个或更多个轨迹。运动规划器可以使用对应的预测轨迹作为车辆的轨迹来确定和/或评估车辆的一个或更多个轨迹。附加地或替代地,在提供价值函数网络的地方,价值函数网络可以被用于确定和/或评估车辆的一个或更多个轨迹。在一个或更多个实施例中,在预测轨迹的地方,轨迹可以使用经典机械运动算法来扩展以生成经扩展的轨迹(例如,在训练和/或部署期间)。在一个或更多个实施例中,经典机械运动算法可以基于速度、加速度和/或MLM预测的其他输出沿活动者的行进方向上扩展轨迹。经典部分可能计算量小于轨迹的MLM预测部分的计算量,和/或可能允许更短的基于MLM的预测,因为这些预测的准确性可能会随时间下降。进一步地,经扩展的轨迹可以被车辆的经典规划器和/或控制器更轻而易举地使用。
在一个或更多个实施例中,DNN可以至少部分使用一个或更多个监督学习技术来进行训练,监督学习技术可以包括(例如但不限于)模仿学习。传统模仿学习的一个潜在缺陷是传统实现经常难以掌握少见的和/或不安全事件。这些少见的和/或不安全的事件可能在训练数据中不能被恰当地捕获,因此对于少见的和/或不安全事件的模型准备不足。这样少见的和/或不安全的事件的示例可以包括车辆切入和可能导致碰撞的紧急刹车。为解决这些问题,本公开的一个或更多个实施例使用基于模型的加强学习框架,并将驾驶问题指定为马尔可夫决策过程(MDP),将DNN作为过渡模型。本公开的实施例可以训练额外的决策网络以生成自我动作。
因此本公开的实施例可以被更好的准备来处理这些少见的和/或不安全的事件(例如,切入和紧急刹车导致的碰撞),这对传统的自适应巡航控制(ACC)的解决方案来说是困难的。例如,迭代可以包括多个车辆,多个车辆可以包括领头车、临近车和本车辆。可以使用随机的初始状态来进行模拟。非本车车辆可以由预测网络来控制,而本车辆可以由增强学习策略网络来控制。在少见的或不安全的事件的示例中,临近车可以在其观察到领头车和本车辆之间的缝隙时执行切入动作。在少见和/或不安全的事件的另一示例中,领头车执行随机的紧急刹车事件。
本公开的实施例可以学习在某一时间将状态映射到某一动作(例如本车辆加速)策略。任务奖励可以由人工设计的奖励条款(例如与领头车的距离、加速度变化等)以及针对少见事件(例如切入和碰撞)的少见惩罚条款的和来限定。因此,经训练的RL策略可以经过迭代来学习计划,以减少缝隙并避免切入,以及保持较慢的速度并避免未来的紧急刹车。
在本公开的一些实施例中,DNN可以使用柔性活动者评价者(SAC)算法来训练策略和评价者网络,同保持主干(trunk)权重恒定。潜在向量可以被注入三个完全卷积层中以提取特征,其中策略网络和评价者网络中的每个可以为三层的多层感知器(MLP)。作为示例,可以使用MDP折现因子,例如(不限于)0.95。ACC奖励函数可以表示加速度和速度的变化、到领头车的距离中的变化,并且可以被调整以实现在真实世界场景中的平稳跟随。各种迭代可以始于随机的初始条件。如果碰撞或切入发生而具有任务特征惩罚,或达到最大数量的迭代步骤(例如,48),或依据一些其他准则,那么迭代可以结束。
参见图1A,图1A是示出了根据本公开的一些实施例的、示例模型训练***100。应当理解的是,本文所述的这种和其他布置仅作为示例被阐述。除了所示的那些布置和元件之外或代替所示的那些布置和元件,可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),并且一些元件可以一起省略。进一步,本文描述的许多元件是可被实现为分立或分布式组件,或结合其他组件并以任何合适的组合和位置来实现的功能实体。本文中描述为由实体执行的各种功能可由硬件、固件和/或软件执行。例如,不同功能可由执行存储在存储器中的指令的处理器来执行。在一些实施例中,本文所描述的***、方法和过程可以使用与图11A-11D的示例自主车辆1100、图12的示例计算设备1200、和/或图13的示例数据中心1300相类似的组件、特征和/或功能性来实现。
图1A示出了模型训练***100,其可以被用于使用经训练的预测MLM 104来训练策略MLM 106以定义世界模型。作为概述,模型训练***100可以实施迭代方法以训练策略MLM106;在一个或更多个实施例中,迭代方法也可以用于训练价值函数MLM 108。迭代可以包括训练引擎112,其将使用模拟器116生成的模拟数据102应用到预测MLM 104以生成输出数据。策略MLM 106可以使用对应于来自预测MLM 104的输出的数据来生成对应于车辆(例如车辆1100)的一个或更多个动作的一个或更多个预测。价值函数MLM 108也可以使用与来自预测MLM 104的输出对应的数据来生成一个或更多个预测,该预测对应于使用策略MLM 106预测的一个或多个动作的一个或更多个得分。世界状态解码器110也可以使用与来自预测MLM 104的输出对应的数据以提供到训练引擎112的输入。例如,世界状态解码器110可以将预测MLM 104的潜在空间解码到度量真实世界空间。训练引擎112可以使用经解码的数据来评估策略MLM 106和/或价值函数MLM 108的性能并更新其一个或更多个参数。训练引擎112可以附加地或替代地使用经解码后的数据来限定世界状态118,世界状态118用于生成用于后续迭代的模拟数据102。
在一个或更多个实施例中,训练引擎112可以至少基于由一个或更多个MLM生成的输出数据来给策略MLM 106(在至少一个实施例中,其可以基于从训练引擎112中提供的目标数据114)和/或价值函数MLM 108的性能打分。基于该打分,策略MLM 106和/或价值函数MLM 108可以被更新或修正(例如,使用反向传播和/或其他合适的MLM训练技术)。
在一个或更多个实施例中,训练引擎112可提供经更新的模拟数据102和/或经更新的目标数据114以用于训练的随后的迭代。经更新的模拟数据102和/或经更新的目标数据114可以由模拟器116直接或不直接地提供,并且可以反映世界状态118。模拟器116可以包括软件应用,软件应用至少基于来自预测MLM 104的输出存储并建模世界状态118,模拟器116可以使用世界状态118来提供真实世界条件的准确模拟。例如,世界状态118可以记录由预测MLM 104至少基于模拟数据102所编码的先前世界数据118所做出的一个或更多个活动者的位置、属性和/或其他预测。在一个或更多个实施例中,训练引擎112可以使用一个或更多个物理模型和/或试探法以控制一个或更多个活动者并调整记录到世界状态118和/或由模拟数据102指示的位置、属性和/或其他活动者状态信息。例如,在预测MLM 104被用于预测由活动者引起的世界状态的变化(例如,基于受控制或受影响的活动者预测一个或更多个其他活动者的轨迹)的情况下,至少部分使用模拟器116来控制至少一个活动者。
在一个或更多个实施例中,训练引擎112可以在预测MLM 104被用于预测世界状态的至少一部分和/或模拟器116控制或影响活动者的任意次数的迭代期间计算成本或价值度量。此成本或价值度量可以被用于更新策略MLM 106和/或价值函数MLM 108。例如,可以使用该价值度量来训练策略MLM 106以试图最大化价值度量,并且可以用于训练价值函数MLM 108以预测价值度量。这样,模拟器116可以用于模拟危险的或不切实际的场景,或在无需真实世界数据的情况下训练策略MLM 106和/或价值函数MLM 108。
在一个或更多个实施例中,模拟器116和/或训练引擎112可以至少部分地使用软件(例如工具组)来实现,该软件例如使用物理引擎和/或由预测MLM 104所做的预测,在多个时间步期间为模拟环境提供环境和框架。在一个或更多个实施例中,模拟器116包括一个RL gym。这样的软件的一个非限制性示例包括OpenAI Gym。在一个或更多个实施例中,每个时间步可以对应于训练策略MLM 106和/或价值函数MLM 108的一个或更多个迭代。在一个或更多个实施例中,每个时间步可以对应于使用预测MLM 104为一个或更多个活动者预测的一个或更多个轨迹上的一个或更多个点。在一个或更多个实施例中,每个时间步可以对应于一个状态,该状态可以由训练引擎112使用价值度量打分。
在一个或更多个实施例中,预测MLM 104可以接收在模拟数据102中编码的一个或更多个活动者的一个或更多个位置和/或其他属性(例如,速度、加速度、轨迹等等)作为输入。在各种示例中,一个或更多个活动者可以包括本车辆和/或一个或更多个其他车辆或对象(例如,移动对象和/或活动者,例如步行者、骑行者、动物等)。预测MLM 104可以使用该输入来做出关于一个或更多个活动者的一个或更多个位置和/或其他属性(例如,速度、加速度、轨迹等)的一个或更多个预测。这样的预测的非限制性示例可以包括一个或更多个未来时间步的这些贡献中的任何一个的未来值。通过示例且不受限制,在一个或更多个实施例中,预测MLM 104、策略MLM 106和/或价值函数MLM 108可以实现为或可以包括结合图4进一步描述的DNN 416。
现在参考图2,图2是示出了根据本公开的一些实施例的、预测MLM 104的示例输入和输出的可视化200的图。可视化200图示了输入202的集合可以如何被提供给预测MLM 104以生成输出204的集合。通过示例并非限制,输入202的集合在图2中使用环境的自上而下的图像来进行标示。在一个或更多个实施例中,输入属性可以在自上而下的视图或者不同的视图中所提及的坐标空间中被提供。对象位置可以由方块(例如,每个方块对应于一个时间步)来标示,方块中的一个或更多个可以与特定活动者相关和/或被分配给特定活动者。例如,对象位置用黑色示出,对象的对应的过去位置(用更浅的灰色表示更早时间的过去位置)用灰色标度示出。静止对象可以被用黑色表示,没有对应的灰度标度。该输入202的集合可以允许预测MLM 104解释一个或更多个活动者(可以包括本车辆)的当前和过去位置。速度和加速度可以由时间步之间的间距来标示和/或可以被编码为一个或更多个时间步。
预测MLM 104可以使用输入202的集合来推断由输出204的集合标示的每个活动者的轨迹。作为示例,根据本公开的一些实施例,图2描绘了自上而下的视图的示例轨迹的可见表示。输出204的集合可以包括位置坐标和/或任何数量时间步的其它相关的预测的属性(例如,和输入属性相同或不同的)。例如,在图2中,定位点的连接路径可以对应于活动者的预测轨迹,每个点对应于各自的时间步。输出204的集合示出的较暗的梯度可以指示预测中更小的不确定性,而光梯度可以指示更多的不确定性。训练引擎112和/或模拟器116可以将这些各种信息的任意信息与地图信息(例如,使用世界状态解码器110执行解码后)关联,例如由各种活动者的车道线和轨迹所指示的车道信息。
在一个或更多个实施例中,来自预测MLM 104的输出数据可以被用于训练一个或更多个其他MLM,例如策略MLM 106和价值函数MLM 108。在至少一个实施例中,策略MLM 106的一个或更多个部分和/或价值函数MLM 108可以是预测MLM 104的组件。例如,策略MLM106和/或价值函数MLM 108可以至少部分地包括预测MLM 104的一个或更多个头或解码器,如结合图3进一步描述的。
现在参考图3,图3是图示了根据本公开的一些实施例的、预测MLM 104的潜在空间302的编码和解码的图。图3示出了预测MLM 104(例如,神经网络)可以包括用于将模拟数据102编码到潜在空间302的编码器304。图3也示出了预测MLM 104可以包括一个或更多个解码器,例如一个解码器306A和/或解码器306B用于解码潜在空间302以生成一个或更多个各种输出。例如,解码器306A和解码器306B可以对应于策略MLM 106的至少一部分。如所示,解码器306A可以预测一个或更多个其他对象或活动者的一个或更多个属性,而解码器306B可以预测本活动者的一个或更多个属性,例如车辆1100。附加地或替代地,价值函数MLM 108可以至少部分地使用潜在空间302的解码器而被类似地执行。
然而,策略MLM 106和/或价值函数MLM 108不需要是预测MLM 104的组件并且可以与预测MLM 104分离。例如,在一个或更多个实施例中,世界状态解码器110和/或不同的后处理单元可用于生成对于策略MLM 106和/或价值函数MLM 108的输入。因此,在至少一个实施例中,策略MLM 106和/或价值函数MLM 108可以基于预测MLM 104的潜在空间302操作,而无需接收和/或解码潜在空间的至少一部分。
在一个或更多个实施例中,策略MLM 106可以被训练以至少基于来自预测MLM 104的输出数据来做出基于目标的预测。例如,目标数据114可以由训练引擎112用于编码策略MLM 106的一个或更多个目标。然后策略MLM 106可以由训练引擎112训练以进行预测,以便实现一个或更多个相应的目标。例如,可以将目标数据114提供给策略MLM 106和/或价值函数MLM 108以用于进行推断。然而,在至少一个实施例中,目标数据114不需要用于训练策略MLM 106和/或价值函数MLM 108以进行基于目标的预测。更确切地说,一个或更多个目标可以由用于训练策略MLM 106的价值函数和/或价值函数MLM 108捕获。
如本文所描述,可以训练策略MLM 106以做出对应于将由一个或更多个活动者要采取的一个或更多个动作的一个或更多个预测。例如,策略MLM 106可以预测轨迹和/或活动者(例如车辆1100)要穿过的位置。这样做时,策略MLM 106可以对一个或更多个目标负责。可以可选地被编码到目标数据114的目标的示例包括能够成功达到或取得给定路径、车道、位置或其他活动者属性和/或世界状态的多个方面(例如,速度、加速度、方位、姿态等),能够成功地避免碰撞,和/或能够成功地取得相对于另一个活动者的属性或状态的属性或状态(例如,移动到另一个活动者前方)。因此可以训练策略MLM 106以做出旨在取得一个或更多个特征和/或世界状态的预测,从而可以满足目标。
如本文所描述,训练引擎112可以评估策略MLM 106和/或价值函数MLM 108的性能,并且使用增强学习相应地更新这些网络中的一个或更多个。例如,训练引擎112可以使用价值函数来确定一个或更多个分数,该分数指示策略MLM 106和/或价值函数MLM 108在一个或更多个时间步期间和/或使用预测MLM 104和/或模拟器116递增世界状态118的迭代期间的性能。这可以包括训练引擎112计算或分配一个或更多个分数给由策略MLM 106和/或价值函数MLM 108做出的一个或更多个预测。基于该一个或更多个分数,训练引擎112可以确定策略MLM 106和/或价值函数MLM 108的一个或更多个参数是否应该被更新或修正。训练引擎112然后可以指示、改变或以其他方式提供要被更新或修正的一个或更多个参数的指示。然后可以至少基于一个或更多个分数来更新至少一个MLM的一个或更多个参数。
如本文所描述,可以至少基于训练引擎112评估世界状态118和/或由预测MLM 104做出的关于世界状态118的预测来计算价值函数,以使用预测MLM 104的一个或多个输出来确定或识别一个或更多个事件。例如,训练引擎112可以从环境的一个或更多个后续状态中确定环境中的本车辆(和/或其他活动者)的碰撞。由训练引擎112计算的价值函数的一个或更多个分数可以基于一个或更多个事件,例如,至少基于确定碰撞(例如,策略MLM 106可以基于确定碰撞将发生或更有可能发生而被惩罚)。在一个或更多个实施例中,事件可以对应于或表示将由策略MLM 106取得的目标,如本文所描述(例如,到达一个位置、取得世界状态或属性等等)。在一个或更多个实施例中,可以至少基于与事件的接近度(例如,到给定位置的距离、到目标属性值的距离等等)来计算价值函数。在一个或更多个实施例中,价值函数可以包括一个或更多个状态价值函数和/或q函数,并且价值函数的状态可以对应于DNN的潜在空间中的时间和位置(例如,时间步)。在一个或更多个实施例中,可以至少部分地使用活动者-评价者算法来实施增强学习。例如,策略MLM 106可以充当活动者,而被训练来预测价值函数的分数的价值函数MLM 108可以充当评价者。
如本文所描述,训练引擎112可以使用模拟器116来评估预测MLM 104和/或价值函数MLM 108的性能。例如,训练引擎112可以使用模拟器116来检测世界状态118中的事件和/或属性。在一个或更多个实施例中,模拟器116可以使用物理引擎来确定和/或检测用于计算一个或更多个状态或时间步的价值函数的一个或更多个事件和/或属性。这可以包括利用使用策略MLM 106预测的一个或更多个动作的至少一部分向前规划世界状态118的一个或更多个方面(例如,在任何数量的迭代或时间步期间)。附加地或替代地,模拟器116可以使用预测MLM 104来(利用使用策略MLM 106预测的一个或更多个动作的至少一部分)向前规划世界状态118的一个或更多个方面(例如,在任何数量的迭代或时间步期间)。在一个或更多个实施例中,预测MLM 104可以由模拟器116用于根据每次迭代的预测来逐步驱动交通,移动世界状态118中的活动者。模拟器116可以根据更新的世界状态118重新绘制该世界,并执行碰撞检查且评估活动者的动态以用在价值函数中。在至少一个实施例中,模拟器116可以在一个或更多个步骤之间进行插值以提供更高频率的评估。在一个或更多个实施例中,模拟器116可以在执行向前规划时使用物理引擎和/或试探法来控制一个或更多个活动者。
在一个或更多个实施例中,循环或迭代可包括提供模拟数据102,使用预测MLM104、策略MLM 106和价值函数MLM 108做出一个或更多个预测,评估由策略MLM 106和/或价值函数MLM 108做出的预测,和/或基于该评估更新策略MLM 106和/或价值函数MLM 108的一个或更多个参数。在每次迭代时或每次迭代期间,模拟器116可以递增地向前移动世界状态118(例如,通过一个或更多个时间步),为训练的另一迭代提供更新的模拟数据102和/或目标数据114的集合直到策略MLM 106和/或价值函数MLM 108收敛。
现在参考图1,图1B是示出了根据本公开的一些实施例的、预测被用在自主车辆1100的规划和控制中的示例的图。如图所示,车辆1100可以使用路线规划器150、车道规划器152、规划管理器154和控制器156来执行一个或更多个规划和控制操作。这些组件中的一个或更多个可以至少部分地包括在本文讨论的驱动堆栈428中。
图1B示出了动作MLM 180,其可以指策略MLM 106、价值函数MLM 108或预测MLM104的任何组合。例如,对于活动者本身,预测的活动者信息182可以对应于由策略MLM 106确定的预测动作(例如,轨迹)和/或由价值函数MLM 108确定的预测价值度量。对于一个或更多个其他活动者,其他预测的活动者信息184可以对应于由预测MLM 104和/或策略MLM106(例如,解码器306A)确定的对应的预测动作(例如,轨迹)和/或属性。当在自主车辆1100中执行时,动作MLM 180可被用于预测预测的活动者信息182和/或其他预测的活动者信息184,以便通知车辆1100的规划管理器154。
路线规划器150可基于各种真实的或模拟的输入为车辆1100生成规划路径。规划路径可以包括导航点(例如,GPS导航点)、目的地、坐标(例如,笛卡尔坐标、极坐标或其他世界坐标)或其他参考点。参考点可以指示相对于车辆1100上的原点的坐标等。参考点可以代表车辆1100进入未来的特定距离,例如可以用作车道规划器152的目标的城市街区数、公里数、英尺数、英寸数、英里数等。
车道规划器152可以使用车道图、车道图中的对象姿势、和/或未来距离路线规划器的距离处的目标点和方向作为输入。目标点和方向可以被映射到车道图中的最佳匹配的可驾驶点和方向(例如,基于GNSS和/或罗盘方向)。然后可以在车道图上从车道图中的当前边缘执行图搜索算法,以找到到目标点的最短路径。
规划管理器154可以使用动作MLM 180来预测本车辆和/或本车辆附近的其他活动者的运动,和/或一个或更多个本车辆动作的价值度量。规划管理器154可以包括速度曲线生成器158、横向路径扇形生成器160、预限制器162、轨迹打分器164和优化器166。速度曲线生成器158可以基于活动者的两个或更多个后续位置之间的横向间隔来确定速度,除以后续位置之间的时间间隔。速度曲线可以至少部分地用于使用动作MLM 180来预测相关活动者的未来动作。横向路径扇形生成器160可以基于来自动作MLM 180的预测来确定本车辆的横向路径扇形。横向路径扇形可以指示本车辆可以继续的可能的横向运动。预限制器162可以减少不太可能的输出,使得不太可能的路径(例如,速度和/或方向的剧烈变化)可以被丢弃以减少总体计算负载。轨迹和/或预测的其他动作可以被馈送到轨迹打分器164中。轨迹打分器可以给一个或更多个动作评估和分配分数。优化器166可以至少基于使用轨迹评分器164做出的评估来选择和/或优化车辆1100的一个或更多个控制操作(例如,基于相应的分数选择轨迹并且使用该轨迹来优化一个或更多个控制操作)。
控制器156可以根据来自优化器166的选择和/或优化路径来控制车辆1100。在一些实施例中,控制器156可以直接控制车辆1100的动作,例如加速、制动、转向等等。例如,控制器156可以控制制动致动器1148、推进***1150和/或节流阀1152、转向***1154和/或转向致动器1156、和/或车辆1100的其他部件(例如图11A中所图示的)。在其他实施例中,控制器156可以间接控制车辆1100的动作,例如通过向车辆1100的另一***发送消息或指令。
照此,规划管理器154可以将活动者的已知的过去位置和预测的未来位置拼凑在一起,并使用可以由车辆1100的驱动堆栈1128使用动作MLM 180生成和/或评估轨迹。在一个或更多个实施例中,使用动作MLM 180预测、生成和/或选择的轨迹可以使用经典机械运动算法来扩展,其示例将使用本文中的图7来进行描述。例如,为了规划目的,规划管理器154可以延长预测的最大时间范围,以便更好地被车辆1100的各种组件使用。
参考图4,图4是根据本公开的一些实施例的、预测环境中的一个或更多个活动者的轨迹的过程400的示例数据流程图。应当理解,本文所述的这种和其他布置仅作为示例被阐述。除了或代替图4中所示的布置和元件之外,还可使用其他布置和元件(例如,机器、接口、功能、次序、功能分组等),并且可完全省略一些元件。进一步,本文描述的许多元件是可以被实现为分立组件或分布式组件或与其他组件结合、和以任何合适的组合和位置的功能实体。本文描述为由实体执行的各个功能可由硬件、固件和/或软件执行。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。
过程400包括DNN 416,该DNN 416可以对应于图1A中的预测MLM 104,策略MLM 106和/或价值函数MLM 108。该过程400可包括从车辆1100的一个或更多个传感器生成和/或接收传感器数据402。传感器数据402可以被车辆1100使用,并在过程400内,以预测环境中的一个或更多个对象或活动者(诸如其他车辆、行人、骑自行车者等)的未来轨迹。传感器数据402可以包括但不限于来本车辆1100(和/或在一些示例中的其他车辆或对象,诸如机器人设备、VR***、AR***等)的任何传感器的传感器数据402。例如,并参考图11A至图11C,传感器数据402可包括由但不限于以下项生成的数据:全球导航卫星***(GNSS)传感器1158(例如,全球定位***传感器),一个或更多个RADAR传感器1160、一个或更多个超声波传感器1162、一个或更多个LIDAR传感器1164、一个或更多个惯性测量单元(IMU)传感器1166(例如,一个或更多个加速度计、一个或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁力计等),一个或更多个麦克风1196、一个或更多个立体相机1168、一个或更多个广角相机1170(例如,鱼眼相机)、一个或更多个红外相机1172、一个或更多个环绕相机1174(例如,360度相机)、一个或更多个远程和/或中程相机1198,速度传感器1506(例如,用于测量车辆1100的速度和/或行驶距离),和/或其他传感器类型。
在一些示例中,传感器数据402可以包括由一个或更多个前向传感器、侧视传感器和/或后视传感器生成的传感器数据。该传感器数据402可以用于识别、检测、分类和/或追踪环境内车辆1100周围的对象的移动。在实施例中,任何数量的传感器可以用于合并多个视场(例如,图11B的远程相机1198、前向立体相机1168和/或前向广角相机1170的视场)和/或传感场(例如,LIDAR传感器1164、RADAR传感器1160等的传感场)。
传感器数据402可包括表示图像的图像数据、表示视频的图像数据(例如,视频的快照)和/或表示传感器的感觉场的表示的传感器数据(例如,LIDAR传感器的深度图、超声传感器的值图等)。在传感器数据402包括图像数据的情况下,可以使用任何类型的图像数据格式,例如但不限于,诸如联合图像专家组(JPEG)或亮度/色度(YUV)格式的压缩图像,作为源自诸如H.264/高级视频编码(AVC)或H.265/高效率视频编码(HEVC)之类的压缩视频格式的帧的压缩图像,诸如源自红透明蓝(RCCB)、红透明(RCCC)或其他类型的成像传感器的原始图像,和/或其他格式。此外,在一些示例中,传感器数据402可在过程400中使用而无需任何预处理(例如,以原始或捕获的格式),而在其他示例中,传感器数据402可经历预处理(例如,噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,诸如使用传感器数据预处理器(未示出))。如本文中所使用的,传感器数据402可以参考未处理的传感器数据、预处理的传感器数据或其组合。
此外,过程400可以包括从车辆1100可访问和/或存储的地图——诸如HD地图404(它可类似于图11C的HD地图1122)——生成和/或接收地图数据。在一些实施例中,HD地图404可包括精度到更精细的厘米级,使得车辆1100可依赖于HD地图404进行精确的指令、规划和定位。HD地图404可表示车道、道路边界、道路形状、海拔、斜坡和/或轮廓、航向信息、等待条件、静态对象位置和/或其他信息。照此,过程400可使用来自HD地图404的信息(诸如通道的位置和形状)来生成DNN 416的输入408。
作为传感器数据402和/或HD图404的补充或替代,过程400还可以包括从自主或半自主(例如,ADAS)驾驶软件栈和/或图1B示出的多种组件的任何一个生成和/或接收(例如,在实施例中,使用传感器数据402和/或HD地图404)一个或更多个输出。例如,由软件栈的感知层、世界模型管理层、控制层、致动层、避障层和/或其他层产生的信息可以用于过程400内以用于产生输入408。该信息可以包括自由空间边界位置、等待条件、交叉口结构检测、车道类型标识、道路形状信息、目标检测和/或分类信息和/或诸如此类的。照此,传感器数据402、HD地图404和/或由车辆1100生成的其他信息可被用于生成DNN 416的输入408。
在一些非限制性实施例中,传感器数据402、来自HD地图404的信息和/或其他信息(例如,来自驾驶栈)可在被用作DNN 416的输入408之前被应用于视角移位器406。视角移位器406可以相对于环境中的活动者之一、相对于道路表面上的某个位置和/或相对于由数据表示的另一特征来对数据进行定向。例如,在一些实施例中,视角移位器406可相对于车辆1100(例如,自身车辆或自身活动者)的位置和/或定向来移位数据的视角。因此,活动者或对象的位置、HD地图404的一部分和/或被用作输入408的其他信息可相对于车辆1100移位(例如,其中本车辆1100在(x,y)坐标为(0,0)的中心处,其中y是从车辆的前部延伸到后部的纵向尺寸,x是垂直于y并且从车辆的左部延伸到右部的横向尺寸。
在一些实施例中,除了相对于环境的特征移位视角之外或作为其替代,视角移位器406可将视角移位到相同视场。例如,在HD地图404可以从环境的俯视视角生成数据的情况下,生成传感器数据402的传感器可以从不同视角(诸如前向、侧向、向下成角度、向上成角度等)这样做。照此,为了产生共享同一视角的输入408,视角移位器406可将输入408中的每一者调整到同一视角。在一些非限制性实施例中,传感器数据402、HD地图404和/或其他信息中的每一个可以被移位到俯视图视角-例如,透视俯视图和/或正交俯视图视角。此外,视角移位器406可帮助生成输入408,使得为输入408的每个实例从那个视角表示环境的相同或基本相似(例如,在厘米、米等内)的部分。例如,表示环境中的活动者的过去位置410的第一输入(例如,光栅化图像)可以由环境的该部分的俯视角度表示,并且表示环境的地图信息412的第二输入(例如,光栅化图像)可以由环境的该部分的俯视视角描写。因此,DNN416可使用对应于环境的相同一般部分的任何数量的输入408并且因此以相同的尺度生成输出418。然而,这不旨在是限制性的,并且在一些实施例中,针对不同输入类型和/或实例,输入408的视角、取向、大小、位置和尺度可以不同。在一些实施例中,DNN 416可以使用实时车道感知代替HD地图或者除了HD地图还使用实时车道感知,例如,栅格化为自上而下的视图。实时感知的车道(例如,它们的边界和/或中心车道)可以附加地或替代地源自其他感知DNN或MLM。
输入408可包括(例如,依赖于实现方式的环境中的活动者(诸如车辆、行人、骑自行车者、机器人、无人机、水运工具等)的)过去位置410、状态信息432(例如,对应于活动者的速度和/或加速度数据),地图信息412(例如,如使用HD地图404生成的)、等待条件414(例如,使用传感器数据402、HD地图404和/或其他信息生成的),和/或其他输入408(例如,如使用传感器数据402、HD地图404、车辆1100的驾驶栈428和/或其他信息确定的自由空间信息、静态对象信息等)。过去位置410可包括环境中的车辆、行人、骑自行车者和/或其他活动者类型的先前检测到的位置。在一些实施例中,可相对于本车辆1100确定过去位置410,使得在视角移位期间,更有效地实现相对于活动者的取向和位置的改变。过去位置410和/或状态信息432可由表示活动者的位置的图像(例如,光栅化图像)来表示。在一些实施例中,过去位置410的每个实例可包括单个图像并且可对应于单个时间片,例如,实例可在该时间片处捕获被追踪和/或被检测的每个活动者以及它们的当前位置(例如,相对于车辆1100)。在一些实施例中,状态信息432的每个实例可以包括单个图像并且可以对应于单个时间片。在其他实施例中,状态信息432可与过去位置410一起被包括在图像实例中。DNN 416可将过去位置410和/或状态信息432的一个或更多个实例作为输入,使得DNN 416可使用过去位置410和/或状态信息432的对应于活动者在一个或更多个时间片期间(例如,在一时间段内)的位置的一个或更多个实例来计算输出418。
例如,在时间T1处对应于时间片(在本文中也可以称为时间步)的各个输入408可包括过去位置(和/或可以包括与其对应的状态信息432)。照此,在实施例中,每个图2中的方块可对应于环境中的活动者的位置和/或状态信息,包括本车辆1100。类似地,对于时间T2处的时间片,可在环境内的多个位置处检测活动者。作为非限制性示例,每个活动者的多个位置可相对于本活动者(其可以是居中定位的活动者)定向,使得DNN 416可取决于本活动者。
地图信息412可以包括车道的位置(例如,车道中心线或轨道、车道边缘或分隔物、道路边界、紧急车道等)、静态对象的位置、交叉口的位置、道路形状信息和/或类似的信息。在一些实施例中,可相对于本车辆1100确定地图信412,使得在视角移位期间,相对于地图信息的定向和位置的改变被更有效地实现。地图信息412可由表示车道位置、静态对象位置等的图像(例如,光栅化图像)表示。在一些实施例中,地图信息412的每个实例可包括单个图像并且可对应于单个时间片,例如,实例可在该时间片捕获驾驶表面结构(例如,相对于车辆1100)。DNN 416可将地图信息412的一个或更多个实例作为输入,使得DNN 416可使用地图信息412的与各个时间片期间(例如,一时间段内)的道路结构信息相对应的一个或更多个实例来计算输出418。在一些非限制性实施例中,对于一时间段内的每个时间片,可以使用相同的地图信息412(例如,地图信息412的同一实例可以用于每两个时间片、每三个时间片等,并且然后可以以相同的间隔进行更新)。在其他实施例中,可以在每个时间片更新地图信息412。
例如,对应于时间T1处的时间片的各个输入408可包括地图信息412。这样的话,地图信息412可包括车道线、线类型、道路形状和/或结构、和/或其他特征。类似地,对于时间T2处的时间片,可表示道路结构。作为非限制性示例,地图信息412可相对于本活动者(其可以是位于中心的活动者)定向,使得DNN 416可取决于本活动者。
等待条件414可以包括例如但不限于,停车灯、让路标志、停车标志、建筑、交叉路口在内的等待条件要素和/或其他等待条件的位置,以及使用上面列出的任何等待条件要素定义的或以其他方式执行的交集的位置。在一些实施例中,等待条件414可被包括在地图信息412中,而在其他实施例中,等待条件414可表示到DNN416的单独输入通道。在一些实施例中,类似于过去位置410和/或地图信息412,等待条件414可相对于本车辆1100来确定,使得在视角移位期间,相对于等待条件414的定向和位置的改变被更有效地实现。等待条件414可由表示环境中的等待条件的位置和/或类型的图像(例如,光栅化图像)表示。在一些实施例中,等待条件414的每个实例可以包括单个图像并且可以对应于单个时间片,例如,实例可以在该时间片捕获等待条件(例如,相对于车辆1100)。DNN416可将等待条件414的一个或更多个实例作为输入,使得DNN416可使用对应于在各个时间片期间(例如,在一时间段内)的等待条件位置和/或类型的等待条件的一个或更多个实例来计算输出418。在一些非限制性实施例中,对于一时间段内的每个时间片,可以使用相同的等待条件414(例如,等待条件414的同一实例可以用于每两个时间片、每三个时间片等,并且然后可以以相同的间隔进行更新)。在其他实施例中,可以在每个时间片更新等待条件414。例如,对应于时间T1处的时间片的各个输入408可包括等待条件414。照此,等待条件414可包括停车标志、停车灯、让路标志、紧急车辆进入位置和/或其他等待条件类型。在策略MLM 106和/或价值函数MLM108的训练期间,如在图1A中,模拟数据102可以表示输入408的任何组合(例如,被编码到世界状态118或使用世界状态118)。
输入408(例如,在视角移位和/或光栅化之后)可作为输入张量应用于DNN 416。例如,每个相应输入(例如,地图信息412、过去位置410、等待条件414、其他输入类型等)可各自作为单独的输入张量被应用于DNN 416的通道。如本文所描述的,在一些实施例中,每个输入类型可与个体输入张量和/或输入通道相关联。在其他实施例中,两个或更多个输入类型(例如,等待条件414和地图信息412)可被组合以形成到DNN 416的单个输入通道的单个输入张量。
在一些实施例中,DNN 416可包括时间和/或空间DNN,使得DNN 416在每个实例处分析对应于多于一个时间片(例如,时间段)的信息和/或在每个实例处分析对应于活动者的多于一个空间位置的信息。照此,DNN 416可学习通过在多个时间片期间监视和考虑活动者的过去位置、道路结构、等待条件和/或其他信息来预测未来的轨迹——或表示其的信息。在一些实施例中,DNN 416可包括循环神经网络(RNN)。作为非限制性示例,并且如以下参见图5更详细地描述的,DNN 416可包括编码器-解码器。
虽然在本文中关于将神经网络(具体而言,RNN)用作DNN 416来描述示例,但是这不旨在是限制性的。例如但不限于,本文描述的DNN 416可包括任何类型的机器学习模型,诸如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k最近邻(Knn)、K均值聚类、随机森林、降维算法、梯度提升算法、神经网络和/或其他类型的机器学习模型。神经网络的示例包括自动编码器、卷积、循环、感知器、长/短期记忆(LSTM)、霍普菲尔德、玻尔兹曼、深度信念、解卷积、生成对抗、液态机、图像神经网络(GNN)(例如,具有包括地图和一个或更多个过去轨迹的一个或更多个输入的GNN)、卷积神经网络(例如,其中过去时间片可以由不同的张量通道来表示)等。
现在参见图5,图5描绘了根据本公开的一些实施例的、适于在图4的过程的至少一个实施例中实现的示例深度神经网络(DNN)架构。DNN 416包括多个编码器-解码器栈,每个编码器-解码器栈可包括2D卷积编码器504(例如,504A-504D)、2D卷积解码器506(例如,506A-506D)、和/或2D卷积RNN 502(例如,502A-502D)。在一个或更多个实施例中,2D卷积编码器504可以对应于图3中的编码器304。类似地,2D卷积解码器506可以对应于图3中的解码器306A和/或306B。
DNN 415可被配置为接收值得过去信息的任何数量的时间片并且预测值得未来信息的任何数量的时间片,这取决于实施例。例如,DNN 415可生成包括从过去两秒和未来两秒的信息的轨迹,例如,每秒、每半秒、每秒四次、每秒八次等输出轨迹点。例如,输入408可包括对应于活动者的过去和/或预测的未来位置的张量、对应于等待条件414的张量、对应于地图信息412的张量等。输出418可包括对应于置信度场(例如,由图2中输出204所示的梯度所指示的)的张量、对应于向量场的张量等。在一些实施例中,因为闭环模式中的输入408可以基于环境中的一个或更多个活动者的实际或模拟的(例如,地面实况)位置,所以闭环模式中的输出418可以更精确——例如,可以包括活动者的潜在位置的更小区域,其可以更接近输入408和输出418之间的1:1对应关系。此外,因为开环模式中的输入408可基于一个或更多个活动者的位置的未来预测或模拟,所以开环模式中的输出418可较不精确-例如,可包括活动者的潜在位置的较大区域。
DNN 416可包括过去的闭环模式和未来的开环模式。在一些实施例中,过去的闭环模式可采用环境中的活动者的实际真实世界或模拟的过去位置110作为输入408(除了其他输入408之外,诸如地图信息412、等待条件414等),以便生成输出418,例如,如由输入408A和408B上的方框所指示的。
再次参见图4,DNN 416的输出418可包括一个或更多个置信度场420、一个或更多个向量场422、和/或其他输出类型。置信度场420和向量场422的组合可以由后处理器424(本文更详细地进行描述)用于确定一个或更多个活动者在环境中的完整轨迹,其可以包括一个或更多个过去的轨迹点或位置和/或一个或更多个未来的轨迹点或位置。在一些非限制性实施例中,针对时间片的置信度场420和向量场422可以对应于环境的同一区域(例如,同一地区),并且因此可以具有相同的空间维度。
对于每个时间片(例如,过去、现在和/或未来),置信度场420可以包括表示活动者位于哪里的置信度的置信度场或地图。置信度场420可由H x W矩阵表示,其中每一元素(例如,像素或点)表示置信度得分。例如,置信度场420或地图中的每个像素或点可以具有活动者存在的相关联的置信度。因此,并且尤其对于未来预测,一个或更多个置信度场420可以看起来更类似于图2的图。例如,图2的可视化200对于输出204可以表示对应于彼此重叠的多个时间片的多个置信度场。
对于每个时间片(例如,过去、现在和/或未来),向量场422可包括表示对应于向量位置处的活动者在先前时间片处的位置的预测的向量(例如,位移向量)的向量场422或地图。向量场422可以包括H xW矩阵,其中每个元素(例如,像素或点)表示与从当前向量位置到先前时间片(或时间步长)中的同一对象或活动者的点(例如,中心点)的位移相对应的2D(或3D,在实施例中)向量。在一些非限制性实施例中,每个向量可以由方向和大小、沿着2D或3D空间的距离(例如,像素距离)和/或另一表示来表示。例如,时间Tn的向量场422或地图中的每个像素或点可具有相关联的向量,该相关联的向量表示活动者(如果活动者出现在像素或点处)在先前时刻Tn-1被预测位于何处(尽管在各个实施例中,例如DNN 416可被训练为计算与未来时间Tn+1相对应的向量场422)。
后处理器424可使用置信度场420和向量场422来确定环境中各个活动者中任何一个的轨迹。例如,对应于输出418的最后未来时间片(例如,Tn)的置信度场420可以由后处理器424分析以确定活动者的位置,并且可以利用来自同一时间片的向量场422的对应向量确定来自先前时间片(例如,Tn-1)的置信度场420中的活动者的预测位置。来自先前时间片的置信度场420然后可以用于确定活动者在该时间片(例如,Tn-1)的位置,并且然后来自该时间片的向量场422可以用于确定活动者在来自先前时间片(例如,Tn-2)的置信度场420中的预测位置,以此类推,直到达到当前时间。轨迹生成器426可随后将这些未来预测附加到从活动者的实际检测中确定的活动者的过去轨迹以产生最终轨迹。在一些实施例中,过去轨迹还可使用与未来轨迹类似的过程来生成,其中置信度场420用于确定时间片处的位置,而向量场422用于确定先前时间片处的位置。
对于对应于时间片(例如,如由时间戳所指示的)的置信度场420,活动者的位置可以使用任何数量的不同方法来确定,诸如但不限于包含聚类的过程(例如,非最大值抑制、具有噪声的应用的基于密度的空间聚类(DBSCAN)等)和/或无聚类的过程。例如,在使用聚类的情况下,置信度阈值可被应用以移除噪声点。在这样的示例中,置信度阈值可以是但不限于,0.7、0.8、0.85、0.9等。一旦噪声点被滤除,则剩余的点就可具有应用于它们的聚类算法,使得彼此在阈值距离内的点可被确定为与单个活动者相关联。在一些实施例中,一旦确定集群,来自同一时间片的向量场422的对应于相同点的一个或更多个向量可用于找到对应活动者(或代表其的集群)在先前时间片中的位置。在其他实施例中,一旦确定集群,就可确定每个集群的质心,并且可将预定大小的边界形状(例如,针对所有集群大小相同,对应于不同活动者类型的集群的大小不同——例如,汽车的第一大小的边界形状、行人的第二大小的边界形状等)以质心为中心(例如,边界形状的质心以集群的质心为中心)。边界形状随后可用作同一时间片的向量场422的掩码,以确定使用哪些向量来找到对应活动者(或表示其的集群或边界形状)在先前时间片中的位置。可针对每一时间片完成这些过程,直到确定通过每一时间切片的完整轨迹为止。在另一活动者(或表示其的集群或边界形状)没有位于使用向量场422的先前时间片的示例中,轨迹可以被缩短、可以被丢弃(例如,可以是噪声、缺陷等)和/或可以基于过去的时间信息来估计。
作为另一示例,在不使用聚类的情况下,可实现另一算法或方法来确定活动者的位置。例如,加权平均方法可以用在可以在单次传递中为每个活动者处理一个或更多个置信度场420和一个或更多个向量场422的地方——不管活动者的数量如何,都具有快速处理次数的固有计算益处。在这种算法中,对于每个活动者a,最可能的下一位置可以是其前驱(predecessor)向量指向a的所有位置的平均值,由这些位置处的置信度场420值加权。加权平均可使用辅助分子和分母存储一次针对所有活动者进行计算——两者均被初始化为零。对于DNN 416的输出中的每个位置pos,前驱,pred=前驱(predecessor)[pos]和占用率(occupancy)o=occupancy[pos]。然后将o*pos加到分子[pred],并将o加到分母[pred]。每个活动者的下一位置a可由分子[a.position]/分母[a.position]确定。分子存储其前驱向量指向a的所有位置的加权和,分母存储其权重的和,所以结果是加权平均。由于应用于每一位置的操作大体上是独立的,因此可并行地执行这些步骤(例如,跨多个线程并行地使用图形处理单元(GPU))。
作为另一示例,对于每个活动者a,针对给定时间片的置信度场420可以被过滤以包括其前驱向量指向活动者a的像素或点。可以将(软)argmax函数应用于剩余的点以确定这些点的“质心”。具体地,结果可以是其前驱指向a的所有位置的占用加权和。这可以被确定为a的最可能的未来位置。可以针对每个其他活动者重复该过程。在一些实施例中,可以针对每个活动者在相同的置信度场420上执行单独的传递,并且这可以在每个时间片处重复。因此,***的总体运行时可能比实时或近实时部署所需的更大。为了避免这一点,以及为了联合地对所有活动者执行每活动者操作,可存储两个部分和。根据以下等式(1),形状Hx W的第一权重和:
Figure BDA0003852365030000241
以及根据以下等式(2)的形状H x W x 2的第二权重和:
Figure BDA0003852365030000242
然后,为了找到活动者的最可能的后继,可以使用等式(3)
sum_weighted_coords[a.bbox.sum()/sum_weights[a.bbox].sum() (3)
其可表示其前驱指向活动者a的所有下一帧位置(或与其对应的边界框)的占用加权平均。
在一些实例中,因为占用分数(例如,来自置信度场420)不是概率,为了避免过度扩展轨迹,可执行锐化操作。例如,锐化操作可应用于置信度场420以在计算加权平均之前将较高权重指派给较高置信度得分点。在非限制性实施例中,锐化可用锐化强度40硬编码,如下文等式(4)中所表示:
sharpen(x)=e40·x-40 (4)
然而,在一些实施例中,还可学习或训练锐化函数。
作为另一示例,并且关于图6,图6描绘了根据本公开的一些实施例的活动者、相关联的轨迹、等待条件和道路结构的视觉表示。可视化600可表示在已经执行过程400之后被传递到车辆1100的驾驶栈428的信息。例如,可视化600可包括DNN 416的输入和输出的组合的经抽象表示(例如,在后处理之后)。例如,来自HD地图404的道路结构或地图信息可用于确定道路边界418,等待条件414可分别用于确定存在停车标志606A-606D以及它们的位置,并且分别用于每个活动者602A-602F的轨迹604A-604F可基于后处理器424的输出来确定。此外,如本文所描述的,表示可以是以自我为中心的,使得可视化600从本车辆(例如,活动者612C)的角度居中。轨迹604的虚线可表示活动者602的过去已知或追踪的位置,而实线可表示活动者602的预测的未来位置。活动者602在表示中的位置可表示活动者在当前时间的位置。
再次参考图4,轨迹生成器426的输出可以被传输或应用于车辆1100的驾驶栈428。例如,一旦轨迹已被计算(并且从2D图像空间坐标转换到3D世界空间坐标,在实施例中),轨迹可由自主车辆1100使用以用于执行一个或更多个操作(例如,避障、车道保持、车道变换、路径规划、映射等)。更具体地,轨迹可以由自主车辆1100的驾驶栈428使用,诸如在车辆1100的一个或更多个组件(例如,一个或更多个SoC 1104、一个或更多个CPU 1118、一个或更多个GPU 1120等)上执行的自主机器软件栈。例如,车辆1100可以使用该信息(例如,环境中的一个或更多个活动者的未来位置)在环境内导航、规划或以其他方式执行一个或更多个操作(例如,避障、车道保持、车道变换、路径规划、合并、分离等)。
在一些实施例中,轨迹可以由自主机器软件栈428(可替代地在本文中称为“驾驶栈428)的一个或更多个层使用。驾驶栈428可以包括传感器管理器(未示出)、感知组件(例如,对应于驾驶栈428的感知层)、世界模型管理器,一个或更多个规划组件(例如,对应于驾驶栈428和/或规划管理器154的规划层)、一个或更多个控制组件(例如,对应于驾驶栈428和/或控制器156的控制层),一个或更多个避障组件(例如,对应于驾驶栈428的避障层或防撞层)、一个或更多个致动组件(例如,对应于驾驶栈428的致动层),和/或对应于驾驶栈428的附加和/或替代层的其他组件。在一些示例中,过程400可以由一个或更多个感知组件执行,感知组件可以将来自驾驶栈428的一个或更多个层的输出馈送到世界模型管理器,如在本文中更详细地描述的。
传感器管理器可以管理和/或提取来自本车辆1100的传感器的传感器数据402。例如,并且参考图11C,可以由一个或更多个RADAR传感器1160生成(例如,永久地、以一定的间隔、基于某些条件)传感器数据402。传感器管理器可以从传感器接收不同格式的传感器数据402(例如,相同类型的传感器可以输出不同格式的传感器数据),并且可以被配置为将不同格式转换成统一格式(例如,针对相同类型的每个传感器)。因此,自主车辆1100的其他部件、特征和/或功能可以使用统一格式,从而简化传感器数据402的处理。在一些示例中,传感器管理器可以使用统一格式将控制参数或指令应用回车辆1100的传感器,诸如以设置帧速率或执行增益控制。传感器管理器还可以利用时间戳来更新对应于传感器数据的传感器分组或通信,以帮助通知由自主车辆控制***的各个组件、特征和功能对传感器数据的处理。
世界模型管理器可被用来生成、更新和/或定义世界模型。世界模型管理器可以使用由驾驶栈428的一个或更多个感知组件生成和从驾驶栈428的一个或更多个感知组件接收的信息(例如,检测到的活动者的过去位置和预测位置)。在训练期间,模拟器116可以用作世界模型管理器。
一个或更多个感知组件可包括障碍物感知器、路径感知器、等待感知器、地图感知器和/或其他感知组件。例如,可至少部分地基于可由障碍物感知器、路径感知器、等待感知器和/或地图感知器实时地或接近实时地感知的障碍物、路径和等待条件的可负担性来定义世界模型(例如,对应于世界状态118)。世界模型管理器可基于从障碍物感知器、路径感知器、等待感知器、地图感知器和/或自主车辆控制***的其他组件最新生成和/或接收的输入(例如,数据)来连续地更新世界模型。
世界模型可用于帮助通知驾驶栈428的一个或更多个规划组件、一个或更多个控制组件、一个或更多个避障组件和/或一个或更多个致动组件。障碍物感知器可以执行障碍物感知,该障碍物感知可以基于车辆1100在何处被允许驾驶或者能够驾驶(例如,基于通过避免检测到的障碍物所定义的可驾驶路径的位置)、以及车辆1100可以在不与由车辆1100的传感器感测到的障碍物(例如,物体,诸如结构、实体、车辆等)碰撞的情况下驾驶多快。
路径感知器可执行路径感知,诸如通过感知在特定情形下可用的标称路径。在一些示例中,路径感知器可以进一步考虑(例如,解释)路径感知的车道变化。车道图(例如,至少部分地使用HD地图404来生成)可以表示车辆1100可用的一个或更多个路径,并且可以像在公路的匝道上的单个路径一样简单。在一些示例中,车道图可以包括到所需车道的路径和/或可以指示沿公路(或其他道路类型)的可用变化,或者可以包括邻近车道、车道变化、岔道、转弯、立体道路交叉点、合并和/或其他信息。
作为规则、惯例和/或实际考虑的结果,等待感知器可负责确定车辆1100上的约束。例如,规则、惯例和/或实际考虑可以与交通信号灯、多路停车、让路、合并、收费站、大门、警察或其他紧急人员、道路工人、停靠公共汽车或其他车辆、单向桥仲裁、渡船入口等相关。因此,可利用等待感知器来识别潜在障碍物并实现可能不能仅依赖于障碍物感知器的一个或更多个控制(例如,减慢、停车等)。
地图感知器可包括通过其辨别行为的机制,并且在一些示例中,用于确定在特定地区应用什么惯例的特定示例。例如,地图感知器可以从表示先前驾驶或旅行的数据确定:在某个交叉口在某些小时之间没有U形转弯;显示车道方向性的电子标志根据一天中的时间而改变;紧邻的两个交通灯(例如,几乎不会彼此偏移)与不同道路相关联;在罗德岛,等待在交通灯处左转的第一辆汽车通过在交通灯转绿时在迎面而来的车流前转弯而违反法律;和/或其他信息。地图感知器可通知车辆1100静态或静止的基础设施对象和障碍物。地图感知器还可生成等待感知器和/或路径感知器的信息,例如,以确定在交叉口的哪个灯必须是绿色的以供车辆1100采取特定路径。
在一些示例中,来自地图感知器的信息可被发送、传输和/或提供给服务器(例如,图11D的服务器1178的地图管理器),并且来自服务器的信息可被发送、传输和/或提供给地图感知器和/或车辆1100的定位管理器。地图管理器可以包括云地图应用,云地图应用远离车辆1100定位并且可由车辆1100通过一个或更多个网络访问。例如,车辆1100的地图感知器和/或定位管理器可以与地图管理器和/或服务器的一个或更多个其他组件或特征通信,以通知地图感知器和/或定位管理器车辆1100的过去和当前驾驶或旅行以及其他车辆的过去和当前驾驶或旅行。地图管理器可基于车辆1100的特定位置提供可由定位管理器定位的地图输出(例如,地图数据),并且定位的地图输出可由世界模型管理器用于生成和/或更新世界模型。
规划组件可包括路线规划器150、车道规划器152、行为规划器和行为选择器,以及其他组件、特征和/或功能。
行为规划器可确定车辆1100的基本行为的可行性,诸如,停留在车道中或者向左或右改变车道,使得可行行为可与从车道规划器输出的最期望的行为匹配。例如,如果期望的行为被确定为不安全和/或不可用,则可替代地选择默认行为(例如,当期望的行为或改变车道不安全时,默认行为可以是停留在车道中)。
一个或更多个控制组件可以遵循轨迹或路径(横向和纵向),轨迹或路径已经从一个或更多个规划组件的行为选择器尽可能地且在车辆1100的能力内被接收。控制组件可使用紧密反馈来处理未被建模的非规划事件或行为和/或引起与理想间差异的任何东西(例如,非预期延迟)。在一些示例中,一个或更多个控制组件可以使用将控制作为输入变量的前向预测模型,并且产生可以与期望状态进行比较的预测(例如,与一个或更多个规划组件所请求的期望的横向和纵向路径进行比较)。以这种方式,可以确定使差异最小化的控制。
一个或更多个避障组件可以帮助自主车辆1100避开与对象(例如,移动或静止的对象)的碰撞。一个或更多个避障组件可以包括在“原始水平”的避障的计算机制,并且可以充当车辆1100的“生存脑”或“爬行动物脑”。在一些示例中,一个或更多个避障组件可以独立于需要遵守交通规则和有礼貌地驾驶的车辆1100的组件、特征和/或功能而使用。在这样的示例中,一个或更多个避障组件可以忽略交通法规、道路规则和礼貌驾驶规范,以便确保在车辆1100与任何对象之间不发生碰撞。因此,避障层可为与道路规则层分开的层,并且避障层可确保车辆1100仅从避障的角度执行安全动作。另一方面,道路规则层可以确保车辆遵守交通法规和惯例,并且遵守合法的和常规的通行权(如本文所描述的)。
在一些示例中,可以由一个或更多个避障组件使用可驾驶路径和/或目标检测来确定要采取的控制或动作。例如,可驾驶路径可以向一个或更多个避障组件提供车辆1100可以在何处操纵而不撞击任何物体、结构等或者至少在何处不存在静态结构的指示。
在非限制性实施例中,一个或更多个避障组件可以被实现为车辆1100的单独的、分立的特征。例如,一个或更多个避障组件可以单独地(例如,并行地、在其之前和/或之后)操作驾驶栈428的规划层、控制层、致动层和/或其他层。
因此,车辆1100可以使用该信息(例如,诸如路径的边缘或轨道)在环境内导航、规划或以其他方式执行一个或更多个操作(例如,车道保持、车道变换、路径规划、合并、分离等)。
现在参照图7,图7图示了根据本发明的一些实施例的、使用动力学运动算法(也称为经典机械运动算法)扩展预测路径的示例。正如本文所讨论的,可以预测和/或确定一个或更多个活动者的位置(如轨迹)。在至少一个实施例中,一个或更多个活动者的至少第一位置可以对应于使用本文所描述的预测MLM 104、策略MLM 106和/或价值函数MLM 108中的一个或更多个所做出的预测。在一些实施例中,可以使用动力学运动算法将第一位置扩展到至少第二位置,该动力学运动算法可以,例如,假定一稳定轨迹试图到第二位置以生成扩展轨迹。在至少一个实施例中,本文所描述的价值函数可以基于一个或更多个活动者的扩展轨迹。
如图7所示,车辆702(其位置由702A-D所标识)可以穿过轨迹704。当预测被追随的轨迹以最终产生轨迹704时,可以使用经典机械运动算法为每个预测的轨迹计算相应的保持或扩展轨迹706A-D。例如,在702A处,车辆702包括预测的轨迹,该轨迹沿保持轨迹706A继续。可以至少部分地基于车辆702在预测轨迹末端处或末端附近的活动者属性(例如,速度、加速度、姿态等)来计算保持轨迹706A。保持轨迹706A可以因此将预测轨迹(例如,与图2的输出204相对应)扩展到进一步的时间间隔,其可被本文所描述的各种规划和控制组件所使用。虽然经典机械运动算法可以维持车辆702的正在计算轨迹的延伸部分的方向和/或速度,但一些例子可能包括改变方向和/或速度,或维持预测轨迹的一个或更多个其他特性和/或活动者属性或状态(例如,可以维持曲率的角度)。
现在参考图8-10,本文描述的方法800、900和1000的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各个功能可以通过执行存储在存储器中的指令的处理器来实施。方法还可以体现为存储在计算机存储介质上的计算机可用指令。方法可由独立应用、服务或托管服务(独立地或与其他托管服务组合)或另一产品的插件提供,仅举几例。此外,借助示例,结合图1A的模型训练***100来描述方法800、900和1000。然而,这些方法可附加地或替代地由任何一个***、或***的任何组合执行,包括但不限于本文所述的这些。例如,该方法可以由***执行,该***包括一个或更多个处理单元,以及一个或更多个存储指令的存储器单元,当该指令由一个或更多个处理单元执行时,致使一个或更多个处理单元执行操作。
图8是示出了根据本发明的一些实施例的、用于训练机器学习模型以利用使用DNN预测的活动者位置来预测活动者移动的方法800的流程图。位于块B802的方法800包括使用模拟器确定活动者位置。在一个或更多个实施例中,活动者位置可以包括但不限于,活动者的一个或更多个位置、姿势、方向、大小、高度、偏航、俯仰或转动等)。例如,训练引擎112可以使用与世界状态118相对应的模拟,至少基于环境的第一状态来确定一个或更多个活动者的至少一个第一位置。一个或更多个活动者可以包括车辆和/或至少一个其他车辆。
在块B804处,方法800包括将活动者位置应用于经训练的DNN以预测未来活动者位置。例如,训练引擎112可以将模拟数据102应用到预测MLM 104,预测MLM 104被训练以从一个或更多个活动者的至少一个第一位置生成一个或更多个活动者的至少一个第二位置的预测。在实施例中,使用基于真实世界数据的模仿学习来训练预测MLM 104。
在块B806处,方法800包括将对应于DNN的预测的数据应用于MLM以预测车辆的未来动作。例如,训练引擎1112可以将对应于预测的第二数据应用到策略MLM 106以使用至少一个MLM来生成对应于车辆的一个或更多个动作的预测。
在块B808处,方法800包括给预测分配分数。例如,训练引擎112可以至少基于环境的与预测相对应的第二状态,使用价值函数来将一个或更多个分数分配给预测。
在块B810,方法800包括基于分数更新MLM的参数。例如,训练引擎112可以至少基于一个或更多个分数(例如,解码器306A和/或306B)来更新策略MLM 106的一个或更多个参数。
方法800还可以包括使用DNN来预测一个或更多个活动者的一个或更多个位置,其中确定一个或更多个活动者的至少一个第一位置包括基于活动者的建模行为来调整一个或更多个位置中的至少一个位置以生成至少一个第一位置。一个或更多个活动者的至少一个第二位置可以对应于活动者的轨迹,并且该方法包括使用经典机械运动算法扩展轨迹以生成一个扩展轨迹,其中一个或更多个分数对应于扩展轨迹。方法800还可包括从环境的第二状态确定车辆在环境中的碰撞并且至少基于碰撞的确定来计算一个或更多个分数。
图9是示出了根据本公开的一些实施例的、用于训练机器学习模型以使用DNN作为世界模型来进行预测的方法900的流程图。在块B902处,方法900包括使用DNN作为用于模拟的世界模型。例如,训练引擎112可以使用预测MLM 104作为用于模拟的世界模型。
在块B904处,方法900包括训练MLM以使用模拟进行预测。例如,训练引擎112可以将增强学习应用于训练至少一个MLM以使用模拟来生成对机器的一个或更多个动作的预测。DNN的潜在空间可以被解码为用于模拟的世界模型的状态,以应用增强学习来使用模拟训练至少一个MLM。DNN可能已经使用真实世界数据的模仿学习来训练,并且可以被用于训练至少一个MLM以生成对车辆的轨迹的预测。一个或更多个价值函数神经网络可以被训练以生成对RL的价值函数的一个或更多个分数的预测。
图10是示出了根据本公开的一些实施例的、用于基于使用MLM模拟的预测来控制自主车辆的方法1000的流程图。在块B1002处,方法1000包括接收传感器数据。这可以包括接收由环境内车辆的一个或更多个传感器生成的传感器数据。
在块B1004处,方法1000包括基于传感器数据确定活动者位置。这可以包括至少部分地基于传感器数据确定一个或更多个活动者的至少一个第一位置。
在块B1006处,方法1000包括将数据应用于MLM以预测未来活动者位置。这可以包括将第一数据应用到深度神经网络(DNN),该深度神经网络被训练为从一个或更多个活动者的至少一个第一位置生成一个或更多个活动者的至少一个第二位置的预测。
在块B1008处,方法1000包括将数据应用于神经网络以预测驾驶策略的分数。这可以包括将对应于预测的第二数据应用到神经网络(例如,价值函数MLM 108),以使用神经网络生成对价值函数的一个或更多个分数的预测,一个或更多个分数对应于一个或更多驾驶策略。价值函数可以包括状态价值函数。价值函数的状态可以对应于至少一个第二位置在MLM的潜在空间中的时间和位置。在实施例中,第二数据编码一个或更多个驾驶策略的一个或更多个目标,并且一个或更多个分数对应于一个或更多个目标。在实施例中,神经网络解码DNN的潜在空间的至少一部分以生成一个或更多个分数的预测。
在块B1010处,方法1000包括确定对应于一个或更多个分数的驾驶策略。在块B1012处,方法100包括基于驾驶策略执行车辆动作。这可以包括传输数据,使得车辆基于一个或更多个驾驶策略执行一个或更多个动作。
示例自主车辆
图11A是根据本公开的一些实施例的示例自主车辆1100的图。自主车辆1100(可替代地,在本文称为“车辆1100”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆,救护车、船、施工车辆、水下船只、无人机、耦合拖车的车辆和/或另一类型的车辆(例如,无人驾驶的和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for TermsRelated to Driving Automation Systems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1100可以实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。车辆1100可以实现符合自动驾驶级别的1级-5级的一个或更多个的功能。例如,取决于实施例,车辆1100可以实现驱动辅助(1级),部分自动化(2级),条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。本文使用的术语“自主”可以包括车辆1100或其他机器的任何和/或所有类型的自主,如完全自主、高度自主、条件自主、部分自主、提供辅助自主、半自主、主要自主,或其他名称。
车辆1100可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1100可以包括推进***1150,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进***类型。推进***1150可以连接到可以包括变速器的车辆1100的传动系以便实现车辆1100的推进。可以响应于接收到来自油门/加速器1152的信号而控制推进***1150。
可以包括方向盘的转向(steering)***1154可以用来在推进***1150操作时(例如在车辆运动时)使车辆1100转向(例如沿着希望的路径或路线)。转向***1154可以接收来自转向致动器1156的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器***1146可以用来响应于接收到来自制动致动器1148和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上***(SoC)1104(图11C)和/或一个或更多个GPU的一个或更多个控制器1136可以向车辆1100的一个或更多个部件和/或***提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1148操作车辆制动器、经由一个或更多个转向致动器1156操作转向***1154、经由一个或更多个油门/加速器1152操作推进***1150的信号。一个或更多个控制器1136可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆1100。一个或更多个控制器1136可以包括用于自主驾驶功能的第一控制器1136、用于功能性安全功能的第二控制器1136、用于人工智能功能(例如计算机视觉)的第三控制器1136、用于信息娱乐功能的第四控制器1136、用于紧急情况下的冗余的第五控制器1136和/或其他控制器。在一些示例中,单个控制器1136可以处理上述功能中的两个或更多,两个或更多控制器1136可以处理单个功能,和/或其任意组合。
一个或更多个控制器1136可以响应于接收来自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1100的一个或更多个部件和/或***的信号。传感器数据可以接收自例如且不限于全球导航卫星***传感器1158(例如全球定位***传感器)、RADAR传感器1160、超声传感器1162、LIDAR传感器1164、惯性测量单元(IMU)传感器1166(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1196、立体相机1168、广角相机1170(例如鱼眼相机)、红外相机1172、环绕相机1174(例如360度相机)、远程和/或中程相机1198、速度传感器1144(例如用于测量车辆1100的速率)、振动传感器1142、转向传感器1140、制动传感器(例如作为制动传感器***1146的部分)和/或其他传感器类型。
控制器1136中的一个或更多个可以接收来本车辆1100的仪表组1132的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器1134、听觉信号器、扬声器和/或经由车辆1100的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图11C的HD地图1122)、位置数据(例如,车辆1100例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1136所感知的关于对象和对象状态的信息等等。例如,HMI显示器1134可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆1100还包括网络接口1124,其可以使用一个或更多个无线天线1126和/或调制解调器通过一个或更多个网络通信。例如,网络接口1124可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线1126也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图11B为根据本公开一些实施例的用于图11A的示例自主车辆1100的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1100上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆1100的部件和/或***一起使用的数字相机。相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,相机中的一个或更多个可以用来执行高级驾驶员辅助***(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆1100前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1136和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和***,包括车道偏离警告(LDW)、自主巡航控制(ACC),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1170,其可以用来感知从周边进入视场的对象(例如行人、十字路***通或者自行车)。尽管图11B中仅仅图示出一个广角相机,但是在车辆1100上可以存在任意数量的广角相机1170。此外,远程相机1198(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1198也可以用于对象检测和分类以及基本的对象追踪。
一个或更多个立体相机1168也可以包括在前置配置中。立体相机1168可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机1168可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1168。
具有包括车辆1100的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1174(例如如图11B中所示的四个环绕相机1174)可以置于车辆1100上。环绕相机1174可以包括广角相机1170、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1174(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆1100的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1198、立体相机1168、红外相机1172等等)的相机。
图11C为根据本公开一些实施例的用于图11A的示例自主车辆1100的示例***架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图11C中车辆1100的部件、特征和***中的每一个被图示为经由总线1102连接。总线1102可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线)。CAN可以是车辆1100内部的网络,用来辅助控制车辆1100的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线1102描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线1102,但是这并不意图是限制性的。例如,可以存在任意数量的总线1102,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1102可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1102可以用于碰撞避免功能,并且第二总线1102可以用于驱动控制。在任何示例中,每条总线1102可以与车辆1100的任何部件通信,并且两条或更多总线1102可以与相同的部件通信。在一些示例中,车辆内的每个SoC 1104、每个控制器1136和/或每个计算机可以有权访问相同的输入数据(例如来本车辆1100的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆1100可以包括一个或更多个控制器1136,例如本文关于图11A所描述的那些控制器。控制器1136可以用于各种各样的功能。控制器1136可以耦合到车辆1100的任何其他不同的部件和***,并且可以用于车辆1100的控制、车辆1100的人工智能、用于车辆1100的信息娱乐和/或类似物。
车辆1100可以包括一个或更多个片上***(SoC)1104。SoC 1104可以包括CPU1106、GPU 1108、处理器1110、高速缓存1112、加速器1114、数据存储1116和/或未图示出的其他部件和特征。在各种各样的平台和***中,SoC 1104可以用来控制车辆1100。例如,一个或更多个SoC 1104可以在***(例如车辆1100的***)中与HD地图1122结合,HD地图可以经由网络接口1124从一个或更多个服务器(例如图11D的一个或更多个服务器1178)获得地图刷新和/或更新。
CPU 1106可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX)。CPU 1106可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 1106在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 1106可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 1106(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 1106的簇的任意组合能够在任何给定时间是活动的。
CPU 1106可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 1106可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 1108可以包括集成的GPU(可替代地,本文称为“iGPU)。GPU 1108可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 1108可以使用增强张量指令集。GPU 1108可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU1108可以包括至少八个流式微处理器。GPU 1108可以使用计算应用编程接口(API)。此外,GPU 1108可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 1108进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 1108。然而,这并不意图是限制性的,并且GPU 1108可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 1108可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子***。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 1108可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 1108直接访问CPU 1106页表。在这样的示例中,当GPU 1108内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 1106。作为响应,CPU 1106可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 1108。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 1106和GPU 1108二者的内存,从而简化了GPU 1108编程和将应用程序移(port)到GPU 1108。
此外,GPU 1108可以包括访问计数器,其可以追踪GPU 1108访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 1104可以包括任意数量的高速缓存1112,包括本文描述的那些高速缓存。例如,高速缓存1112可以包括CPU 1106和GPU 1108二者可用的L3高速缓存(例如,其连接到CPU 1106和GPU 1108二者)。高速缓存1112可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)追踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 1104可以包括算术逻辑单元(ALU),算术逻辑单元可以在执行关于车辆1100的各种任务或操作中的任何任务或操作(如处理DNN)的处理中被利用。此外,SoC 1104可以包括用于在***内执行数学运算的浮点单元(FPU)(或其他数学协处理器或数字协处理器类型)。例如,SoC 104可以包括集成为CPU 1106和/或GPU 1108内的执行单元的一个或更多个FPU。
SoC 1104可以包括一个或更多个加速器1114(例如硬件加速器、软件加速器或者其组合)。例如,SoC 1104可以包括硬件加速器簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速器簇能够加速神经网络和其他计算。硬件加速器簇可以用来补充GPU 1108,并且卸载GPU 1108的一些任务(例如释放GPU 1108的更多周期以用于执行其他任务)。作为一个示例,加速器1114可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器1114(例如硬件加速器簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 1108的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 1108针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 1108和/或其他加速器1114。
加速器1114(例如硬件加速器簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助***(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作***(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 1106访问***内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子***分区。PVA核可以包括处理器子***、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他***设备。向量处理子***可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速器簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体***安全性。
加速器1114(例如硬件加速器簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器1114的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级***总线(APB)接口、配置电路***、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 1104可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR***仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线跟踪相关操作。
加速器1114(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得***能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,***可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)***中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子***)获得的地平面估计,与车辆1100取向、距离相关的惯性测量单元(IMU)传感器1166输出,从神经网络和/或其他传感器(例如LIDAR传感器1164或RADAR传感器1160)获得的对象的3D位置估计等。
SoC 1104可以包括一个或更多个数据存储1116(例如内存)。数据存储1116可以是SoC 1104的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1116可以容量足够大以存储神经网络的多个实例。数据存储1112可以包括L2或L3高速缓存1112。对数据存储1116的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器1114关联的内存的引用。
SoC 1104可以包括一个或更多个处理器1110(例如嵌入式处理器)。处理器1110可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子***。启动和功率管理处理器可以是SoC 1104启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助***低功率状态转换、SoC 1104热和温度传感器管理和/或SoC 1104功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC 1104可以使用环形振荡器检测CPU 1106、GPU 1108和/或加速器1114的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 1104置于较低功率状态和/或将车辆1100置于司机安全停车模式(例如使车辆1100安全停车)。
处理器1110可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子***,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器1110可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持***设备(例如定时器和中断控制器)、各种I/O控制器***设备和路由逻辑。
处理器1110可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子***。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持***设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器1110可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子***。
处理器1110可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器1110可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1170、环绕相机1174和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内***可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐***和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作***桌面正在使用并且GPU 1108无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 1108上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 1108的负担以提高性能和响应能力。
SoC 1104可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 1104可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 1104可以还包括大范围的***设备接口,以使能与***设备、音频编解码器、功率管理和/或其他设备通信。SoC 1104可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器1164、RADAR传感器1160等等)的数据,来自总线1102的数据(例如车辆1100的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器1158的数据。SoC 1104可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU 1106。
SoC 1104可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学***台的综合功能安全架构。SoC 1104可以比常规的***更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 1106、GPU 1108和数据存储1116结合时,加速器1114可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规***实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规***形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速器簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 1120)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 1108上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆1100的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 1104提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风1196的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规***形成对比的是,SoC 1104使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器1158所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器1162的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 1104的CPU 1118(例如分立的CPU或dCPU)。CPU 1118可以包括例如X86处理器。CPU 1118可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 1104之间潜在地不一致的结果,和/或监控控制器1136和/或信息娱乐SoC 1130的状态和健康状况。
车辆1100可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 1104的GPU 1120(例如分立的GPU或dGPU)。GPU 1120可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来本车辆1100的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆1100可以还包括网络接口1124,该网络接口可以包括一个或更多个无线天线1126(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1124可以用来使能通过因特网与云(例如与服务器1178和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1100提供关于接近车辆1100的车辆(例如车辆1100前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1100的协作自适应巡航控制功能的部分。
网络接口1124可以包括提供调制和解调功能并且使得控制器1136能够通过无线网络通信的SoC。网络接口1124可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆1100可以还包括可包括片外(例如SoC 1104外)存储装置的数据存储1128。数据存储1128可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆1100可以还包括GNSS传感器1158。GNSS传感器1158(例如GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器1158,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆1100可以还包括RADAR传感器1160。RADAR传感器1160可以甚至在黑暗和/或恶劣天气条件下也由车辆1100用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器1160可以使用CAN和/或总线1102(例如以传输RADAR传感器1160生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器1160可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器1160可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR***可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器1160可以帮助区分静态对象和运动对象,并且可以由ADAS***用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1100的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1100的车道的车辆成为可能。
作为一个示例,中程RADAR***可以包括高达1160m(前面)或80m(后面)的范围以及高达42度(前面)或1150度(后面)的视场。短程RADAR***可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器***可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
短程RADAR***可以在ADAS***中用于视盲点检测和/或变道辅助。
车辆1100可以还包括超声传感器1162。可以置于车辆1100的前面、后面和/或侧面的超声传感器1162可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1162,并且不同的超声传感器1162可以用于不同的检测范围(例如2.5m、4m)。超声传感器1162可以操作于功能安全级别的ASIL B。
车辆1100可以包括LIDAR传感器1164。LIDAR传感器1164可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器1164可以为功能安全级别的ASIL B。在一些示例中,车辆1100可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器1164(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器1164可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器1164可以具有例如近似1100m的广告范围,精度为2cm-3cm,支持1100Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1164。在这样的示例中,LIDAR传感器1164可以实现为可以嵌入到车辆1100的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器1164可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器1164可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆1100的每一侧一个。可用的3D闪光LIDAR***包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器1164可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器1166。在一些示例中,IMU传感器1166可以位于车辆1100的后轴的中心。IMU传感器1166可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器1166可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器1166可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器1166可以实现为微型高性能GPS辅助惯性导航***(GPS/INS),其结合微机电***(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器1166可以使得车辆1100能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器1166的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器1166和GNSS传感器1158可以结合到单个集成单元中。
该车辆可以包括置于车辆1100中和/或车辆1100周围的麦克风1196。除别的以外,麦克风1196可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机1168、广角相机1170、红外相机1172、环绕相机1174、远程和/或中程相机1198和/或其他相机类型。这些相机可以用来捕获车辆1100整个***周围的图像数据。使用的相机类型取决于实施例和车辆1100的要求,并且相机类型的任意组合可以用来提供车辆1100周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。相机中的每一个在本文关于图11A和图11B更详细地进行了描述。
车辆1100可以还包括振动传感器1142。振动传感器1142可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1142时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆1100可以包括ADAS***1138。在一些示例中,ADAS***1138可以包括SoC。ADAS***1138可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、视盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告***(CWS)、车道居中(LC)和/或其他特征和功能。
ACC***可以使用RADAR传感器1160、LIDAR传感器1164和/或相机。ACC***可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆1100前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆1100改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口1124和/或无线天线1126经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆1100前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC***可以包括I2V和V2V信息源中的任一个或者二者。给定车辆1100前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW***被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW***使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1160,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW***可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB***检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1160。当AEB***检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB***可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB***可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW***提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1100穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW***。LDW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA***是LDW***的变型。如果车辆1100开始离开车道,那么LKA***提供纠正车辆1100的转向输入或制动。
BSW***检测并向驾驶员警告汽车视盲点中的车辆。BSW***可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。***可以在驾驶员使用转弯信号时提供附加的警告。BSW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器1160,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW***可以在车辆1100倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW***包括AEB以确保应用车辆制动器以避免撞车。RCTW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器1160,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS***可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS***提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1100中,在结果冲突的情况下,车辆1100本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1136或第二控制器1136)的结果。例如,在一些实施例中,ADAS***1138可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS***1138的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW***时,监督MCU中的神经网络可以了解FCW***何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW***时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 1104的部件和/或作为SoC 1104的部件而被包括。
在其他示例中,ADAS***1138可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个***更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS***1138的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS***1138由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆1100可以还包括信息娱乐SoC 1130(例如车载信息娱乐***(IVI))。尽管被图示和描述为SoC,但是信息娱乐***可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 1130可以包括可以用来向车辆1100提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航***,后停车援助,无线电数据***,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 1130可以包括收音机、盘播放器、导航***、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、WiFi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器1134、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或***,和/或与其交互)和/或其他部件。信息娱乐SoC 1130可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS***1138的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 1130可以包括GPU功能。信息娱乐SoC 1130可以通过总线1102(例如CAN总线、以太网等)与车辆1100的其他设备、***和/或部件通信。在一些示例中,信息娱乐SoC 1130可以耦合至监督MCU,使得在主控制器1136(例如车辆1100的主和/或备用计算机)出现故障的情况下,信息娱乐***的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC 1130可以如本文所描述的将车辆1100置于司机安全停车模式。
车辆1100可以还包括仪表组1132(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组1132可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组1132可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)***信息、照明控件、安全***控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 1130和仪表组1132之间共享。换言之,仪表组1132可以作为信息娱乐SoC 1130的部分而被包括,或者反之亦然。
图11D为根据本公开一些实施例的基于云的服务器与图11A的示例自主车辆1100之间的通信的***示意图。***1176可以包括服务器1178、网络1190以及包括车辆1100在内的车辆。服务器1178可以包括多个GPU 1184(A)-1284(H)(这里统称为GPU 1184)、PCIe交换机1182(A)-1182(H)(这里统称为PCIe交换机1182)和/或CPU 1180(A)-1180(B)(这里统称为CPU 1180)。GPU 1184、CPU 1180和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口1188之类的高速互连和/或PCIe连接1186互连。在一些示例中,GPU 1184经由NVLink和/或NVSwitch SoC连接,并且GPU 1184和PCIe交换机1182经由PCIe互连连接。尽管图示出八个GPU 1184、两个CPU 1180和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器1178中的每一个可以包括任意数量的GPU 1184、CPU 1180和/或PCIe交换机。例如,服务器1178中的每一个可以包括八个、十六个、三十二个和/或更多GPU 1184。
服务器1178可以通过网络1190并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1178可以通过网络1190并且向车辆传输神经网络1192、更新的神经网络1192和/或地图信息1194,包括关于交通和道路状况的信息。对地图信息1194的更新可以包括对于HD地图1122的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1192、更新的神经网络1192和/或地图信息1194可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器1178和/或其他服务器)的经验产生。
服务器1178可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据任何一类或更多类别的机器学习技术来执行训练,包括但不限于诸如以下类别:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1190传输至车辆),和/或机器学习模型可以由服务器1178用来远程地监控车辆。
在一些示例中,服务器1178可以接收来本车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1178可以包括由GPU 1184供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器1178可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器1178的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1100中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来本车辆1100的定期更新,例如图像序列和/或车辆1100已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1100识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1100中的AI发生故障的结论,那么服务器1178可以向车辆1100传输信号,指示车辆1100的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器1178可以包括GPU 1184和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图12是适合用于实现本公开的一些实施例的示例计算设备1200的框图。计算设备1200可以包括直接或间接耦合以下设备的互连***1202:存储器1204、一个或更多个中央处理单元(CPU)1206、一个或更多个图形处理单元(GPU)1208、通信接口1210、输入/输出(I/O)端口1212、输入/输出组件1214、电源1216,一个或更多个呈现组件1218(例如,(一个或更多个)显示器)和一个或更多个逻辑单元1220。在至少一个实施例中,(一个或更多个)计算设备1200可以包括一个或更多个虚拟机(VM),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,GPU 1208中的一个或更多个可以包括一个或更多个vGPU,CPU 1206中的一个或更多个可以包括一个或更多个vCPU,和/或逻辑单元1220中的一个或更多个可以包括一个或更多个虚拟逻辑单元。这样,(一个或更多个)计算设备1200可以包括分立组件(例如,专用于计算设备1200的全GPU)、虚拟组件(例如,专用于计算设备1200的GPU的一部分)、或其组合。
尽管图12的各个方框被示出为利用线路经由互连***1202连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件1218(诸如显示设备)可被认为是I/O组件1214(例如,如果显示器是触摸屏)。作为另一个示例,CPU 1206和/或GPU1208可以包括存储器(例如,存储器1204可以表示除了GPU 1208的存储器、CPU 1206和/或其他组件之外的存储设备)。换言之,图12的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实***”和/或其他设备或***类型的此类类别之间不做区分,因为所有都被考虑在图12的计算设备的范围内。
互连***1202可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连***1202可以包括一个或更多个总线或链路类型,诸如工业标准架构(ISA)总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、***组件互连(PCI)总线、快速***组件互连(PCIe)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 1206可直接连接到存储器1204。进一步,CPU 1206可直接连接到GPU 1208。在组件之间存在直接或点对点连接的情况下,互连***1202可包括PCIe链路以执行连接。在这些示例中,PCI总线不需要被包括在计算设备1200中。
存储器1204可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备1200访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器1204可以存储计算机可读指令(例如,表示(一个或更多个)程序和/或(一个或更多个)程序元件,诸如操作***)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备1200存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类的已调制数据信号中,并且包括任何信息传递介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
CPU 1206可经配置以执行计算机可读指令中的至少一些以控制计算设备1200的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。CPU 1206可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。CPU 1206可包含任何类型的处理器,且可取决于所实施的计算设备1200的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备1200的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备1200还可包括一个或更多个CPU 1206。
除(一个或更多个)CPU 1206以外或替代(一个或更多个)CPU 1206,(一个或更多个)GPU 1208可被配置成执行计算机可读指令中的至少一些以控制计算设备1200的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。GPU 1208中的一个或更多个可为集成GPU(例如,有CPU 1206中的一个或更多个)和/或GPU 1208中的一个或更多个可为离散GPU。在实施例中,GPU 1208中的一个或更多个可以是CPU 1206中的一个或更多个的协处理器。GPU 1208可由计算设备1200使用以渲染图形(例如,3D图形)或执行通用计算。例如,GPU 1208可用于GPU上的通用计算(GPGPU)。GPU 1208可包含能够同时处置数百或数千软件线程的数百或数千核心。GPU 1208可响应于渲染命令(例如,经由主机接口从CPU1206接收的渲染命令)而产生输出图像的像素数据。GPU 1208可包含用于存储像素数据或任何其他合适数据(例如,GPGPU数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器1204的一部分被包括。GPU 1208可包含并行操作(例如,经由链路)的两个或两个以上GPU。链路可以直接连接GPU(例如,使用NVLINK)或可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每一GPU 1208可产生用于输出的不同部分或用于不同输出的像素数据或GPGPU数据(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)。每一GPU可包含其自己的存储器,或可与其他GPU共享存储器。
除CPU 1206和/或GPU 1208之外或替代CPU 1206和/或GPU 1208,逻辑单元1220可经配置以执行计算机可读指令中的至少一些以控制计算设备1200的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,(一个或更多个)CPU1206、(一个或更多个)GPU 1208、和/或(一个或更多个)逻辑单元1220可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元1220中的一个或更多个可为CPU 1206和/或GPU 1208中的一个或更多个中的一部分和/或集成于CPU 1206和/或GPU 1208中的一个或更多个和/或逻辑单元1220中的一个或更多个可为离散组件或以其他方式在CPU 1206和/或GPU 1208外部。在实施例中,逻辑单元1220中的一个或更多个可以是CPU 1206中的一个或更多个和/或GPU 1208中的一个或更多个的协处理器。
逻辑单元1220的示例包括一个或更多个处理核心和/或其组件,诸如数据处理单元(DPU)、张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理群集(GPC)、纹理处理群集(TPC)、流多处理器(SM)、树横向单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、***组件互连(PCI)或快速***组件互连(PCIe)元件等。
通信接口1210可以包括使计算设备1200能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口1210可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网。在一个或更多个实施例中,逻辑单元1220和/或通信接口1210可以包括一个或更多个数据处理单元(DPU)以将通过网络和或通过互联***1202接收的数据直接传输到一个或更多个GPU 1208(例如,一个或更多个GPU1208的存储器)。
I/O端口1212可以使得计算设备1200能够逻辑地耦合到包括I/O组件1214、(一个或更多个)呈现组件1218和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备1200中。说明性I/O组件1214包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。I/O组件1214可以提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(NUI)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。NUI可实现与计算设备1200的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备1200可以包括用于手势检测和识别的深度相机,诸如立体相机***、红外相机***、RGB相机***、触摸屏技术和这些的组合。另外,计算设备1200可包含使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的部分)。在一些示例中,计算设备1200可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
电源1216可包括硬连线电源、电池电源或其组合。电源1216可向计算设备1200提供电力以使得计算设备1200的组件能够操作。
呈现组件1218可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件1218可从其他组件(例如,GPU1208、CPU1206、DPU等)接收数据,且输出该数据(例如,作为图像、视频、声音等)。
示例数据中心
图13示出了可在本公开的至少一个实施例中使用的示例数据中心1300。数据中心1300可包括数据中心基础设施层1310、框架层1320、软件层1330和/或应用层1340。
如图13所示,数据中心基础设施层1310可以包括资源协调器1312、分组的计算资源1314和节点计算资源(节点C.R.s)1316(1)-1316(N),其中“N”表示任何完整的正整数。在至少一个实施例中,节点C.R.s 1316(1)-1316(N)可包括,但不限于任何数量的中央处理单元(CPU)或其他处理器(包括DPU、加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等),存储器设备(例如,动态只读存储器),存储设备(例如,固态或磁盘驱动器),网络输入/输出(NW I/O)装置、网络交换机、虚拟机(VM)、功率模块和/或冷却模块,等等。在一些实施例中,来自节点C.R.s 1316(1)-1316(N)中的一个或更多个节点C.R.s可对应于具有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点C.R.s1316(1)-13161(N)可包括一个或更多个虚拟组件,诸如vGPU、vCPU等,和/或节点C.R.s1316(1)-1316(N)中的一个或更多个可对应于虚拟机(VM)。
在至少一个实施例中,分组的计算资源1314可包括容纳在一个或更多个机架(未示出)内的节点C.R.s 1316的单独分组,或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组的计算资源1314内的节点C.R.s 1316的单独分组可包括可被配置或分配来支持一个或更多个工作负荷的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括CPU、GPU、DPU和/或其他处理器的若干节点C.R.s 1316可以分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负荷。一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和/或网络交换机。
资源协调器1312可配置或以其他方式控制一个或更多个节点C.R.s 1316(1)-1316(N)和/或分组的计算资源1314。在至少一个实施例中,资源协调器1312可以包括用于数据中心1300的软件设计基础设施(SDI)管理实体。资源协调器1312可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图13所示,框架层1320可以包括作业调度器1333、配置管理器1334、资源管理器1336和/或分布式文件***1338。框架层1320可以包括支持软件层1330的软件1332和/或应用层1340的一个或更多个应用1342的框架。软件1332或应用1342可分别包含基于网络的服务软件或应用,例如由Amazon(亚马逊)网络服务、Google Cloud(谷歌云)和MicrosoftAzure提供的那些。框架层1320可以是但不限于可以利用分布式文件***1338进行大规模数据处理(例如,“大数据”)的免费和开源的软件网络应用框架(如Apache SparkTM(下文称为“Spark”))的类型。在至少一个实施例中,作业调度器1333可以包括Spark驱动器以促进调度由数据中心1300的不同层支持的工作负荷。配置管理器1334可以能够配置不同层,诸如软件层1330和框架层1320(其包括用于支持大规模数据处理的Spark和分布式文件***1338)。资源管理器1336可以能够管理被映射到分布式文件***1338和作业调度器1333或被分配用于支持分布式文件***1338和作业调度器1333的集群的或分组的计算资源。在至少一个实施例中,集群的或分组的计算资源可包括在数据中心基础设施层1310的分组的计算资源1314。资源管理器1336可与资源协调器1312协调以管理这些被映射或分配的计算资源。
在至少一个实施例中,在软件层1330中包括的软件1332可包括由节点C.R.s 1316(1)-1316(N)、分组的计算资源1314和/或框架层1320的分布式文件***1338中的至少部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
在至少一个实施例中,在应用层1340中包括的应用1342可包括由节点C.R.s 1316(1)-1316(N)、分组的计算资源1314和/或框架层1320的分布式文件***1338中的至少部分使用的一个或更多个类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组应用、认知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
在至少一个实施例中,配置管理器1334、资源管理器1336和资源协调器1312中的任一个可基于在任何技术上可行的方式中获取的任何量和类型的数据来实现任何数量和类型的自修改动作。自修改动作可使数据中心1300的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或较差执行部分。
根据本文描述的一个或更多个实施例,数据中心1300可包括工具、服务、软件或其他资源来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推断信息。例如,可以通过使用以上相对于数据中心1300描述的软件和/或计算资源根据神经网络架构来计算权重参数来训练(一个或更多个)机器学习模型。在至少一个实施例中,对应于一个或更多个神经网络的经训练或部署的机器学习模型可用于通过使用通过一种或多种训练技术(诸如但不限于本文中描述的那些训练技术)计算的权重参数,使用上文相对于数据中心1300描述的资源来推断或预测信息。
在至少一个实施例中,数据中心1300可使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上文所描述的一或更多个软件和/或硬件资源可被配置为允许用户训练或执行对信息的推断的服务,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图12的(一个或更多个)计算设备1200的一个或更多个实例上实现——例如,每个设备可以包括(一个或更多个)计算设备1200的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、NAS等)的情况下,后端设备可被包括作为数据中心1300的一部分,数据中心1300的示例在本文中关于图13更详细地描述。
网络环境的组件可经由网络彼此通信,网络可为有线的、无线的或为两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(PSTN))和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不被包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以被包括在网络环境中)。在对等网络环境中,本文针对服务器所描述的功能可在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件***,服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可分别包含基于网络的服务软件或应用。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是但不限于如可以使用分布式文件***进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架。
基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
(一个或更多个)客户端设备可以包括本文关于图12所描述的(一个或更多个)示例计算设备1200的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被实现为个人计算机(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.一种方法,包括:
至少基于环境的第一状态,使用至少部分模拟的数据,确定一个或更多个活动者的至少一个第一位置;
将第一数据应用于深度神经网络DNN以使用所述一个或更多个活动者的所述至少一个第一位置来生成对所述一个或更多个活动者的至少一个第二位置的一个或更多个预测;
将对应于所述一个或更多个预测的第二数据应用于至少一个机器学习模型MLM以至少部分地基于所述一个或更多个预测生成对应于本车辆的一个或更多个动作的预测动作;
至少基于所述环境的第二状态,使用价值函数将一个或更多个输出分配给所述预测;以及
至少基于所述一个或更多个输出更新所述至少一个MLM的一个或更多个参数。
2.根据权利要求1所述的方法,其中所述至少一个MLM解码所述DNN的潜在空间的至少一部分,以生成对应于所述一个或更多个动作的所述预测动作。
3.根据权利要求1所述的方法,进一步包括使用所述DNN预测所述一个或更多个活动者的一个或更多个位置,其中所述确定一个或更多个活动者的所述至少一个第一位置包括基于活动者的建模行为调整预测的一个或更多个位置中的至少一个以生成所述至少一个第一位置。
4.根据权利要求1所述的方法,所述第二数据编码所述本车辆的所述一个或更多个动作的一个或更多个目标。
5.根据权利要求1所述的方法,其中所述DNN包括使用模仿学习训练的DNN。
6.根据权利要求1所述的方法,其中所述一个或更多个动作的预测是使用所述至少一个MLM的活动者网络做出的,并且所述一个或更多个参数中的至少一个属于对应于所述至少一个MLM的评价者网络。
7.根据权利要求1所述的方法,其中所述一个或更多个动作包括所述本车辆的一个或更多个轨迹。
8.根据权利要求1所述的方法,其中所述一个或更多个活动者的至少一个第二位置对应于活动者的轨迹,并且所述方法包括使用机械运动算法扩展所述轨迹以生成扩展后的轨迹,其中所述一个或更多个输出对应于所述扩展后的轨迹。
9.根据权利要求1所述的方法,其中所述一个或更多个活动者包括所述本车辆和至少一个其他车辆。
10.根据权利要求1所述的方法,包括:
使用所述环境的所述第二状态确定所述本车辆和所述环境中的另一对象之间的碰撞的可能性;以及
至少基于所述碰撞的可能性计算所述一个或更多个输出。
11.一种处理器,包含:一个或更多个电路,用于使用深度神经网络DNN作为用于模拟的世界模型,并应用增强学习来使用所述模拟训练至少一个MLM以生成对本机器的一个或更多个动作的预测。
12.根据权利要求11所述的处理器,其中所述DNN的潜在空间被解码为用于所述模拟的所述世界模型的状态以应用增强学习来使用所述模拟训练所述至少一个MLM。
13.根据权利要求11所述的处理器,其中所述DNN包括使用模拟学习训练的DNN。
14.根据权利要求11所述的处理器,其中所述至少一个MLM被训练以生成对车辆的轨迹的预测。
15.根据权利要求11所述的处理器,其中使用价值函数来应用增强学习,并且其中一个或更多个价值函数神经网络被训练以生成对所述价值函数的一个或更多个输出的预测。
16.一种***,包括:
一个或更多个处理单元;
一个或更多个存储指令的存储器单元,所述指令在由所述一个或更多个处理单元执行时,使所述一个或更多个处理单元执行操作,所述操作包括:
接收由环境中本车辆的一个或更多个传感器生成的传感器数据;
至少部分地基于所述传感器数据,确定一个或更多个活动者的至少一个第一位置;
将指示所述至少一个第一位置的第一数据应用于深度神经网络DNN以使用所述一个或更多个活动者的所述至少一个第一位置来生成对所述一个或更多个活动者的至少一个第二位置的一个或更多个预测;
将对应于所述一个或更多个预测的第二数据应用于神经网络以生成对价值函数的一个或更多个输出的一个或更多个预测;
确定对应于所述一个或更多个输出的一个或更多个驾驶策略;以及
传输数据使所述本车辆基于所述一个或更多个驾驶策略来执行一个或更多个动作。
17.根据权利要求16所述的***,其中所述价值函数包括状态价值函数,并且所述价值函数的一个或更多个状态对应于一个或更多个时间和所述至少一个第二位置在所述潜在空间中的一个或更多个位置。
18.根据权利要求16所述的***,其中所述第二数据编码所述一个或更多个驾驶策略的一个或更多个目标,并且所述一个或更多个输出对应于所述一个或更多个目标。
19.根据权利要求16所述的***,其中所述神经网络解码所述DNN的潜在空间的至少一部分以生成对所述一个或更多个输出的所述一个或更多个预测。
20.根据权利要求16所述的***,其中,所述***被包括在以下各项中的至少一项中:
自主或半自主机器的控制***;
自主或半自主机器的感知***;
用于执行模拟操作的***;
用于执行深度学习操作的***;
使用边缘设备实现的***;
使用机器人实现的***;
合并一个或更多个虚拟机VM的***;
至少部分在数据中心中实现的***;或
至少部分使用云计算资源实现的***。
CN202180022518.3A 2020-11-01 2021-11-01 自主***中用于行为预测的基于模型的增强学习及应用 Pending CN115315709A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063108432P 2020-11-01 2020-11-01
US63/108,432 2020-11-01
PCT/US2021/072157 WO2022094624A1 (en) 2020-11-01 2021-11-01 Model-based reinforcement learning for behavior prediction in autonomous systems and applications

Publications (1)

Publication Number Publication Date
CN115315709A true CN115315709A (zh) 2022-11-08

Family

ID=81380207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180022518.3A Pending CN115315709A (zh) 2020-11-01 2021-11-01 自主***中用于行为预测的基于模型的增强学习及应用

Country Status (5)

Country Link
US (1) US20220138568A1 (zh)
JP (1) JP2023548721A (zh)
CN (1) CN115315709A (zh)
DE (1) DE112021001994T5 (zh)
WO (1) WO2022094624A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028663A (zh) * 2023-03-29 2023-04-28 深圳原世界科技有限公司 三维数据引擎平台
CN116321239A (zh) * 2023-05-09 2023-06-23 深圳大学 基于无人机辅助的低功耗广域网通信的链路状态优化方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12001958B2 (en) * 2020-03-19 2024-06-04 Nvidia Corporation Future trajectory predictions in multi-actor environments for autonomous machine
US11858514B2 (en) 2021-03-30 2024-01-02 Zoox, Inc. Top-down scene discrimination
US11810225B2 (en) * 2021-03-30 2023-11-07 Zoox, Inc. Top-down scene generation
CN113095481B (zh) * 2021-04-03 2024-02-02 西北工业大学 一种基于并行自我博弈的空战机动方法
US20230040007A1 (en) * 2021-08-06 2023-02-09 Infineon Technologies Ag Scene-Adaptive Radar
US11847598B2 (en) * 2021-08-13 2023-12-19 Edgeverve Systems Limited Method and system for analyzing process flows for a process performed by users
US20230127576A1 (en) * 2021-10-21 2023-04-27 Toyota Motor Engineering & Manufacturing North America, Inc. Systems and methods for coordinated vehicle lane assignment using reinforcement learning
EP4300132A1 (en) * 2022-07-01 2024-01-03 Infineon Technologies AG Radar device and method of operating a radar device
KR102573526B1 (ko) * 2022-07-08 2023-09-06 주식회사 노타 강화학습 모델을 이용하여 연동 그룹 내 신호기의 교통신호를 제어하는 장치 및 방법
CN116048085B (zh) * 2023-02-03 2023-11-07 江南大学 一种移动机器人的故障估计和容错迭代学习控制方法
CN116229318B (zh) * 2023-02-24 2023-09-22 湖北联投咨询管理有限公司 基于分向数据的信息解析***
CN117319451B (zh) * 2023-11-28 2024-02-27 爱瑞克(大连)安全技术集团有限公司 基于多模态大数据的城市级消防物联网监管***及其方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028663A (zh) * 2023-03-29 2023-04-28 深圳原世界科技有限公司 三维数据引擎平台
CN116028663B (zh) * 2023-03-29 2023-06-20 深圳原世界科技有限公司 三维数据引擎平台
CN116321239A (zh) * 2023-05-09 2023-06-23 深圳大学 基于无人机辅助的低功耗广域网通信的链路状态优化方法

Also Published As

Publication number Publication date
WO2022094624A1 (en) 2022-05-05
JP2023548721A (ja) 2023-11-21
US20220138568A1 (en) 2022-05-05
DE112021001994T5 (de) 2023-01-19

Similar Documents

Publication Publication Date Title
US11989642B2 (en) Future object trajectory predictions for autonomous machine applications
US11790230B2 (en) Distance to obstacle detection in autonomous machine applications
US11688181B2 (en) Sensor fusion for autonomous machine applications using machine learning
US11675359B2 (en) Path detection for autonomous machines using deep neural networks
US11704890B2 (en) Distance to obstacle detection in autonomous machine applications
US11884294B2 (en) Lane change planning and control in autonomous machine applications
US11885907B2 (en) Deep neural network for detecting obstacle instances using radar sensors in autonomous machine applications
US20210241004A1 (en) Object fence generation for lane assignment in autonomous machine applications
EP3832341A1 (en) Deep neural network for detecting obstacle instances using radar sensors in autonomous machine applications
US20210156963A1 (en) Deep neural network for detecting obstacle instances using radar sensors in autonomous machine applications
US20220138568A1 (en) Model-based reinforcement learning for behavior prediction
US20200210726A1 (en) Distance to obstacle detection in autonomous machine applications
CN114450724A (zh) 用于自主机器应用的多活动者环境中的未来轨迹预测
CN110618678A (zh) 自主机器应用中的行为引导路径规划
CN114155272A (zh) 自主机器应用中的自适应目标跟踪算法
CN112904370A (zh) 用于激光雷达感知的多视图深度神经网络
CN115136148A (zh) 投影使用鱼眼镜头捕获的图像用于自主机器应用中的特征检测
US20220135075A1 (en) Safety decomposition architecture for autonomous machine applications
US20230213945A1 (en) Obstacle to path assignment for autonomous systems and applications
US20230049567A1 (en) Deep neural network for detecting obstacle instances using radar sensors in autonomous machine applications
CN117584956A (zh) 用于自主***的使用未来轨迹预测的自适应巡航控制
CN115701623A (zh) 自主机器应用中范围图像映射的置信传播
CN117581117A (zh) 自主机器***和应用中使用LiDAR数据的动态对象检测
CN117516565A (zh) 用于在自主***和应用中导航的车道偏置
WO2024019922A1 (en) Ground surface estimation using depth information for autonomous systems and applications

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