【动手学轨迹预测】2.1 场景表征的坐标系

预测的核心是理解所处的交通场景, 因此轨迹预测网络首先需要将数据处理成易于模型学习的形式, 并对输入数据进行编码. 本章将介绍常见的输入数据形式和数据编码方法.

预测模块输入数据的坐标系一般是在城市维度下的绝对坐标系下采集的, 而训练一般是按独立场景训练. 因此需要将坐标系进行适当转换.

常用的坐标系转换方法有: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论文QCNet2提出了一种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坐标系也可以实现视角不变性, 将在下一节详细介绍.

参考链接

推荐阅读

相关推荐
某林2125 分钟前
跨越底层与AI的鸿沟:ROS2+多模态大模型(Qwen-VL)机器人全链路排障实录
人工智能·stm32·机器人·人机交互·ros2·技术复盘
怪兽学LLM8 分钟前
LeetCode 438 找到字符串中所有字母异位词(Python 固定滑动窗口+字符计数解法)
python·算法·leetcode
没事别瞎琢磨8 分钟前
二、类型系统——给所有概念起名字
人工智能·node.js
卡梅德生物科技小能手13 分钟前
卡梅德生物科普:MAPT(微管相关蛋白Tau)
人工智能·经验分享·机器学习
满怀冰雪13 分钟前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法
CC数学建模14 分钟前
2026年江西省研究生数学建模竞赛1题:空间数据分析中的过拟合识别完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
战族狼魂16 分钟前
基于 CNN 的ConvS2S(Convolutional Sequence-to-Sequence)架构英德机器翻译模型
人工智能·cnn·机器翻译
me83218 分钟前
【AI面试】小白理解大模型:仅编码器(BERT类)、仅解码器(GPT类)和完整的编码器-解码器架构各有什么优缺点?
人工智能·gpt·ai·bert
醒醒该学习了!20 分钟前
大语言模型(理论篇)
人工智能·语言模型·自然语言处理
leo__52021 分钟前
MATLAB实现牧羊人算法
开发语言·算法·matlab