端到端无人驾驶文献学习:ChauffeurNet: Learning to Drive by Imitating the Best and Synthesizing the Worst


Bansal, Mayank, Alex Krizhevsky, and Abhijit Ogale. “Chauffeurnet: Learning to drive by imitating the best and synthesizing the worst.” arXiv preprint arXiv:1812.03079 (2018).

1 简介

Alphabet旗下的自驾车子公司Waymo18年公开训练自驾车的研究成果,透过大量的真人驾驶数据,建立神经网络模型,不只学习正常情况的驾驶数据,Waymo还合成其他状况的数据,让模型学习如何应对行车中的干扰,该模型不但能够在充满挑战的模拟环境下正常驾驶,还能在封闭的真实环境中,驾驶真的车辆。

简单一句话来说,本文的工作可以总结如下:
先用一个前端感知系统对原始数据输入(原始雷达等)进行处理产生可处理(合成扰动)的中间数据输入(对于网络而言),然后提出了一个ChauffeurNet(RNN)来增强损失对车辆未来位置进行预测,输出车辆轨迹。

关键点

  • BEV:通过感知得到的信息作为输入,预测车辆未来的位置进行规划;
  • 增强损失:用额外的损失惩罚不理想事件和奖励进步去增强模仿损失;
  • 数据集:3千万的真实expert驾驶例子等同于连续60天的连续驾驶;
  • 前端感知:Waymo使用了一个前端感知来处理原始数据信息,然后产生end2end的输入信息;
  • ChauffeurNet:司机网络,RNN,输出车辆轨迹,然后转化为转向和加速度;
  • 增强数据:在中层表示上通过合成人工扰动和车辆轨迹,在闭环测试中积累错误案例来改变训练分布。

一些相关背景

  • 模仿学习是当时自动驾驶领域内较为主流且认为可行的方法;
  • End2End的概念方法在行业内并没有一个统一的定义,换句话说就是你可以定义自己的end2end;基本的思路都是通过image来产生车辆的控制信息;
  • 较小的数据集一般来说是不满足于纯模仿学习的,例如,需要考虑到车辆大部分时间保持直行,纠正车辆的行为偏好等;
  • 作者也在文章中提到了对存在高度交互的场景中强化学习可能会很重要,也将他们的工作定义在纯离线数据和无强化这两个标签上。

3 模型架构

3.1 输入输出表示

在这里插入图片描述
模型的输入由几个大小为W×H像素的图像组成,呈现在这个自顶向下的坐标系中。

  • (a)路线图:一种彩色(3通道)图像,显示各种地图特征,如车道、停车标志、人行横道、限制等。
  • (b)交通灯:一种灰度图像的时间序列,其中序列的每一帧表示过去每一步的交通灯的已知状态。 在每个框架内,用一个灰色的水平为每个车道中心着色,红色灯的最亮的水平,黄色灯的中间灰色水平,绿色或未知灯的暗水平;

对路线图和交通灯通道使用索引表示来减少输入通道的数量,并允许输入表示的可扩展性来表示更多的路线图特征或更多的交通灯状态,而不改变模型体系结构。

  • (c)限速:按已知限速比例着色的车道中心的单通道图像;
  • (d)路径:希望沿着的预定路径,由路径器生成(想想谷歌地图风格的路径);
  • (e)Current Agent Box: 这显示了agent车辆在当前时间 t = 0 t=0 t=0 时的完整包围框。
  • (f)Dynamic Boxes :显示所有潜在动态对象(车辆、骑自行车者、行人)作为定向框呈现的图像的时间序列。
  • (g)Past Agent Poses :agent的过去姿态被渲染成一个单一的灰度图像作为点的线索。

以一种固定时间 δ t δt δt采样的方法 采样任何过去或未来的时间信息,比如交通灯状态和动态目标状态;交通灯和动态目标在过去 T s c e n e T_{scene} Tscene 被采样,过去的 agent 姿态被采样在一个潜在的更长的间隔时间的 T p o s e T_{pose} Tpose秒。

  • (h)Future Agent Poses:当前姿态 p 0 p_0 p0是输入的已知部分,然后 ChauffeurNet 执行N次迭代并输出未来轨迹 { p δ t , p 2 δ t , . . . , p N δ t p_{δt}, p_{2δt}, ... , p_{Nδt} pδt,p2δt,...,pNδt} 以及其他属性,如未来速度。
    p t + δ t = C h a u f f e u r N e t ( I , p t ) \mathbf{p}_{t+δt} = ChauffeurNet(I, \mathbf{p}_t) pt+δt=ChauffeurNet(I,pt)
    这个轨迹可以被输入到一个控制优化器,该优化器在被驱动车辆的动力学所施加的特定约束范围内计算详细的驾驶控制(例如转向和制动命令)。

3.2 模型设计

在这里插入图片描述

  • part(a):由一个卷积特征网络组成(FeatureNet)利用输入数据生成一个可在各网络间共享的 digested contextual 特征表示;这些特征将提供给一个循环 agent 网络(agentRNN)迭代预测驾驶轨迹上的可行点,同时预测车辆 bounding box 每个时间步长上的空间热力图;
  • part(b):两个网络用同样的特征表示作为输入进行共同训练,Road Mask Network预测视野内的可行驶区域,循环感知网络(PerceptionRNN)迭代预测每次时间步长的其他车辆的空间热度图;
  • part(c):训练过程中的各种损失值。
    在这里插入图片描述

图三更详细地说明了 ChauffeerNet 模型。 图1中渲染过的输入通过跳过链接的方式被馈送到 large-receptive field convolutional FeatureNet,这个网络输出捕获环境上下文和意图的特征 F F F。 这些特征被馈送给 AgentRNNAgentRNN 预测驾驶轨迹上的下一个点 P K P_K PK,Agent bounding box 热力图 B k B_k Bk,条件是来自FeatureNet的特征F、迭代次数k∈{1、…、N}、AgentRNN过去预测的Memory M k − 1 M_{k-1} Mk1和在上一次迭代中预测的Agent bounding box 热力图 B_{k-1}。

p k , B k = A g e n t R N N ( k , F , M k − 1 , B k − 1 ) p_k, B_k = AgentRNN(k, F, M_{k-1}, B_{k-1}) pk,Bk=AgentRNN(k,F,Mk1,Bk1)

M k M_k Mk是单通道图像上的可加性Memory。 在AgentRNN迭代k时,在AgentRNN预测的位置PK处,Memory增加1,然后将该Memory馈送到下一次迭代。 AgentRNN在agent的下一个姿态上输出一个热力图图像,使用arg-max操作从这个热图中获得粗姿态预测 p k \mathbf{p}_k pk。 AgentRNN然后使用一个浅卷积元预测网络与一个完全连接的层,预测一个亚像素细化的姿态 δ p k δ\mathbf{p}_k δpk并估计航向 θ k θ_k θk和速度 s k s_k sk。 AgentRNN是在训练时间展开的,用于固定数量的迭代,下面描述的损失在未滚动迭代中被求和。 这是可能的,因为非传统的RNN设计,使用一个显式制作的Memory模型。

3.3 系统架构

在这里插入图片描述

图 4展示了自动驾驶系统中如何使用神经网络的系统级别概述。

在每一次,agent和环境的更新状态都是通过一个感知系统来获得的,该感知系统处理来自现实世界或模拟环境的感官输出。

预期的路径是从路径器获得的,并且是动态更新的,这取决于agent是否能够执行过去的意图。 环境信息被呈现到如图1描述的输入图像中, 并给到RNN输出未来轨迹。 这被输入到一个控制优化器,该优化器输出驱动车辆的低电平控制信号(在现实世界或模拟中)。

4 模仿Expert

4.1 模仿损失

4.1.1 Agent 位置方向和Box预测

AgentRNN 在k次迭代中每次输出3个值:

  • 概率分布 p k ( x , y ) \mathbf{p}_k(x,y) pk(x,y) 在空间Softmax之后获得的预测路径点的空间坐标;
  • agent预测box B k ( x , y ) B_k(x,y) Bk(x,y)的热力图;
  • 回归box方向 θ k θ_k θk

L p = H ( P k , P k g t ) L_p = H(P_k,P_k^{gt}) Lp=H(Pk,Pkgt)

L B = 1 W H ∑ x ∑ y H ( B k ( x , y ) , B k g t ( x , y ) ) L_B = \frac{1}{WH}\sum_{x}\sum_{y}H(B_k(x,y),B_k^{gt}(x,y)) LB=WH1xyH(Bk(x,y),Bkgt(x,y))

L θ = ∣ ∣ θ k − θ k g t ∣ ∣ 1 L_θ = ||θ_k-θ_k^{gt}||_1 Lθ=θkθkgt1

其中上标 g t gt gt 表示相应的地面真值, H ( a , b ) H(a,b) H(a,b) 是交叉熵函数。 请注意, p k g t \mathbf{p}_k^{gt} pkgt 是一个二进制图像,只有在地面真相目标坐标 ⌊ p k g t ⌋ \left \lfloor \mathbf{p}_k^{gt}\right \rfloor pkgt处的像素设置为一个。

4.1.2 agent 元预测

元预测网络对特征进行回归以生成粗路点预测的 sub-pixel 细化 δ p k δp_k δpk以及每次迭代时的速度估计为 s k s_k sk
L p − s u b p i x e l = ∣ ∣ δ p k − δ p k g t ∣ ∣ 1 L_{p-subpixel}=||δ\mathbf{p}_k-δ\mathbf{p}_k^{gt}||_1 Lpsubpixel=δpkδpkgt1

L s p e e d = ∣ ∣ s k − s k g t ∣ ∣ 1 L_{speed} = ||s_k-s_k^{gt}||_1 Lspeed=skskgt1

δ p k = p k g t − ⌊ p k g t ⌋ δ\mathbf{p}_k =\mathbf{p}_k^gt-\left \lfloor \mathbf{p}_k^{gt}\right \rfloor δpk=pkgtpkgt 的分数部分。

4.2 Past Motion Dropout

在训练中,由于过去运动的历史信息是由模型给出的,并且是由专家演示。那么网路就学会了以过去的行为去推断结果,而不是根据行为的根本原因去推断结果。在闭环推断中这种推断就会崩溃,因为过去的历史信息由网络过去的预测给出。

举例说明就是,这种经过训练的网络可以学习仅在停止标志处停止,如果在过去的历史中看到减速并且因此在闭环推理期间将永远不会在停止标志处停止。

为了解决这一问题,在过去的姿态历史上引入了一个dropout(其中50%的例子),只保留代理在过去代理中的当前位置 ( u 0 , v 0 ) (u_0,v_0) (u0v0),构成输入数据的通道。强制网络去关注其他线索。

5 纯模仿学习之外

在本节中,将超越 expert 演示的 vanilla cloning ,以便通过综合 expert 行为的变化来教模型阻止漂移和避免碰撞和越野驾驶等不良行为。

5.1 合成扰动

在这里插入图片描述

5.2 模仿损失之外

5.2.1 碰撞损失

非真实状态下的碰撞,通过度量每个时间步骤上预测 agent box B k B_k Bk 与 所有场景对象的 ground-truth box 的重复覆盖加入了特殊的损失函数:
L c o l l i s i o n = 1 W H ∑ x ∑ y B k ( x , y ) ⋅ O b j k g t ( x , y ) L_{collision}=\frac{1}{WH}\sum_{x}\sum_{y}B_k(x,y)· Obj_{k}^{gt}(x,y) Lcollision=WH1xyBk(x,y)Objkgt(x,y)

其中 B k B_k Bk 是输出 agent box 预测的似然映射, O b j k g t Obj_k^{gt} Objkgt是在时间步骤为 k k k的场景中一个二进制掩码,其所有像素都被其他动态对象(其他车辆、行人等)占用。

5.2.2 路径损失

扰动也会带来路径的偏移问题,设置了路径损失:
L o n r o a d = 1 W H ∑ x ∑ y B k ( x , y ) ⋅ ( 1 − R o a d g t ( x , y ) ) L_{onroad}=\frac{1}{WH}\sum_{x}\sum_{y}B_k(x,y)·(1-Road^{gt}(x,y)) Lonroad=WH1xyBk(x,y)(1Roadgt(x,y))

5.2.3 几何损失

显式地约束代理遵循与速度剖面无关的目标几何。 我们通过将平滑曲线拟合到目标路径点,并将该曲线绘制为自顶向下坐标系中的二值图像,对该目标几何进行建模。 此曲线的厚度设置为等于代理的宽度。

通过测量预测 agent box 与二进制目标几何图像 G e o m g t Geom^{gt} Geomgt的重叠来表示这种损失类似于碰撞损失。 框中与目标几何曲线不重叠的任何部分都作为损失函数的惩罚添加。
L g e o m = 1 W H ∑ x ∑ y B k ( x , y ) ⋅ ( 1 − G e o m g t ( x , y ) ) L_{geom}=\frac{1}{WH}\sum_{x}\sum_{y}B_k(x,y)·(1-Geom^{gt}(x,y)) Lgeom=WH1xyBk(x,y)(1Geomgt(x,y))
在这里插入图片描述

5.2.4 辅助损失

类似于 agent 的轨迹,其他 agent 的运动也可以通过递归网络来预测。 相应地添加了一个递归感知网络感知RNN,它使用FeatureNet创建的共享特征F和它自己的预测 O b j k − 1 Obj_{k-1} Objk1作为输入,并在每次迭代时预测一个热图 O b j k Obj_k Objk O b j ( x , y ) Obj(x,y) Obj(x,y)表示位置(x,y)在时间k被动态对象占据的概率。对于迭代次数 k = 0 k=0 k=0,PeceptionRNN在当前时间被馈送地面真相对象。
L o b j e c t s = 1 W H ∑ x ∑ y H ( O b j k ( x , y ) , O b j k g t ( x , y ) ) L_{objects} = \frac{1}{WH}\sum_{x}\sum_{y}H(Obj_k(x,y),Obj_k^{gt}(x,y)) Lobjects=WH1xyH(Objk(x,y),Objkgt(x,y))

5.3 模仿dropout

综上,可以把损失函数分为两个子组:

  • 模仿损失:
    L i m i t = { L p , L B , L θ , L p − p s u b p i x e l , L s p e e d } L_{imit} = \{L_p,L_B,L_θ,L_{p-psubpixel},L_{speed}\} Limit={ Lp,LB,Lθ,Lppsubpixel,Lspeed}
  • 环境损失
    L e n v = { L c o l l i s i o n , L o n r o a d , L g e o m , L o b j e c t s , L r o a d } L_{env} = \{L_{collision},L_{onroad},L_{geom},L_{objects},L_{road}\} Lenv={ Lcollision,Lonroad,Lgeom,Lobjects,Lroad}

模仿损失导致模型模仿expert的演示,而环境损失阻止不良行为,如碰撞。 为了进一步提高环境损失的有效性实验了随机丢弃模拟损失的随机子集的训练例子。

在实验中表明模仿dropout产生了一个更好的驾驶模型,而不是简单地低估模仿损失。 在模仿dropout期间,随机选择模仿损失wimit上的权重为0或1,对于每个训练示例具有一定的概率。 总体损失由:
L = w i m i t ∑ l ∈ L i m i t l + w e n v ∑ l ∈ L e n v l L = w_{imit} \sum_{\mathbb{l}\in L_{imit}} \mathbb{l} + w_{env} \sum_{\mathbb{l}\in L_{env}} \mathbb{l} L=wimitlLimitl+wenvlLenvl

6 实验

6.1 数据

训练模型的训练数据是通过随机抽样的段,真实世界的expert驾驶和删除其中的汽车长时间是固定的段。

输入视场为80米×80米( W φ Wφ Wφ = 80),当 agent 定位在 ( u 0 , v 0 ) (u_0,v_0) (u0v0)时,得到了64米的 R f o r w a r d R_{forward} Rforward的有效前向传感范围。

每个训练示例自顶向下坐标系的垂直轴在agent 当前航向的 Δ = ± 2 5 ∘ \Delta = \pm 25^\circ Δ=±25 范围内随机定向,以避免沿垂直轴行驶的偏差。

在推理过程中,渲染方向设置为agent 方向(∆=0)。 首先收集有关环境的先验图(路线图)和沿车道的速度限制的数据。 对于物体和交通灯等动态场景实体,采用了一个基于激光和相机数据的独立感知系统。表1列出了本文所有实验使用的参数值。 该模型在160ms内运行在NVIDIA特斯拉P100GPU上,详细细目见表2。
在这里插入图片描述

6.2 模型

  • M 0 M_0 M0:它做行为克隆与过去的运动dropout,以防止使用历史信息进行作弊。

  • M 1 M_1 M1:添加扰动而不修改损失。

  • M 2 M_2 M2:进一步添加了环境损失 L e n v L_env Lenv
    M_3和M4解决了不想模仿不良行为的问题

  • M 3 M_3 M3:是一种基线方法,在这种方法中,我们简单地降低了模仿损失的权重;

  • M 4 M_4 M4:使用了模仿dropout方法,dropout率为0.5。

表3列出了每个模型的配置。
在这里插入图片描述

6.3 闭环提升

为了在特定场景中评估学习模型,通过模拟重放段,直到一个缓冲周期 m a x ( T p o s e , T s c e n e ) max(T_{pose},T_{scene}) max(TposeTscene)过去。 这允许使用直到现在的所有重放段来生成第一个模型输入所呈现的快照。

在此输入上对模型进行评估,并将拟合的控制传递给模拟车辆动力学的车辆模拟器,从而将模拟的 agent 移动到其下一个姿态。 此时,模拟姿态可能与记录的姿态不同,但输入表示允许正确地呈现模型相对于新姿态的新输入。

这个过程被重复,直到段结束,评估场景特定的度量,如停止标志、与另一车辆的碰撞等。 在模拟过程中。 由于模型被用来驱动代理前进,这是一个闭环评估设置。

6.3.1 消融实验

在这里插入图片描述

  • Nudging for a Parked Car:在未分两车道线上距离stop标志任意距离的地方放置agent,然后在agent和stop标志间放置一辆停靠在右手边的车辆。(直线,弯道,5个不同的初始速度,共20个场景);
  • Trajectory Perturbation:在弯道上改变agent 的初始速度,起始位置生成了20个场景;
  • Slowing for a Slow Car:将代理放置在一条直线上,以不同的初始速度,并将另一辆汽车以不同但较慢的恒定速度放置在前面,总共产生20个场景变化,以评估缓慢的能力,然后跟随汽车前进。

6.3.2 输入消融测试

通过输入消融试验,我们希望测试最终的M4模型识别特定行为背后的正确因果因素的能力,方法是在存在或不存在正确因果因素的情况下测试模型的行为,同时保持其他条件不变。 在仿真中,我们评估了我们的模型在20个场景中,有和没有停止信号渲染,以及20个场景中有和没有其他车辆渲染。 该模型在所有场景中都表现出正确的行为,从而证实了它已经学会了对停止标志和停止车辆的正确特征作出响应。

6.3.3 日志数据模拟驾驶

对于这个评估,作者从实际驾驶测试数据(与训练数据分开)中获取日志,并使用训练过的网络使用车辆模拟器来驾驶汽车,保持其他一切不变。 动态对象、交通灯状态等。 都和日志里的一样。 这里展示了一些示例视频,它们说明了模型处理多个动态对象和道路控制的能力。

6.3.4 真实世界驾驶

通过将现有的 planner 模块替换为学习模型 M 4 M_4 M4,在自动驾驶汽车上评估了这个模型,并复制了在模拟中观察到的驾驶行为。 这些运行次运行的视频在这里是可用的,它们不仅说明了网络驱动能力的平滑性,而且还说明了它处理停止信号和转弯的能力,以及在完全闭环控制下在不偏离轨迹的情况下驱动长时间的能力。

6.4 开环评估

指的就是把state交给系统之后,评估预测的轨迹跟真实的轨迹之间的L2距离(将expert驾驶作为GT)。
在这里插入图片描述
在这里插入图片描述

6.5 失败模型

由于感受野只有前面64m和侧面40m,agent在T字路口(T-junctions)和高速路上表现不好。因为缺少足量的数据,一些特别的道路比如掉头(U-turns)和死胡同(cul-de-sacs)是完全没办法处理的。有时候系统会在低速略过别人的场景中卡住。有时候系统会给出不可行的几何路线(过大的旋转半径)以至于不能实现。系统在新的或者少见的场景中会有非常激进的超车行为。因此作者相信需要更多的模拟器方针来应对这些很多高互动或者是少见的场景。

6.6 采样速度剖面

在这里插入图片描述
通过迭代来确定纵向的速度样本,根据硬约束来限制概率分布采样点。

7 讨论

在本文中,作者进行了实验来展示模仿学习是怎么使在真实世界的驾驶变得更好。 它成功的关键是围绕 expert 行为人工合成各种情况,并增加适当的损失以阻止不良行为。

这种有条件的开发能够避免碰撞和越野驾驶,即使这些例子没有明确地出现在 expert 的演示中。为了支持它,并最好地利用 expert 数据,作者使用了中层输入和输出表示,这使得真实和模拟数据易于混合,并减轻了学习感知和控制的负担。

有了这些成分,我们就有了一个足够好的模型来驾驶一辆真正的汽车。 尽管如此,该模型还没有完全能与运动规划方法竞争,但对于机器学习驾驶模型来说这是一个很好的进步。

还有改进的余地:与End2End相比较的方法,研究模仿 dropout 的替代方法也是其中之一。 作者认为最重要的是,通过深入探索模拟中罕见和困难的场景来增强 expert 演示,也许在强化学习框架内,将是提高这些模型特别是对于高度交互场景的性能的关键。

猜你喜欢

转载自blog.csdn.net/Nick_cloud/article/details/109701213