Yann作者

自动驾驶中的障碍物行为预测

在自动驾驶应用中,相比于耳熟能详的感知与规划控制,人们对障碍物行为预测稍显陌生。事实上障碍物的行为预测对于整个无人车安全、平稳地行驶有着至关重要的支撑作用。

自动驾驶,无人驾驶,自动驾驶技术
1.简介
 
在自动驾驶应用中,相比于耳熟能详的感知与规划控制,人们对障碍物行为预测稍显陌生。事实上障碍物的行为预测对于整个无人车安全、平稳地行驶有着至关重要的支撑作用。
 
在感知层面,通过借助激光雷达、摄像头、毫米波雷达等传感器设备以及复杂的处理算法,无人车往往能够较准确地感知周围环境;基于这些感知数据,规划控制算法会规划出一条无碰撞的安全路径,并控制车辆按照指定路线运动。在简单的场景下(或者主车低速行驶场景),这种“感知-规划控制”的模式可以保证无人车正常行驶;但面对复杂的交通流与路况场景(或者主车高速行驶场景),往往会出现很多问题,最常见的有规划轨迹跳变以及碰撞问题,如下图1所示。造成这种现象的本质原因在于规划算法缺乏对障碍物未来行为的预见性,“短期”(仅包含当前时刻的障碍物信息)感知数据促使规划算法陷入局部解。
 
图1规划轨迹跳变问题(时间不一致问题)。A中不使用行为预测,所有障碍物被当做静态对待,随着时间的推移,规划轨迹会出现跳变,甚至发生碰撞,同时也加大了控制的难度;B中引入障碍物行为预测,通过预测未来一定时间(E.g.3s)来提升规划轨迹的质量,可以保证规划轨迹的时间一致性,轨迹跳变少、复用性
 
预测问题的本质是根据感知到的障碍物信息(包括其历史时刻数据)以及环境信息(道路拓扑结构、信号灯等),推断出障碍物未来可能的行为模式。此外,在推断过程中还需要考虑到障碍物与障碍物、障碍物与主车、障碍物与基础设施等的交互(例如跟车、超车、让行、红灯停车等)。最终预测输出也有很多形式,常见的包含:确定的运动轨迹[1]、物体占有网格(Occupancy Grids)[2,3]、区域能量图[4]等。
 
2.行为预测的难点
 
行为预测是一个非常有挑战性的研究领域,该方向一个明显的特点是未来行为/交互的不确定性,即各个障碍物的行为由对应的驾驶员主观决定,因此想要对不同驾驶员的差异行为进行建模是非常困难的事情。同一场景下障碍物存在多种合理的行为决策,这就是所谓的多模态问题(Multi-Modal Problem)。例如在前方存在车辆阻挡的情况下,不同司机往往会做出不同的决策,或者跟车,或者左超车,更有右超车甚至出现事故发生碰撞等“非常规”状况。对于这些状况的确定性预测本质上很难实现,目前的算法只能通过更多的先验知识以及训练数据来分析各种可能行为的概率,以此来达到更合理的预测。
 
此外一个难点是盲区与遮挡问题,由于车辆的传感器方案布局问题,采集到的数据(点云、图像等)可能存在物体被遮挡的问题,遮挡区域内物体的跟踪与预测同样是自动驾驶开发过程中考虑的重点。最后在预测中引入并量化基础设施、交规约束也是一项挑战。
 
接下来我们将给大家展示几种常用的预测算法,这些算法有些被用于学术界,有些则落地到工业界。
 
3.预测算法介绍
 
在具体介绍预测算法前,我们简单地了解一下预测算法能够从感知拿到什么样的数据。感知使用传感器从周围环境获取原始数据(激光点云、图像、毫米波雷达测速/、超声波雷达测距等信息),经过算法后处理可以得到每个时间点自动驾驶车辆周围环境中所有障碍物的ID、位置、速度、加速度、运动方向等;配合使用高精地图,我们也能够知道各障碍物所处的车道、路口、附近红绿灯等地图信息。
 
在预测算法中,一类算法是使用感知后处理的数据进行预测;另一类则是使用传感器原始数据进行预测,预测的结果往往也以原始数据的形式呈现(例如下一时刻的图像或者点云)。从实用性与可靠性上来讲,第一类算法在工程上更为实用,尤其是L4级别的自动驾驶对系统安全性与可靠性等级要求非常高。针对不同的模型,我们将介绍几种预测算法模型及其原理。
 
3.1基于策略选择的预测算法
 
这是最常见也最实用的预测算法,将预测问题退化成为一个策略或者车道选择的分类问题(判断在当前场景下,障碍物各种决策的可能性)。该类算法在2008年CMU的论文[5]中被使用,其核心思想可以总结为:如果一个动态障碍物在直道上行驶,那么未来很大可能它将继续沿着同一车道行驶;如果障碍物在路口出现多条可行车道时,列出所有可行车道,根据当前所在车道与运动方向,选择最合理的可行车道作为后续行驶车道。具体的预测效果如下图2所示,图2中a展示了对路上车辆的预测情况,其中黄色、蓝色、红色的连续坐标框分别表示一个障碍物预测的轨迹。而b中还额外展示了一个停车的行为预测,预测绿色车辆的停车车位。此外论文中还介绍了对于信号灯、停车区的处理,采用简单的减速停车规则来完成。
 
该方法强结合了高精地图信息,约束更强、实用性较高,但几乎没有考虑到障碍物之间的交互问题,且车道的选择相对来说偏简单,尤其在路口附近仅仅使用规则判断可能会带来很大的误差。因此目前很多团队(百度、美团等)使用基于机器学习的方法进行决策选择,除了使用常规的障碍物历史运动信息(与车道中心偏移距离/夹角、障碍物运动方向/速度等),还将额外的车道信息、驾驶员习惯、周围车辆之间的位置关系等信息融入到学习模型中进行提升模型的准确性,并取得了不错的效果。
 
图2预测效果展示
 
2018年UCSD团队提出了一种预测算法[6],使用长短期记忆神经网络完成策略选择和轨迹生成,网络使用端到端方式完成模型的训练。下图3展示了该团队提出的多模态预测模型,图中上半部分为决策选择过程,可以看到网络的输入为障碍物共T_h个时刻的位移坐标,最终经过两个柔性最大值传输函数(Softmax)输出横向行为决策P\left(lat_j\mid X\right)与纵向行为决策P\left(lat_j\mid X\right)。横向行为决策包括左变道、直行、右边道;纵向行为决策包括减速、匀速、加速。通过两两匹配(对应概率相乘)即可得到9种车道行为的概率P\left(m_i\mid X\right)。
 
图3多模态预测算法结构
 
图中下半部分是根据每种策略计算对应预测轨迹分布。如图中的解码器(Decoder LSTM)所示,假设需要预测某个障碍物未来T_{pred}个时刻的运动轨迹,由于障碍物的真实轨迹存在噪声干扰,算法中假设噪声服从高斯分布,那么轨迹也就遵循高斯分布。因此对于每种行为决策(例如匀速直行),预测未来T_{pred}个运动轨迹点,只要输出T_{pred}个高斯分布参数即可(图中参数theta是五元组,包含:x和y方向的均值u,方差sigma和协方差系数pho)。最后可以计算得到每种车道行为下Y的概率似然P\left(Y\mid X\right),与真实值计算交叉熵损失并最小化得到模型参数:
 
该方法一个创新点结合了策略选择与轨迹生成两个过程,并通过端到端的方式训练网络。在预测阶段,计算各行为决策的概率P\left(m_i\mid X\right),取最大概率对应的决策行为并计算该行为下未来轨迹的高斯分布参数theta,最终通过采样就可以得到预测轨迹。
 
相似思想的算法还有2018年中科大的论文[7],如下图4,通过建立一个场景模型库,将实时道路拓扑信息与基础设施量化。然后对每个障碍物可能的决策行为(左转、跟车、超车等)使用隐马尔科夫模型进行单独建模,配合专家先验知识得到障碍物不同决策的概率。
 
图4模型整体框架
 
如上图,以竖直虚线分割,模型分为离线部分(右)与在线部分(左)。离线阶段主要任务是准备地图、交通规则以及训练决策模型M_{si}(i对应障碍物的id,s对应障碍物所处的场景)。在线阶段工作为根据离线阶段制定完毕的规则,量化编码道路拓扑结构、交通流,与感知模块实时监测结果一并抽取特征F_s后,输入到训练完毕的测试模型M_{si}中进行概率计算P,最终配合人工设定的先验知识P_s,选择合理的决策行为。该方法将完整的道路结构与交通规则进行量化并加入到模型中,同时引入了专家先验知识,提升了预测的准确性。此类相似的工作还有[8,9,10]。
 
最后,总结此类基于策略/车道选择的预测算法,核心思想是将障碍物与环境交互产生的决策行为退化成一个分类问题。首先,根据地图与人类的先验知识挑选出一些可行的决策;利用学习模型计算每种决策的概率;最终根据产生决策对应的轨迹。该类方法的优势是强依赖地图信息,产生合理的决策与运动模式,实用性强;但在开放环境下预测能力比较受限。由于该类算法主要以概率分布描述障碍物的行为决策,所以常见的评价指标以熵、似然、散度的形式为主。下式是常见的交叉熵函数,C表示决策类别数目,t_c表示训练的真实值,y_c表示模型的预测概率。
 
3.2基于占有网格的预测算法
 
基于占有网格(Occupancy Grids)的预测算法将障碍物周围区域划分成等大小的网格(例如50x50),每个网格的长和宽一致。在这种条件下,对于障碍物行为的预测就转化成了对每个网格激活状态(例如0、1二值)或者占有概率(例如0.0-1.0区间)的判断。一条运动轨迹会覆盖一系列的网格,有轨迹点落入的网格会被激活或者占有概率变大。
 
方法[2]同样使用了神经网络的方法,如下图5,分别计算每个障碍物下时刻的占有网格P_{oi}\left(i_x,i_y\right)(i对应障碍物ID,i_x和i_y对应该占有网格的坐标)。模型输入包括主车与所有障碍物的历史信息,论文中仅仅用到障碍物位置与速度信息,通过长短期记忆神经网络计算便得到下一时刻每个障碍物在占有网格中每个位置的概率(对于左图虚线框中小的灰色占有网格图)。最终结合所有障碍物的占有网格P_{oi}\left(i_x,i_y\right),i=1,2,3..,N,就得到了下一时刻整体的占有网格P_{o}\left(x,y\right),计算方法比较简单:
 
该方法给出了未来时刻所有障碍物的在环境中每个位置的概率,但算法忽略了实际的道路信息与交通规则信息,实用性有待提升。
 
图5算法整体结构框架
 
如下图6,华为[3]也做了相似的工作,将障碍物的历史轨迹编码成图像的形式(障碍物出现的位置图像像素值高),通过基于长短期记忆神经网络的编码-解码器结构即可得到未来每个时刻障碍物在地图中的位置。为了提升时刻间预测位置的连续性,引入Motion Flow(类似于光流Optic Flow),相比[2],进一步提升预测的稳定性与准确性。
 
图6基于占有网格的预测算法框架
 
此外也有基于卡尔曼滤波等形式的占有网格预测算法。总结基于占有网格的预测算法,通过将周围区域划分成网络并计算概率,该类方法主要以主车为第一视角,能够应对无地图场景(或者感知相对地图)场景,但是稳定性和准确性上有所欠缺。该类方法的评价指标以交叉熵、似然形式为主,上述提及的两种方法都是以交叉熵评估生成轨迹分布与真实轨迹分布的相似性。
 
3.3基于能量图的预测算法
 
基于能量的预测算法与占有网格比较相似,区别在于占有网格中元素的计算方式不同。前者通过定义一些人为的能量函数,来计算每个网格中的能量大小,能量越大代表可通行的概率就越大。
 
论文[4]给出了基于能量图的人群行为分析算法,在对于能量图的建模过程中,主要包含三个内容:对于静态场景的建模f_{SL},对于运动物体的建模f_{MP},对于环境中群体的建模f_{MP}。注意这里需要对能量图中每个网格点都计算以上三种属性。三种属性对应的计算方式如下:
 
在上述公式中\theta_1,\theta_2,\theta_3和\theta_4是人为设定的四个系数,可以手动调节;x是能量图的网格点二维坐标。d1函数表示网格点x到最近的场景障碍物SL(墙、柱子等)的最小距离;d2函数表示网格点x到行人障碍物MP的距离;d3表示网格点x到群体SG的最小距离(群体计算有独立的算法);d4表示群体SG的大小。最终可以得到整体能量图M_P:
 
三种属性的子能量图可视化效果如下图7所示:
 
图7能量图效果展示,引自[4]。A静态场景子能量图f_SL[theta1:0.01/(c),0.05/(d)];B移动行人子能量图f_MP[theta2:0.01/(c),0.05/(d)];C人群子能量图f_SG[theta3/theta4:0.08/0.005/(top subfigure),0.08/0/(center subfigure),0.15/0/(bottom subfigure)];D:综合能量图M_P[P:0.5/(to
 
3.4其余预测算法
 
除了以上几类方法,还有很多其他的算法,例如基于原始激光点云的预测算法[11,12],基于视频的预测算法[13,14],基于概率图模型的预测算法[15],基于神经网络的直接轨迹预测算法[1]等。此外对于原始数据与直接轨迹预测算法,评价指标常见有均方误差(Mean Square Error,MSE)、终点位移误差(Final Displacement Error,FDE),这些指标都是计算预测值与真实值之间的欧氏距离差。


 
实际上训练数据的真实值准确地来说应该是伪真实值,预测不存在实际意义上的真实值,也就是上述提到的多模态问题。尽管如此,但通过数据驱动的模仿学习方法,在一定程度上能预测出一些人类认可的决策集合。这也为自动驾驶行为预测提供了一定的可行性支撑。
 
从整体的宏观层面理解,预测和规划两个方向是比较相似的:预测是推理障碍物的运动行为,规划是规划主车的运动行为;预测和规划都没有实际意义上的“最优解”(真实值)。因此两个问题在评价指标上也是比较相似,规划常用的评价指标有里程数、规划故障接管率,舒适性等,同样这也适用于预测算法。我们认为对于这类宏观意义上的指标有一个阶段性的特点:对于一个团队,在每个阶段其预测评价指标是不相同的。在初期,为了追求技术的稳定性,可能例如预测车道的准确率、预测脱离车道的概率等模型性能指标会被重点考虑;随着技术的成熟以及场景的增加,各场景仿真以及物理ADS通过率等指标会被关注;最终在运营阶段,支持行驶里程、预测故障接管率、礼让/激进预测模式等指标成为重点。
 
4.总结
 
本文介绍了预测在自动驾驶中的位置与作用,并给出了预测问题的一些难点,最后简单地展示了几类在学术与工程中常见的预测算法及其评价指标。目前在预测过程中输入往往是基于感知后处理的数据,较少使用原始传感器数据直接做预测。对于预测模型的使用,基于规则式以及策略选择的算法可靠性更高,实用性更强。最后回归到本质的问题,如何更好地对驾驶员行为与决策交互问题建模以提升行为预测的效果。在我们看来加入更多的先验(例如人体姿态,车辆尾灯等信息),同时利用机器学习、统计学等方式起对障碍物进行长时序行为分析,有助于提升预测的准确性。此外,V2X技术也是提升预测准确性的一个方式。
 
最后随着技术的成熟,希望行业内能在行为预测上取得突破,推动自动驾驶向着更安全、更可靠的方向发展。
 自动驾驶 自动驾驶技术 无人驾驶 V2X