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。 这些特征被馈送给 AgentRNN ,AgentRNN 预测驾驶轨迹上的下一个点 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} Mk−1和在上一次迭代中预测的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,Mk−1,Bk−1)
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) p</