预测的核心是理解所处的交通场景, 因此轨迹预测网络首先需要将数据处理成易于模型学习的形式, 并对输入数据进行编码. 本章将介绍常见的输入数据形式和数据编码方法.
预测模块输入数据的坐标系一般是在城市维度下的绝对坐标系下采集的, 而训练一般是按独立场景训练. 因此需要将坐标系进行适当转换.
常用的坐标系转换方法有:Scene-Centric, Agent-Centric,相对坐标系和Frenet坐标系, 接下来将介绍这几种方法.
2.1.1 以场景为中心的坐标系
Scene-Centric, 即所有目标, 地图的坐标都从全局坐标系, 转换到场景的局部坐标系下.
R ( θ ) = [ cos ( θ ) − sin ( θ ) sin ( θ ) cos ( θ ) ] P i s c e n e = R × ( P i g l o b a l − O ) \begin{align*} R(\theta)&=\left[\begin{array}{cc} \cos (\theta) & -\sin (\theta) \\ \sin (\theta) & \cos (\theta) \end{array}\right] \\ P_i^{scene}&=R \times\left(P_i^{global}-O\right) \end{align*} R(θ)Piscene=[cos(θ)sin(θ)−sin(θ)cos(θ)]=R×(Piglobal−O)
- O O O: 局部坐标系的中心点在全局坐标系的坐标
- P i g l o b a l P_i^{global} Piglobal: 目标的全局坐标系坐标
- R R R: 旋转矩阵
- P i s c e n e P_i^{scene} Piscene: 场景坐标系下的新坐标
Scene-Centric是最容易想到的表征方式, 会在场景内选取一个坐标系原点. 所有目标在同一个坐标系下, 使场景信息天然具有了全局视野. 很方便模型去学习一些场景内的共有的特征, 比如固定的区域信息(人行道). 另外, Scene-Centric的计算非常简单.
缺点是不具备视角不变性, 即如果更换了视角, 数据是否保持不变. 因为每一帧的原点可能都在变, 不同帧的输入数据和预测结果无法相互比较.
2.1.2 以agent为中心的坐标系
相较于Scene-Centric, Agent-Centric就是每个预测目标需要的场景信息, 都会转换到以当前agent为原点的局部坐标系下.
P i a g e n t j = R j × ( P i g l o b a l − P j g l o b a l ) \begin{align*} P_i^{agent_j}&=R_j \times\left(P_i^{global}-P_j^{global}\right) \end{align*} Piagentj=Rj×(Piglobal−Pjglobal)
- P j g l o b a l P_j^{global} Pjglobal: 预测目标 a g e n t j agent_j agentj的全局坐标
- P i g l o b a l P_i^{global} Piglobal: 场景目标的全局坐标
- R j R_j Rj: 旋转到目标agent为中心坐标系的旋转矩阵
- P i a g e n t j P_i^{agent_j} Piagentj: 以 a g e n t j agent_j agentj为原点的新坐标
Agent-Centric显然是为了解决预测目标agent自身关注度不够的问题, 将场景内相关的环境, 其他agent目标信息斗转换到预测目标agent的视角下, 易于模型去理解相互之间交互关系, 能够生成更高质量的预测轨迹. 并且Agent-Centric是具备视角不变性的.
但是缺点也是显而易见的: 如果我们预测10个目标, 就需要进行10次坐标转换. 这带来了大量的计算量和数据存储量, 会显著拖慢模型运行速度. 另外, 局部坐标系下缺乏了共同的全局视野, 这也增加了模型理解场景信息的难度.
这两种方法的优缺点是相互对立的, 常见的方法是: 对于与自动驾驶车辆存在交互的重要目标agent, 采取Agent-Centric方式; 而场景内的其他普通agent, 采取Scene-Centric方式.
相对坐标系统
2.1.3 相对坐标系
前面几节提到的方法, 考虑了视角不变性或者是空间不变性. 但是不同帧之间的场景数据, 虽然时间窗口会变化, 但是明显存在重复的时间窗口. 是否可以保证不同帧表征结果的时空不变性呢?
CVPR2023论文QCNet[2]提出了一种Query-Centric具有时空不变性的表征方法, 极大的提升了预测模型的性能.
2.1.3.1 时间窗口
如图, 假设模型需要对agent的历史3秒轨迹进行编码. 左图是t时刻下[t-2,t]的历史状态信息, 右图是t+1时刻下[t-1,t+1]的历史状态信息.
显然这两帧数据的时间窗口中, [t-1,t]的数据是完全重复的. 但是我们却每一帧都会对这些重复的数据重新进行坐标转换和编码.
2.1.3.2 相对时空位置编码
如果在一个局部时空场景内, 状态量引入第4维时间数据: ( p i t , θ i t , t ) \left(\mathbf{p}_i^t, \boldsymbol{\theta}_i^t, t\right) (pit,θit,t). 其中 i i i代表agent的序号, 坐标 p p p由 ( x , y ) (x, y) (x,y)组成, 航向角 θ \theta θ, 时间 t t t. p i t \mathbf{p}_i^t pit代表第 i i i个agent在 t t t时刻的坐标.
假设 ( p i t , θ i t , t ) \left(\mathbf{p}_i^t, \boldsymbol{\theta}_i^t, t\right) (pit,θit,t)和 ( p j s , θ j s , s ) \left(\mathbf{p}_j^s, \boldsymbol{\theta}_j^s, s\right) (pjs,θjs,s)是场景中的两个坐标, 那么它们的
- 相对距离: ∥ p j s − p i t ∥ 2 \left\|\mathbf{p}_j^s-\mathbf{p}_i^t\right\|_2 pjs−pit 2
- 相对角度: atan 2 ( p j , y s − p i , y t , p j , x s − p i , x t ) − θ i t \operatorname{atan} 2\left(\mathbf{p}{j, y}^s-\mathbf{p}{i, y}^t, \mathbf{p}{j, x}^s-\mathbf{p}{i, x}^t\right)-\boldsymbol{\theta}_i^t atan2(pj,ys−pi,yt,pj,xs−pi,xt)−θit
- 相对朝向角: θ j s − θ i t \boldsymbol{\theta}_j^s-\boldsymbol{\theta}_i^t θjs−θit
- 相对时间: s − t s-t s−t
实际上就是旋转平移到了 ( p i t , θ i t , t ) \left(\mathbf{p}_i^t, \boldsymbol{\theta}i^t, t\right) (pit,θit,t)为基点的坐标系(对应上图的绿色箭头和蓝色箭头). 得到了这些相对状态数据, 就可以进行相应的编码, 这两个状态的相对编码结果记为 r j → i s → t \mathbf{r}{j \rightarrow i}^{s \rightarrow t} rj→is→t
特别的, 如果是不包含时间的静态数据(比如地图数据), 就去掉时间维保留3维状态.
2.1.3.3 利用历史编码信息
有了相对编码结果之后, 下一帧就不需要重新进行完整编码了, 在两帧共有的时间窗口的编码信息, 可以直接使用历史编码信息.
这样将基于注意力机制的编码复杂度从 O ( A T 2 ) + O ( A T M ) + O ( A 2 T ) \mathcal{O}\left(A T^2\right)+\mathcal{O}(A T M)+\mathcal{O}\left(A^2 T\right) O(AT2)+O(ATM)+O(A2T) 下降到了 O ( A T ) + O ( A M ) + O ( A 2 ) \mathcal{O}(A T)+\mathcal{O}(A M)+\mathcal{O}\left(A^2\right) O(AT)+O(AM)+O(A2)
不过这种做法需要对每个agent的每个时间步的状态, 都计算相对位置关系. 虽然可以重复利用历史信息, 但是去计算这些信息的计算消耗是比较大的.
2.1.4 Frenet坐标系
使用Frenet坐标系也可以实现视角不变性, 将在下一节详细介绍.
参考链接
- [1] Aydemir, Görkay, Adil Kaan Akan, and Fatma Güney. "Adapt: Efficient multi-agent trajectory prediction with adaptation." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023.
- [2] QCNet: Query-Centric Trajectory Prediction