【笔记】DenseTNT:End-to-end Trajectory Prediction from Dense Goal Sets

原文链接:https://arxiv.org/pdf/2108.09640.pdf

Abstract

TNT的方法是需要预先输入大概的target的,而DenseTNT不需要,是完全anchor free的方法。

Introduction

请添加图片描述
左图的以前的做法是根据lane定义一些anchor再regress和classify获得最终的位置,之后还要通过NMS的筛选法选出最后的轨迹。右侧的为现在的方法,通过密集地采点避免了定义anchor,同时也避免了使用NMS等规则来筛选。

意图测中非常重要的一个问题是ground truth只有一个,而对于多意图的预测来说,多个方向的预测都是允许的,这导致了label中有很多都是无效的,因为gt只包含了一个意图下的结果。此处设计了一个offline的model来提供多个意图下的label。这个model使用了一个优化算法从goal的分布里取出了一个set作为online model的label。

Method

地图采用vector化后的encode的结果。然后用dense goal encoder生成这些goal的概率分布。用这些概率分布获得一个goal set。在训练过程中使用优化算法制造伪的label。
请添加图片描述

Sparse context encoding

本文使用VectorNet来提取地图的feature。(没有的高精地图的话也可使用CNN)。输出为2D矩阵 L L L,每个row表示地图上的元素(lane,agent)的feature。

Dense goal probability estimation

TNT对于一个goal只预测一条轨迹的概率是有问题的:一个goal只有一条预测(可能通向这个goal的别的预测概率很高),一个goal获取的feature不够丰富(goal附近的点的信息也用上会更好)。

我们使用了dense goal encoder。它以一定的采样频率获取了地图上在道路上的的所有点。然后预测了这些密集点的概率分布。

Lane scoring

为了减少需要sample的点,我们先预测goal落在不同lane上的概率,这样能过滤掉明显不在candidate lane附近的点,提升运算速度。
这是一个二分类问题。因此使用了二分类的交叉熵计算loss。对于label,使用离gt的goal最近的lane作为1,别的lane为0.对于别的lane l l l,假设gt的goal是 y g t y_{gt} ygt,定义一个distance
请添加图片描述
直觉上就是gt的goal到这条lane的最短距离的平方。

Probability estimation

获得概率分布的做法是self-attention。首先agent的feature经过两次MLP。然后把goal的feature F F F作为需要query的的变量,从地图上所有元素(lane,agent)的feature中去查找索引对应的键和值。目的就是建立goal的feature与地图上所有元素的联系。直观上,这一步是把agent的未来状态(goal)表示成由历史的信息作为变量的函数,这个函数采用的是self-attention的做法。
请添加图片描述

这一步之后的结果是goal新的feature F F F。再通过两次MLP,即下图中的 g ( . ) g(.) g(.).用softmax中的方法获得每个goal的概率。将所有goal在地图上表示出来的话就是一个概率分布heatmap。

请添加图片描述

对于Loss的计算,离gt的goal最近的goal的label定为1,其余都为0.采取二分类交叉熵的算法。
请添加图片描述

Goal set prediction

对于多意图的预测,像TNT等预先设定好target的做法采用而是NMS(靠的近或概率低的过滤掉)。而DenseTNT的上一步获得是heatmap,因此不能简单使用NMS,因为用于筛选的阈值比较难定。这是因为TNT中采用的是从高到低排序概率,而DenseTNT中的概率分布是针对于整个鸟瞰图的,一旦意图的可能性变多了,平均分布到每一个意图的概率就低了(对于概率分布,所有的点的概率加起来需要为1)。
请添加图片描述因此,我们再加一个预测的任务。它的输入是heatmap,输出是goal set,这个有点像目标检测的框生成。但和目标检测不同,对于一个输入,我们的label只有一个,即gt。这样的话可能会有别的意图的结果在训练中被忽略。为此,设计了一个offline model来制造这些label。它和online model的区别就在这一步中。没有使用goal set predictor而是采用了优化算法。
请添加图片描述

Optimization (offline)

上一步heatmap的输出,实际上是对于地图上众多goal每个点的一个函数。设定 C = { c 1 , c 2 , . . . , c m } C=\{c_1,c_2,...,c_m\} C={c1,c2,...,cm}为所有dense goal的candidate,heatmap就把 C C C映射到一个0到1的的集合,写成 h ( c i ) h(c_i) h(ci),这也是每个goal的概率。
接下来定义一个目标函数
E [ d ( y ^ , Y ) ] = ∑ i = 1 m h ( c i ) d ( y ^ , c i ) E[d(\hat{y},Y)]=\sum_{i=1}^m h(c_i)d(\hat{y},c_i) E[d(y^,Y)]=i=1mh(ci)d(y^,ci)
其中
d ( y ^ , c i ) = min ⁡ y j ∈ y ^ ∣ ∣ y j − y c i ∣ ∣ d(\hat{y},c_i)=\min_{y_j\in\hat{y}}||y_j-y_{c_i}|| d(y^,ci)=yjy^minyjyci
从直观上讲,目标是有M个goal(大池子),要从中选取K个靠谱的goal(小池子)。 d d d是针对于大池子的,对于大池子里所有candidate都有一个 d d d。这每个candidate都与小池子中的goal计算距离,取最近的作为 d d d,即寻找小池子中离candidate最近的点。对于所有的 d d d,用概率加权计算期望。总体的话在收敛情况,大池子中的所有goal到距离自己最近的小池子中的goal乘上概率加权应当达到最小。以下是这个优化算法的实现。
请添加图片描述
翻译成中文:

  1. 初始化K个goal,从M个goal的大池子里随机选
  2. 小池子里的每个goal做随机扰动,变为别的goal
  3. 计算原来的和现在的小池子的d的期望e和e’
  4. 如果现在的小池子d的期望更小,则使用现在的小池子。否则以1%的概率采用现在的小池子。(避免局部最优)
  5. 不停循环2-4直到步数达到阈值(或时间太长)

优化算法之后得到的就是全局最优的选中的小池子。这个小池子里的结果能作为训练online模型的伪label。

Goal set predictor (online)

模型采用了encode+decode的办法。encoder部分是一层self-attention加上max pooling,decoder部分是2层MLP,输入是heatmap,输出是2K+1个值,分别对应K个2维坐标(goal set)和一个当前goal set的confidence。

考虑到heatmap的概率分布比较散,可以采用N头同时运算。即N个goal set predictor输出N个2K+1的值,从当中选取confidence最高的那个goal set预测。为了运算效率的提升,这N头使用相同的self-attention层,但是不同的2个MLP。

在训练过程中,采用了offline模型的伪label作为监督。上述offline中讲到的初始选定的小池子,在这里采用的是online模型的K个goal的set的预测。然后经过L次随机扰动(即不停随机选取邻居点,L=100),选取当中expected error(offline里的期望项)最小的那个set作为伪label。

标记 y ˙ \dot{y} y˙为预测结果, y ^ \hat{y} y^为伪label,则loss的计算如下。即一一对应后的L1距离之和。
请添加图片描述
再考虑到采用了N头预测,这部分的loss将采用二分类的交叉熵。其中 μ \mu μ为所有head的confidence, ν \nu ν为label,只有expected error最低的label为1,别的为0.
请添加图片描述

Trajectory completion

这一步和TNT做法类似。类似于dense goal encoding(2层MLP后过self-attention)最后过2层MLP来decode得到整条预测轨迹的state。采用teacher forcing技巧(因为只有一条gt)训练时只用gt的goal来算这条预测轨迹。Loss的算法和TNT一样,用的是点点之间的Huber loss。
请添加图片描述

Learning

训练分为两个stage。第一个stage使用gt轨迹训练除了goal set predictor的部分。即把dense的goal输入。获得大量的轨迹。
请添加图片描述
第二个stage主要负责goal set predictor的部分。
请添加图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ngsim-us-101-trajectory-dataset-smoothing是一个用于平滑车辆轨迹数据集的工具。该数据集包含了美国101号州际公路上的汽车行驶轨迹,由美国国家交通安全局(National Highway Traffic Safety Administration)提供。这个工具的目的是对这些车辆轨迹数据进行平滑处理,以便更好地分析和利用这些数据。 在实际应用中,车辆行驶轨迹数据可能会因为车辆速度变化、道路状况等原因出现一些噪音或不规则的情况。这种情况下,就需要使用ngsim-us-101-trajectory-dataset-smoothing工具来对这些数据进行平滑处理,去除噪音,使得数据更加清晰和准确。通过进行平滑处理,可以更好地分析车辆的行驶轨迹,比如预测车辆的行驶路径、识别交通事故的发生概率等,这对于交通管理和道路安全具有重要意义。 ngsim-us-101-trajectory-dataset-smoothing工具的实现原理可能涉及到一些数学模型和算法,如卡尔曼滤波、移动平均等方法。通过这些方法,可以对车辆行驶轨迹数据进行平滑处理,使得数据更加可靠和稳定。同时,该工具可能还提供了一些可调节的参数,如窗口大小、平滑系数等,以便用户根据实际需求对数据进行个性化的处理。 总之,ngsim-us-101-trajectory-dataset-smoothing工具为我们处理车辆行驶轨迹数据提供了一种方便高效的方法,使得我们能够更好地分析和利用这些数据,为交通管理和道路安全提供更有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值