谷歌ChauffeurNet:训练能够鲁棒地驾驶实车的网络
摘要:我们的目标是通过模仿学习训练出能足够鲁棒地驾驶真实车辆的网络。我们发现单纯的行为模仿不能应对复杂的驾驶场景,即使我们利用感知系统预处理传感器输入,同时利用控制器在车辆上执行模型输出:3000万量级的学习样本仍然不够。我们尝试利用在合理驾驶的数据上附加扰动得到的合成数据来辅助学习,创造出一些特别的驾驶情形,如车辆发生碰撞或驶离道路。我们不是纯粹模仿所有合理驾驶的数据,而是在模仿损失上增加了一些损失,用于惩罚不良的行为并鼓励学习的进展。在合理驾驶的数据上增加的扰动为这些损失提供了重要信号,并导致学习得到的模型具有鲁棒性。我们证明了ChauffeurNet模型可以应付仿真环境中的复杂情形且能够合理地应对随机因素,同时进行了实验对本文提出的各项改进的重要性加以说明。最后我们展示了使用训练得到的模型在现实世界中驾驶汽车的效果。
关键词:深度学习 mid-mid驾驶 驾驶行为学习 轨迹预测
1.介绍
我们的第一个发现是,即使在拥有3000万个驾驶样本并使用中级输入和中级输出表示减轻感知与控制负担的条件下,单纯的模仿学习依然不能达到目标。例如我们发现这种情形:本车会与一辆停在狭窄街道一侧的车发生碰撞或者卡在这辆车后不动,然而此时避让和超车都是完全可行的。关键的挑战是我们需要闭环地运行系统,而误差的累积将会导致驾驶情形偏离训练时的分布。这一结果是单纯的模仿学习在驱动车辆驾驶领域具有局限性的很有价值的证据。此外我们还发现在模仿损失的基础上,增加一些抑制不良行为并鼓励学习进展的损失,同时增加附加了扰动的合成驾驶轨迹可以克服这一挑战。这些改进使得模型能够接触到发生碰撞和驶出道路等非常规行为,同时损失函数的增大将引导模型避免这些行为。正是由于采用中级的输入输出表示,我们才能得到大量这样的合成驾驶轨迹。这些扰动很难从原始传感器输入或直接馈送到车辆的控制器输出中生成。
我们首先在仿真中评估整个系统以及进行损失函数扩增和数据扩增的重要性,之后展示最终模型如何在现实世界中驾驶汽车,并协调处理涉及其他交通参与者、转弯、停车标志和交通信号灯等对象的驾驶情形。变道等具有高度互动性的驾驶情形,仍然需要在强化学习的框架内进行大量的探索。这就要求实现对其他交通参与者例如行人的模拟,而这种模拟也是一个正在迅速发展的值得探索的研究领域。本文的贡献可以理解为:在没有使用强化学习的条件下,我们仍然可以用纯粹的离线数据来完成更多的驾驶学习任务。
2. 相关工作
ALVINN上数十年的工作(Pomerleau(1989))揭示了浅层神经网络如何直接利用相机数据和激光测距数据使车辆沿着道路行驶。以端到端的方式学习自主驾驶在近些年掀起新的热潮。Chen等人最近的工作(2015)展示了使用一个卷积网络来预测可行驶空间,例如和前方车辆的距离。预测的可行驶空间可用于控制器的编程,控制在高速公路上行驶的车辆。NVIDIA的研究者们(Bojarski等人(2016,2017))展示了如何训练一个端到端的深度卷积神经网络,利用相机输出的数据作为输入,控制车辆的转向。Xu等人同样利用相机输出的数据,训练了一个神经网络用于预测离散的或连续的动作。Codevilla等人(2018)也训练了一个网络,使用相机的输出作为输入,使用高级的控制指令来输出对转向和加速度的控制。Kuefler等人(2017)使用生成对抗模仿学习(GAIL),使用简单的affordance-style特征作为输入,以克服基于行为复制策略得到的模型中经常出现的过大误差,因而对于扰动有更好的鲁棒性。Hecker等人最近(2018)训练了一个使用360度环视相机输出作为输入,包含目标路线规划模块的驾驶模型,可以预测转向和车速。CARLA模拟器(Dosovitskiy等人(2017))在Sauer等人的工作(2018)中都有用到,它可以基于传感器数据估计若干个可行驶空间并在仿真的城市环境中驾驶车辆。Muller等人(2018)利用和本文思路相似的中级表示,在仿真环境中使用CARLA训练了一个系统。具体的方法是从一个场景分割网络中训练驾驶策略,并输出高级的控制指令,方便了后续基于迁移学习的方法利用现实世界驾驶数据训练得到的一个不同的场景分割网络。Pan等人(2017)同样描述了如何利用基于学习的intermediate场景标注方法,将仿真环境中训练得到的模型向真实世界中迁移。Shalev-Shwartz等人(2016)提到在模拟器中使用强化学习训练机器完成诸如变道等复杂的且具有高度交互性驾驶任务。目前已经有机器学习之外的大量的车辆运动规划方面的工作,Parden等人(2016)对此给出了一个很好的调研。
3.模型架构
3.1输入输出表示
首先描述网络如何处理俯视的输入表示,进而输出可行驶的轨迹。在任何时间t,本车状态可以俯视坐标系中的坐标pt,θt,st来表示,其中pt=(xt,yt)表示位置,θt表示航向角或行驶方向,st表示速度。俯视的坐标系按照以下规则选定:本车在当前时刻t=0的位置p0始终位于图像中的固定位置(u0,v0)。为了在训练阶段扩增数据,每一个训练样本都在θ0±Δ的角度范围内随机选择坐标系的方向,其中θ0表示本车在当前时刻t=0的航向角或行驶方向。俯视图由一组分辨率为W×H的图像表示,地面的采样分辨率为φ米/像素。随着本车的移动,这些环境视图也发生移动,因此本车总是观察一个固定前视范围内的环境,即[Rforward=(H-v0)φ]米。这样就模拟出了车载的传感器只观察车辆前方Rforward米范围内的环境的情形。
如图1所示,模型的输入由几个大小为W×H,并且调整到俯视坐标系的图像组成。(a)路线图:一幅3通道彩色图像,包含各种地图特征如车道、停车标志、人行横道和路缘等。(b)交通信号灯:灰度图像的时间序列,序列中的每一帧表示一个过去时间步的交通信号灯状态。我们在每一帧中为每个车道的中心线着色,最亮的灰度级对应红灯,中间灰度级对应黄灯,较暗的灰度级对应绿灯或未知信号灯。(c)限速:单通道图像,车道中心的着色灰度与本车道对应的限制车速成比例。(d)路线:驾驶的目标路线,它由一个路线规划模块产生。(e)本车边界框:显示了本车在当前时间t=0的完整边界框。(f)环境中的动态对象:图像的时间序列,序列中用有向边界框的形式显示所有的动态物体(车辆,骑自行车者,行人等)。(g)本车的历史位姿:本车的在各个历史时刻的位姿,用单个灰度图像中某个点的运动轨迹表示。
我们使用δt的固定时间间隔,来采样过去或者未来时间点上的信息,例如上述输入中的交通信号灯状态和动态对象状态。在过去的Tscene秒内对交通信号灯和动态对象进行采样,在过去的Tpose秒甚至更长的时间间隔内对本车的位姿进行采样。这种简单的输入表示,特别是用边界框表示其他动态对象,使得从仿真或实际感知系统记录的检测和跟踪对象日志中生成输入数据变得更加容易。这样在实车运行之前,就可以在闭环仿真中完成测试和验证的工作。仿真数据的利用,使得模型可以充分探索现实中较少发生的驾驶情形,从而改进模型。例如在现实世界中,我们很难获得与发生碰撞相关的数据。使用二维的俯视图还意味着可以实现有效的卷积输入,允许以灵活且易读的方式表示各种数据以及它们的空间关系。使用I表示上面列举的输入图像的集合,ChauffeurNet模型便以这些输入为基础反复预测本车的未来位姿,如图1(h)中绿色的点所示。
公式1中,当前位姿p0是已知的输入,然后ChauffeurNet执行N次迭代并输出预测的未来轨迹{ pδt,p2δt,…,pNδt }和如未来速度等一些其他的属性。该轨迹可以输入到优化控制器内,以计算出具体的驾驶控制指令(例如转向和制动命令)。当然,这些控制指令要满足车辆动力学约束。不同类型的车辆可能利用不同的控制输出来实现相同的驾驶轨迹,这也印证了训练网络直接输出低层次的转向和加速度控制指令在这里是不太合适的。
3.2 模型设计
概括地说,驾驶模型由如图2所示的若干部分组成。图中(a)部分是ChauffeurNet模型的主要部分,由特征提取卷积网络(FeatureNet)组成。FeatureNet使用中级输入数据来创建可由其他网络共享的特征表示。这些特征被本车的循环神经网络(AgentRNN)使用,以迭代地预测驾驶轨迹中的后继点。轨迹中时刻t对应的点用位置pt=(xt,yt),航向角θt和速度st来描述。AgentRNN还在未来的每个时间步上,以heatmap的形式预测车辆的边界框。图的(b)部分可以看到另外两个网络,它们使用相同的特征表示作为输入共同训练。Road Mask网络预测视野中的可驾驶区域(道路与非道路),感知循环网络(PerceptionRNN)迭代地预测描述空间分布的heatmap。利用和主要任务共享的特征表示来很好地完成这些附加任务,改进了模型在完成主要任务基础上的泛化能力。图2(c)显示了训练模型过程中使用的各种损失,这些损失将在下面详细讨论。
图3更详细地说明了ChauffeurNet模型。图1中的输入传递给具有skip-connections结构的卷积神经网络FeatureNet。FeatureNet输出的特征表示F中包含了环境的上下文信息。这些特征被提供给AgentRNN,并由AgentRNN基于一系列条件预测驾驶轨迹的下一个点pk以及预测本车边界框的heapmap:Bk。这些条件包括FeatureNet得到的特征表示F,迭代次数k:{1,…,N},对AgentRNN的过去获得的预测结果的记忆Mk-1,以及在前一次迭代中预测的本车边界框heatmap:Bk-1。
存储单元Mk是由单通道图像组成的叠加式存储单元。AgentRNN的第k次迭代中,存储单元(单通道图像)在AgentRNN预测的图像位置pk处增加1个点,然后此存储单元传递给下一次迭代。AgentRNN在heatmap上输出对本车下一位姿的预测,使用arg-max操作可从heatmap中获取位姿的粗略估计pk。AgentRNN采用一个较浅的且具有一个全连接层的卷积网络,对姿势δpk进行亚像素级别的细化,并估计出航向θk和速度sk。在训练时AgentRNN会展开固定次数的迭代,下面要描述的损失将在这些展开的迭代步中进行累加。这样之所以可行,是因为我们使用的是非传统的RNN,采用的存储单元是显式设计的而不是通过学习产生的。
3.3系统架构
图4表示的是在自动驾驶系统中如何使用神经网络的系统层面的概述。通过感知系统处理真实世界传感器输出或者从仿真环境获取,更新本车和环境状态。目标路径从路径规划模块获得,且根据本车是否能够跟随过去的目标路径驾驶进行动态更新。环境信息被整合到图1所示的输入图像中并传递给RNN,由RNN输出未来的轨迹并送到优化控制器,进而输出驱动车辆的低级控制信号(在现实世界或仿真环境中)。
4. 模仿合理行为
4.1 模仿损失
4.1.1本车位置,航向角和边界框预测AgentRNN在每次迭代k产生三个输出:(1)基于空间softmax得到的预测路点在空间坐标系中的概率分布Pk(x,y)。(2)当前时间步k对应的预测本车边界框heatmap: Bk(x,y),基于逐像素的sigmoid激活函数生成,表示本车占据特定像素的概率。(3)回归获得的边界框航向角输出θk。掌握上述预测量真值的条件下,我们可以为每次迭代定义相应的损失:
其中上标gt表示对应的真值,而H(a,b)是交叉熵损失函数。注意[Pgtk]是二值图像,只有对应目标真值坐标的像素的值才被设置为1。
4.1.2本车预测预测网络在每一次迭代中,基于特征并且使用回归的方式,对粗略的路点估计结果生成亚像素级别细化的δpk以及每个点的速度估计sk。我们对这两种输出均采用L1损失函数:
4.2 对过去运动行为的dropout
训练过程中,过去的运动历史被作为输入之一提供给模型。训练过程中的运动历史来自合理驾驶的示范,因此网络可以基于过去作出僵化的推断而不是发现行为背后的具体原因,类似“欺骗”。在进行闭环推理时这种“欺骗“就会崩溃,因为运动历史来自于网络本身在过去的预测。这样训练出来的网络,也许会只有在过去运动历史中发现减速时,才在停车标志前停车,永远不会在闭环推理时在停车标志前停车。为了解决这个问题,我们引入了一个针对运动历史的dropout机制:对于50%的样本,在输入数据中的本车历史位姿这一通道中,仅仅保留本车当前位姿(u0,v0)。这一点迫使网络寻找环境中的其他线索,来解释训练样本中的提供的未来运动数据。
5. 在纯模仿之外的工作
5.1合成扰动
将模型作为闭环系统的一部分运行,随着时间的推移,输入数据会偏离训练时的分布。为了防止这种情况出现,我们在训练模型时对一部分本车轨迹的样本,附加现实中可能出现的各种扰动。轨迹的起点和终点保持不变,扰动施加在轨迹中点的周围,且在周围的多个轨迹点上得到平滑。定量地来看,各个轴上产生在[-0.5,0.5]m范围内均匀分布的随机抖动,航向角产生在[-π/3,π/3]弧度范围内的随机抖动。我们用平滑的轨迹拟合扰动后的点和原始的起点与终点。这类附加扰动的训练样本,使汽车在受到扰动后能够回到原来的行驶轨迹上。我们通过设置轨迹曲率的阈值,滤除了一些实际中不太可能出现的扰动后的轨迹。我们允许扰动后的轨迹与其他车辆发生碰撞或驶离道路,因为只有这样,网络才能在原有样本中没有类似情况出现的条件下,也能经历并且学会如何避免这样的行为。训练过程中我们给附加了扰动的样本的权重是真实样本的权重的1/10,避免学到的模型有始终在扰动状态下驾驶的倾向。
5.2 模仿损失之外的损失
5.2.1 碰撞损失
由于我们的训练数据没有任何实际碰撞,因此避免碰撞的想法是隐式的,不能很好地泛化。为了缓和这个问题我们增加了一个专门的损失函数,直接度量在每一个时间步上预测的边界框Bk与场景中所有物体的边界框真值的重叠率。
其中Bk是输出本车边界框预测的似然图,Objgtk是时间k对应的二值化的掩模图像,所有被其他动态物体(其他车辆,行人等)占据的像素的值都为1。训练过程中的任何时候,如果模型预测到将会发生碰撞,大的重叠率会造成的损失增加,进一步影响到模型更新的梯度,从而纠正这种错误。但是这种损失仅在训练的初始阶段有效,也就是在模型还没有能够预测出接近真值的位置时。在轨迹上附加扰动之后,这个问题得到了缓和。这是因为在附加扰动的样本中,人为制造出来的碰撞情形使得上述损失函数在训练过程中能够发挥出作用,影响模型更新的梯度。此外这种方法还达到了类似在强化学习中设置在线探索的效果。
5.2.2 驶离路面损失
轨迹扰动同时会产生车辆驶离道路或驶上路缘的情形。为了训练网络避免车辆驶上道路边缘,我们增加了一个专门的损失函数,在每一个时间步k上度量预测的本车边界框和表示视野中的道路和非道路区域二值掩模图像Roadgt的重叠率。
5.2.3 目标轨迹几何损失
我们希望显式地约束本车,使其沿着独立于速度曲线的目标轨迹行驶。通过用平滑曲线拟合目标路点,并将此曲线调整为俯视坐标系中的二值化图像,来对目标轨迹几何形状进行建模。该曲线的宽度被设定为和本车宽度相等。我们用类似定义碰撞损失的方式,通过预测的本车边界框和二值化的目标轨迹几何图像Geomgt的重叠率,度量这种与目标轨迹几何形状相关的损失。边界框的任何不与目标几何轨迹重叠的部分,都将被转化为惩罚值并加入损失函数中。
5.2.4 附加损失
与预测本车轨迹类似,循环网络也可以用来预测其他交通参与者。因此我们添加了一个感知循环网络PerceptionRNN,它使用FeatureNet创建的共享特征F和它自己在前一次迭代预测的heatmap:Objk-1作为输入,并预测每次迭代的heatmap:Objk。Objk(x,y)表示k时刻位置(x,y)被动态物体占据的概率。对于k=0的迭代步,使用动态对象的真值数据输入到PerceptionRNN中。
5.3 Imitation Dropout
总的来说我们的损失可能分为两组。模仿损失如下:
环境损失如下:
模仿损失导致模型模仿合理驾驶的示范行为,而环境损失抑制了诸如碰撞等不良行为。为了进一步增加环境损失的有效性,我们试验时使用了具有随机退出机制的模仿损失,称为"imitation dropout"。在实验中我们证明"imitation dropout"相比于简单地降低模仿损失的权重,可以得到更好的驾驶模型。在"imitation dropout"过程中,每个训练样本的模仿损失wimit被按照一定的概率随机置为0或1。整体损失由下式给出:
6. 总结
在本文中,我们介绍了让模仿学习在现实世界的完成驾驶任务也能拥有良好表现的研究经验。我们发现成功的关键在于,在合理驾驶行为的基础上附加扰动合成出各种驾驶情形,并增加适当的损失来抑制不良的行为。这些改进可以使模型学会如何避免发生碰撞和驶离道路,即使这些情形在合理驾驶的样本中很少出现。为了支持这一点,并更好地利用合理驾驶的数据,我们使用了中级的输入和输出表示,从而轻松混合真实和仿真数据并减轻学习感知和控制的负担。基于这些要素我们得到了一个足以驾驶真实车辆的模型。虽然该模型还没有完全实现与运动规划方法展开竞争,但我们认为这是机器学习驾驶模型迈出的一大步。通过在模拟中探索罕见和困难的情景,对合理的驾驶行为进行彻底的增强(也许是在强化学习框架中完成),将是提高这些模型的性能并将其用于具有高度交互性的交通场景的关键。
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
编辑推荐
最新资讯
-
直播|中国汽研:重型车温室气体企业平均方
2024-11-23 17:42
-
美国FCC正式划定5.9GHz频段用于C-V2X技术
2024-11-23 17:41
-
标准立项 | 《自主代客泊车 预期功能安全测
2024-11-23 16:13
-
长三角(盐城)智能网联汽车试验场气象多级
2024-11-23 16:11
-
CSAE汽车可靠性技术分会第二届委员会第二次
2024-11-23 16:09