【笔记】TNT: Target-driveN Trajectory Prediction

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

Abstract

TNT分为3个stage:

  1. 预测agent未来的的target point
  2. 生成指向这些target point的trajectory
  3. 给这些trajectory打分,选出概率高的

这样便可以做到一个多方向意图的预测(即直行,左转,右转,不同车道啥的)。

Introduction

TNT主要是为了解决agent的未来轨迹预测(支持多方向意图)。
请添加图片描述

  1. target prediction:使用场景图预测了targets的分布
  2. target-conditioned motion estimation:预测了对于每一个target的时序序列
  3. scoring and selection:综合考虑所有轨迹后,评估了每一个轨迹的likelihood。选出概率高的轨迹输出。

Formulation

历史T帧的agent的states: s P = [ s − T ′ + 1 , s − T ′ + 2 , . . . , s 0 ] s_P=[s_{-T'+1}, s_{-T'+2},...,s_0] sP=[sT+1,sT+2,...,s0]
未来T帧的agent的states: s F = [ s 1 , s 2 , . . . , s T ] s_F=[s_1,s_2,...,s_T] sF=[s1,s2,...,sT]
历史T帧的环境变量(包括别的agents和场景元素): c P = [ c − T ′ + 1 , c − T ′ + 2 , . . . , c 0 ] c_P=[c_{-T'+1},c_{-T'+2},...,c_0] cP=[cT+1,cT+2,...,c0]
我们用 x = ( s P , c P ) x=(s_P,c_P) x=(sP,cP)来表示历史的所有变量,那么给定历史后的未来预测的概率分布为 p ( s F ∣ x ) p(s_F|x) p(sFx).
τ ( c P ) \tau(c_P) τ(cP)表示根据 c P c_P cP获得的大概的target空间,则
请添加图片描述
总的来看,第一步target prediction给出了 p ( τ ∣ x ) p(\tau|x) p(τx),即根据历史信息获得target。第二步target-conditioned motion estimation根据历史信息和target给出了未来的运动状态。整体符合条件概率的模型。最后一步scoring and selection就学习了打分的函数 ϕ ( s F ) \phi(s_F) ϕ(sF),对预测的轨迹进行打分.

Target-driveN Trajectory Prediction

Overview:模型输入是encode过的场景,然后依次是,预测M个target,对每个target预测轨迹,打分后选取概率最高的K个轨迹。
请添加图片描述
对于target和states,我们均使用二维物理坐标来表示 ( x t , y t ) . (x_t,y_t). (xt,yt).

Scene context encoding

如果有高精地图的话,使用VectorNet来encode,其中使用polyline表示lanes,agent的trajectory,可作为 c P c_P cP s P s_P sP. 最后输出的是对于每个agent的feature x x x.
如果没有高精地图,使用ConvNet来编码也可以。

Target prediction

假设有N个target。对于这N个target,我们都要预测一个offset。
请添加图片描述
整个target的分布为:
请添加图片描述
其中
请添加图片描述
类似于softmax中的算法,f获得的是所有target中的任意一个的分数,为了获得每一个target在所有target中的概率,计算了 π \pi π.

N ( . ∣ v ( . ) ) N(.|v(.)) N(.v(.))是一个正态分布,v是平均值,unit variance。即给定平均值和单位方差,offset的一个正态分布。其中这个和mean的distance采用的是Huber(靠近0的二次函数,远的一次函数)。

这里面的f和v都是可学的,经过2层MLP的结果。输入都是大概的目标点 ( x k , y k ) (x^k,y^k) (xk,yk)和场景的feature x x x.

Loss计算如下
请添加图片描述
其中分为不同target的cross entropy loss和offset的Huber loss。
请添加图片描述
对于car来说,target candidate是从lane上等间隔地sample的。对于pedestrian,则是用网格取点。对应图中的菱形。
然后预测的是 ( π , Δ x , Δ y ) (\pi, \Delta x,\Delta y) (π,Δx,Δy),即每个target的概率和offset。对应图中的五角星。

实际中,本文采用了非常大的target candidate池子,N=1000,经过模型后从当中选择了M=50个最高概率的结果。

Target-conditioned motion estimation

这一步要预测未来的states。这个未来的states的likelihood可以表示为
p ( s F ∣ τ , x ) = Π t = 1 T ( p ( s t ∣ τ , x ) ) p(s_F|\tau,x)=\Pi_{t=1}^T(p(s_t|\tau,x)) p(sFτ,x)=Πt=1T(p(stτ,x))
这个公式的成立依赖于两条假设

  1. 每一个time step都是独立的,这可以大幅提升运算的速度。有很多论文都这么做。
  2. 给定target后的预测是单意图的。这个是因为我们的预测在一个比较短的时间T内。

使用两层MLP,把场景feature x x x和target τ \tau τ作为输入,输出一个概率最高的未来轨迹 [ s ^ 1 , . . . , s ^ T ] [\hat{s}_1,...,\hat{s}_T] [s^1,...,s^T].此处采取了teacher forcing的技巧(在RNN中,一般训练方法是把上一步输出的state作为下一步的输入,以此类推。而teacher forcing则是每次输入的是ground truth)。训练的时候每一个输入的target采用的是ground truth而非上一步得出的结果。
请添加图片描述
Loss是每一个时刻的ground truth和预测结果的距离(Huber loss)之和。

Trajectory scoring and selection

这一步是对于一整条预测的轨迹进行打分。当中 g ( . ) g(.) g(.)是一个2层的MLP。
请添加图片描述
Loss的计算采取对预测分数和ground truth分数的交叉熵。
请添加图片描述
每一个预测的轨迹的ground truth的分数是它和ground truth的距离来计算的。
ψ ( s F ) = e x p ( − D ( s , s G T ) / α ) ∑ s ′ e x p ( − D ( s ′ , S G T ) / α ) \psi(s_F)=\frac{exp(-D(s,s_{GT})/\alpha)}{\sum_{s'}exp(-D(s',S_{GT})/\alpha)} ψ(sF)=sexp(D(s,SGT)/α)exp(D(s,sGT)/α)
直觉上的话就是对于多个意图的预测结果,分别计算每一条和gt(gt只有一个意图)的距离,用这些距离算概率(类似softmax的方法)。其中距离的计算是两条轨迹上同时刻点点间的最大距离。
请添加图片描述
为了避免太过接近的输出,采用NMS类似的做法。先根据分数排序,从高到低放入选中的轨迹,如果太接近已经选出来的轨迹。

Training and inference details

这是一个端端训练的模型,loss就是上述loss的和。
请添加图片描述
在inference中的步骤为:

  1. 场景encode
  2. 根据地图找出N个target candidate作为输入,从中用 π ( τ ∣ x ) \pi(\tau|x) π(τx)选出概率最高的M个target
  3. 预测这M个target的轨迹,获得 p ( s F ∣ τ , x ) p(s_F|\tau,x) p(sFτ,x)
  4. 对这M个轨迹打分 ϕ ( s F ∣ τ , x ) \phi(s_F|\tau,x) ϕ(sFτ,x),选出概率高的K个轨迹

Metrics

Average Displacement Error (ADE):轨迹上每个点和gt的每个点的距离的平均
Final Displacement Error (FDE):target的距离
Miss rate (MR):所有target距离gt的target差2m以上的比例

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值