3.1 基于锚点的轨迹预测
category
type
status
slug
date
summary
tags
password
icon
在Decoder解码部分, 需要得到自车与其他agent, 环境的交互信息, 进而得到最终的预测轨迹. 其中基于锚点的预测方法, 是指解码阶段不直接输出完整轨迹, 而是先预测出某个时间步的多个可能状态. 比如先预测出时的状态:
之后通过一些简单的网络(比如MLP, RNN), 连接agent起点和这些预测锚点进而生成轨迹. 接着对这些轨迹进行打分,排序和筛选, 最终得到输出多模态轨迹. 这有效的提高了轨迹预测的鲁棒性, 保证预测结果的下限.
那么如何确定这些预测点的位置呢? 可以分成Anchor-Based和Anchor-Free.两种方法
3.1.1 Anchor-Based
3.1.1.1 TNT:采样目标点
Anchor-Based是指利用地图, 环境等先验信息, 在预测目标附近采样得到可能的预测目标点.
Waymo在2020年发布的TNT[1] 是Anchor-Based的典型代表, 很大程度上推进了预测网络在工业界的落地. 如图TNT会利用环境地图等先验信息, 设计一些规则对目标T秒后可能出现位置均匀采样. 比如车辆, 基于地图的拓扑关系得到车辆直行, 换道, 右转等采样候选点; 如果是行人, 则同样会在行人附近利用人行道, 护栏等地图信息设计采样逻辑, 得到采样候选点.
然后先从采样候选点中选出可能性较大的几个点作为锚点, 利用MLP生成每个目标点对应的轨迹, 进行打分,排序和筛选. 后来作者又提出Dense TNT[2], 大幅增加了采样点的数量, 从而有更好的预测效果.
3.1.1.2 PBP: 横纵向采样目标点
大部分基于地图信息采样的anchor-based方法, 都只考虑横向上的模态分布(即不同车道), 而不考虑纵向上的模态分布(即不同速度).
PBP[3]基于Frenet坐标系, 在参考线上分别进行横向和纵向采样, 这种方式保证了模态的完整性.
因为anchor-based方法的稳定性和模态完整性, 使其在工业落地时有较好的效果, 基于地图信息采样的anchor方法应用较多.
3.1.1.3 MultiPath:基于意图的锚点生成
作者也可以基于intention(意图)生成锚点, 比如MultiPath[4],轨迹锚点通过无监督学习的方式从训练数据中提取。这些锚点代表了轨迹分布中的主流模式,可能对应于不同的行为意图,例如“变道”或“减速”。
之后使用K-means进行聚类, 得到每个意图的代表性轨迹和对应锚点. 锚点的生成过程不依赖于任何先验的语义概念,而是直接从数据中学习得到。最后对这些锚点根据实际的预测目标, 进行调整, 作为最终的锚点.
3.1.1.4 MTR: 基于意图的query生成
MTR也采取了类似的方法: 它将数据集中所有同类型(车辆, 行人, 自行车)的agent的真值轨迹, 转换到agent-centric坐标系下, 进行了统计. 灰色线条就是所有数据的真值轨迹, 然后对统计结果进行K-MEANS聚类, 得到K个点作为intention point.
但是MTR更进一步利用了transformer的注意力机制, 首先把这K个intention point通过MLP生成static intention query:
然后通过self-attention, 与场景信息, agent信息cross-attention等操作, 得到更多的信息. 因为static intention query本身是可学习的, 因此作者认为k不需要太大就可以得到较好的效果.
static intention query仅仅代表大致的运动趋势, 通过Dynamic Searching Query在static intention query附近搜索目标点. 论文搭建了多层网络来更新这两个query, 不停的refine得到最终的锚点.
但是这种基于统计数据得到intention 信息的方法也有明显的缺点: 比如明确目的车辆(高速上的车辆), 几乎不会有左转,掉头等等统计得到的模态行为. 因此这种方法在工业界, 鲜少应用.
Anchor-Based的方法加入了基于规则的先验信息, 这保证了轨迹预测结果不至于太离谱, 有效提高了模型的下限. 并且它能够让模型在训练的时候快速收敛.
但是另一方面, 很难处理一些非常规场景, 比如事故车辆可能会在路上任意移动. 这个问题会随着预测时长的增加, 变的严重.
3.1.2 Anchor-Free
Anchor-Free是指不利用地图等先验信息预先采样锚点, 而是让模型直接输出锚点. 简单的做法是, decoder中设置一个MLP或者RNN, 输入encoder信息后直接输出锚点.
Anchor-Free的输出非常灵活, 不被规则或者地图等先验限制. 但是这样也对应着缺点:
- 锚点的质量无法保证, 比如生成道路边界之外的锚点, 进而无法保证输出轨迹的质量.
- 锚点可能相互重复, 难以避免模态坍缩的问题.
- 锚点可能丢失模态
3.1.3 两段式生成轨迹
QCNet提出了一种融合Anchor-Free和Anchor-Based的可学习的锚点生成方式.
如图, 首先用模型输出的anchor-free mode query, 从 Mode2Scene(模态和场景cross attention)和Mode2Mode Attention(各模态self attention) 中 query出K条粗粒度轨迹. 他们代表基于anchor-free得到的proposal结果.
接着将这些粗粒度轨迹输入到anchor-based模块得到anchor-based mode query, 会在粗粒度轨迹基础上refine出锚点的偏移量, 进而重新生成新的锚点和对应轨迹. 也就是改善了proposal预测结果.
由于预测时间很长, agent运动到几秒后的环境会有比较大的变化, 因此比较难把整个时间周期内的feature给做成一个query embedding。为了降低这个难度,提升query的质量,作者采用了 DETR的做法:设定 为step的步数, 和周围场景融合一下后得到下一个step的位置, 每次前进 个step。同时作者还发现这个step不用特别小。比如每次可以预测往前 的结果, 获得新的位置后重新和场景融合再向前预测 ,不是一秒一秒走,也不是一口气全预测出来。
这种先后proposal和refine的两阶段式轨迹预测, 可以融合Anchor-Free和Anchor-Based的优点.
参考链接
- [5] QCNet: Query-Centric Trajectory Prediction
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...