轨迹预测经典论文之一 TNT:Target-driveN Trajectory Prediction

TNT是一种经典的目标预测方法,基于goal-anchor进行轨迹预测,分为目标预测、目标条件下的运动估计和轨迹评分及选择三个阶段。它将连续空间预测离散化,降低问题复杂度。文章强调目标预测阶段的重要性,以及如何通过offset和撒点策略来优化预测。后续阶段则负责从候选轨迹中选择最优路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

首先,放上论文原链接位置。
https://arxiv.org/pdf/2008.08294v2.pdf

TNT 是预测领域比较经典的论文, 已经出来两年半了,许多公司都在使用其基础上的小变种进行轨迹预测任务。它是典型的 anchor-based 方法,细分来说是属于,goal-anchor-based 。goal-anchor-based 方法之外,还有traj-anchor-based。以用统计的方法,聚类生成的固定的traj-anchor-based, 以车辆状态+动力学约束,动态生成anchor的方法,具体论文暂且不表,后面写到再说。
anchor-based 把连续空间上的预测,离散化,降低了问题的难度。

框架

请添加图片描述

如图1所示,TNT的pipeline分为三部分。
stage1: target prediction. 给所有的anchor点打分,选出top的anchor点。
stage2: target-conditioned motion estimation。
就选出的anchor点,回归出一条完整的轨迹。
stage3: scoring and selection。就上一个阶段选出的几条完整的轨迹,打分。

在这三个阶段中,最重要的是应该是第一个阶段,当一个goal选定后,未来的轨迹大致去向就定了。对于下游而言,只要goal对,意图明确了,对的规控就很有帮助。
就撒点策略而言,需要有适当的分辨率,对全部可行使区域都有很好的覆盖。由于offset的存在,撒点之外的endpoint也能照顾到一部分,但是撒点区域不合理的小,可能是第一阶段指标无法提升的原因之一。撒点方式非常灵活,论文中提到可以根据地图信息撒点,或者直接grid 网格化撒点,其他方面可以根据速度动态调整撒点范围等。
需要注意的是,第一个阶段在给goal打分的同时,还会回归出两个offset,固定的goal点加上offset才是下个阶段真正用到的 endpoint。
第二阶段回归轨迹,网络对这一步拟合难度不高。拟出来的基本合理,可能有个别拟合出来不平滑的情况出现,但即使不平滑,下游也可以有多种处理方式。当然由于传感器误差等,真值轨迹可能也有不少轨迹不平滑的情况,行人,骑行者尤为如此。
第三阶段对不同轨迹打分。文章认为第一阶段target的打分不好,不确定性高,需要对full traj 进行重新打分。

具体实现

请添加图片描述

论文中的实现是以待预测的物体为中心的,使用时候,每帧就需要pick出来感兴趣的目标进行预测。encoding部分采用的是VectorNet,把obj附近的地图和障碍物信息,编码进网络做信息融合。如果只能用 top-down image表达时,也可以采用卷积网络进行encoding。论文的重点自然在后面的decoding部分。

Target prediction

请添加图片描述

文中公式2所表达的意思是,将连续空间上概率分布的预测拆解成了两部分,一部分是离散点,也就是anchor点,另一部分是offset,是与anchor点配套的offset。两者加起来就是一个Goal点的位置。
请添加图片描述

文中提到的两个函数f(.) v(.)都是2层的MLP,第一个f用于给所有的target点打分,第二个v用于拟合回归出offset。 f 使用 cross entropy, v使用 Huber loss。u是撒的target点中,距离真值位置最近的点,u和真值的点计算的得到的offset即真值的 offset。
文章中,撒点数N是1000,M是该步选择的候选tagrt数目。

motion estimation

这个步骤有两个假设,一是未来的时间的位置互相是条件独立的,也就是是说,当前状态下,0.2s, 0.4s,0.6s…等的位置是互相独立的,而不是0.4s位置必须条件于0.2s位置(事实上还是有关联的,比如得有运动学约束规范当前状态到target点)。第二个条件是当给定未来某时刻的target点后,轨迹就不是多模态了,这点是reasonable的,有target点之后,一般就连不出差别特别大的traj了。这篇论文就是把多模放在第一阶段了。
请添加图片描述
在上述假设基础上,一切就自然而然了。依然是一个2层MLP。当用backbone输出的feature,cat上上一步骤的M个target点,回归出中间时刻的散点。
训练时,用真值轨迹的终点作为target,cat上obj feature, 作为输入,得到预测的轨迹,
与真值轨迹计算Huber loss。

Trajectory scoring and selection

第二步出来了topM的轨迹,可以按照第一步target点的分数排序,进行输出。但是文章认为,target estimated 相对于full 轨迹,是有高度的不确定性的, 所以有必要再对输出的轨迹重新rank。
该步依然是一个2层的MLP,输入是输出的轨迹和feature,输出是打分。loss依然采用cross entropy。
在这里插入图片描述

问题则是,真值的分数从何而来。文中使用预测的轨迹和真值轨迹的距离计算得到。设计的函数,距离越大,得分越小即可。上图已经解释的很清楚。

最后得到M个轨迹后,还需要设计一个选择出K的轨迹的算法。文中把M个轨迹按照第三步的score排序,依次选择,如果下一个轨迹距离已选择的轨迹距离过近,就排除它,直到选到K个。

至此,目标车辆就可以完成输出K个预测的带概率的轨迹了。

题目中的target[:-1, [0,2]]表示对目标数组target的切片操作,选择从第一个元素到倒数第二个元素(不包括倒数第一个元素),并且选择索引为0和2的元素。具体来说,它会选择target数组的第一个元素和第三个元素。 请注意,这里的target并没有给出具体的数值,只是一个表示目标数组的占位符。如果你提供具体的target数组,我可以根据提供的数组给出更准确的回答。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [2021-09-21:给定一个按照升序排列的整数数组 nums,和...如果数组中不存在目标值 target,返回 [-1, -1]。要](https://blog.csdn.net/weixin_48502062/article/details/120405698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【笔记】TNT: Target-driveN Trajectory Prediction](https://blog.csdn.net/weixin_39397852/article/details/122758833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [leetcode2-Bactracking-1:回溯-1](https://download.csdn.net/download/weixin_38552305/19909530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值