为了在道路上安全高效地行驶,自动驾驶汽车必须具备预测周围交通参与者(如人类驾驶员)行为的能力。目前,轨迹预测的研究越来越受到重视。本文主要解决轨迹预测的一个难点,即预测的多模态性。同时,本文的另一个亮点是通过对栅格图像进行卷积来实现预测。笔者通过实验获得了目前最好的预测效果。本文对于轨迹预测领域的研究具有一定的学习和参考价值。自动驾驶是人工智能目前面临的最大问题之一,无论是难度还是潜在的社会影响。自动驾驶汽车(SDV)有望减少道路交通事故并挽救数百万人的生命,同时改善更多人的生活质量。然而,尽管自动驾驶领域受到了大量关注和业内人士的关注,但要开发出能够与最优秀的人类驾驶员媲美的系统,仍有许多工作要做。原因之一是交通行为的高度不确定性和SDV在道路上可能遇到的大量情况使得很难创建一个完全通用的系统。为确保安全高效运行,自动驾驶车辆需要考虑这种不确定性并预测周围交通参与者的多种可能行为。我们解决了这个关键问题,并提出了一种方法来预测多个可能的轨迹,同时估计它们的概率。该方法将每个参与者的周围环境编码为光栅图像,作为深度卷积网络的输入,以自动获取与任务相关的特征。经过广泛的离线评估并与最先进的基线进行比较后,该方法在SDV的封闭道路上成功进行了测试。近年来,人工智能(AI)应用领域取得了前所未有的进步,智能算法迅速成为我们日常生活中不可或缺的一部分。举几个影响数百万人的例子:医院使用人工智能方法来帮助诊断疾病[1],婚介服务使用学习模型来连接潜在的夫妻[2],社交媒体提要使用算法[3]]来构建。尽管如此,人工智能革命远未结束,未来几年可能会进一步加速。有趣的是,汽车行业是迄今为止人工智能应用受到限制的主要行业之一。主要汽车制造商通过在高级驾驶员辅助系统(ADAS)[5]中使用人工智能(AI)取得了一些进展,但是,随着自动驾驶汽车等新型智能技术的出现,其全部功能仍有待开发(SDV)。虽然驾驶车辆对许多人来说是一项平凡的活动,但它是一项危险的任务,即使对于具有多年经验的人类驾驶员也是如此[6]。虽然汽车制造商正在努力通过更好的设计和ADAS系统来提高车辆安全性,但年复一年的统计数据表明,要扭转公共道路上的负面趋势,仍有许多工作要做。尤其是2015年,美国车祸死亡人数占总死亡人数的5%以上[7],绝大多数车祸都是人为因素造成的[8]。不幸的是,这不是最近才出现的问题,几十年来研究人员一直在试图了解其中的原因。研究包括调查驾驶员分心[9]、酒精和药物使用[10]、[11]和驾驶员年龄[6]等因素,以及如何最好地让驾驶员接受他们容易犯错并最有效地工作有效地影响他们的行为[12]。毫不奇怪,现有文献中的一个共同主题是人类是交通系统中最不可靠的部分。SDV的发展和广泛应用可以改善这一点。最近在硬件和软件技术方面的突破使这一前景成为可能,为机器人和人工智能领域打开了大门,这可能会产生迄今为止最大的社会影响。自动驾驶技术已经发展了很长时间,最早的尝试可以追溯到20世纪80年代,对AL-VINN的研究[13]。然而,直到最近该技术才发展到可以更广泛使用的地步,例如2007年DARPA城市挑战赛[14]、[15]的结果。在这里,团队必须驾驭复杂的城市环境,处理公共道路上常见的情况,并与人类和机器人驾驶的车辆互动。这些早期的成功激起了人们对自动驾驶领域的极大兴趣,许多行业参与者(例如Uber和Waymo)和政府机构竞相建立实现SDV的技术和法律基础。然而,尽管取得了进展,但要使SDV在人类水平上运行并完全商业化,仍有更多工作要做。为了在现实世界中安全高效地运行,一个关键的挑战是正确预测周围参与者的运动,一个成功的系统还需要考虑到它们固有的多模态性质。我们专注于这项任务,并在我们部署的基于深度学习的工作[16]的基础上创建鸟瞰图(BEV)栅格编码高清地图和环境以预测参与者的未来,并做出以下贡献:(1)我们通过提出一种方法来扩展现有技术,该方法不是推断单个轨迹,而是给出多个轨迹及其概率;(2)经过对多假设方法的广泛离线研究,该方法成功地在SDV上进行了封闭道路测试。图1显示了我们的模型如何捕捉未来6秒轨迹的多模态。该方法使用光栅化车辆上下文(包括高清地图和其他演员)作为模型输入来预测动态环境中演员的运动[16]。当车辆接近十字路口时,多模态模型(我们将模态数设置为2)估计直行概率略低于右转概率,见图1a。三步后,车辆继续直行,此时右转概率显着下降(图1c);请注意,车辆实际上继续直行通过十字路口。我们可以看到,单峰模型并没有捕获场景的多模态,而是粗略地预测了两种模态的平均值,如图1b和1d所示。相关工作预测参与者未来行为的问题已在最近的几篇出版物中进行了讨论。在[17]、[18]中可以找到该主题的全面概述,在本节中,我们将从自动驾驶的角度回顾相关工作。首先介绍在自动驾驶行业实际应用的工程方法。然后我们讨论用于运动预测的机器学习方法,特别强调深度学习方法。自动驾驶系统中的运动预测大多数部署的自动驾驶系统使用完善的工程方法来预测参与者的行为。常见的方法包括根据对底层物理系统的假设并利用卡尔曼滤波(KF)[19]、[20]等技术,通过随时间传播对象的状态来计算对象的未来运动。虽然这种方法适用于短期预测,但随着模型忽略周围环境(例如道路、其他参与者、交通规则),其性能会随着时间的推移而下降。针对该问题,MercedesBenz[21]提出的方法以地图信息为约束,计算车辆的长期未来位置。系统首先将每辆检测到的车辆与地图上的一条或多条车道相关联。然后,根据地图拓扑、车道连通性和车辆当前状态估计,为每辆车和关联的车道对生成所有可能的路径。这种启发式提供了一般合理的预测,但它对与车辆和车道相关的错误很敏感。作为现有部署工程方法的替代方法,所提出的方法自动从数据中学习车辆通常遵守道路和车道约束,同时很好地泛化到在道路上观察到的各种情况。此外,我们提出了一种结合现有车道关联思想的方法的扩展。机器学习预测模型手动设计的模型无法扩展到许多不同的交通场景,这促使机器学习模型成为替代方案,例如隐马尔可夫模型[22]、贝叶斯网络[23]或高斯过程[24]。最近,研究人员专注于如何使用逆向强化学习(IRL)来模拟环境背景[25]。[26]考虑场景语义并使用逆最优控制来预测行人路径,但是现有的IRL方法对于实时应用来说效率低下。深度学习在许多实际应用中的成功[27]促使人们研究将其应用于运动预测。随着循环神经网络(RNN)最近的成功,一种称为长短期记忆(LSTM)的研究已被用于序列预测任务。[28]、[29]的作者应用LSTM来预测行人在社交互动中的未来轨迹。在[30]中,LSTM被应用于使用过去的轨迹数据预测车辆位置。在[31]中,另一个称为门控循环单元(GRU)的RNN变体与条件变分自动编码器(CVAE)相结合,用于预测车辆轨迹。此外,[32]、[33]通过将卷积神经网络(CNN)应用于一系列视觉图像,直接从图像像素预测简单物理系统的运动。在[16]中,作者提出了一个系统,在该系统中,CNN用于预测短期车辆轨迹,将BEV栅格图像作为输入BEV光栅图像,对各个参与者的周围环境进行编码,然后将其应用于易受攻击的交通参与者[34]。尽管取得了成功,但这些方法并未解决准确的长期交通预测所需的未来可能轨迹的潜在多模态性。目前有许多研究解决多模态建模问题。混合密度网络(MDN)[35]是传统的神经网络,通过学习高斯混合模型的参数来解决多模态回归问题。然而,由于在高维空间中运行时数值不稳定,MDN通常难以在实践中进行训练。为了解决这个问题,研究人员建议训练一个网络集合[36],或者训练一个只考虑最接近真实值的预测的损失网络,以产生对应于M个不同假设的M个不同输出[37]。由于良好的实证结果,我们的工作建立在这些努力的基础上。此外,在[38]中,作者通过学习将概率分配给六个机动类别的模型,引入了一种道路车辆多模态轨迹预测方法。该方法需要一组预定义的可能的离散动机,这对于复杂的城市驾驶来说很难定义。或者,在[28]、[29]、[31]中,作者提出通过采样生成多模态预测,这需要重复前向传递以生成多个轨迹。相比之下,我们提出的方法直接在单个前馈CNN模型上计算多模态预测。图2.本文提出的网络框架。建议的方法。在本小节中,我们讨论了为交通参与者提出的多模态轨迹预测方法。我们首先介绍问题定义和使用的符号,然后讨论我们设计的卷积神经网络结构。和损失函数。问题定义假设我们可以访问安装在自动驾驶汽车中的传感器的实时数据流,例如激光雷达、超声波雷达或摄像头。另外,假设这些数据用于现有的检测和跟踪系统,输出周围所有交通参与者的状态估计S(状态包括检测框、位置、速度、加速度、航向和航向角变化率).定义跟踪器输出状态评估的一组离散时间使得连续时间步长之间的时间间隔是固定的(当跟踪器以10Hz运行时为0.1s)。然后,我们定义跟踪器在时间tj对第i个交通参与者的状态输出为sij,其中i=1,...,Nj。Nj是在时间tj被跟踪的所有交通参与者的数量。注意,一般情况下,交通参与者的数量是不断变化的,因为新的交通参与者会出现在传感器的感应范围内,而之前跟踪的交通参与者会超出传感器的感应范围。此外,我们假设可以获得自动驾驶汽车行驶区域的详细高精度地图信息M,包括道路和人行道的位置、车道方向以及其他相关地图信息。多模态轨迹建模是基于我们之前的工作[16],我们首先将一张BEV栅格图像栅格化,该图像编码了交通参与者和周围交通参与者(如其他车辆和行人等)的地图环境,如图1所示.然后,给定第i个交通参与者在时间tj的栅格地图和状态估计sij,我们使用卷积神经网络模型来预测M个可能的未来状态序列,以及每个序列的概率。其中m表示模式数,H表示预测的时间步长。关于光栅化方法的详细描述,读者可以参考我们之前的工作[16]。在不失一般性的情况下,我们通过仅推断第i个交通参与者的未来x和y坐标而不是完整的状态估计来简化工作,而其余的状态估计可以从状态序列和未来位置得到估计.tj时刻交通参与者的过去和未来位置坐标是相对于tj时刻交通参与者的位置,其中正向为x轴,左手方向为y轴,以tj为中心交通参与者检测框架是起源。本文提出的网络结构如图2所示,输入为分辨率为0.2米的300*300RGB光栅图和交通参与者当前状态(车速、加速度、航向角变化率),以及输出是M模态(每个模态具有2H输出)的未来x坐标和y坐标及其概率(每个模态一个标量)。所以每个流量参与者都有(2H+1)M个输出。然后将概率输出传递给softmax层以确保它们的和为1。请注意,任何卷积神经网络结构都可以用作基础网络,这里我们使用MobileNet-v2。多模态优化函数在本节中,我们讨论了我们提出的用于对轨迹预测问题的固有多模态进行建模的损失函数。首先,我们将第i个交通参与者在时间tj的第m个模态的单模态损失函数定义为groundtruth轨迹点与预测的第m个模态之间的平均位移误差(或L2范数)。我们可以直接使用的一个简单的多峰损失函数是ME损失,定义如下:然而,从我们在第四节的评估结果中可以看出,由于模式崩溃问题,ME损失不适合轨迹预测问题。为了解决这个问题,我们建议使用一种受[37]启发的新型多轨迹预测(MTP)损失,它明确地模拟了轨迹空间中的多模态。在MTP方法中,对于时间tj的第i个交通参与者,我们首先通过神经网络的前向传播得到M条输出轨迹。然后,我们通过任意轨迹距离公式确定最接近地面真实轨迹的模式m。选择最佳匹配模态m后,最终的损失函数可以定义如下:这里I是二元指标函数,如果条件c为真则等于1,否则为0,是分类交叉熵损失,定义为:是用来权衡两个损失的超参数。换句话说,我们让最佳匹配模态m的概率接近1,其他模态的概率接近0。注意在训练过程中,position的输出只更新最优模式,而probability的输出更新所有模式。这允许每种模态特定于不同类别的参与者行为(例如,直行或转弯),从而成功解决了模态崩溃问题,如以下实验所示。图3:模式选择方法(模式以蓝色显示):groundtruth(绿色)在使用位移时匹配右转模式,使用角度时匹配直行模式我们试验了几种不同的轨迹距离函数。特别是作为第一个选项,我们使用两条轨迹之间的平均位移。然而,这个距离函数并不能很好地模拟交叉路口的多模式行为,如图3所示。为了解决这个问题,我们提出了一个里程计函数,通过考虑当前交通位置之间的角度来改进交叉路口场景的处理。参与者和地面实况以及预测轨迹的最后位置。第四节给出了定量比较结果。最后,对于损失(2)和(4),我们训练卷积神经网络参数以最小化训练集上的损失。请注意,我们的多模态损失函数对于选择其中一种模式作为损失函数是不可知的,并且很容易推广我们的方法来预测论文[16]中提出的具有负高斯对数似然的轨迹点。肯定。车道跟随多模态预测之前我们描述了一种在单次前向传递中直接预测多种模态的方法。在[21]中,每辆车都与一条车道相关联(即,对于车道跟随车辆),我们提出了一种隐式输出多条轨迹的方法。特别是,假设我们知道可能的车道并通过车道评分系统过滤掉不可能的车道,我们添加另一个栅格层来编码此信息并训练网络输出车道跟踪轨迹。然后,对于一个场景,我们可以通过生成不同车道线跟随的多个光栅图来有效地预测多模态轨迹。为了生成训练集,我们首先确定车辆实际遵循的车道线,并以此为基础构建输入栅格地图。然后,我们通过设置M=1(在这种情况下ME和MTP相等)使用先前引入的损失函数来训练车道跟随(LF)模型。事实上,LF和其他方法可以同时使用,分别处理车道跟随和其他交通参与者。请注意,我们提出这种方法只是为了完整性,因为从业者可能会发现将光栅化思想与现有的车道跟随方法相结合以获得多模态预测是有帮助的,如[21]中所述。图4.LF模型在不同跟随车道的同一场景中的轨迹输出示例(以浅粉色表示)。在图4中,我们显示了同一场景的栅格地图,但使用了两条不同的以浅粉色Wire标记的跟随车道。一个是直行,一个是左转。该方法输出的轨迹很好地遵循预定路径,可用于为车道跟随车辆生成多个预测轨迹。在实验中,我们在匹兹堡、宾夕法尼亚州、凤凰城和亚利桑那州的不同交通条件下(例如不同时间段和不同日期)通过人工驾驶收集了240小时的数据。原始传感器数据是从相机、激光雷达和超声波雷达获得的,使用UKF[40]和运动学模型[41]跟踪交通参与者,并以10Hz的速率为每个跟踪车辆输出状态估计。UKF在大量标记数据上进行了高度优化和训练,并在大规模真实数据上进行了广泛测试。每个离散时刻每个交通参与者的跟踪时刻对应一个数据点,去除静态交通参与者后,整体数据有780万个数据点。我们考虑6秒的预测时间(即H=60),α=1,并使用3:1:1拆分来获得训练、验证和测试集。我们将所提出的方法与几个基线进行比较:(1)前向UKF实时估计状态(2)单轨迹预测(STP)[16](3)TensorFlow[42]中的高斯混合轨迹空间MDN[35]模型并训练在16NvidiaTitanXGPU卡上。我们使用开源分布式框架Horovod[43]进行训练,训练在24小时内完成。我们将每个GPU处理的batchsize设置为64,并使用Adam优化器[44]进行训练,将初始学习率设置为10?4,每20,000次迭代将其降低0.9倍。所有模型都经过端到端训练,并使用GPU部署到自动驾驶汽车上,以平均约10毫秒的时间执行批处理。实验结果我们比较了使用与运动预测相关的误差度量的方法:位移(1),以及沿和交叉跟踪误差[45],它们分别测量与真实值的纵向和横向偏差。由于多模式方法提供了概率,因此一种可能的评估方法是使用最可能模式的预测误差。然而,早期关于多模态预测的工作[31]发现此类指标有利于单峰模型,因为它们在输出不切实际的轨迹时明确优化了平均预测误差(例如,见图1)。我们从[31]和[37]中镜像现有设置,过滤掉低概率的轨迹(我们将阈值设置为0.2),并使用剩余设置的最小误差模式来计算度量。我们发现以这种方式计算的结果与在自动驾驶汽车上观察到的性能更加一致。表1不同方法预测误差比较(单位:米)在表1中,我们给出了1s和6s的预测步骤的误差,以及整个预测步骤中不同模式数M的平均度量(模式数从2到4)。首先,我们可以看到单峰模型(例如UKF和STP)显然不适合正常运行时间预测。然而,他们在1s的短期预测结果是合理的,并且在6s的预测误差明显大于最优多峰方法。这样的结果是预料之中的,因为在短期内,交通参与者的身体和他们的周围环境受到限制,导致真实值的近似单峰分布[16]。另一方面,从长远来看,预测问题的多模态性质变得更加明显(例如,当交通参与者接近十字路口时,他们可能会做出几种不同的选择)。单峰预测并没有很好地考虑这类问题,而是直接预测一个分布的均值,如图1所示。此外,值得注意的是,MDN和ME对于不同的值给出了与STP相似的结果M.原因是众所周知的模式崩溃问题,其中只有一种模式提供非退化预测。因此,在实践中,受影响的多模态方法会退回到单模态,无法完全捕获多种模态。[37]的作者针对MDN报告了这个问题,发现多模态假设模型受到的影响较小,我们的实验结果进一步证实了这一点。将我们的注意力转移到MTP方法上,我们观察到比其他方法有明显的改进。平均误差和6s时刻的误差都全面下降,表明这些方法已经了解了交通问题的多模态性质。short-term1s和long-term6s的预测误差都低于其他方法,即使long-termprediction的效果更明显。有趣的是,结果显示当M=3时,各项评价指标均达到最佳。表2.不同模态在时间6s的位移误差接下来,我们评估不同的轨迹距离度量,以在MP训练期间选择最佳匹配模态。表1显示使用位移作为距离的函数比使用角度的性能稍好。然而,为了更好地理解这种选择的含义,我们将测试集分为左转、右转和直行三类(测试集中95%的交通参与者大致直行,其余均等)分布在转弯之间),表2报告了6s预测的结果。我们可以看到,使用角度改善了转弯的处理,并且稍微降低了直线前进的情况。这证实了我们的假设,即角度匹配策略提高了交叉路口的性能,这对自动驾驶汽车的安全至关重要。考虑到这些结果,在本节的其余部分,我们将使用角度模态匹配策略的MTP模型。图5.1到4种不同模式对从左到右的输出轨迹的影响。在图5中,当增加模式数M时,我们可以看到,当M=1时(即推断出的轨迹大致是直行模式和右转模式的平均值。将模式数增加到2,我们得到直行和右转模式的清晰分离。此外,将M设置为3会导致左转模式,尽管概率非常低。当我们设置M=4时,我们发现了一个有趣的结果,即线性模式进一步分为“快”和“慢”模式,对交通参与者的纵向速度进行建模。我们注意到在远离十字路口的直线道路上也有同样的效果,其中直线模式分裂成几种不同的速度模式。图6.分析模态概率校正最后,我们对预测模态概率进行了校准分析。特别是,使用测试集,我们计算了预测模态概率与最匹配地面的模态概率之间的关系-真相轨迹。我们根据预测概率对轨迹进行分段,并计算每个分段的平均模态匹配概率。图6显示了我们使用M=3的结果,而M的其他值的结果与显示的结果类似。我们可以看到修改后的图非常接近y=x的参考线,说明预测概率得到了很好的校准。由于交通参与者行为的内在不确定性,为确保道路安全高效行驶,自动驾驶汽车需要考虑周围交通参与者的多种可能未来轨迹。在本文中,我们解决了自动驾驶问题的这一关键方面,并提出了一种用于车辆运动预测的多模态建模方法。该方法首先生成编码交通参与者周围环境的栅格地图,并使用卷积神经网络模型输出几种可能的预测轨迹及其概率。我们讨论了几种多模态模型,并将它们与当前最先进的方法进行了比较,表明所提出的方法具有实际好处。经过广泛的离线评估,该方法成功地在自动驾驶汽车上进行了测试。
