【自动驾驶01】轨迹预测方法总结

轨迹预测

1. Social LSTM(轨迹预测开篇之作 2016CVPR)

Paper: CVPR16_Social_LSTM.pdf(stanford.edu)

Code: GitHub - quancore/social-lstm: Social LSTM implementation in PyTorch

方法:

把这个问题定义成序列生成任务,即如何根据历史的位置信息去预测未来的运动轨迹。提出LSTM模型去预测行人未来的轨迹。

提出LSTM的模型来学习长时的序列,并提出social pooling的方式来学习周围行人之间的交互特征信息。这种架构,我们称之为“Social-LSTM”,可以自动学习发生在轨迹之间的典型相互作用。

对场景中的每个轨迹使用一个单独的LSTM网络。然后,lstm通过社会池(Social pooling, S-pooling)层相互连接。与传统的LSTM不同,这个池化层允许空间上的近端LSTM彼此共享信息。通过引入“社交”汇集层来结合所有其他人信息。在每个时间,LSTM小区从邻居的LSTM接收合并的隐藏状态信息,在汇集信息时,我们尝试通过基于网格的池化来保留空间信息。

核心: 除了考虑每个行人的位置信息之外,通过Social pooling增加不同行人之间的信息交互。

改进: Social-GAN

2. Convolutional Social Pooling for Vehicle Trajectory Prediction (基于Social LSTM的轨迹预测2018 CVPR)

Paper: Deo_Convolutional_Social_Pooling_CVPR_2018_paper.pdf(thecvf.com)

Code: https://github.com/nachiket92/conv-social-pooling

方法: Social LSTM提出了一种新的社会池层的替代。将卷积和最大池层应用到LSTM状态的社会张量上,这些社会张量编码了相邻车辆的过去运动。

LSTM解码器为六个maneuver类别生成未来运动的概率分布,并为每个maneuver类别分配一个概率。本文考虑了三个横向maneuver和两个纵向maneuver(共3*2种情况)。横向maneuver包括左右变道和一个车道保持maneuver。纵向动作分为正常驾驶和制动。我们考虑三个横向和两个纵向操作类别,横向机动包括左右车道变换和车道保持机动。由于变道涉及准备和稳定,我们将车辆定义为在± 4s 内处于换道状态。纵向机动分为正常驾驶和制动。如果车辆在预测范围内的平均速度小于其预测时速度的 0.8 倍,我们将其定义为正在执行制动操作。

输入: 历史运动轨迹,t时刻被预测车辆坐标,以及前后90英尺内两车道车辆坐标

输出: 模型预测概率分布,被预测车辆的未来坐标

模型:

LSTM Encoder:

使用 LSTM 编码器来学习车辆运动的动力学。对于每一个瞬间,最近第 th 帧的轨迹历史片段都会通过 LSTM 编码器,用于被预测的车辆及其周围的所有车辆。每辆车的 LSTM 状态在过去的第 th 帧中逐帧更新。可以预期每辆车的最终 LSTM 状态会对该车辆的运动状态进行编码。用于每辆车的 LSTM 具有共享权重。这允许所有车辆的 LSTM 状态的组件之间直接对应。

Convolutional Social Pooling:

LSTM 编码器捕获车辆运动动态,但它无法捕获场景中所有车辆运动的相互依赖性。Social LSTM中提出的社交池化通过将被预测的智能体周围的所有智能体的 LSTM 状态汇集到一个社交张量中来解决这个问题。我们通过定义基于车道的网格来设置我们的社交张量。在被预测的车辆周围定义了一个 13 × 3的空间网格,其中每一列对应一个车道,并且行之间的距离为 15 英尺,大约等于一辆车的长度。社交张量是通过用周围的汽车位置填充这个网格来形成的。然后,我们将两个卷积层和一个池化层应用于社交张量,以获得社交语境编码。此外,预测车辆的 LSTM 状态通过全连接层获得车辆动力学编码。将这两个编码连接起来形成完整的轨迹编码,然后将其传递给解码器

LSTM Decoder:

我们使用基于 LSTM 的解码器来生成未来运动在下一个 tf 帧上的预测分布。我们通过描述的六个机动类别(3*2)中的每一个的分布以及每个机动类别的概率来解决驾驶员行为的固有多模态。解码器有两个输出横向和纵向机动概率的softmax层。可以将这些相乘以从公式中得到P(mi|X)的值。此外,解码器在每一时间步输出,一个矢量Θ(t)对应于二元高斯分布的参数,给出预测车辆的未来位置在当时瞬间的分布,取决于轨迹历史。为了从等式中获得机动特定分布 PΘ(Y|mi,X),我们将轨迹编码与对应于横向机动类的 one-hot 向量和对应于纵向机动类的 one-hot 向量连接起来。

据预测轨迹相对于真实未来轨迹的均方误差 (RMSE) 的根来报告结果

数据集: NGSIM US-101 NextGeneration Simulation (NGSIM) Vehicle Trajectories and Supporting Data |Department of Transportation - Data Portal

3. Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks (CVPR 2018)

论文:[1803.10892] Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks (arxiv.org)

代码:GitHub - agrimgupta92/sgan: Code for “Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks”, Gupta et al, CVPR 2018

贡献: 本工作将GAN的对抗思想引入行人运动轨迹预测的任务中。

第一,引入variety loss来帮助GAN展开在空间的分布,来覆盖所有存在可能足够好的解的样本空间。

第二,在G和D的中间层引入池化模块(Pooling Module) 来帮助学习到一个全局的池化结果,这个结果携带了场景中所有人的feature,从而实现整体只需要走一次LSTM,降低计算开销的结果。

第三,基于GAN的生成效果,可以给出多个解

生成对抗网络 (GAN) 由两个相互对抗训练的神经网络组成 。这两个对抗训练的模型是:一个生成模型 G 捕获数据分布,一个判别原生模型 D 估计样本来自训练数据而不是 G 的概率。

模型由三个关键组件组成:生成器 (G)、池化模块 (PM) 和鉴别器 (D)。

G 基于编码器-解码器框架,我们通过 PM 链接编码器和解码器的隐藏状态。 G 将 Xi 作为输入并输出预测轨迹 Y^i 。 D 输入包含输入轨迹 Xi 和未来预测 Y^i(或 Yi)的整个序列,并将它们分类为“真实/虚假”。

传统上,GAN 将噪声作为输入并生成样本。我们的目标是产生与过去一致的未来场景。为了实现这一点,我们通过初始化隐藏状态来调节输出轨迹的生成。

生成器。我们首先使用单层 MLP 嵌入每个人的位置以获得固定长度的向量 eti。这些嵌入在时间 t 用作编码器的 LSTM 单元的输入

鉴别器: 鉴别器由一个单独的编码器组成。具体来说,它将 Treal = [Xi , Yi] 或 Tfake = [Xi, Y^i] 作为输入,并将它们分类为真/假。我们对编码器的最后一个隐藏状态应用 MLP 以获得分类分数。理想情况下,鉴别器将学习微妙的社交互动规则,并将不被社会接受的轨迹分类为“假”。
损失: 除了对抗性损失之外,我们还在预测轨迹上应用 L2 损失,以测量生成的样本与实际地面实况的距离.

Pooling Module:

数据集: ETH and UCY

4. TraPHic: Trajectory Prediction in Dense and Heterogeneous Traffic Using Weighted Interactions (2019cvpr)

论文:Chandra_TraPHic_Trajectory_Prediction_in_Dense_and_Heterogeneous_Traffic_Using_Weighted_CVPR_2019_paper.pdf (thecvf.com)

代码: GitHub - rohanchandra30/TrackNPred: This is the code base for our ACM CSCS 2019 paper: “RobustTP: End-to-End Trajectory Prediction for Heterogeneous Road-Agents in Dense Traffic with Noisy Sensor Inputs”. This codebase contains implementations for several trajectory prediction methods including Social-GAN and TraPHic.

数据集: https://drive.google.com/drive/folders/1zKaeboslkqoLdTJbRMyQ0Y9JL3007LRr?usp=sharing

ApolloScape(街景数据,高复杂场景,2D/3D注释);NGSIM(单一交通流,高速公路);KITTI(带有2D/3D注释);TRAF(密集和异构交通,2D/3D轨迹信息)

方法:

提出一种LSTM-CNN混合网络对密集交通流场景进行轨迹预测,考虑了场景中车辆的交互作用。

网络结构组成: 包括三层网络,Horizon层(输入:预测的车前视角半椭圆区域代理车辆位置、速度、流量集中度、尺寸)、Neighbor层(输入:预测的车360度椭圆区域代理车辆的位置、速度、流量集中度、尺寸)、Ego层(输入:预测的车自身的位置、速度、流量集中度、尺寸、转角半径、形状等等);经过网络得到特征向量;最后级联在一起进行轨迹预测。

论文里采用了一种混合的模型去进行轨迹的预测,现在广泛使用的轨迹预测模型主要是LSTMs,这个模型的优点是可以将时间因素纳入考虑,会考虑前面时间的信息对未来的影响,但是这个模型无法将多个交通参与者之间的交互纳入考虑,为了实现物体之间的交互,又在LSTMs的后面补了一个CNN,从而形成了一个混合网络。

论文作者采集了一个数据集称为TRAF,这个数据集主要是一些亚洲城市的2D/3D轨迹信息。这个实验是在TRAF和KITTI数据集上进行的。

算法的使用背景是密集且多元的交通场景,在这个场景下,一方面交通参与者的注意力会发生一些倾斜,会更加注意近距离的交通情况,而远距离的注意则会相对小一些,这个近距离称为视距(horizon)蓝色部分,而远距离称为邻域(neighbourhood)绿色部分。 在不同区域增加不同的权重。

另一方面,算法认为路径规划存在一些隐性的影响,比如说车辆的动力学约束、道路的形状甚至驾驶者的性格都会对路径预测产生影响,这部分影响不是显性的,而是隐性的,但是也应该纳入考虑的范围内。

基于这两方面的考虑,算法的输入是N个交通参与者的历史轨迹,主要是二维的点坐标xy,除此之外还包括交通参与者的大小l,论文中定义了一个量称为交通联系度,表示一定的范围内交通参与者的数量,引入这个量有别于交通密度,交通密度是一个宏观的概念,是一个全局的概念,而交通联系度是一个微观的概念,是一个局部范围的量。用上面几个量去衡量交通参与者的位姿信息。
获取位姿信息的主要方式是利用2D信息到3D信息的转换,这里论文里面没有明确写出来具体的方法,在论文的代码中应该有体现。
获得位姿信息之后,就是划分出前面提到的两个区域:视域和邻域,将两类交通参与者分开,这里需要注意,视域内的交通参与者同时也是邻域内的交通参与者,所以在后续的模型训练中也会有一部分数据重复利用。

网络主要包括三层:视域处理、邻域处理和自身状态处理。视域和邻域的内容都经过LSTM处理成一个MAP,之后经过两层的CNN进行处理,区别在于视域多经过了一个全连接层。模型训练过程中会不断调整视域和邻域范围内交通参与者行为的权重,最终利用数据形成一张地图,也就是上图中和hj和hjw。

关于前面提到的隐性限制,这一部分论文又展开细说了一下,隐性限制主要包括两部分,一个是车辆的限制,比如转向角,另一个是驾驶者的行为,这一部分主要体现在前面的说的交通注意度中,论文列举了三种驾驶行为的隐性影响,对于一个“更具进攻性”的交通参与者,这种参与者更容易出现超速、抢占位置或者过小车距的现象。

最后利用最小化损失函数的方法训练模型,从而完成轨迹的预测。

5. Trajectron++: Dynamically-Feasible Trajectory Forecasting With Heterogeneous Data (2020 ECCV)

论文:arxiv.org/pdf/2001.03093.pdf

代码:GitHub - StanfordASL/Trajectron-plus-plus: Code accompanying the ECCV 2020 paper “Trajectron++: Dynamically-Feasible Trajectory Forecasting With Heterogeneous Data” by Tim Salzmann*, Boris Ivanovic*, Punarjay Chakravarty, and Marco Pavone (* denotes equal contribution).

Trajectron++:这是一个模块化的、图结构的递归模型,它预测了一定数量的不同代理的轨迹,同时结合了智能体动态和异质数据(例如,语义地图)。Trajectron++被设计为与机器人规划和控制框架紧密集成;它可以产生可选的以自我代理运动计划为条件的预测。

(1)考虑智能体的动态,特别是地面车辆的动态;

(2)产生可能基于潜在的未来机器人轨迹的预测,用于考虑人类反应的智能规划;

(3)提供一种普遍适用的、开放的和可扩展的方法,可以有效地利用关于周围环境的异质数据。重要的是,利用这样的数据将允许结合环境信息,例如地图,这将使得能够根据场景的结构产生不同的预测。

Trajectron++,这是一个建立在Trajectron框架之上的开放和可扩展的方法,它从不同的输入数据中为不同语义类型的多个交互智能体生成动态可行的轨迹预测。

现有方法: 现有的多智能体行为预测方法有很多种,从确定性回归到生成性、概率性模型。然而,它们中的许多都是在没有直接考虑真实世界的机器人用例的情况下开发的;特别是,它们忽略了智能体的动力学约束、自我智能体自身的运动(对于捕捉人-机器人交互中的交互方面非常重要)以及现代机器人系统可以访问的大量环境信息(例如,相机图像、激光雷达、地图)

方法:

(1) 场景表示(有向图构建)

将当前场景抽象为时空(有向)图G=(V,E)。节点表示代理,边表示它们之间的交互。如果Ai影响Aj,则E中存在边(Ai,Aj)。在这项工作中,L2距离被用作代理是否相互影响的代理。

(2) 历史记录建模(有向图节点信息建模)

构建场景图后,模型需要对节点的当前状态、其历史记录以及节点如何受其相邻节点影响进行编码。

将它们的当前和先前状态馈送到具有32个隐藏维度的长短期记忆(LSTM)网络。

input是建模代理的当前和以前的D维状态。这些通常是位置和速度,可以很容易地在线估计。

(3) 编码交互信息(有向图边信息建模)

为了模拟相邻代理对建模代理的影响,Trajectron++分两步对图的边进行编码。

从相同语义类的相邻主体中聚集边缘信息。在这项工作中,元素和被用来作为聚集操作。这些聚集状态然后被馈送到具有8个隐藏维度的LSTM中,该8个隐藏维度的权重在相同类型的所有边缘实例之间共享,例如,所有行人公交车边缘LSTM共享相同的权重。

对连接到建模节点的所有边类型的编码进行聚合,以获得一个代表所有相邻节点所具有的影响的表示向量。为此,使用了附加注意模块。最后,将节点历史编码和边影响编码连接起来,以产生单个节点表示向量。

(4) 整合异类数据

根据传感器的可用性和复杂性,地图的保真度范围可以从简单的二元障碍地图到HD语义地图(提供“可驾驶区域”、“路障”、“人行道”、“人行横道”等语义类型的区域) 。为了利用这些信息,对于每个建模的代理,Trajectron++使用卷积神经网络(CNN)对旋转后的本地地图进行编码,以匹配代理的方向。

通常,通过将其编码为向量并将其添加到表示向量的该主干中,可以在该框架中加入进一步的附加信息(例如,原始LIDAR数据、相机图像、行人骨架或凝视方向估计)。在此框架中,通过将其编码为向量并将其添加到表示向量ex中

(5) 编码自我代理未来的运动计划

对自我代理运动计划的未来T个时间步长进行编码,使用双向LSTM是因为它在其他序列汇总任务上的强大性能。然后将最终的隐藏状态连接到表示向量的ex中

(7) 多模式考虑

Trajectron++通过利用CVAE潜变量框架显式处理多通道[43]。它通过引入离散的分类潜在变量z∈Z来产生目标p(y|x)分布,该变量编码高级潜在行为

在训练过程中,使用具有32个隐藏维度的双向LSTM来编码节点的地面真实未来轨迹,产生Qφ(z|x,y)。

(8) 生成动态可行的轨迹

在获得潜在变量z之后,它和主干表示向量ex被馈送到解码器,即128维门控递归单元(GRU)。每个GRU单元输出关于控制动作u(t)的双变量高斯分布的参数(例如,加速度和转向速度)。然后,将代理的系统动力学与产生的控制动作u(t)相结合,以获得位置空间中的轨迹

(9) 模型输出

最大可能性(ML):

模型的确定性和最大可能性的单一输出。高层潜在行为模式和输出轨迹是它们各自分布的模式

Zmoad:

来自模型最可能的高级潜在行为模式的预测

Full:

模型的完整采样输出,其中z和y根据

分布:

由于使用了离散的潜变量和高斯输出结构,该模型可以通过直接计算来提供解析的输出分布

评价指标:

  1. Average Displacement Error (ADE)
  2. Final Displacement Error (FDE)
  3. Kernel Density Estimate-based Negative Log Likelihood (KDE NLL)
  4. Best-of-N (BoN)

数据集:

ETH/UCY(行人) nuScenes(行人车辆)

性能指标

常用的性能指标为Root Mean Squared Error(RMSE),即均方误差。

另外还有不少用的是Average displacement error(ADE),即预测出的轨迹和真实值的平均差距,有时候也会比较Final displacement error(FDE),即最终预测的位置和真实值的平均差距。各自定义如下:

  1. Average displacement error (ADE): The mean Euclidean distance over all the predicted positions and ground truth positions during the prediction time.

  2. Final displacement error (FDE): The mean Euclidean distance between the final predicted positions and the corresponding ground truth locations.

数据集

The High way Drone Dataset

https://www.highd-dataset.com/

介绍:这个是德国亚琛工业大学汽车工程研究所2018年发布的HighD数据集,用于满足自动驾驶基于场景的验证。 他们根据数量、种类和所包含的情景来对数据集进行了评估。数据集包括来自六个地点的11.5小时测量值和110 000车辆,所测量的车辆总行驶里程为45 000 km,还包括了5600条完整的变道记录。

NGSIM

https://ops.fhwa.dot.gov/trafficanalysistools/ngsim.htm

介绍:Next Generation SIMulation (NGSIM)是美国交通局提供的数据集,广泛用于交通流量预测,驾驶员模型定参,以及车辆轨迹预测等方面的研究。

US Highway 101 Dataset

其中US Highway 101 Dataset常用于车辆轨迹预测,该数据集提供了2005年美国101号高速公路的车辆轨迹信息。完整的数据集中总共有45分钟的数据,分为三个15分钟的时段:上午7:50至上午8:05;上午8:05至8:20,上午8:20到上午8:35,这些时段代表拥堵的加剧,或者是非拥塞和拥挤状况之间的过渡,以及高峰时段的完全拥塞。除车辆轨迹数据外,US 101数据集还包含计算机辅助设计和地理信息系统文件,航拍矫正的照片,环路探测器数据,原始和处理后的视频,天气数据以及汇总数据分析报告

Interstate 80 Freeway Dataset

和Highway 101 Dataset基本一致
的数据集中总共有45分钟的数据,分为三个15分钟的时段:上午7:50至上午8:05;上午8:05至8:20,上午8:20到上午8:35,这些时段代表拥堵的加剧,或者是非拥塞和拥挤状况之间的过渡,以及高峰时段的完全拥塞。除车辆轨迹数据外,US 101数据集还包含计算机辅助设计和地理信息系统文件,航拍矫正的照片,环路探测器数据,原始和处理后的视频,天气数据以及汇总数据分析报告

Interstate 80 Freeway Dataset

和Highway 101 Dataset基本一致

你可能感兴趣的:(自动驾驶,自动驾驶,人工智能,机器学习)