【论文笔记】Planning-oriented Autonomous Driving

原文链接:https://arxiv.org/abs/2212.10156

1. 引言

目前的自动驾驶工业界通常为不同任务部署不同的模型,但优化的孤立性会导致模块之间的信息损失、误差积累和特征不对齐。

一种更好的设计是将各种任务整合为多任务学习,即为共享的特征提取器插入不同的任务头。这可以节省计算资源,但可能存在“负迁移”问题。

端到端自动驾驶统一了各个节点(感知、预测、规划),如图所示。
在这里插入图片描述
最简单的端到端方案是直接预测规划的轨迹,而无需显式的感知或预测监督。这类方法可解释性差,难以保证安全。因此,直观的解决方案是经过感知(检测、跟踪、建图)和预测(运动预测、占用预测)后进行规划,但目前的方法均忽略了部分组件(见补充材料)。

本文提出UniAD,考虑了5个重要任务,且并非简单地堆叠。本文使用基于查询的设计连接各节点。与边界框表达相比,查询有更大的感受野,可软化上游任务的复合误差;此外,可更灵活地编码各种交互(如多智能体)。

2. 方法

在这里插入图片描述
概述:如图所示,UniAD由4个基于Transformer解码器的感知/预测模块、以及末端的一个规划模块组成。查询 Q Q Q连接整个流程并建模不同实体的交互。具体来说,将多视图图像序列输入特征提取器,并使用BEVFormer的方式转化为BEV特征 B B B。此处也可使用其余方法得到BEV特征,如多模态融合。在TrackFormer中,可学习嵌入被视为跟踪查询,从 B B B中查询信息,并检测和跟踪智能体。MapFormer将地图查询作为道路元素的语义抽象,进行全景分割。MotionFormer则利用上述查询,捕捉了智能体和地图的交互,联合预测所有智能体的未来轨迹。此外,还设计自车查询,与其余智能体交互。OccFormer使用BEV特征 B B B作为查询,智能体知识作为键与值,预测多步未来占用。最后规划器Planner使用MotionFormer中的自车查询预测规划结果,并使自车远离OccFormer预测的占用区域。

2.1 感知:跟踪与建图

TrackFormer:联合进行检测与跟踪任务,且无需不可微的后处理。除了传统的检测查询外,还引入跟踪查询。具体来说,初始化的检测查询在每一时刻预测新出现的智能体,而跟踪查询则建模过去存在的智能体。检测查询与跟踪查询均与BEV特征 B B B交互。跟踪查询会与过去帧的相应跟踪查询进行自注意力交互,直到相应的智能体完全消失(一段时间未被跟踪)。TrackFormer包含 N N N层,其最终输出状态 Q A Q_A QA给出了 N a N_a Na个有效智能体的信息,用于后续预测任务。此外,还引入自车查询,显式建模自车,用于规划任务。

MapFormer:基于2D全景分割方法Panoptic SegFormer。将道路元素(车道线、分隔带和十字路口、可驾驶路面)稀疏地表达为地图查询,编码位置和结构信息。MapFormer同样包括 N N N层,各层输出均被监督,但仅有最后一层的查询 Q M Q_M QM被输入到MotionFormer中进行智能体-地图交互。

2.2 预测:运动预测

MotionFormer使用 Q A Q_A QA Q M Q_M QM,在一次前向传播内预测所有智能体的前 K K K个可能的轨迹。此外还将TrackFormer中的自车查询与其余智能体查询结合,以考虑未来动态。输出运动表示为 { x ^ i , k ∈ R T × 2 ∣ i = 1 , ⋯ , N a ; k = 1 , ⋯ , K } \{\hat x_{i,k}\in\mathbb R^{T\times 2}|i=1,\cdots,N_a;k=1,\cdots,K\} {x^i,kRT×2i=1,,Na;k=1,,K},其中 T T T为预测时间范围。
在这里插入图片描述

MotionFormer:由 N N N层组成,每层捕捉3类交互:智能体-智能体、智能体-地图和智能体-目标点。对每个运动查询 Q i , k Q_{i,k} Qi,k(简记为 Q Q Q),其与其余智能体 Q A Q_A QA和地图元素 Q M Q_M QM进行的交互可记为:
Q a / m = M H C A ( M H S A ( Q ) , Q A / Q M ) Q_{a/m}=\mathtt{MHCA}(\mathtt{MHSA}(Q),Q_A/Q_M) Qa/m=MHCA(MHSA(Q),QA/QM)

智能体-目标点注意力基于可变形注意力:
Q g = D e f o r m A t t n ( Q , x ^ T l − 1 , B ) Q_g=\mathtt{DeformAttn}(Q,\hat{x}_T^{l-1},B) Qg=DeformAttn(Q,x^Tl1,B)

其中 x ^ T l − 1 \hat{x}_T^{l-1} x^Tl1为上一层预测轨迹的终点,作为可变形注意力的参考点。这样,可以根据轨迹端点周围的特征细化轨迹。每一层中,上述三个交互是并行的, Q a , Q m , Q g Q_a,Q_m,Q_g Qa,Qm,Qg会拼接并输入MLP得到查询上下文 Q ctx Q_\text{ctx} Qctx,输入到下一层。

运动查询:MotionFormer每一层的输入查询由两部分组成:查询上下文 Q ctx Q_\text{ctx} Qctx和查询位置 Q pos Q_\text{pos} Qpos。查询位置包含4个部分,即场景级别的锚 I s I^s Is、智能体级别的锚 I a I^a Ia、智能体 i i i的当前位置 x ^ 0 \hat{x}_0 x^0和预测的目标点 x ^ T l − 1 \hat{x}_T^{l-1} x^Tl1
Q pos = MLP ( PE ( I s ) ) + MLP ( PE ( I a ) ) + MLP ( PE ( x ^ 0 ) ) + MLP ( PE ( x ^ T l − 1 ) ) Q_\text{pos}=\text{MLP}(\text{PE}(I^s))+\text{MLP}(\text{PE}(I^a))+\text{MLP}(\text{PE}(\hat{x}_0))+\text{MLP}(\text{PE}(\hat{x}_T^{l-1})) Qpos=MLP(PE(Is))+MLP(PE(Ia))+MLP(PE(x^0))+MLP(PE(x^Tl1))

其中 PE \text{PE} PE为正弦位置编码, x ^ T 0 = I s \hat{x}_T^0=I^s x^T0=Is。场景级的锚表示了全局视图下之前的运动统计数据,而智能体级的锚捕捉了当前坐标下可能的意图。二者均由真实轨迹终点的k均值算法聚类,以减小预测的不确定性。因此,轨迹的终点为动态锚,由粗到细地优化。

非线性优化:本文方法不的运动预测不依赖感知真值,因此直接从不准确的检测位置或朝向角回归路径点会导致不可行的轨迹(如大曲率和加速度)。本文使用非线性平滑器,调整目标轨迹,使其在不精确起点下也可行。该过程为
x ~ ∗ = arg min ⁡ x c ( x , x ~ ) \tilde x^*=\argmin_xc(x,\tilde x) x~=xargminc(x,x~)

其中 x ~ \tilde x x~ x ~ ∗ \tilde x^* x~分别为真值和平滑的轨迹, x x x由Multiple-shooting生成,且代价函数为
c ( x , x ~ ) = λ x y ∥ x , x ~ ∥ 2 + λ goal ∥ x T , x ~ T ∥ 2 + ∑ ϕ ∈ Φ ϕ ( x ) c(x,\tilde x)=\lambda_{xy}\|x,\tilde x\|_2+\lambda_\text{goal}\|x_T,\tilde x_T\|_2+\sum_{\phi\in\Phi}\phi(x) c(x,x~)=λxyx,x~2+λgoalxT,x~T2+ϕΦϕ(x)

其中 λ x y \lambda_{xy} λxy λ goal \lambda_\text{goal} λgoal为超参数,运动学函数集 Φ \Phi Φ包含颠簸、曲率、曲率变化率、加速度和横向加速度5项。代价函数正则化了目标轨迹,以遵循运动学约束。该正则化仅在训练时使用。

2.3 预测:占用预测

OccFormer引入场景级别和智能体级别的语义:密集场景特征通过注意力模块获取智能体级别的特征;通过智能体级别特征与密集场景特征的矩阵乘法,生成逐实例的占用,而无需复杂的后处理。

OccFormer由 T o T_o To个块组成,其中 T o T_o To为预测时间范围,通常 T o < T T_o<T To<T(因为密集占用的空间消耗)。每个块将智能体特征 G t G^t Gt和来自上一层的密集特征(状态) F t − 1 F^{t-1} Ft1作为输入,生成时间 t t t下同时考虑实例级和场景级信息的 F t F^t Ft。为得到 G t G^t Gt,先由MotionFormer的运动查询通过沿模态维度 K K K的最大池化得到 Q X ∈ R N a × D Q_X\in\mathbb R^{N_a\times D} QXRNa×D,并通过MLP(不同时间不共享权重)与跟踪查询 Q A Q_A QA和当前位置嵌入 P A P_A PA融合:
G t = MLP t ( [ Q A , P A , Q X ] ) , t = 1 , ⋯ , T o G^t=\text{MLP}_t([Q_A,P_A,Q_X]),t=1,\cdots,T_o Gt=MLPt([QA,PA,QX]),t=1,,To

其中 [ ⋅ ] [\cdot] []为拼接。为得到场景级知识,BEV特征 B B B被下采样,作为第一块的输入 F 0 F^0 F0。为节省空间,每个块以下采样-注意力-上采样的方式进行像素-智能体交互,下采样的特征记为 F ds t F_\text{ds}^t Fdst
在这里插入图片描述
像素-智能体交互:以密集特征 F ds t F_\text{ds}^t Fdst为查询,实例级特征为键和值,更新密集特征。具体来说, F ds t F_\text{ds}^t Fdst首先通过自注意力进行全局交互,然后通过交叉注意力,将智能体特征 G t G^t Gt和网格特征交互。同时,使用注意力掩膜,限制各像素仅与 t t t时刻占用其自身的智能体交互。密集特征的更新过程可记为:
D ds t = M H C A ( M H S A ( F ds t ) , G t , attn_mask = O m t ) D_\text{ds}^t=\mathtt{MHCA}(\mathtt{MHSA}(F_\text{ds}^t),G^t,\text{attn\_mask}=O_m^t) Ddst=MHCA(MHSA(Fdst),Gt,attn_mask=Omt)

注意力掩膜 O m t O_m^t Omt在语义上与占用类似,是通过在密集特征 F ds t F_\text{ds}^t Fdst上乘以额外的掩膜特征 M t = MLP ( G t ) M^t=\text{MLP}(G^t) Mt=MLP(Gt)得到的。此外,还会将上采样后的 D ds t D_\text{ds}^t Ddst与输入 F t − 1 F^{t-1} Ft1残差连接得到 F t F^t Ft,输入下一层。

实例级占用:为得到 H × W H\times W H×W大小的BEV特征 B B B的占用预测,场景级特征 F t F^t Ft被卷积解码器上采样为 F dec t ∈ R C × H × W F^t_\text{dec}\in\mathbb R^{C\times H\times W} FdectRC×H×W。对于智能体级别的特征,使用MLP更新粗糙掩膜特征 M t M^t Mt,得到占用特征 U t ∈ R N a × C U^t\in\mathbb R^{N_a\times C} UtRNa×C。最后的实例级占用可通过矩阵乘法得到:
O ^ A t = U t ⋅ F dec t \hat O^t_A=U^t\cdot F^t_\text{dec} O^At=UtFdect

2.4 规划

无高清(HD)地图或预定义路线的情况下进行规划需要高级指令指示方向。因此,本文将原始导航信号(左转、右转和保持直行)转化为可学习嵌入,称为指令嵌入。由于MotionFormer的自车查询已经包含多个意图,此处将其与指令嵌入结合,得到规划查询。规划查询与BEV特征 B B B交互,并解码为未来路径点 τ ^ \hat\tau τ^
在这里插入图片描述
为进一步避免碰撞,本文在推断阶段基于牛顿法优化 τ ^ \hat\tau τ^
τ ∗ = arg min ⁡ τ f ( τ , τ ^ , O ^ ) \tau^*=\argmin_\tau f(\tau,\hat\tau,\hat O) τ=τargminf(τ,τ^,O^)

其中 τ ^ \hat\tau τ^为原始规划预测, τ ∗ \tau^* τ为优化后的规划(从Multiple-shooting的轨迹 τ \tau τ中选择使代价函数 f ( ⋅ ) f(\cdot) f()最小的), O ^ \hat O O^为二值占用图,来自OccFormer的实例级占用预测。代价函数为:
f ( τ , τ ^ , O ^ ) = λ coord ∥ τ − τ ^ ∥ 2 + λ obs ∑ t D ( τ t , O ^ t ) D ( τ t , O ^ t ) = ∑ ( x , y ) ∈ S 1 σ 2 π exp ⁡ ( − ∥ τ t − ( x , y ) ∥ 2 2 2 σ 2 ) f(\tau,\hat\tau,\hat O)=\lambda_\text{coord}\|\tau-\hat\tau\|_2+\lambda_\text{obs}\sum_tD(\tau_t,\hat O^t)\\ D(\tau_t,\hat O^t)=\sum_{(x,y)\in S}\frac1{\sigma\sqrt{2\pi}}\exp(-\frac{\|\tau_t-(x,y)\|^2_2}{2\sigma^2}) f(τ,τ^,O^)=λcoordττ^2+λobstD(τt,O^t)D(τt,O^t)=(x,y)Sσ2π 1exp(2σ2τt(x,y)22)

其中 λ coord , λ obs , σ \lambda_\text{coord},\lambda_\text{obs},\sigma λcoord,λobs,σ为超参数, S = { ( x , y ) ∣ ∥ ( x , y ) − τ t ∥ 2 < d , O ^ x , y d = 1 } S=\{(x,y)|\|(x,y)-\tau_t\|_2<d,\hat{O}_{x,y}^d=1\} S={(x,y)∣∥(x,y)τt2<d,O^x,yd=1}。可见, l 2 l_2 l2项使轨迹靠近预测轨迹,而碰撞项 D D D使其远离占用网格。

2.5 学习

UniAD的训练分两个阶段以稳定训练过程。首先以少量轮次联合训练感知部分(跟踪与建图),然后进行端到端训练。

共享匹配:由于UniAD包含了逐实例建模,需要在感知和预测任务中将预测与真值匹配。本文类似DETR,在跟踪与建图阶段使用二分匹配算法。跟踪时,将检测查询与新出现的真实物体匹配,而跟踪查询与过去出现过的物体匹配。跟踪模块的匹配结果在运动和占用节点被重新利用,以(从历史跟踪到未来运动)一致地、端到端地对智能体建模。

3. 实验

3.1 联合结果

安全规划:由于预测与规划比与感知更接近,本文首先研究预测任务的影响。实验表明,与不含运动预测与轨迹预测的方法相比,同时包含两者的模型有更高的性能,故这两个预测任务均对安全规划有帮助。对于感知任务,实验表明,有必要同时考虑智能体与场景的表达,即同时进行跟踪与建图任务。本文还探索了感知模块对运动预测模块的影响,实验表明同时进行跟踪和建图对预测结果有极大的性能提升。最后,与多任务学习方法相比,本文方法在各指标上均有更优的性能。

3.2 模块化结果

感知结果:UniAD的跟踪和车道线分割任务均能达到较好的性能。与感知导向的方法相比,本文方法的性能不是最优的,这是因为本文作为规划导向的方法,并未将所有模型容量用于优化感知任务上。

预测结果:本文方法运动预测的性能能超过过去的基于视觉的端到端方法。占用预测方面,本文方法在近处的性能更优。

规划结果:本文基于视觉的方法能超过一些激光雷达方法的性能。

3.4 消融研究

MotionFormer中设计的影响:实验表明,场景级别的锚、智能体-目标点交互、自车查询和非线性优化策略均能带来更高的运动预测性能。其中,场景级别的锚能带来巨大的性能提升;智能体-目标点交互能使用视觉特征增强运动查询;使用自车查询能使周围的智能体考虑自车的运动意图;非线性优化策略能考虑感知不确定性。

OccFormer中设计的影响:实验表明,将像素与所有智能体交互会导致比无交互更差的性能。占用引导的注意力掩膜可解决这一问题,并带来性能提升(由其是近处区域)。重新使用掩膜特征 M t M^t Mt而非智能体特征 G t G^t Gt获取占用特征能提高性能。

规划器中设计的影响:实验表明,使用碰撞损失与使用占用的优化能降低碰撞率和L2指标。

4. 结论与未来工作

局限性:UniAD是含多个任务的综合系统,需要大量的算力进行训练。需要探索设计轻量化部署。


补充材料

A. 任务定义

检测与跟踪:本文使用多目标跟踪代表检测和跟踪过程,输出为关联后的3D边界框,并将相应的特征 Q A Q_A QA输入运动模块。自车查询回归自车的位置,不与真值匹配。

在线建图:本文考虑BEV在线地图中的4个类别:车道线、可驾驶区域、分隔带和行人交叉路。地图查询 Q M Q_M QM也会输入运动预测模块进行智能体-地图交互。

运动预测:遇到预测是根据检测的边界框和建立的地图,预测智能体的未来轨迹。本文预测的轨迹为相对智能体的偏移量。解码MLP前的智能体特征会输入占用模块,进行场景级别的理解。自车查询也预测了未来的自车运动(粗糙规划),其特征被送入规划器中生成最终目标。

占用预测:与运动预测的稀疏的实例级表达不同,占用图是BEV离散密集表达。占用模块以智能体特征 G t G^t Gt和BEV特征 B B B为输入,进行多步智能体-场景交互,得到实例级占用图 O ^ A t ∈ R N a × H × W \hat{O}_A^t\in\mathbb R^{N_a\times H\times W} O^AtRNa×H×W。最后,使用逐像素的argmax,融合各实例级占用得到 O ^ ∈ R H × W \hat O\in\mathbb R^{H\times W} O^RH×W,用于占用评估和规划。

规划:以自车查询和BEV特征 B B B为输入,预测轨迹 τ ^ \hat\tau τ^,并利用 O ^ \hat O O^优化之以避免碰撞。

B. 各任务的必要性

HD地图建立困难且容易过时,因此在线建图是必要的。运动预测生成的不可微边界框表达难以直接用于规划,而占用预测的计算消耗使得其时间视野不大,因此需要将两者结合起来。

E. 实施细节

E.1 检测与跟踪

本文使用BEVFormer的BEV编码器,得到BEV特征 B B B,并使用可变形DETR检测头基于 B B B进行检测。为避免复杂的关联,本文使用MOTR中的跟踪查询,连续跟踪过去出现的实例。

训练阶段:在每个训练序列的第一帧,所有的查询为检测查询(检测新出现的物体),与BEVFormer相同。通过匈牙利算法,将检测查询与真值匹配。这些查询会通过查询交互模块(QIM)更新,作为下一帧的跟踪查询。此后,跟踪查询会与一部分真值(过去帧出现过)进行匹配,而检测查询会与另一部分真值(新出现)进行匹配。为稳定训练,仅保存和更新3D IoU与真值大于阈值的那些查询。

推断阶段:推断阶段使用分类分数替代3D IoU过滤查询。此外,为避免因遮挡导致的物体短暂消失,还使用生命周期机制,即当一个跟踪查询的分类分数低于阈值超过一段时间时,才认为其完全消失。

E.2 在线建图

本文将道路元素分为“thing”(车道线、分隔带和行人交叉路)和“stuff”(可驾驶区域)。本文设置300个thing查询和1个stuff查询,堆叠6个位置解码层和4个掩膜解码层,并使用位置解码层输出的thing查询作为地图查询 Q M Q_M QM

E.3 运动预测

I T s , I T a , x ^ 0 , x ^ T l − 1 ∈ R K × 2 I^s_T,I^a_T,\hat{x}_0,\hat{x}_T^{l-1}\in\mathbb R^{K\times 2} ITs,ITa,x^0,x^Tl1RK×2。为得到场景级的先验,锚 I T a I^a_T ITa根据各智能体的当前位置和朝向,被旋转和平移到全局坐标系下,得到 I T s I^s_T ITs
I i , T s = R i I T a + T i I^s_{i,T}=R_iI^a_T+T_i Ii,Ts=RiITa+Ti

其中 i i i为智能体索引(后文省略)。 Q pos , Q ctx ∈ R K × D Q_\text{pos},Q_\text{ctx}\in\mathbb R^{K\times D} Qpos,QctxRK×D

MotionFormer包括三个Transformer解码器,分别对应智能体-智能体、智能体-地图和智能体-目标点交互。前两者的输入 Q A Q_A QA Q M Q_M QM也包含了位置编码。上一时刻的预测轨迹 ( R i x ^ i , T l − 1 + T i ) (R_i\hat x_{i,T}^{l-1}+T_i) (Rix^i,Tl1+Ti)被作为智能体-目标点交互中可变形注意力的参考点。

将三个Transformer解码器的输出拼接后,使用高斯混合模型建立轨迹, x ^ l ∈ R K × T × 5 \hat x_l\in\mathbb R^{K\times T\times 5} x^lRK×T×5。其中5的前两维度 ( x , y ) (x,y) (x,y)为最终的预测轨迹。此外,还预测了每个轨迹的分数 s c o r e ( x ^ l ) ∈ R K score(\hat x_l)\in\mathbb R^K score(x^l)RK

E.5 规划

以跟踪和运动预测的自车查询、以及指令嵌入为输入,使用MLP和沿K维的最大池化处理,得到最显著的特征。然后,使用交叉注意力与BEV特征 B B B交互。注意规划查询和BEV特征均使用了位置编码。随后,使用MLP回归规划轨迹 τ ^ ∈ R T p × 2 \hat\tau\in\mathbb R^{T_p\times2} τ^RTp×2。最后,使用碰撞优化器避免碰撞。

E.6 训练细节

联合学习:第一阶段训练感知任务时,读取预训练的BEVFormer(包括图像主干、FPN、BEV编码器和检测解码器,不含查询嵌入),且冻结图像主干。损失函数为跟踪和建图损失之和。

第二阶段同样冻结图像主干和BEV编码器。损失函数为跟踪、建图、运动预测、占用预测和规划损失之和。

检测&跟踪损失:使用匈牙利损失(focal分类损失和 l 1 l_1 l1定位损失的组合)。其中,新查询通过二分匹配与真值配对,而跟踪查询则与对应跟踪ID的真值配对。

在线建图损失:包括thing损失和stuff损失,其中focal损失用于分类,L1损失用于thing的边界框,Dice和GIoU损失用于分割stuff。

运动预测损失:本文将多轨迹建模为高斯混合,并使用多路径损失(包含分类分数损失和负对数似然损失)。此外,为保证轨迹的时间平滑,本文预测了智能体的速度,并随时间积累得到最终轨迹。

占用预测损失:实例级占用预测的输出为每个智能体的二元分割,因此使用二元交叉熵和Dice损失作为占用损失。此外,使用同样的损失监督注意力掩膜,因其可视为粗糙预测。

规划损失:使用模仿 l 2 l_2 l2损失和碰撞损失:
L col ( τ ^ , δ ) = ∑ i , t I o U ( b o x ( τ ^ t , w + δ , l + δ ) , b i , t ) , L plan = λ imi ∥ τ ^ − τ ~ ∥ 2 + λ col ∑ ( ω , δ ) ω L col ( τ ^ , δ ) L_\text{col}(\hat\tau,\delta)=\sum_{i,t}\mathtt{IoU}(box(\hat\tau_t,w+\delta,l+\delta),b_{i,t}),\\ L_\text{plan}=\lambda_\text{imi}\|\hat\tau-\tilde\tau\|_2+\lambda_\text{col}\sum_{(\omega,\delta)}\omega L_\text{col}(\hat\tau,\delta) Lcol(τ^,δ)=i,tIoU(box(τ^t,w+δ,l+δ),bi,t),Lplan=λimiτ^τ~2+λcol(ω,δ)ωLcol(τ^,δ)

其中 ( ω , δ ) (\omega,\delta) (ω,δ)为考虑不同安全距离的权值对, b o x box box表示自车边界框, b i , t b_{i,t} bi,t为智能体的预测。

F. 实验

F.2 指标

多目标跟踪:使用AMOTA(平均多目标跟踪准确率)、AMOTP(平均多目标精度)、召回率和IDS(实例切换)评估。
AMOTA = 1 n − 1 ∑ r ∈ { 1 n − 1 , 2 n − 1 , ⋯ , 1 } MOTA r , MOTA r = max ⁡ ( 0 , 1 − FP r + FN r + IDS r − ( 1 − r ) GT r GT ) \text{AMOTA}=\frac1{n-1}\sum_{r\in\{\frac1{n-1},\frac2{n-1},\cdots,1\}}\text{MOTA}_r,\\ \text{MOTA}_r=\max(0,1-\frac{\text{FP}_r+\text{FN}_r+\text{IDS}_r-(1-r)\text{GT}}{r\text{GT}}) AMOTA=n11r{n11,n12,,1}MOTAr,MOTAr=max(0,1rGTFPr+FNr+IDSr(1r)GT)

其中, FP r , FN r , IDS r \text{FP}_r,\text{FN}_r,\text{IDS}_r FPr,FNr,IDSr分别为召回率 r r r下FP、FN和IDS的数量,GT为真实物体的数量。
AMOTP = 1 n − 1 ∑ r ∈ { 1 n − 1 , 2 n − 1 , ⋯ , 1 } ∑ i , t d i , t TP r \text{AMOTP}=\frac1{n-1}\sum_{r\in\{\frac1{n-1},\frac2{n-1},\cdots,1\}}\frac{\sum_{i,t}d_{i,t}}{\text{TP}_r} AMOTP=n11r{n11,n12,,1}TPri,tdi,t

其中 d i , t d_{i,t} di,t为轨迹 i i i在时间 t t t的位置误差, TP r \text{TP}_r TPr为召回率 r r r下TP的数量。

在线建图:使用IoU指标对每个类别评估。

运动预测:使用传统指标minADE(最小平均位移误差)、minFDE(最小最终位移误差)和MR(丢失率)。这些指标仅对匹配的TP计算。此外,还使用端到端指标EPA(端到端预测精度)和minFDE-AP。运动预测指标对车辆进行评估。

占用预测:本文在场景级别和实例级别上分别评估。IoU衡量了场景级别的类别分割(不考虑实例),而视频全景质量(VPQ)考虑了每个实例的存在和随时间的一致性:
VPQ = ∑ t = 0 H ∑ ( p t , q t ) ∈ TP t I o U ( p t , q t ) ∣ TP t ∣ + 1 2 ∣ FP t ∣ + 1 2 ∣ FN t ∣ \text{VPQ}=\sum_{t=0}^H\frac{\sum_{(p_t,q_t)\in\text{TP}_t}\mathtt{IoU}(p_t,q_t)}{|\text{TP}_t|+\frac12|\text{FP}_t|+\frac12|\text{FN}_t|} VPQ=t=0HTPt+21FPt+21FNt(pt,qt)TPtIoU(pt,qt)

其中 H = T o − 1 H=T_o-1 H=To1为未来视野, TP t , FP t , FN t \text{TP}_t,\text{FP}_t,\text{FN}_t TPt,FPt,FNt分别为时间 t t t下的TP,FP,FN集合。两个指标在两个不同的BEV范围(近距离和远距离)下、当前帧和未来帧内分别评估。

规划:本文使用L2误差和碰撞率作为评估指标。

F.3 模型复杂度和计算代价

本文的计算复杂度主要来自BEV编码器部分;解码器部分则引入了大量参数。与BEVerse相比,本文方法包含了更多的任务,且性能更优,但FLOP更低。

F.4 模型尺度

实验表明,使用更大的图像主干能提高BEV特征质量,从而提高感知、预测和规划性能。

F.5 定性结果

注意力掩膜可视化:可视化规划器中交叉注意力的注意力掩膜,可知模型更关注目标车道和关键智能体。且在不同的指令下其关注的点有很大变化。

不同场景的可视化:可视化表明,本文以规划为导向的设计能够在某些情况下,即使前面的模块结果不准确,后面的模块也能恢复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之责任链模式讲解

概念&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止。最匹配的场景应该就是逐层审批的模式。 责任链模式只有两个角色&#xff…

wife_wife-攻防世界

题目 注册发现可以注册管理员,但是好像有条件 抓包试试 没思路了 看看其他师傅的wp&#xff0c;用到 js 原型链污染攻击 Nodejs原型链污染攻击基础知识 | Savants Blog (lxscloud.top) 网站后端是Node.js搭建的 原型链污染 简单来讲&#xff0c;通过 newUser.__proto__ …

RHCE实验2-DNS服务正反向解析

实验开始 一、DNS正向解析 注&#xff1a; server端&#xff1a;192.168.32.147 node端&#xff1a;192.168.32.141 网址&#xff1a;www.openlab.com 1、server端和node端都关闭安全软件&#xff08;以server端为例&#xff09; [rootserver ~]# setenforce 0 [rootser…

Java基于微信小程序的校园跑腿小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

vue3+element plus图片预览点击按钮直接显示图片的预览形式

1 需求 直接上需求&#xff1a; 我想要直接点击下面这个“预览”按钮&#xff0c;然后呈现出预览图片的形式 ok&#xff0c;需求知道了&#xff0c;下面让我们来看看如何实现吧 ~ 2 实现 template部分 <el-buttontype"primary"size"small"click&qu…

链表中常见的使用方法逻辑整理

文章目录 1. 链表特点2. 链表创建3. 链表遍历通用方法3.1 在链表的开头添加元素3.2 在链表的结尾添加元素3.3 删除链表的第一个元素3.4 删除链表的最后一个元素3.5 遍历链表3.6 查找链表中的元素3.7 反转链表 4. 常见面试题4.1 相交链表4.2 反转链表4.3 环形链表4.4 环形链表 I…

easyui combobox下拉框组件输入检索全模糊查询

前引&#xff1a; easyui下拉组件&#xff08;combobox&#xff09;&#xff0c;输入检索下拉内容&#xff0c;是默认的右模糊匹配&#xff0c;而且不支持选择。因业务要求需要做成全模糊查询&#xff0c;目前网上搜索有两种方案&#xff1a; 1.修改easyui源码&#xff0c;这个…

LeetCode700:二叉搜索树中的搜索

题目描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 代码 递归法 class Solution { public:TreeNode* searchBST(TreeN…

Visual Studio code无法正常执行Executing task: pnpm run docs:dev

最近尝试调试一个开源的项目&#xff0c;发现cmd可以正常启动&#xff0c;但是在vs中会报错&#xff0c;报错内容如下 Executing task: pnpm run docs:dev pnpm : 无法加载文件 E:\XXXX\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 http…

组合导航的结果分段跳变问题

1 现象 用上海代数律动公司的AlgoT1-3组合导航设备采集数据进行组合导航算法调试&#xff0c;AlgoT1-3机器输出的结果很好很平滑&#xff0c;AlgoT1-3是带GNSS/INS的组合导航设备&#xff0c;另外还有一款更贵一点的带视觉的组合导航AlgoT1&#xff0c;效果会更好一些&#xf…

【Tars-go】腾讯微服务框架学习使用03-- TarsUp协议

3 TarsUP协议 统一通信协议 TarsTup | TarsDocs (tarscloud.github.io) TarsDocs/base at master TarsCloud/TarsDocs (github.com) &#xff1a; 有关于tars的所有介绍 每一个rpc调用双方都约定一套数据序列化协议&#xff0c;gprc用的是protobuff&#xff0c;tarsgo是统一…

每日OJ题_01背包③_力扣494. 目标和(dp+滚动数组优化)

目录 力扣494. 目标和 问题解析 解析代码 滚动数组优化代码 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; …

ThreadX:怎么确定一个线程应该开多少内存

ThreadX&#xff1a;如何确定线程的大小 在实时操作系统&#xff08;RTOS&#xff09;ThreadX中&#xff0c;线程的大小是一个重要的参数。这个参数决定了线程的堆栈大小&#xff0c;也就是线程可以使用的内存空间。那么&#xff0c;我们应该如何确定一个线程需要多大的字节呢…

C语言-----结构体详解

前面已经向大家介绍过一点结构体的知识了&#xff0c;这次我们再来深度了解一下结构体。结构体是能够方便表示一个物体具有多种属性的一种结构。物体的属性可以转换为结构体中的变量。 1.结构体类型的声明 1.1 结构体的声明 struct tag {member-list;//结构体成员变量 }vari…

MySQL进阶二

目录 1.使用环境 2.排序窗口函数 3.聚合窗口函数 1.使用环境 数据库&#xff1a;MySQL 8.0.30 客户端&#xff1a;Navicat 15.0.12 接续MySQL进阶一&#xff1a; MySQL进阶一-CSDN博客文章浏览阅读452次&#xff0c;点赞9次&#xff0c;收藏4次。MySQL进阶操作一。https…

P4631 [APIO2018] 选圆圈

题目传送门https://www.luogu.com.cn/problem/P4631 代码传送门https://www.luogu.com.cn/record/155489748 本弱鸡抄的~

【linux篇】ubuntu安装教程

有道是工欲善其事必先利其器&#xff0c;在学习linux前&#xff0c;先得搭建好环境才能事半功倍。 1.VMware虚拟机安装 打开浏览器&#xff0c;可直接在搜索栏中输入VMware。

Docker+Uwsgi+Nginx部署Django项目保姆式教程

之前&#xff0c;我和大家分享了在docker中使用uwsgi部署django项目的教程。这次&#xff0c;为大家带来的是使用DockerUwsgiNginx部署Django项目。废话不多说&#xff0c;我们开干。 步骤1&#xff1a;使用命令创建一个django项目 我这里python版本使用的是3.9.x 首先&#…

什么场景适合使用Traefik?

Traefik 作为一款现代的反向代理和负载均衡器&#xff0c;已经成为云原生环境中的热门选择。它提供的动态配置能力和强大的自动化功能使其在多种场景中非常有用。本文将详细探讨适合使用 Traefik 的几种关键场景&#xff0c;并解释为何在这些情况下它特别有用 &#x1f30d;&am…

研发岗-面临统信UOS系统配置总结

第一步 获取root权限 配置环境等都需要用到root权限&#xff0c;所以我们先获取到root权限&#xff0c;方便下面的操作 下载软件 在UOS应用商店下载的所需应用 版本都比较低 安装node 官网下载了【arm64】的包&#xff0c;解压到指定文件夹&#xff0c;设置链接&#xff0…