初始无人驾驶—预测
课程简介
我们将在这次课程学习不同的预测方式,让Apollo无人驾驶车预测其他车辆或行人是如何移动的。让我们开启这次快乐的学习之路吧!
一、预测简介_a
相信大家看到预测这两个字就知道本次课程的主要内容是讲什么了?“预测,预测”,当然是车辆产生的某种计算行为,这种预测当然是来自环境和自身的考虑。想象一下,当无人车穿行在车辆纵横的马路上,他必须知道其它车辆下一步的行动,才能做出相应的转向或者加减速的行为等最佳决策。
车辆通过生成一个路径来预测一个物体的行为,请看下面这辆车:
它准备向右转,并且开始在匝道前减速,绿色线可能就是一条我们为这辆汽车预测的一条路径;预测的主要目的还是为汽车规划一条最佳路径,以达到我们需要让汽车达到人类驾驶员的效果,甚至高于人类驾驶员。
二、预测简介_b
大家肯定知道预测对于汽车来说有实时性的要求,实时性就是指我们想要的算法必须延迟越短越好,你想象一下:
一辆汽车以72km/h的速度向前行进,它的速度换算成m为20m/s,就是说0.25是计算机能确保完成一次算法决策并执行的时间,所以必须确保汽车前方5m的距离内能够行驶,没有障碍物。
谈到了预测的实时性,当然必须让我们的确保预测的准确性,假如的右侧有一辆车和你并排前进,你只有预测准确率很高,才会知道汽车会不会有变道的可能,而做出下一步判断。这些情况复杂性太高了,并不是简简单单的前方有障碍物或者右侧有并排汽车这么简单。
所以对于汽车的预测模块来说,如何正确实时的做出相应决策,是我们必须考虑周到的事情,下面就让我们一起快乐的学习这堂课程吧!
三、Sebastain(优达学城创始人)对预测的介绍
“现在,你知道了如何使用传感器来感知这个世界,接下来就是预测它,预测非常重要。因为如果你在一个自由空间驾驶汽车时,你可能会与其它车辆发生碰撞,因为你会影响别人的驾驶或者别人影响你的驾驶。接下来,你必须预测周围的环境,然后直到会不会有其它因素影响你的正常行驶或改变路径。Apollo平台就利用了两者方式,一种是基于模型的,一种是数据驱动的。这些内容会让即将称为工程师的你兴奋不已,所以赶紧和我们一起学习吧!”
四、预测的不同方式
刚刚Sebastian教授已经讲过我们Apollo平台有两种预测模式,基于模型的预测与数据驱动预测。
模型预测:如上图的一辆汽车,它在十字路口遇到左侧来了一辆汽车,当它不知道汽车下一步会做出什么动作时,他按照已有的模型,为汽车设定了两条可能行驶的路径,要么右转要么直行,所以再观察汽车会按照哪个路径进行,假如有左转的行为,我们就会更加判定它要直行,否则就会右转。基于模型的方法优点在于它的直观,并且结合了我们现有的物理知识以及交通法则还有人类行为多方面知识做出的判断。
数据驱动:使用机器学习的算法,通过观察结果来训练模型,一旦机器学习模型训练好,我们就可以在现实世界中利用此模型去做出预测,数据驱动方法的优点是,训练数据越多,模型效果越好。
五、基于车道的预测
Apollo提供了一种叫基于车道序列的方法,建立车道序列,我们会将道路分为多个部分,每一个部分都涵盖描述汽车运动的区域:
我们关心的不是汽车在某个区域内的行为,而是汽车会在整个范围内的序列行为。例如上图的汽车假使需要直行,则它经过的车道序列是0-1-3-7,如果这样研究车辆的变化情况,问题就变得越来越简单了。
是的,解决问题就是将问题简单化,下面我们继续开始我们预测之旅吧!
六、障碍物预测
为了预测物体,我们也需要知道物体的状态。让人驾驶汽车时,我们通过观察一个物体的朝向、位置、速度和加速度来预测它将会做什么。
同样的,无人车也需要一辆无人驾驶车如何观察物体的状态。当然除了观察以上人类观察的行为,还需要预测模块来考虑物体车道线边界的纵向和横向距离,预测模块还包含之前时间间隔的状态信息,以便做出更准确的预测。
七、预测目标车道
我们使用车道序列框架的目标是,为道路上的物体生成轨迹,这太难了,我们可以想简单一些。
假设我们在车道段0(可以查看上图)中检测到一辆车,预测它的行为只能是两种,一种是沿着0-4-5的道路,进行右转的行为,另一种就是左转到1-3-7的序列进行直行的目的。这样我们就将问题简单化为选择题了。这时我们所要做的就是选择车辆最有可能行驶的车道序列,我们可以通过计算每个车道序列的概率来进行选择。
我们需要一个模型来讲车辆状态和车道段作为输入,该模型用于提供车辆可能采用每个车道序列的概率,我们希望我们的模型能够学习新的行为,因此应该使用观测数据对模型进行经验性训练,在训练中,我们讲真实的车辆行为为提供给模型,不仅包括车道段和对象的状态。模型可以更新迭代,以适宜更多状态,如下图所示。
八、递归神经网络
递归神经网络或者RNN是一种利用时间序列数据特征的一种预测方法,在我们研究 RNN网络之前先回顾一下神经网络。
神经网络是可训练的多层模型,神经网络从输入到提取高级特征,并使用这些特征来计算得到输出:
上图是对神经网络的处理过程进行的回顾分析。
假如我们利用神经网络来分类图像是否包含汽车,网络的中间层将提取特征,如轮胎和窗户,网络世界有很多结构,一个基本的神经网络首先得到输入,然后将数据通过隐藏层,接着经过处理得到输出,这种结果有时也被称为多层感知网络或者MLP。在训练时,每一个数据都有原始的数据和对应的标签组成。例如输入是一张图片时,标签是一个包含汽车的符号或者其它符号。
神经网络从数据中学习的方式叫做后向传播。首先,神经网络得到输入并产生输出,然后计算机比较输出与真值之间的误差,接着这种误差通过神经网络反向传回到整个网络,这时中间的隐藏层根据观察到的这种差别调整其中的中间值或者权重,这样就可以在未来提高神经网络的准确率。
当然我们可以建立像这样的多重结构的递归神经网络,我们称之为MLP单元,从数据序列中提取出高级特征,每个MLP单元将序列的一个元素作为输入,并预测序列下一个元素作为输出,为了对元素之间的顺序关系建立模型,我们在每一个单元之间建立一个额外的连接这意味着每个单元根据原始输入和前一个单元的输出进行预测,这就是RNN的基本结构。如下图所示:
未建立额外连接:
建立额外连接:
本节课程结束,那就开开心心的进入下一个内容吧。
九、递归神经网络在目标车道预测的应用
Apollo使用RNN建立一个模型来预测车辆的目标车道,该平台为目标提供了一个 RNN模型,为相关对象也提供了一个RNN模型。Apollo连接两个RNN的输出并将他们馈送到另一个神经网络,该神经网络会估计每个车道序列的概率。
我们都知道具有高概率的车道序列是我们预测的目标车道序列。当然我们会利用实例对该模型进行验证和纠正,以确保该预测模型的准确度和相关算法能够最大限度的满足车辆预测的需求。
十、轨迹生成
轨迹生成,听名字就知道是已经完成了上面的所有内容,最后的一个步骤了。一旦我们预测成功,我们就会相应的生成一个轨迹,以用来让车辆执行这个车道线命令。
当然假如一辆车在行驶时,当从A点开向B点,行进的轨迹有无限的可能:
轨迹有这么多,我们如何去除到不需要或者不成立的轨迹呢?
答案是设置约束条件。首先我们假定汽车将与目标车道的中心对齐,我们就可以去除车辆无法实际执行的轨迹,然后再结合车辆的速度和加速度等因素去除其它的轨迹。我们只是利用数学的知识去做这些模型训练。
这是本次的预测课程论述,相信你对预测有了新的认识,那么我们就开始下一个知识点的学习吧!