Multimodal Motion Prediction with Stacked Transformers
date
Nov 10, 2021
slug
stacked-transformer
status
Published
tags
学习
论文
summary
用堆叠transformer做多模态的运动轨迹预测
type
Post
目的:预测附近车辆的多种合理的未来轨迹
相关工作:隐式规范化特征&显式生成多个proposal
改进点:
- 潜在特征可能集中在数据的最频繁模式上
- 基于proposal的方法主要依赖先验知识来生成和选择proposal
本文工作:
- 一个用于多模态运动预测的新型transformer框架(mm Transformer)
- 一个基于stacked transformer的新型网络结构
- 用一组固定的独立proposal在特征层面对多模态进行建模
- 开发一个基于区域的训练策略,以induce所产生的建议的多模态性
介绍:
多模态预测旨在生成目标车辆的多种合理轨迹
挑战:
- 即使在相同的场景下,由于未来事件的不确定性,交通车辆会有不同的表现,而我们只会收集到一个ground truth轨迹
- 实现多模态预测的关键在于在有限的训练样本中学习涵盖特定场景中所有可能的结果
运动预测方法:
- 概率方法
- 基于proposal的方法
the typical pipeline:
- 通过栅格化或矢量化周围信息创建输入表示
- 使用深度神经网络、图神经网络提取信息特征
- 通过模型或基于先验知识直接生成轨迹
概率方法:
- 将潜在的可能模型定义为一个潜在的变量,隐含轨迹的不确定性
- 通过生成器实现对不同潜变量的多模态预测&直接将输出约束在一个概率分布上
- 依赖预定义的先验分布和损失函数,容易导致优化不稳定和模式崩溃问题
基于proposal的方法:
- 对模态的潜在分布进行建模从而产生多模态输出
- 将候选点或轨迹定义为proposal,再将proposal回归或分类到ground truth
- 通过预定义的proposal,减轻了优化负担,缩小方案的可行空间
- 依赖于预定义锚点的质量,因为启发式的方法对候选点进行抽样
- 预测不能得到保证,因为训练过程只提供一个ground truth,不能很好地把握轨迹预测的多模态性质
改善相同特征带来的单模效应:
- 轨迹proposal机制
- 基于区域的训练策略
轨迹建议机制:
mm Transformer的解码器中的query被表示为轨迹proposal,渐进地聚集了来自编码器的多个上下文信息渠道,并做出独立的预测
基于区域的训练策略:
将空间划分为几个区域,并将轨迹分成不同的集合,每个集合被分配到一个区域。在训练期间,只有分配给ground truth所在区域的proposal集才会被用来优化框架,这种策略迫使单个建议专注于一个特定的模式,而不影响其他proposal所学到的潜在特征
Transformer:
- 基于注意力的方法
- 注意力机制的优势:通过考虑整个上下文来学习高质量的特征
- 最近轨迹预测的方法在sequence和interaction modeling采用注意力机制
- 与将transformer作为特征提取器的一部分的方法不同,文章使用了一个完全基于transformer的架构来解决多模态运动预测问题
多模态运动预测框架:
- proposal features y ∈ Y
- y由Fθ(x)生成,x是场景信息,包含运动历史和surrounding information
- 通过Gφ(y)生成多个未来轨迹S = {s_i ∈ R^(T×2) : 1 ≤ i ≤ K}
- T表示future horizon, K表示预测的总数

stacked transformer:
- 扩展模型以纳入各种上下文信息,vanilla transformer 只支持编码单一类型的数据
- 三个单独的transformer单元:motion extractor、map aggregator、social constructor。每个transformer都把前一个转换器的更新轨迹建议作为其解码器的输入
naive solution:将所有类型的输入(如过去的轨迹和车道信息串联成一串上下文嵌入,并将其输入到transformer。因为transformer需要一个固定大小的输入,此方案将消耗大量的资源。复合的不同类型的信息在被注意力层聚合时,潜在特征的质量可能会受到影响。因此,文章考虑分别纳入多个信息渠道
we propose to define the queries of transformer decoder as trajectory proposals, tailored to our multi-modal trajectory prediction task.
motion extractor:
运动提取器的编码器输入是观察到的车辆的历史轨迹,H = {h_i ∈R^(T_obs×2) : 1 ≤ i ≤ N_vehicle}
N_vehicle是观察到的车辆的数量,包括目标车辆,T_obs是历史观测的长度
解码器的输入是trajectory proposals Y = {y_i ∈ R^n : 1 ≤ i ≤ K}
解码器的输出可以被当作proposal features
所有的观测到的车辆共享同样的运动提取器的结构和地图聚合器结构
map aggregator:
车辆的行为在很大程度上取决于地图的拓扑结构
文章利用transformer来融合高清地图的几何和语义信息,来refine input proposal的特征
encode each center line segment into vectorized representation
use the subgraph module to process each vectorized polylines
受益于transformer内编码器-解码器注意力模块的可解释性,该方案可以根据其预先分配的模式检索相应的地图特征
social constructor:
对所有观察到的车辆的特征进行编码,目的是对它们之间的互动进行建模
每辆观察到的车辆的特征:通过多层感知(MLP)来总结all the proposals for each of vechiles
车辆特征也可以被看作是每个交通车辆的未来运动分布
为了追求更高的效率,文章只利用social constructor来更新目标车辆的proposal,而不是所有车辆
stacked transformer:
- 只通过运动提取器和地图聚合器对每辆车的信息进行单独编码,不涉及任何交互信息
- 应用社会构造器来聚合附近的信息,并对车辆之间的依赖关系进行建模
- transformer顺序在逻辑上是连续的,社会关系应该基于单个车辆的特征来构建
- 基于堆叠结构,模型可以捕捉到上下文信息和不同proposal特征之间的潜在联系,从而保证多模态的预测效果
proposal feature 解码器:
- 用于轨迹预测的轨迹生成器
- 用于proposal评分的轨迹选择器
对于K个目标proposal中的每一个,文章应用三层MLP G(·)来生成预测
S = {s_i ∈ R^(T×2): s_i = G(y_i), y_i ∈ Y, 1 ≤ i ≤ K}
y_i ∈ Y是由social constructor生成的第i个proposal feature,s是一个预测轨迹的tensor,T是future time steps
对于评分,文章应用MLP W(·)为每个轨迹proposal生成K confidence scores
C = {c_i ∈ R : c_i = W(y_i), 1 ≤ i ≤ K, }

基于区域的训练策略
对所有轨迹proposals的直接回归导致mode average问题,这阻碍了模型的多模态特性
克服mode average问题的一个可行方案是,只是用最终位移误差最小的proposal来计算回归损失和分类损失。但由于proposals的数量较少,预测结果局限于ground truth轨迹周围的一个局部区域。当试图增加proposal的数量以提高多样性时,会出现mode collapsing问题
为了解决上诉训练策略的局限性,文章提出了基于区域的训练策略,该策略根据ground truth的空间分布,将轨迹proposal分为若干个空间集群,并优化框架以提高每个集群内的预测结果
目标车辆的样本空间划分为M个区域,将mm Transformer的全部K个proposal平均分成M个部分
在训练过程中,文章以类似vanilla训练策略的方式利用回归损失和分类损失。不同的是,文章对所有被分配到ground truth所在区域的proposal计算损失,而不是对最接近ground truth的proposal进行计算。
以基于区域的方式改进多模态结果,在不影响其他区域的情况下优化一个区域的预测
training objective:
最终损失:
- 回归损失:Huber loss
- 评分损失:KL散度用于轨迹评分
- 多任务学习的辅助损失:辅助损失用于区域分类
回归损失:每步坐标偏移的Huber损失
信度损失:为了给每个轨迹分配一个置信度分数,文章通过最大熵模型来解决这个轨迹预
测的评分问题
分类损失:文章引入了区域分类损失以确保模型能够识别正确的区域。
中间层损失:为了加速训练过程,我们在social constructor的每个解码层之后增加了proposal特征解码器和the aforementioned combination of losses
总损失:总损失函数可以被看作是多个不同任务的总和,使用多任务学习方法来进行平衡
实验:
给定一个2秒的历史轨迹和上下文作为输入,目标是预测目标车辆在未来三秒内的运动