End-to-end Interpretable Neural Motion Planner

  • 1 简介
    • 关键点
    • 一些背景信息
  • 3 深度结构化规划
    • 3.1 深度结构化规划
      • 输入表示
      • 骨干网络
      • 感知头
      • 成本量头
    • 3.2 有效推断
      • 输出参数化
      • 采样
    • 3.3 端到端学习
      • Perception Loss
      • Planning Loss
  • 4 实验
    • 关于数据集
    • 关于实验
      • 4.1 规划结果
      • 4.2 可解释性&消融实验
  • 5 结论
  • 参考文献

1 简介

由Uber高级技术小组与多伦多大学合作完成的End-To-End Interpretable Neural Motion Planner是一篇关于端到端的可解释的神经运动规划器文献,发在CVPR_2019上。论文通过将检测、感知、预测和计划整合到单个神经网络中,该神经网络生成单个模块的输出以及用于计划的成本函数。这些输出可以被检查,从而提高最终驾驶决策的可解释性。

关键点

从前文得到的一些关键信息,帮助理解全文:

  1. 动机(motivation):产生可解释中间表示帮助人理解机器生成的规划控制信息;
  2. 输入-中间表示-输出 :输入是原始雷达数据和HD地图,中间表示是3D检测和轨迹预测信息,输出是规划视野上车辆可选择位置的cost volume;
  3. 轨迹采样:用Sampling的方法采样轨迹,基于位置成本量捕获多模态轨迹信息;
  4. 数据集:北美几个城市的真实驾驶数据;
  5. 实验结果:更安全的规划轨迹;

一些背景信息

目前通用技术有两种:mid2mid,end2end;

  1. mid2mid(传统堆栈技术),优点:主问题子问题化,商业化成熟,具有人为选择的成分在其中,可解释性强,通过先验知识来进行行为决策;缺点:每个子问题的输入输出经过人为标准的选择可能会导致次优问题出现,子问题的impove不一定能够提高整个系统的表现,子问题划分越多计算时间越多,SDV(self-driving-vehicle)反应时间越慢;
  2. end2end(端到端驱动框架),优点:框架结构简单,理论可行,想法超前,通过修改模型框架的提高对系统表现有明显的提升;缺点:可解释性差,难以融合先验知识。

3 深度结构化规划

3.1 深度结构化规划

将 s=s=s={s0,s1,...,sT−1s^0,s^1,...,s^{T-1}s0,s1,...,sT−1} 看作是跨越未来时间步骤 T 上的轨迹,sts^tst 表示时间步骤 t 式在鸟瞰图(BEV)上的位置。那么最小化轨迹就可以表示成
s∗=argmins∑tct(st)s^*=arg\underset{s}{min} \underset{t}{\sum}c^t(s^t) s∗=argsmin​t∑​ct(st)
ctc^tct表示在时间t时的学习成本量索引,最小化轨迹通过采样近似得到。

通过卷积网络骨干计算成本量,从原始LiDAR数据和高精地图中提取特征,输入到卷积网络的两个分支中计算和成本量一样输出3D检测和行为预测。

输入表示

原始点云作为输入,通过顶部的雷达捕获。用连续10个时间步骤来作为预测的观察数据。利用这些扫描图来修正自我运动,将过去10帧的点云带入以SDV为中心的坐标系中。

为了使输入数据适合标准卷积,遵循 Intentnet:Learning to predict intention from raw sensor data 并将空间栅格化为3D占用网格,其中每个体素都有一个二进制值,指示它是否包含一个LiDAR点。 这导致了尺寸为 H∗W∗(ZT′)H*W*(ZT')H∗W∗(ZT′) 的三维张量,其中Z、H、W分别表示高度和x-y空间维数。本文沿着Z维串联了时间步骤,从而避免了内存和计算密集型的3D卷积。

加入包含语义信息的HD地图,与Intentnet:Learning to predict intention from raw sensor data类似,对地图进行栅格化,形成M通道张量,其中每个通道代表不同的地图元素。

骨干网络

主干是从 Pixor: Realtime 3d object detection from point clouds 的检测网络改编而来的,由五个块组成。 每个块都有{2,2,3,6,5}Conv2D层,过滤数为{32,64,128。 256,256},过滤器大小3x3和步长为1。每3层后接一个MaxPool。

在前4个块之后生成多尺度特征映射调整到输入大小的1/4,并将它们连接在一起,以增加有效的接收场[。 这些多尺度特征然后被输入到第五块。 整个骨干下采样率为4。

感知头

感知头有两个组成的卷积层,一个用于分类,一个用于回归。 为了减少回归目标的方差,在每个特征映射位置使用多个预处理锚盒ai,jaa_{i,j}^{a}ai,ja​,其中下标i,j表示特征映射上的位置,k索引在锚上。 总共有12个锚在每个位置,有不同的大小,纵横比和方向。

分类分支为每个锚输出一个分数Pi,jkP_{i,j}^{k}Pi,jk​,指示车辆在每个锚的位置的概率。回归分支还在不同的时间步骤为每个锚ai,jaa_{i,j}^{a}ai,ja​输出回归目标。 这包括定位偏移lxtl_{x}^{t}lxt​,lytl_{y}^{t}lyt​,大小swts_{w}^{t}swt​,lhtl_{h}^{t}lht​和航向角asinta_{sin}^{t}asint​,acosta_{cos}^{t}acost​。 上标t代表时间框架,从0(现在)到T-1到未来。 回归是在每个时间步长进行的,从而产生每个车辆的运动预测。

成本量头

由几个卷积层和反卷积层组成。 为了在鸟瞰(BEV)输入相同的分辨率下产生成本体积c,在骨干网络输出上应用了两个反卷积层,滤波器数字为{128,64},滤波器大小3x3和步长为2。每个反卷积层后面有一个卷积层,滤波器数{128,64},滤波器大小3x3和步长1。 然后应用最后的卷积层与滤波器数T,作为规划视界。 每个过滤器为未来的时间步骤t生成一个成本卷ctc^tct。

在实验中,还在网络之后剪辑成本体积值在-1000到1000之间。 应用这样的边界可以防止成本值任意移动,并使调优超参数更容易。

3.2 有效推断

通过给定输入LiDAR扫描和HD图,可以通过前馈卷积运算计算相应的成本体积c。 最后的轨迹可以通过最小化方程来计算。 但请注意,此优化是NP-hard。 因此,依靠抽样来获得低成本的轨迹。 为了实现这一目标,需要采样了各种各样的轨迹,这些轨迹可以由SDV执行,并根据学习的成本量以最小的成本生产作为最终输出。 在本节中描述了在推理过程中如何有效地采样物理上可能的轨迹。 由于轨迹的成本是通过从成本体积进行索引来计算的,所以规划器足够快,可以进行实时推理。

输出参数化

轨迹可以通过空间路径(二维平面上的曲线)和速度剖面(沿着这条路径走多快)的组合来定义。 将轨迹采样为(x,y)∈R2R^2R2空间中的一组点并不是一个好的方案,因为车辆不能在笛卡尔空间中执行所有可能的一组点。为了考虑这些现实世界的约束,强制车辆应该遵循一个动力学模型。

本文采用自行车模型。 该模型意味着车辆路径的曲率κ与转向角φ(前轮与车辆之间的角度)近似成正比:κ=2tan(φ)/L≈2φ/Lκ=2tan(φ)/L≈2φ/Lκ=2tan(φ)/L≈2φ/L,其中L是SDV前后轴之间的距离。 这是一个很好的近似,因为φ通常是小的。

然后利用一条布状曲线,也称为欧拉螺旋或康努螺旋,来表示SDV的二维路径。 这条曲线上的一个点的曲率κ与其距离成正比ξ仅与基准点的曲线成正比,即κ(ξ)=πξκ(ξ)=πξκ(ξ)=πξ。 考虑到自行车模型,这种线性曲率特性对应于恒角速度的前轮角度。 布类的规范形式可以定义为
s(ξ)=s0+a[C(ξa)T0+S(ξa)N0]s(ξ)=s_0+a[C(\frac{ξ}{a})T_0+S(\frac{ξ}{a})N_0] s(ξ)=s0​+a[C(aξ​)T0​+S(aξ​)N0​]
S(ξ)=∫0ξsin(πu22)duS(ξ)=\int_{0}^{ξ}sin(\frac{πu^2}{2})du S(ξ)=∫0ξ​sin(2πu2​)du
C(ξ)=∫0ξcos(πu22)duC(ξ)=\int_{0}^{ξ}cos(\frac{πu^2}{2})du C(ξ)=∫0ξ​cos(2πu2​)du
这里,s(ξ)s(ξ)s(ξ)定义了二维平面上的布样曲线,indexed by 距离ξξξ 参考 s0s_0s0​,a是标度因子,T0T_0T0​和N0N_0N0​是该曲线在s0s_0s0​点的切线和法向量。 S(ξ)S(ξ)S(ξ)和C(ξ)C(ξ)C(ξ)被称为菲涅耳积分,可以有效地计算。 为了充分定义轨迹,还需要一个纵向速度ξ˙\dot{ξ}ξ˙​(速度剖面),它指定SDV沿着路径s(ξ):ξ˙(t)=ξ¨t+ξ˙0s(ξ):\dot{ξ}(t)=\ddot{ξ}t+\dot{ξ}_0s(ξ):ξ˙​(t)=ξ¨​t+ξ˙​0​ 的运动,其中ξ˙0\dot{ξ}_0ξ˙​0​是SDV的初始速度,ξ¨\ddot{ξ}ξ¨​是恒定的前向加速度。

采样

利用布类曲线,采样路径对应于s(ξ)s(ξ)s(ξ)中的缩放因子a。 考虑到城市行驶速度限制为15m/s,本文在6到80m的范围内均匀地采样a。 一旦a被采样,曲线的形状是固定的。 然后利用初始SDV的转向角(曲率)在曲线上找到相应的位置。

类布曲线不能很好地处理圆和直线轨迹,因此需要分别对它们进行采样。 使用直线、圆和布样曲线的概率分别为0.5、0.25、0.25。

此外只使用一个布类段来指定SDV的路径。 还对恒定加速度ξ¨\ddot{ξ}ξ¨​从−5m/s2-5m/s^2−5m/s2到5m/s25m/s^25m/s2进行了采样,这指定了SDV的速度剖面。 结合采样曲线和速度剖面,可以将轨迹投影到离散的时间步长,并获得相应的路径点,以评估学习成本。

P.S. 对一个二进制随机变量进行了采样,表明它是一个典型的布类或垂直翻转的镜像。 它们分别对应于左转或右转。

3.3 端到端学习

最终目标是在遵循交通规则的同时规划一个安全的轨迹。 我们希望模型了解障碍在哪里,以及它们将来在哪里,以避免碰撞。 因此,我们使用多任务有监督训练,保持检测和运动预测与汽车的人工轨迹一致,但是没有监督成本量。 因此采用 max-margin loss来推动网络学会区分好轨迹和坏轨迹。 则总体损失函数为:
L=Lperception+βLplanningL=L_{perception}+\beta{}L_{planning} L=Lperception​+βLplanning​
这种多任务损失不仅指导网络提取有用的特征,而且使网络输出可解释的结果。 这对于自动驾驶至关重要,因为它有助于理解故障案例并改进系统。 在下面将更详细地描述每一个损失。

Perception Loss

perception loss 包括classification loss,用于区分车辆与背景,以及regression loss,用于生成精确的对象包围框。 对于每个预定义的锚框,网络输出一个分类分数以及几个回归目标。 这个分类评分Pi,jkP_{i,j}^{k}Pi,jk​表示在这个锚处存在车辆的概率。 对于定义为的分类,使用交叉熵损失表示
Lcla=∑i,j,k(qi,jklogpi,jk+(1−qi,jk)log(1−pi,jk))L_{cla}=\sum_{i,j,k}(q_{i,j}^{k}logp_{i,j}^{k}+(1-q_{i,j}^{k})log(1-p_{i,j}^{k})) Lcla​=i,j,k∑​(qi,jk​logpi,jk​+(1−qi,jk​)log(1−pi,jk​))
其中qi,jkq_{i,j}^{k}qi,jk​是此锚的类标签(即qi,jkq_{i,j}^{k}qi,jk​=1用于车辆,0用于背景)。 回归输出包括每个时间帧t的位置、形状和航向角的信息,即

其中上标a表示锚,l表示标签。 在所有这些输出上使用加权平滑L1 loss。 整体感知损失为
Lperception=∑(Lcla+α∑t=0TLregt)L_{perception}=\sum(L_{cla}+\alpha\sum_{t=0}^{T}L_{reg}^{t}) Lperception​=∑(Lcla​+αt=0∑T​Lregt​)
回归损失是在所有车辆相关锚上求和的,从当前帧到预测视界T。因此,它训练模型预测车辆在每个帧的位置。

为了找到每个锚的训练标签,将其与相邻的ground truth包围框相关联。 对于每个锚,我们发现所有的ground truth box的intersection over union(IoU)高于0.4。

将其中最高的一个关联到这个锚,并相应地计算类标签和回归目标。 将任何未分配的ground-truth box与它们最近的邻居联系起来。 剩下的锚作为背景处理,在回归损失中不考虑。

一个ground-truth box可能与多个锚关联,但一个锚最多可以与一个ground-truth box关联。 在训练过程中,应用hard negative mining来克服正负样本之间的不平衡。

Planning Loss

学习一个合理的成本是具有挑战性的,因为没有ground-truth。 为了克服这一困难,将max-margin loss最小化,其中使用ground-truth轨迹作为正例,并随机采样轨迹作为负例。也就是将ground-truth轨迹看作有最小的成本量。

采样N个负例轨迹,0.8的概率负例将不遵循SDV的初始化状态。这将为模型的初始化提供更容易的负例。 总max-margin loss定义为
Lplaning=∑{(xt,yt)}(max1⩽i⩽N(∑t=1T[c^t−cit+dit+γit]+))L_{planing} = \sum_{\{(x^t,y^t)\}}(\underset{1\leqslant i\leqslant N}{max}(\sum_{t=1}^{T}[\hat{c}^t-c_{i}^{t}+d_{i}^{t}+\gamma_{i}^{t}]_{+})) Lplaning​={(xt,yt)}∑​(1⩽i⩽Nmax​(t=1∑T​[c^t−cit​+dit​+γit​]+​))
最里面的求和是根据每次时间步骤ground-truth和负例采样间的距离和。[]+[]_+[]+​代表的是ReLU函数。 这被设计成在求和中而不是在外部,因为它可以防止成本在一次步骤中控制整个损失。 ditd_{i}^{t}dit​是负轨迹与ground-truth轨迹的第二范式距离∣∣(xt,yt)−(xit,yit)∣∣2||(x_t,y_t)-(x_{i}^{t},y_{i}^{t})||_2∣∣(xt​,yt​)−(xit​,yit​)∣∣2​, 它被用来奖励远离ground-truth轨迹的负例轨迹具有更高的成本。

γit\gamma_{i}^{t}γit​是交通规则违反成本,它是一个常数,当且仅当负轨迹t在时间t时违反交通规则, 这被用来确定负面样本“坏”的程度,因此,它将更严重地惩罚那些违反轨迹的规则,从而避免危险的行为。

在计算地面真相轨迹与每个负样本之间的差异后,只通过最大运算对最坏情况进行优化。 这奖励模型学习一个成本量,它区分好轨迹和坏轨迹。

4 实验

关于数据集

没什么好说的,没开源,收集的真实数据集。

关于实验

首先展示了对各种度量碰撞、与人类轨迹相似和交通规则违反的度量的规划的定量分析。 接下来,通过对检测和运动预测的定量分析,以及对所学成本体积的可视化,展示了方法的可解释性。 最后,提供了一个消融研究,以显示不同的损失功能和不同的时间历史长度的影响。

4.1 规划结果


L2 距离真实轨迹:这评估了计划轨迹与实际执行轨迹的距离。 未来潜在碰撞率:这是用来看看计划的轨迹是否会在未来与其他车辆重叠。 对于给定的时间步长t,计算碰撞发生到时间t的百分比,因此较低的数目是首选的。 车道违规:此度量计算计划轨迹跨越实心黄线的百分比。 请注意,较低是更好的。

Ego-motion:Ego-motion提供了一个强有力的线索,说明SDV将如何在未来移动。 这个基线只以SDV的过去位置作为输入,并使用4层MLP来预测未来的位置。

模仿学习(IL):我们遵循模仿学习框架[3,8,24],并利用一个深度网络从原始的LiDAR数据和栅格化地图中提取特征。 为了进行公平的比较,使用相同的主干描述和相同的输入参数化。 此外,使用来自ego-motion预测基线的相同MLP从ego-motion中提取特征。 然后将这两个特征连接起来并输入到3层MLP中,以计算最终的预测。

自适应巡航控制(ACC):这个基线实现了跟随领先车辆的简单行为。 车辆跟随车道中心线,同时自适应地调整其速度,以保持与前方车辆的安全距离。 无铅车时,遵循安全限速。 交通控制(红绿灯,停车标志)被观察为静止障碍物,类似于停止的引路车。

Planw/ Manual Cost (Manual): 该基线使用相同的轨迹参数化和采样过程。 然而,它使用人工设计的成本使用感知和运动预测输出。 这个基线旨在显示学习的成本量的有效性,因为它使用相同的抽样程序,但只是一个不同的成本量。

4.2 可解释性&消融实验



5 结论

本文提出了一种神经运动规划器,它学习在遵守交通规则的同时安全驾驶。 我们设计了一个整体模型,该模型采用LiDAR数据和HD地图,并以3D检测及其未来轨迹的形式产生可解释的中间表示,以及一个成本图定义了自动驾驶汽车在规划范围内可以采取的每个位置的优点。 采样一组物理上可能的轨迹,并选择一个最小的学习成本。

我们已经证明了我们的方法在北美几个城市非常复杂的现实世界场景中的有效性,并展示了我们如何学会准确驾驶。(在理论上,并没有实际实验在实车上)

参考文献

End-to-end Interpretable Neural Motion Planner(Uber)

端到端无人驾驶文献学习:End-to-end Interpretable Neural Motion Planner相关推荐

  1. 文献学习(part12)--GMNN: Graph Markov Neural Networks

    学习笔记,仅供参考,有错必纠 文章目录 GMNN: Graph Markov Neural Networks Abstract Introduction 相关著作 统计关系学习 基于图的半监督分类 图 ...

  2. 无人驾驶汽车系统入门(二十三)——迁移学习和端到端无人驾驶

    无人驾驶汽车系统入门(二十三)--迁移学习和端到端无人驾驶 前面我们介绍了神经网络和深度学习的基础知识,在本文中我们将介绍迁移学习的概念,并将迁移学习应用于端到端无人驾驶模型.一般来说,大型深层神经网 ...

  3. CVPR2020:端到端学习三维点云的局部多视图描述符

    CVPR2020:端到端学习三维点云的局部多视图描述符 End-to-End Learning Local Multi-View Descriptors for 3D Point Clouds 论文地 ...

  4. 端到端深度学习在自动驾驶汽车上的应用

    2016 年 9 月 23-24 日,由 CSDN 和创新工场联合主办的"MDCC 2016 移动开发者大会• 中国"(Mobile Developer Conference Ch ...

  5. 端到端的TTS深度学习模型tacotron(中文语音合成)

    TACONTRON: A Fully End-to-End Text-To-Speech Synthesis Model 通常的TTS模型包含许多模块,例如文本分析, 声学模型, 音频合成等.而构建这 ...

  6. 端到端深度学习与自动驾驶(含参考文献)

    参考文献见最后. 1.自动驾驶系统的分类 Rule based system基于规则的系统, 也有论文中将这样的方法叫做Mediated percepiton approach. Fully end- ...

  7. 端到端训练 联合训练_图分解的端到端学习

    source:End-to-end Learning for Graph Decomposition Jie Song ETH Zurich Bjoern Andres MPI for Intelli ...

  8. 用TVM在硬件平台上部署深度学习工作负载的端到端 IR 堆栈

    用TVM在硬件平台上部署深度学习工作负载的端到端 IR 堆栈 深度学习已变得无处不在,不可或缺.这场革命的一部分是由可扩展的深度学习系统推动的,如滕索弗洛.MXNet.咖啡和皮托奇.大多数现有系统针对 ...

  9. 深度学习神经网络 端到端的学习方式

    端到端的学习方式就是在整个学习流程中并不进行人为的子问题划分, 而是完全交给深度学习模型直接学得从原始输入到期望输出的映射.

最新文章

  1. 平凡的80后 不平凡的人生路
  2. 一文搞清楚,QPS、TPS、并发用户数、吞吐量
  3. lambdas for_Java 8 Lambdas –缺少脱离Java的链接
  4. data数值设置 vue_怎么改变vue中data的数据
  5. git clone时出现gnutls_handshake() failed: The TLS connection was non-properly terminated.
  6. Hbase shell练习题
  7. 5.jenkins 自动部署
  8. 2017行进中的杂想,做一个极少数的历史
  9. 多示例代码:go语言中循环练习题,不包括break,continue
  10. julia的几种画图方法
  11. iOS build 编译错误 Failed to emit precompiled header for bridging header
  12. 脉冲宽度调制pdm_脉冲宽度调制,脉宽调制
  13. 使用Qemu模拟arm开发板
  14. [labview]做一个简单实用可扩展功能的高速串口发送(接收)调试器
  15. ubuntu18.04 LTS 安装英伟达驱动
  16. APP系列,学院专题讲座图像记录软件推荐
  17. VR家装:智慧家装“黑科技”
  18. 软件工程实践第三次作业——结对作业(一)
  19. 学习Matlab的第一个程序——用二分法求根
  20. jquery选择器通配符_jQuery选择器不等于通配符

热门文章

  1. 梆梆安全:移动安全新“梆”主 专一加固移动应用
  2. 现货黄金秘诀(技巧篇)
  3. 为什么企业需要低代码平台?(一)
  4. Python+scrcpy+pyminitouch实现自动化(四)——实现语音识别自动打卡机器人
  5. 光之触角——光敏电阻、光敏二极管、光敏三极管与光照发生器
  6. 一款可编程的的串口调试工具 报文分类 脚本编程
  7. GAMS系列分享14——综合能源系统——CHP机组运行区域
  8. docker服务无法启动 神坑
  9. sql存储过程及应用
  10. 基于Android平台im软件开发,基于Android平台IM软件多媒体数据传输保护