赞
踩
原文链接:https://arxiv.org/pdf/2008.08294.pdf
TNT分为3个stage:
这样便可以做到一个多方向意图的预测(即直行,左转,右转,不同车道啥的)。
TNT主要是为了解决agent的未来轨迹预测(支持多方向意图)。
历史T帧的agent的states:
s
P
=
[
s
−
T
′
+
1
,
s
−
T
′
+
2
,
.
.
.
,
s
0
]
s_P=[s_{-T'+1}, s_{-T'+2},...,s_0]
sP=[s−T′+1,s−T′+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=[c−T′+1,c−T′+2,...,c0]
我们用
x
=
(
s
P
,
c
P
)
x=(s_P,c_P)
x=(sP,cP)来表示历史的所有变量,那么给定历史后的未来预测的概率分布为
p
(
s
F
∣
x
)
p(s_F|x)
p(sF∣x).
用
τ
(
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),对预测的轨迹进行打分.
Overview:模型输入是encode过的场景,然后依次是,预测M个target,对每个target预测轨迹,打分后选取概率最高的K个轨迹。
对于target和states,我们均使用二维物理坐标来表示
(
x
t
,
y
t
)
.
(x_t,y_t).
(xt,yt).
如果有高精地图的话,使用VectorNet来encode,其中使用polyline表示lanes,agent的trajectory,可作为
c
P
c_P
cP和
s
P
s_P
sP. 最后输出的是对于每个agent的feature
x
x
x.
如果没有高精地图,使用ConvNet来编码也可以。
假设有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个最高概率的结果。
这一步要预测未来的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))
这个公式的成立依赖于两条假设
使用两层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)之和。
这一步是对于一整条预测的轨迹进行打分。当中
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)=∑s′exp(−D(s′,SGT)/α)exp(−D(s,sGT)/α)
直觉上的话就是对于多个意图的预测结果,分别计算每一条和gt(gt只有一个意图)的距离,用这些距离算概率(类似softmax的方法)。其中距离的计算是两条轨迹上同时刻点点间的最大距离。
为了避免太过接近的输出,采用NMS类似的做法。先根据分数排序,从高到低放入选中的轨迹,如果太接近已经选出来的轨迹。
这是一个端端训练的模型,loss就是上述loss的和。
在inference中的步骤为:
Average Displacement Error (ADE):轨迹上每个点和gt的每个点的距离的平均
Final Displacement Error (FDE):target的距离
Miss rate (MR):所有target距离gt的target差2m以上的比例
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。