Waymo冠军方案!MTR++:基于对称建模和引导查询的运动预测

作者 | 一根呆毛  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/654070149

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【轨迹预测】技术交流群

本文只做学术分享,如有侵权,联系删文

本文包含MTR和MTR++两个model。

原文链接:https://arxiv.org/pdf/2306.17770.pdf (MTR和MTR++都写在里面了)

https://arxiv.org/pdf/2209.10033.pdf?trk=public_post_comment-text (只有MTR)

Abstract

轨迹预测的难点在于多种物体复杂多样的行为,以及复杂的环境信息的使用。此论文提出了Motion TRansformer (MTR). 这个transformer使用encoder和decoder结构,用intention作为query来获取轨迹。intention对应着不同mode的轨迹。结构中包含两部分:

  1. global intention localization: 获取agent的intention

  2. local movement refinement: 修正出精准的预测轨迹

同时此论文还提出了MTR++的结构,来实现同时预测多个agent的多mode轨迹。这个过程中自然是处理了不同agent间不同intention的交互。在性能上也有提升。

7d0a97aa7fe5766dd174ade8459ce3b1.png

Introduction

传统方法使用MLP来直接回归多条轨迹,这样的话会导致预测结果倾向于学习发生频率最高的几个mode,而对于发生频率稀少的mode学习不充分。于是有论文提出了goal based的方案:给一把goal,然后预测通向每个goal的概率,再进行轨迹的预测(每个goal都是独立学习,及时发生频率低也确保能学习到)。这个做法很依赖goal的密度,而密度一高,算力又吃不消。因此提出了MTR的框架来处理多mode的预测。

MTR中使用了可学习的intention query。每个intention可以最后被解码成轨迹。intention query也使得可以同时优化abstract中的两个目标。

为了确保mode不塌缩(即学出来的mode都是同一个),预先在空间中生成了有限个分散的intention点。这些点也降低了最后轨迹的不确定性。也不用生成非常多的点,因为每个query负责的是一块区域。每个query也会做classification来获取概率来粗筛。最后再是iterative地去修正轨迹中的点。

本文侧重MTR++,会考虑多个agent联合预测。提出了symmetric scene context model,在每个agent附近的范围内会用self attention的方式来处理agent自身坐标系下的附近地图。在轨迹预测端,采用了交互的intention query来模拟交互。

此文有四个贡献:

  1. 提出了MTR框架,实现了使用intention query的方式来处理多mode的预测。

  2. 提出了MTR++来同时预测多个agent。这里包含了两部分:对于不同agent都有一个共用的场景理解model,对agent未来轨迹间的交互使用intention query来处理。

3.4. 都是打榜成功。

MTR

1d37358c65dd8cca8e12e8852b40ee85.png

场景理解

采用transformer作为encoder。

Input Representation with Single Focal Agent:采用vector的形式编码地图和历史轨迹。所有node要转到agent的坐标系后再处理的。

fe2bf80764402e75e945caa9e7772d66.png bb824baa1c7b67d0a1192d9fc5c7654e.png 0fd360060abd6066d339ca604c90d80f.png 9b7c9ff664824d66b43ce590aa0fd7c7.png

Scene Context Encoding with Local Transformer Encoder:上一步提取了每个node的特征,然后还需要把不同node的特征给融合起来。

5d4266d0d6c04d605b933a36d37647a4.png

对上一步所有node采用了多头自注意力机制,每一个node都会concat上位置信息的positional encoding。因为我们没有必要考虑离这个node太远的node,所以提前计算出每个node附近的k个node: . 然后就是用Q去K里找对与附近node间的weight。然后去V那里做加权。整个过程就是标准的Transformer基础block,只不过对于KV的选取采用了附近的node来节省算力。

8d545e8370e4867961f828676f203ede.png

用transformer的另一个好处是,即使地图很大,对于每一个局部来说,都会再次提取每个node的特征给Q,K,V,这里对于所有node来说都是共享权重的,相比直接Dense融合,参数量会更少。

32af9b57a3fb2f0374e7408f126690b0.png.

Dense Future Prediction for All Agent(是个辅助任务):处理agent间的交互,此论文不止考虑了历史轨迹的交互(前面融合的时候其实已经算进去了),还会侧重未来轨迹mode间的交互。

82488ed99935d4dc39bd55de1a4b412d.png 0502fb4b27fbb9541a9efa22b1a837de.png 42388a1a965fb6ddc567c9989f702053.png

这个做法算是一个辅助任务,通过未来轨迹重新放到agent feature里来监督最后的预测结果,能提升model别的部分的性能。最后infer的时候自然不会使用这部分代码。

解码未来轨迹

利用intention query,使用transformer来解码。query的话是代表着不同的intention,以此来实现多mode的预测。使用了多个transformer block来一步步优化轨迹。

Learnable Intention Query:为了获得更精准的intention,采用了可学习的intention query。对agent的gt最后一个点进行统计,然后用k-means的做法来实现获取k个有较大区别的end point。每一个end point对应着一个intention,也即对应着最后的完整轨迹。

4f0af3d938b94b1ce2c5af01c59963a2.png cf7aa3dca07cfe289e23caec7da76718.png d00fa8060e829dd9084e162d0753ac47.png

这样显式地获取intention query的方式使得intention的学习更简单稳定,可以快速学到结果且不容易mode塌缩。而且不需要非常多的query,因为k means起到了nms的作用,只挑出了区分度大且很有价值的end point。

Scene Context Aggregation with Intention Query:获得query后,就可以进行transformer了。首先先在同一agent的不同intention间做self-attention来交换mode间的信息,即每一个intention作为query去所有K个intention里找权重再加权。

7b5eeadbc824b346069790c6f760d420.png 10d1146b4499bf967d208225553e9ba8.png ad180728f6009425aa11c50806828cee.png 422d3d86f113159888542a13572d74d3.png
MTR的paper里的图,会更detail
fa5a3ee791282fb399f088cd13acd852.png 233129a7b5b788afaaeca54d28c9dd28.png

对于每个intention,周围的信息都是选取intention的附近的node。

Global Intention Localization:计算每个intention的概率。所有mode的特征经过一个MLP,获得k个概率,里面应该还会有softmax来确保总概率加起来为1。

5f91ea12899368b08e1bf59b7f546763.png 2b2814bff03c8125ebc29c5c1e5b754f.png 16c645aba2f978301db9331006fa0b14.png

这样获得了新坐标,最后一个点是最后的坐标。把它concat到 上,就可以作为下一轮的query,再做transformer,再次refine轨迹。

这一层transformer获得的整条获得的轨迹则可以放入下一层的KV。

GMM获得多mode预测

1c0114148211d5abd86c320e2b6d6138.png 205eea9a0de901b9a3b6418a4f6dbca5.png

f是每个高斯分布的概率密度函数。o代表具体的一个xy坐标,那就可以查这个坐标的所有高斯概率密度函数里的值,再加权求和就是o处的真实概率密度。实际预测的时候,直接拿每个高斯分布的mean来当对应时刻的点的坐标就行了。(GMM概念上是混合了的高斯分布,但实际使用时就是多个单高斯分别算一下,并没有真正意义上混起来,对于靠近的高斯和远离的高斯其实没有做区分)

Training Loss:GMM部分的loss采用距离gt最近的mode的mean来计算,计算了gt在对应mode的高斯函数里的概率分布值,这个值越大说明gt离高斯的mean越近。gt对应的概率自然希望越高越好,所以也加上了概率的-log。

1e8901a9a54dc3c17f961b53da0f9402.png

在前面还有提到一个辅助任务,那部分的loss也加上,最后获得了loss函数。

62bbf55b2c6fa3166cf693e0704bbc6f.png

MTR++

在MTR中,需要对不同agent选择不同的周围node进行坐标系转换,不够高效。而像scene transformer的做法则是围绕ego car进行地图特征提取,这样就会导致远处信息没法很好提取。

7473688233679319fa4c17cb6ce68eff.png

对称编码场景信息

常见做法是找出agent为中心的场景来分别处理。这里是一起编码。

Input Representation with Polyline-Centric Encoding:仍然采用向量的形式来表示输入地图和历史轨迹,但是不会把所有node都转到agent自己的坐标系,而是采用polyline为中心的做法。

da4bb1a6079eed684c1dde708f53f1aa.png

对于agent,采用当前位置为中心,朝向为方向。对于地图元素,采用整个polyline的几何中心和其切线方向。因此先对它们的state进行平移旋转。之后再和之前一样处理:MLP后maxpooling处理。这样类似pointnet的做法获取了node的整体特征。

b04d4f57cc5ab5329c8f30641f9d1ce8.png f4bf17960cb83562cb8a54ee4b6491f6.png adcd23c796deb8e8f0fc826a556b1e1e.png

Symmetric Scene Context Modeling with Query-Centric Self-Attention:如果目标是i的token,对于别的token j,还是需要处理他们的坐标信息,但只需要处理每个node中一个点的坐标和朝向就行。下式就是旋转平移到i的坐标系里。

42d5b46f99c3adfdd7f37f661f649f29.png

pos和ang的R作为成新的R用来替换MTR里的P,注意力机制的做法一致。

1371ec2daa5a82cc26c877e13bb27b8e.png

计算量和MTR中差不多,但对于多个agent一起预测很友好,因为有很大部分是共享的。

联合运动解码

场景编码实现了同时操作,因此对于不同agent间多mode轨迹交互也可以实现同时处理。

Mutually-Guided Intention Querying of Multiple Agents:提出了 mutually-guided intention querying 模块,来处理不同intention间的交互选择。难点在于对于每个agent来说,intention是围绕他们自己的坐标系,没法直接融合。因此使用了场景编码中query-centric类似的做法:

fecc0e096b3bd9b4bfeeab6c9bd21a49.png 42eb301253cd7e584660e3fb4d1c8b6e.png bcf3d83c1016b1f60726aaf1b218c91a.png 53711fb07d1a3ba1ba52b2f3a721168d.png e1acd597b963f186ee881c4eaa5d0786.png 49c9980c6ac2178c32477a3986815310.png

最后就可以进行query-centric self-attention了。这里的F和MTR里一样,一开始初始化为0,随着多个模块获得新的F,E和R分别是mode本身的特征和相对位置关系。F的作用类似于对于mode特征的offset学习。在KV中,j的选取范围为i这个intention的坐标点最近的若干个intention。

93258b9ba324dcb1d88c2a8777fe88c9.png f2b6504ffd76b35b67236a33cc31b81c.png

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码学习)

d8a992c41cb9f9582d12baaf061bb86f.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

35d5e105cde43f2db1ca51b3925e46b6.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

e9b48e8d5b9c5b45cde15c3ef278ccd5.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

c780371887bdbb71e7028d664c3d8d57.jpeg

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值