Apollo课程学习小记录4——预测
学习前言
今天的学习内容是预测原理与方法。
预测简介
一、什么是预测
无人车在行驶过程中,通过生成路径来预测每一个物体行为,所有物体的预测共同形成了一个时间段内的预测路径。同时在每一个时间段中,每一辆汽车会重新计算预测新路径,这为无人车的规划决策提供了必要信息。
二、路径预测的要求
- 实时性。算法的延迟越短越好。
- 准确性。我们希望无人车做出的预测尽可能保持准确,这有助于无人车的决策。
- 有学习能力。当路上有很多车辆时,路面情况将变得复杂,而开发出每种场景的静态模型是不现实的。我们希望预测模块能够学习新的行为,我们使用多元的数据进行训练来提升预测能力。
预测方法
一、基于模型的预测
我们场景构建候选的预测模型,每个模型都有自己的轨迹且发生的概率相同,要观察移动车的运动与哪一条轨迹更加匹配,就倾向于哪种预测模型。
二、数据驱动预测
使用机器学习算法,通过观察结果来训练模型。训练数据越多,模型效果越好。
三、基于车道序列的预测
首先将车道分为多个部分,每一部分都覆盖了一个易于描述车辆运动的区域,然后将车辆的行为划分为一组有限的模式组合,即车道序列。如下图所示,直行汽车的运动可以描述为车道序列0-1-3-7。
车道序列框架将预测问题简化成选择问题,只需选择车辆最有可能采取的车道顺序。输入车辆状态和车道段的模型用于提供车辆可能采用每个车道序列的概率。在经验性训练中,我们将真实的车辆行为提供给模型,每个记录将由观察对象跟随的车道段序列和对象的相关状态组成。随着记录的增加,模型可以自我迭代更新,精确度也不断提升。
递归神经网络(RNN)
一、RNN简介
首先构建多重结构的递归神经网络(MLP单元),RNN的每个单元根据原始输入和前一个单元的输出进行预测。
二、RNN在车道序列预测中的应用
Apollo为车道序列提供一个RNN模型,为相关对象状态提供另一个RNN模型,连接这两个RNN的输出并将它们馈送到另一个神经网络估计每个车道序列的概率。具有高概率的车道序列是我们预测目标车辆将遵循的序列。
为了训练这个网络,我们使用现有的记录,每个记录都包含一个车道序列、相关的对象状态和一个标签(用于指示对象是否遵循此特定车道序列),在训练中我们比较网络输出和真值标记,并使用反向传播来训练网络。
轨迹生成
轨迹生成是预测的最后一步,我们将车道序列预测与车辆物理结合起来,为每个物体生成估计的轨迹,设置约束条件去除不现实的候选轨迹。我们可以使用运动模型的初始状态和最终状态来拟合一个多项式模型,在大多数情况下,这种多项式足以进行预测。