Query-Centric Trajectory Prediction
今天要分享的片段来自于《Query-Centric Trajectory Prediction》,它发布于2023年的CVPR,作者曾在2022年提出了HiVT,同样发表在CVPR。
HiVT是运动预测任务中非常经典的一项工作,QCNet基于HiVT进行了较大的改动,提出了Query-Centric的场景编码方法,使得场景当中经过编码器得到的特征可以被复用。
QCNet中的场景编码方法是在每一个元素的局部坐标系当中进行的,意味着这种表示是具有视角不变性的。
基于视角不变的场景特征表示,QCNet进一步提出了一种双阶段的轨迹解码器,这一部分与双阶段的目标检测类似,解码器首先会在第一阶段提出一个未来轨迹提议(proposals),之后基于提议在第二阶段对提议进行改进(refinements),从而得到最后的轨迹预测结果。
本篇文章主要对QCNet的双阶段轨迹解码器的设计进行阅读与学习记录,对应于原文的第3.3节Query-Based Trajectory Decoding。
Query-Based Trajectory Decoding
运动预测任务可以被划分为两个子任务,分别是场景编码和轨迹解码。
轨迹解码的任务是根据上一步场景编码得到的特征,针对场景中的目标代理,利用特征解码 K K K条目标代理的未来轨迹。这不是一项简单的任务,因为在场景编码阶段,每一个目标代理只会得到一组特征。
受目标检测任务的启发,近期的一些工作采用DETR风格的解码器,来解决上述“一对多”的问题,即首先使用若干个可学习的queries,与scene encodings进行cross-attention,再使用learnable queries对轨迹进行解码。
然而,与无锚方法(anchor-free)类似,上述方法易受训练不稳定(training instability)以及模式崩塌(mode collapse)的影响。此外,这类方法在长程预测场景中的效果不佳。
本文方法提出了基于query的解码器,来克服上述困难。
Query-Based Decoder使用了循环(recurrent)且无锚的提议生成模块来生成自适应的轨迹锚点,之后使用一个基于锚点的模块来进一步对初始的提议进行改进。上述pipeline如下图所示:
Mode2Scene and Mode2Mode Attention
解码器当中的提议生成模块以及提议改进模块均使用DETA风格的架构来进行实现。
与DETR中的object queries思路类似,每一个query都负责对目标代理的 K K K条未来轨迹当中的一条进行解码。
在Mode2Scene attention中,通过cross-attention layers,使用丰富的场景上下文信息来对mode queries进行更新,此处的场景上下文信息包括目标代理的历史运动信息编码、地图特征编码以及目标代理的邻域代理特征编码。
在Mode2Scene attention之后, K K K个mode queries通过Mode2Mode当中的self-attention来实现彼此感知,从而提升模式的多样性。
Reference Frames of Mode Queries
为了并行地对多个代理的未来轨迹进行预测,对场景中所有的目标代理共享同一组场景上下文编码。
由于编码阶段输出的场景上下文信息均是在每一个代理各自的局部坐标系统当中进行处理的,首先需要将这些上下文信息映射到每一个目标代理当前时刻的局部坐标系统当中,从而达到与agent-centric modeling类似的效果。
因此,本文方法为每一个mode query设置了一个局部坐标系统,其坐标中心与方向与目标代理当前时刻的位置以及航向一致。在通过Mode2Scene attention对query embeddings进行更新时,相对于queries的场景元素的位置会被记录在keys和values当中,使得queries对场景元素与当前时刻的相对时空位置有所感知。
Anchor-Free Trajectory Proposal
本文方法使用可学习且无锚的queries来生成初始的提议轨迹。这些提议将会在稍后作为轨迹改进模块的锚点,对轨迹进行改进。
与基于锚点的方法相比,基于锚点的方法尝试使用手工设计的锚点来尽可能地对Ground Truth轨迹进行覆盖,而本文方法当中的提议模块会以数据驱动的方式生成 K K K个自适应的锚点。
基于cross-attention layers,mode queries将会对场景上下文进行检索,从而快速地缩小锚点生成的搜索空间。Self-attention layers可以进一步在生成轨迹提议的过程中使得mode queries可以彼此感知。
在长程预测场景中,单个代理可以行驶较长的一段距离,它的邻域环境可能会发生变化。因此,很难通过一个单独地query embeddibng来总结所有的场景上下文信息。
为了降低queries提取场景上下文特征的负担,并提高锚点的质量,本文方法将DETR风格的解码器拓展为可循环的形式(recurrent fashion)。
通过进行 T r e c T_{rec} Trec次循环,对上下文感知的mode queries只需要通过MLP在每一次迭代时对 T ′ / T r e c T' / T_{rec} T′/Trec个时刻的未来轨迹坐标点进行解码即可。在随后的迭代中,这些queries将再一次成为输入,并检索下一步要预测的轨迹点附近的场景上下文特征。为了提高效率, T r e c T_{rec} Trec远小于预测时长 T ′ T' T′。实验结果同样表明过多的循环次数是没有必要的。
Anchor-Based Trajectory Refinement
无锚轨迹解码是一把双刃剑,尽管无锚解码非常的灵活,其训练阶段的不稳定性可能会导致模式崩塌。此外,随机初始化的mode queries必须适应所有场景当中的所有代理,缺少场景特定的归纳偏置,从而会输出不一致的预测结果,比如生成违反了运动学规则的预测结果或是生成打破由高精地图所定义的地图规则的预测结果。
因此,QCNet在无锚提议生成模块之后,进一步加入了基于锚点的轨迹改进模块,来进一步对轨迹提议进行改进。
以提议模块输出的轨迹作为锚点,本文方法使用改进模块对提议轨迹与Ground Truth之间的offset进行预测,并对每一个假设的似然进行估计。
提议改进模块同样采用DETR风格的架构,但它的mode queries是产生自提议轨迹锚点,而不是随机初始化生成的。具体来说,使用GRU来对每一个轨迹锚点进行特征提取,并使用GRU的最后一个隐藏状态来对改进模块的mode queries进行初始化。上述基于锚点的queries为模型提供了丰富的空间先验知识,使得attention layers可以更容易地对感兴趣的区域进行定位。
Training Objectives
按照HiVT当中的设定,QCNet使用拉普拉斯混合分布对
a
g
e
n
t
i
agent_i
agenti的未来轨迹进行参数化:
其中
{
π
i
,
k
}
k
=
1
K
\{\pi_{i, k}\}^K_{k=1}
{πi,k}k=1K是混合系数,在时刻
t
t
t,第
k
k
k个拉普拉斯混合成分将会使用位置
μ
i
,
k
t
\mu^t_{i, k}
μi,kt和尺度(scale)
b
i
,
k
t
b^t_{i ,k}
bi,kt进行参数化。
使用分类损失 L c l s L_{cls} Lcls来对改进模块输出的混合成分进行优化。
使用Winner-Take-All策略来对提议和改进模块输出的位置和尺度进行优化,仅对最接近Ground Truth的Proposal和Refinement的损失进行反向传播。
最终的损失由提议轨迹回归损失 L p r o p o s e L_{propose} Lpropose、改进轨迹回归损失 L r e f i n e L_{refine} Lrefine以及分类损失 L c l s L_{cls} Lcls组成:
L = L p r o p o s e + L r e f i n e + λ L c l s L = L_{propose} + L_{refine} + \lambda L_{cls} L=Lpropose+Lrefine+λLcls
其中 λ \lambda λ是用于平衡回归和分类的超参数。