首页 > 其他分享 >【Motion Forecasting】SmartRefine:A Scenario-Adaptive Refinement Framework for Motion Prediction

【Motion Forecasting】SmartRefine:A Scenario-Adaptive Refinement Framework for Motion Prediction

时间:2024-10-27 12:20:44浏览次数:8  
标签:本文 Forecasting 轨迹 预测 Scenario Motion 改进 锚点 上下文

SmartRefine: A Scenario-Adaptive Refinement Framework for Efficient Motion Prediction

今天要分享的文章来自于商汤科技在CVPR 2024发表的文章SmartRefine,这是一项关注于双阶段轨迹解码器的改进工作。

Abstract

预测自动驾驶车辆周围智能体的未来运动对于自动驾驶车辆在动态的人机混合环境中的安全运行至关重要。上下文信息,如道路地图和周围交通参与者的状态,为运动行为预测提供了关键的几何和语义信息。为了达到上述目标,近期的工作采用两阶段的预测框架,首先粗略地给出一个轨迹预测的结果,再根据所预测轨迹周围的上下文信息对轨迹进行改进。

然而,上述的两阶段轨迹解码方法或是计算开销较大,或是轨迹改进的性能非常的有限。在这项工作中,作者提出了一种新颖的场景自适应改进策略,名为SmartRefine,来以最小的额外计算开销对模型初步预测的轨迹进行改进。

具体来说,SmartRefine可以基于每一个场景自身的属性,来自动地修改轨迹改进的配置(refinement configurations),并通过引入一个质量分数(quality score)来对所预测的轨迹的质量进行评估,从而自动地选取轨迹改进所需要的轮数,从而最大程度上保留轨迹改进对模型预测性能提升的潜力。

SmartRefine被设计为一种通用且灵活的方法,它可以无缝地插入到大多数当前的SOTA方法当中。作者在Argoverse 1和2数据集上展开了大量的实验,发现本文所提出的方法可以稳定地提升大多数SOTA方法的性能。具体来说,将SmartRefine与QCNet相结合,本文方法在Argoverse 2的单目标运用预测任务上取得了SOTA水准的结果。

针对本文方法的总体设计以及多轮次改进背后的机制,作者展开了大量的消融实验。

SmartRefine本身是一项开源的工作,源代码可见原文的相应链接。

Contributions

  • 本文提出了SmartRefine,它是一种场景自适应的改进方法,它全面地考虑了轨迹改进阶段的模型设计以及轨迹改进设置(configurations),这些设计和设置对于每一个场景来说都是自适应的,从而以最小的额外开销来在最大程度上提升改进轨迹的质量;
  • 本文提出了一项通用且灵活的框架,它可以轻松地被插入到大多数当前的SOTA方法当中,来稳定地提升现有方法的性能;
  • 本文方法在Argoverse 1和2数据集上展开了大规模的实验,实验结果表明SmartRefine在插入到几乎所有目前的运动预测模型上之后,都可以以最小的额外开销带来稳定的性能提升。具体来说,将SmartRefine与QCNet相结合,本文方法在Argoverse 2的leaderboard上取得了SOTA水准的精度。

Conclusion

在这项工作中,作者提出了SmartRefine,它是一种场景自适应的轨迹改进框架,用于高效地对轨迹进行改进并对目标的未来运动进行预测。在本文方法中,作者采用了自适应的锚点选择策略、上下文检索半径以及上下文编码,来更好地进行场景自适应的轨迹改进。之后,作者提出了一种轨迹改进的质量分数,来对当前的预测结果质量以及继续进行轨迹改进的性能提升潜力进行评估,并自适应地决定当前场景需要进行多少次的轨迹改进。

本文提出的SmartRefine不仅是轻量化的模型,而且可以作为一个模块无缝地插入到大多数当前的运用预测模型当中,它可以与场景编码的backbone解耦,仅通过与场景编码的接口相连接即可工作。

大规模的实验结果验证了本文方法在预测精度提升以及降低计算开销上的有效性,作者还对多次轨迹改进背后的机制进行了研究。在未来的工作当中,作者将会把本文方法拓展到多代理联合预测任务当中。

Scenario-Adaptive Refinement

在这里插入图片描述
这部分内容来自于原文的第3.2节,主要对本文方法进行了介绍。

Adaptvie Anchor / Context Selection

轨迹改进地重点在于锚点的选取以及上下文信息地检索。在通过使用场景编码器当中的特征对轨迹进行初步的预测之后,我们可以得到一个初始预测的轨迹以及初始轨迹的特征【通常使用线性模型对初步预测的轨迹进行编码,从而得到其对应的特征,比如使用GRU或是直接使用简单的MLP】,SmartRefine会首先沿着轨迹选取若干个自适应数量的锚点,之后会以一个自适应的邻域上下文检索半径来对锚点附近的上下文信息进行检索。

Anchor Selection

当在对沿着轨迹的锚点进行选择时,一个启发式的选项是直接选择轨迹的重点作为锚点,来进行长距离的上下文检索,这个选项与基于目标的轨迹预测相对应【最具代表的工作是TNT,即首先根据场景特征对目标的行驶终点进行预测,再根据终点信息和场景特征对整条轨迹进行补全。由于最初的锚点选取可能会选择多个锚点,因此可能会涉及到使用NMS来删除一些锚点,保留最有价值的锚点作为终点】。

然而,仅仅显式地依赖于轨迹的终点作为锚点通常会忽略目标行驶的中间过程,使得最终的预测结果发生偏移。为了在上下文信息丰富度和计算效率上达到平衡,本文方法采用了自适应策略,首先将根据场景特征预测的初始轨迹分解为 N < T f N < T_f N<Tf​个片段,将每一个片段的终点作为锚点。

需要注意的是,Motion Prediction Benchmarks通常所采用的预测长度是不同的。为了降低累计损失在长程预测当中所带来的影响,本文所设置的轨迹片段 N N N同样会根据预测长度来进行自适应改变。

Context Retrieval

当在对锚点附近的上下文信息进行检索时,过去的方法通常会采用一个固定邻域半径的圆形区域或是一个矩形区域并以锚点为中心在该区域内对锚点周围的局部上下文进行检索。这种固定的检索策略,尽管非常的直观,但是很有可能会产生次优解,特别是将模型应用于多个不同的数据集或是不同的场景当中的时候,很有可能需要根据数据集或是场景的特点来对检索的范围进行调整。

为了解决上述问题,本文方法的思路是,一个锚点的上下文检索半径应该依赖于:

  1. 当前轨迹改进的迭代轮数 i i i,因为越是到轨迹改进的最后阶段,锚点就越需要细粒度的上下文特征,这样才会使得这一阶段轨迹改进的结果由于之前的轨迹改进结果;
  2. 目标代理当前在锚点附近的行驶速度 v v v,因为较快的行驶速度将会使得当前目标车辆在预测时长内行驶更远的距离,因此依赖于距离更远的上下文特征。

综上,本文引入了一种自适应的上下文检索策略,每一个锚点的上下文检索半径 R R R会根据轨迹改进的迭代轮数 i i i以及代理在锚点周围的平均行驶速度 v v v来决定: R i , v = F ( i ) ⋅ v R_{i, v} = F(i) \cdot v Ri,v​=F(i)⋅v。其中的 F ( i ) F(i) F(i)应该是一个单调递减的函数,从而随着迭代轮数的增加来对上下文检索半径进行减小。本文方法使用指数衰减函数 F ( i ) = β ( 1 2 ) i − 1 F(i) = \beta({1 \over 2})^{i - 1} F(i)=β(21​)i−1作为单调递减的函数来初始化 F ( i ) F(i) F(i),其中 β \beta β是一个常数。

此外,锚点的上下文检索半径同样会被约束在 [ R m i n , R m a x ] [ R_{min}, R_{max} ] [Rmin​,Rmax​]这个范围当中【应该是两个数据集相关的超参数】,来确保计算的稳定性和效率。

Anchor-Centric Context Encoding

在对锚点周围的场景上下文进行检索之后,大多数的现有方法会根据场景编码器产生的特征嵌入来进行进一步的轨迹改进【比如QCNet】。然而,这些上下文特征大多数都是被编码在以目标代理当前位置为中心的局部坐标系统当中的。

以代理为中心(agent-centric)的特征嵌入强调的是目标代理周围的上下文细节,而轨迹改进的过程更关心的是沿着未来轨迹上的细节。

为了解决上述问题,本文提出了以锚点为中心的编码方法,来更好地捕捉未来轨迹的细节。本文方法将上下文特征变换到以锚点为中心的局部坐标系统当中,并生成以锚点为中心(anchor-centric)的上下文特征嵌入,来进行轨迹改进。

需要注意的是,锚点的位置和方向会随着改进次数的不同而动态地改变,这些以锚点为中心的上下文特征同样也会随之改变。上述的编码过程会应用到每一个锚点 a a a的上下文检索当中,从而产生一个上下文特征嵌入的集合 z a z_a za​。

Recurrent and Multi-Interation Refinement

方才所提到的以锚点为中心的上下文特征会与初始预测的轨迹特征进行融合,从而对预测结果进行改进。

过去的方法通常只对上述特征进行单次融合,并直接对整条轨迹进行改进,这将会导致长程的积累损失。为了缓解上述问题,本文方法采用了一种循环的改进策略,将轨迹分解为 N N N个轨迹段,并对轨迹进行 N N N次改进,即每条轨迹段均进行一次改进。

对于每一个轨迹片段,本文方法均使用该轨迹片段的锚点周围检索到的局部上下文特征来进行轨迹片段线性特征与局部上下文特征的特征融合。完成所有 N N N段轨迹的改进即完成了一次整条轨迹改进的迭代,整条轨迹改进将会进行多次。

Recurrent Refinement

具体来说,在每一次迭代改进的过程中,本文方法会对一个轨迹片段进行改进,通过对轨迹片段锚点 a a a周围检索到的上下文特征向量嵌入的集合 z a z_a za​和目标代理未来轨迹的线性特征 h f h_f hf​进行特征融合来完成当前轨迹片段的改进。

使用Cross-Attention来完成特征融合,轨迹嵌入将会作为queries,上下文特征嵌入 z a z_a za​会作为keys/values。融合的轨迹嵌入将会用于对 δ s \delta s δs进行预测,它是轨迹片段的偏移(the offset of waypoints in the trajectory segment),来细致地对初始预测的轨迹进行改进。

经过更新的轨迹嵌入将会被用作新的queries来对下一个轨迹片段进行改进。在一次迭代的 N N N次轨迹改进之后,整条轨迹都得到了修正,轨迹的嵌入表示同样经过丰富的上下文信息得到了更新。需要注意的是,本文方法将会产生多个可能的轨迹预测【即进行多模态的未来轨迹预测,针对目标代理,将会预测 K K K条其未来可能的轨迹】,因此轨迹的嵌入表示同样会被用于生成每条轨迹的概率分数。

Multi-Iteration Refinement

在一整个轨迹改进的迭代结束之后,更新后的轨迹嵌入以及轨迹将会被用于下一次改进。

首先,本文方法将会重复自适应锚点的选择以及上下文特征的检索,并对每一个轨迹片段都进行上述的轨迹改进【轨迹线性特征与局部场景上下文特征的融合,通过Cross-Attention来完成】,对于整条轨迹总共进行 N N N次轨迹改进【因为初始预测的轨迹会被划分为 N N N个轨迹片段,选取每一个轨迹片段的终点作为锚点,以自适应的邻域半径检索锚点附近的上下文特征并转化为以锚点为中心的特征嵌入】。

因此,在多次迭代的轨迹改进当中,轨迹以及轨迹的线性特征嵌入可能来自于场景编码器(仅在第一次轨迹改进,因为轨迹和轨迹的特征需要初始化),也可能来自于上一次轨迹改进的迭代(上一次轨迹改进的输出是更新后的轨迹以及更新后的轨迹线性特征,二者将会被用于下一次的轨迹改进)【因此,SmartRefine实现了特征编码器和轨迹解码器的解耦,任意特征编码器只要通过接口将初始预测的轨迹特征和轨迹本身传递给SmartRefine进行初始化,SmartRefine即可进行轨迹改进】。

需要注意的是,在第一次迭代过程中,本文方法采用了压缩器网络(compressor network)来降低来自于场景编码器输出的特征的维度,来进行高效的轨迹改进,作者发现上述做法仅会带来极小的性能损失。

Adaptive Number of Refinement Iterations

正如上文当中所提到的,轨迹的改进将会进行多次。当进行多次轨迹改进之后,所预测轨迹的结果将会越来越准确。然而,作者发现,随着轨迹改进的多次进行,轨迹的质量可能会下降。

为了在额外的计算开销以及轨迹改进的性能之间进行权衡,本文提出了一种自适应的改进策略,轨迹改进的轮数会根据当前轨迹的质量以及潜在的继续进行轨迹改进可以带来的性能提升动态选择。具体来说,本文提出了一种质量分数来对当前预测的质量进行量化。

Quality Score Design

在训练阶段,由于我们可以接触到Ground Truth轨迹,在第 i i i次迭代时一个启发式的轨迹质量度量选择是 d m a x − d i d_{max} - d_i dmax​−di​,其中 d m a x d_{max} dmax​所有迭代轮次中所产生的最大的预测误差。较小的 d i d_i di​表明当前迭代所进行的轨迹改进产生的轨迹的质量较好,它相对于最大的预测误差 d m a x d_{max} dmax​而言已经取得了较大的提升。

然而,轨迹预测的质量分数是不稳定的,因为它所处的区间较大,并可能随着场景的变换而产生较大的差异。因此本文方法使用 d m a x − d m i n d_{max} - d_{min} dmax​−dmin​来对 d m a x − d i d_{max} - d_i dmax​−di​进行标准化,其中 d m i n d_{min} dmin​指的是所有轨迹改进迭代当中产生的最小预测误差值。最终,轨迹改进分数将会处于 [ 0 , 1 ] [0, 1] [0,1],它被设计为:

q i = d m a x − d i d m a x − d m i n q_i = { {d_{max} - d_i} \over {d_{max} - d_{min} } } qi​=dmax​−dmin​dmax​−di​​

为了使模型可以对轨迹的质量分数进行预测,本文方法首先使用GRU来对之前所有迭代产生的轨迹嵌入进行处理,并通过MLP来生成质量分数。因此,本文模型将会产生三种输出,分别是预测的轨迹、多模态轨迹的概率以及轨迹的质量分数。

Adaptive Refinement Iteration

上文介绍了如何在训练阶段对轨迹的质量分数进行设计。

在模型推理阶段,最初的由场景编码器产生的轨迹特征将会被输入到轨迹质量解码器当中产生最初的轨迹质量分数。本文模型同样会在每一次轨迹改进的迭代结束之后对改进轨迹的质量分数进行预测。

因此,本文方法提出了一种既简单又高效的策略,来动态地对是否需要下一次轨迹改进迭代来进行决策。

在这里插入图片描述
如上述算法 1 1 1所示,自适应策略包含三个准则:

  1. 首先设置一个初始的轨迹分数阈值【应该是一个超参数】,仅当初始预测轨迹的质量分数低于阈值,才会进行轨迹改进迭代,这意味着当前预测的轨迹结果还不够好,它需要进行改进;
  2. 在之后的每一次轨迹改进迭代过程中,如果轨迹质量分数与上一次相比并没有增长,我们将会停止轨迹改进的下一次迭代,这意味着当前改进的轨迹已经足够好,进一步的改进可能会降低轨迹的质量;
  3. 本文方法将会设置一个最大的轨迹改进轮数,它是一个超参数,来对性能和效率进行平衡。

Training Loss

模型的训练考虑三部分损失,使用超参数 α \alpha α来对它们进行平衡:

L = L c l s + L r e g + α ⋅ L s c o r e L = L_{cls} + L_{reg} + \alpha \cdot L_{score} L=Lcls​+Lreg​+α⋅Lscore​

对于轨迹质量分数损失 L s c o r e L_{score} Lscore​,在训练阶段,本文方法将会把轨迹改进的迭代轮数固定为 I I I,每一次迭代都将会输出改进分数。因此对于每一次迭代 i i i,本文方法计算预测质量分数 q i ^ \hat{q_i} qi​^​与标签质量分数 q i q_i qi​之间的 l 1 l_1 l1​损失,并对所有轮次的损失取平均:

L s c o r e = 1 I + 1 ∑ i = 0 I ∣ ∣ q i ^ − q i ∣ ∣ 1 L_{score} = {1 \over {I + 1} } \sum^I_{i = 0} {|| \hat{q_i} - q_i ||}_1 Lscore​=I+11​∑i=0I​∣∣qi​^​−qi​∣∣1​

标签:本文,Forecasting,轨迹,预测,Scenario,Motion,改进,锚点,上下文
From: https://blog.csdn.net/Coffeemaker88/article/details/143198448

相关文章

  • Genymotion 模拟器上安装最新版本的微信并正常运行
    安装Genymotion安装步骤1安装虚拟机VirtualBox https://www.virtualbox.org/wiki/Downloads2注册Genymotion帐号 https://www.genymotion.com/account/create/3登录,下载并安装Genymotion https://www.genymotion.com/download/ android9版本的:  Genymotion-ARM-Tran......
  • popmotion,一款神奇的 JavaScript 开源动画库
    一、Popmotion简介Popmotion是一款强大的JavaScript开源动画库。它具有轻量、灵活且高性能的特点。(一)轻量性它的代码体积较小,不会给项目带来过多的负担。这使得在各种规模的Web应用中都能轻松集成,无论是简单的小型网站还是复杂的大型单页应用。(二)灵活性1.动画类型多样......
  • POLIR-Society-Organization-Psychology-Emotions情绪-Emotion Wheel情绪轮: What It
    POLIR-Society-Organization-Psychology-Emotions情绪EmotionWheel情绪轮:WhatItIsandHowtoUseOneEMOTIONS>EmotionWheel:WhatItIsandHowtoUseOneEmotionWheel:WhatItIsandHowtoUseOneByKatharineChan,MSc,BSc,PMPUpdatedonSeptember......
  • 实战 vSphere 7 vMotion 迁移说明 ( Vcenetr 内迁移、 跨vcenter 迁移)
    目录一、vMotion简介二、Vcenter内虚拟机迁移2.1无共享存储的环境中的vMotion具有以下要求和限制2.2网卡启用vMotion​编辑2.3右键单击虚拟机,然后选择迁移2.4选择更改计算资源和存储2.5选择虚拟机的目标资源2.6选择虚拟机磁盘格式2.7选择虚拟机存储策略2.......
  • 使用 Remotion、Nextjs 和 Tailwind CSS 构建基于 Web 的视频编辑器
    如果您曾经想创建自己的强大的基于网络的视频编辑器(类似于veed.io或descript等流行工具),那么您来对地方了!在本分步指南中,我们将向您展示如何使用remotion、next.js和tailwindcss构建视频编辑器。最后,您将为开发自己的基于浏览器的视频编辑工具奠定坚实的基础。介绍......
  • Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control
    1.SwingLegControl\(J_i\inR^{3*3}\)是足端雅可比;\(\tau_{i,ff}\)是前馈力矩\(\Lambda\inR^{3*3}\)是操作空间惯性矩阵;\(a_{i,ref}\inR^{3*3}\)是机体坐标系下的参考加速度q是关节角度;\(C_i\dot{q}_i+G_i\)是科里奥利力和重力2.GroundForceControl\(\tau......
  • SFM(structure from motion从运动恢复结构)和MVS(multi-view stereo多视图立体视觉)
    最近在开始新的领域,三维重建,其实是想做adas领域的4dlabel相关的工作。无奈啊,对computergraphics的东西,我一向很排斥,然后现在不得已要面对了。首先推荐一本书,MultipleViewGeometryinComputerVision(SecondEdition),英语版本可能读着顺利些,中文的看反馈说翻译的不好。顾名......
  • Robotics: computational motion planning 部分笔记—— week 3 Sampling base planni
    随机路标图思想空间过大,无法遍历,由此采用随机路标图(ProbabilisticRoadMaps)进行采样。基本就是采样点,连线,判断是否发生碰撞,在生成起点终点间的路径之前,该算法试图通过采样的方式搜索整个构型空间。在生成足够多样本后,可以用A*等算法进行路径规划。由于采样的随机性,生成......
  • UNIT BUSA3015 Business Forecasting
    UNITBUSA3015BusinessForecasting,Session2,2024AssessmentTask       Report1Duedate              11:59pmFriday13thSeptemberWeight(%)            20%Taskdescription       ......
  • ROS2- Moveit2 - 运动规划API(Motion Planning API)
     在MoveIt中,运动规划器使用插件基础结构加载。这允许MoveIt在运行时加载运动规划器。在此示例中,我们将运行执行此操作所需的C++代码。入门如果您还没有这样做,请确保您已经完成入门指南中的步骤。 运行演示打开两个shell。在第一个shell中启动RViz并等待所有内......