Progressive Pretext Task Learning for Human Trajectory Prediction | 文献翻译
祥龙回首留胜景,金蛇起舞贺新程。
概述
行人轨迹预测是一项旨在预测行人未来位置的任务,它通常涵盖了从短期到长期的整个时间范围内的轨迹。然而,现有的研究试图通过单一、统一的训练范式来解决整个轨迹预测问题,往往忽视了行人轨迹中短期动力和长期依赖之间的区别。为了克服此限制,我们引入了一种新颖的渐进式预训练任务学习框架(PPT),该框架逐步增强模型捕捉短期动力和长期依赖的能力,以完成最终的整个轨迹预测。具体而言,我们在PPT框架精心设计了三个阶段的训练任务。第一阶段,模型通过下一个位置逐步预测任务来学习理解短期动态;第二阶段,模型通过目的地预测任务进一步增强对长期依赖的理解;第三阶段,模型充分利用前几个阶段的知识来解决整个未来轨迹预测任务。为了减轻知识遗忘,我们进一步应用了跨任务知识蒸馏。此外,我们设计了一种基于Transformer的轨迹预测器,通过整合目的地驱动的预测策略和一组可学习的提示嵌入,能够实现高效的两步推理。在多个流行基准测试上的广泛实验表明,我们提出的方法以高效率实现了最先进的性能。代码可在GitHub - iSEE-Laboratory/PPT: (ECCV 2024) Official PyTorch implementation of paper "Progressive Pretext Task Learning for Human Trajectory Prediction" 获取。
关键词:行人轨迹预测 · 渐进式学习
介绍
图1:将我们的渐进式预训练任务学习框架(PPT)与常规轨迹预测进行比较。(a)现有工作倾向于激进地迫使模型一次性学习复杂完整的时间模式。(b)我们的模型采用三阶段的学习过程,逐步增强模型以进行未来轨迹预测。
人类轨迹预测已在多个关键领域得到了广泛应用,例如自动驾驶[5, 20, 30, 35]、监控系统[43]、机器人导航[6, 21]及路径规划[23, 38]等。给定一段观察到的人类轨迹,人类轨迹预测的目标是精确预测未观察到的可能未来轨迹。这包括从短期到长期未来的位置预测,涵盖轨迹中的所有时间范围。
通常,跨越不同时间距离的预测依赖于理解能力的不同方面。一方面,短期未来预测需要从时间步之间的即时细粒度变化中识别局部动态模式。另一方面,长期未来预测旨在通过捕捉轨迹的长期依赖性来推断全局趋势。然而现有方法[12, 13, 27, 28, 36, 42, 50]往往忽视了这种区别,它们试图通过单一、统一的训练范式同时解决短期和长期预测问题,却常常在短期和长期性能之间陷入次优的折衷。
为了克服这一限制,本文提出了一种新颖的渐进式预训练任务学习框架(PPT),该框架逐步使模型能够捕捉复杂的短期动力和长期依赖,以实现整个未来轨迹的预测。具体而言,PPT包含三个阶段的渐进训练任务。任务I旨在通过预测给定任意长度轨迹的下一个位置使模型具备理解轨迹中固有短期动力的基本能力。任务II旨在通过预测轨迹的目的地来增强模型捕捉长期依赖的能力,其中采用多样性损失来鼓励行人的意图多样性。一旦预训练任务I和任务II完成,模型就获得了捕捉轨迹中短期动力和长期依赖的能力。在此基础上,任务III充分利用增强的知识进行更准确的预测,通过对任务II中预训练良好的模型进行微调,以实现整个未来轨迹的预测。此外,为了保留从先前预训练任务中获得的知识并稳定预测性能,我们引入了跨阶段知识蒸馏方法,将任务I和任务II的知识转移到任务III的模型中。
在我们的PPT框架中,我们进一步设计了一种基于Transformer的新型轨迹预测器。与之前自回归生成未来位置的Transformer预测器[9,12,34,53,55]相比,我们的模型能够在仅两步内高效预测任意长度的轨迹:首先确定目的地,然后一次性生成其余未来点。具体而言,我们的模型由目的地预测器和轨迹预测器组成。前者旨在捕捉长期依赖性以预测目的地,后者则利用这些目的地来指导生成整个未来轨迹。为了高效并行生成轨迹点,我们引入了一系列的可学习的提示嵌入来表示特定的时间步。
大量实验表明,我们的框架在多个流行数据集上实现了最优结果,验证了其优越性。此外,消融研究验证了每个预训练任务及其他关键组件的有效性。从定性角度来看,我们的框架能生成更准确且时间上合理的行人轨迹。总体而言,我们的贡献总结如下:
1)提出PPT框架,一种新颖的渐进式预训练任务学习框架,逐步使模型能够捕捉行人轨迹中跨不同时间范围的复杂依赖性,包括短期动力和长期依赖,以实现整个未来轨迹的预测。
2)提出一种基于Transformer的轨迹预测器,采用两步目的地驱动策略,并集成了一系列可学习的提示嵌入,以实现高效且有效的预测。
3)在四个常用数据集上的广泛实验表明,我们的框架能够持续优于目前最先进的方法。
相关工作
行人轨迹预测的目标是根据观察到的运动序列预测合理的未来路径。深入考虑到人类运动的不确定性,这一任务尤其具有挑战性,因为它需要预测所有时间步的精确位置坐标,这要求同时解决短期动力和长期依赖问题。
2.1行人轨迹预测
现有研究可以大致分为两个方向:一个方向侧重于利用场景地图[19,25,34,46,56],而另一个方向则致力于挖掘运动模式交互[13,17,26,28,36,39,42,47–50]。考虑到建模场景地图的计算成本,本文遵循第二个方向,试图探索一种更加有效的方法来理解轨迹中的时间运动模式。为了解决这一任务,已经有许多努力。例如,Gupta等人[13]最初提出利用基于GAN[10]的网络,并通过直接对齐未来轨迹中的各种时间位置与真实值GT来训练模型而没有进行区分。Gu等人[12]采用基于Transformer的扩散网络,并训练模型一次性生成整个未来轨迹。然而,这些工作由于忽视了短期和长期预测学习模式之间的差异,导致联合优化过程的性能不佳。尽管最近基于目的地的方法[26,49,57]试图通过首先使用一个预测器预测目的地,然后使用另一个预测器插值中间位置来缓解这一问题,但它们忽视了目的地预测和中间位置预测之间的知识转移,这导致目的地预测器和轨迹预测器之间存在显著差距。为了克服这些局限性,本文设计了一种渐进式预训练任务学习框架,通过引入两个精心设计的预训练任务,逐步增强模型以捕捉短期动力和长期依赖,从而实现整个未来轨迹的预测。
2.2基于Transformer的行人轨迹预测
近年来,Transformer [41,44] 架构在捕捉复杂序列依赖性方面展现了令人印象深刻的能力。鉴于其有效性,研究人员[9,12,34,37,53,55]越来越多地将Transformer应用于行人轨迹预测。例如STAR [53] 将人群建模为图,并利用基于图的Transformer来学习人群运动的时空交互。此外Tsao等人[42]使用Transformer作为骨干模型,并提出关于跨序列建模的预训练任务。然而,由于它们以自回归方式生成轨迹点,因此在推理过程中效率较低。最近,MID和TUTR尝试在这一任务中探索非自回归Transformer。然而,MID [12]依赖于扩散模型,这显著增加了推理时间。TUTR [37] 忽视了轨迹中的时间运动动态,导致性能不佳。在本研究中,我们提出了一种新颖的非自回归Transformer,以克服上述局限性。与TUTR相比,我们的模型引入了一系列有效的可学习提示嵌入来表示未观察到的位置,从而显著提高了预测性能。
2.3渐进式预训练
图2:我们的整体渐进式预训练任务学习框架(PPT)示意图。(a) 展示了我们的渐进式训练流程,其中每个训练阶段都采用相应的任务,逐步增强模型对整个未来轨迹预测的能力。为了避免知识遗忘,引入了跨任务知识蒸馏。具体而言,如(b)所示,我们依次执行逐步下一个位置预测(任务I)、跨越式目的地预测(任务II)和完整轨迹预测(任务III)。(c) 展示了我们的骨干模型。
迄今为止,渐进式学习技术已在多种任务中得到探索,包括图像生成[11,14]、图像增强[7,22]、目标检测[4,8,16,29]和运动预测[24,40]。具体而言,Karras等人[14]提出从低分辨率图像开始,然后通过向网络添加层逐步提高分辨率。PGBIG [24] 利用多个阶段逐步优化未来帧的初始猜测。Fu等人[7]引入了一种渐进式学习策略用于低光图像增强。在自知识蒸馏过程中,他们逐渐增加低光图像作为子分支输入的比例,旨在逐步提高学生的学习难度。然而,在行人轨迹预测领域,渐进式预训练仍未得到探索。据我们所知,我们的工作是首次在行人轨迹预测中探索渐进式预训练,通过引入两个精心设计的预训练任务,逐步使模型能够捕捉短期动力和长期依赖,以实现整个未来轨迹的预测。
研究方法
问题表述
行人轨迹预测旨在基于观察过去轨迹以准确预测未来轨迹,其核心挑战在于捕捉短期动力和长期依赖关系。形式上,给定一系列过去观察到的轨迹,表示为S_T1:Th = {(x_T1, y_T1), ..., (x_Th, y_Th)}N_n-1,这些轨迹是N个代理在时间T1, T2, ..., Th的轨迹,行人轨迹预测的目标是预测未观察到的未来S_Th+1:Th +Tf = {(x_Th+1, y_Th+1), ..., (x_Th+Tf, y_Th+Tf)}的后续二维位置。在下文中,我们将Te = Th + Tf表示为整个轨迹的长度。
概述
如图2所示,我们提出了一种用于轨迹预测的渐进式预任务学习(PPT)框架,旨在逐步增强模型理解过去轨迹并预测未来轨迹的能力。具体而言,我们的框架由三个阶段的渐进式训练任务组成,如图2(b)所示。第一阶段,我们在预任务I上对我们的预测器进行预训练,旨在通过预测任意长度轨迹的下一个位置,充分理解每个轨迹的短期动力;第二阶段,我们在预任务II上进一步训练该预测器,旨在通过预测轨迹的目的地来捕捉长期依赖关系。一旦任务I和任务II完成,模型便能够捕捉轨迹中的短期动力和长期依赖关系;最后第三阶段,我们复制我们的模型以获得两个预测器:一个用于目的地预测,另一个用于中间路径点预测。在此阶段,我们执行任务III,使模型能够实现完整的行人轨迹预测。为了稳定训练,我们进一步采用跨任务知识蒸馏,以避免知识遗忘。
骨干网络
本研究中,我们采用Transformer编码器[44]作为我们的骨干模型,如图2(c)所示。给定二维位置作为输入,例如从时间Tm到Tn的轨迹序列S_Tm:Tn ,我们首先使用嵌入层将其转换为输入特征。然后,这些特征与相应的时间位置嵌入{Tm, Tm + 1, ..., Tn}一起通过多个Transformer层传递,每个层由预归一化[45]、多头注意力机制、层归一化(LN)和一个多层感知机(MLP)组成。模型通过学习不同位置之间的特征交互来理解轨迹,并输出每个位置的交互表示。这些输出被送入最终的LN层,随后通过一个线性投影器获得未来的二维位置Sˆ_Tm+1:Tn +1,这表示与每个输入位置对应的预测下一帧位置。特别地,对于任务II和任务III,我们采用可学习的提示嵌入来表示轨迹中尚未观察到的未来位置,如图2(b)所示。具体细节将在下文介绍。
3.1任务-I:逐步下一位置预测
给定任意长度的观察轨迹序列,第一个预任务的目标是准确预测下一个点的位置。该任务促使模型探索运动模式并理解每个行人轨迹的短期动力。
具体来说,对于轨迹序列S_T1:Te ,我们随机采样其子序列S_T1:Tt −1,然后将其输入模型θ以推断下一个位置S_Tt,如图2(b)所示。随机性可以带来数据增强的效果。在实践中,为了提高训练效率,通常会从一个轨迹中采样多个随机子序列,这可以通过利用因果自注意力掩码[32]有效实现。我们用θI表示通过任务I训练的模型。
尽管该任务简单直接,但它能够有效地使模型识别运动模式并捕捉轨迹中的短期动态。由于理解轨迹的模式和动态是轨迹预测的关键能力,这些知识可以迁移并进一步利用,以促进后续任务中的预测。
3.2任务-II:跨越式目的地预测
第二个预任务的目标是预测轨迹的目的地。这一任务具有挑战性,因为它要求模型从过去的轨迹中推测行人的移动意图,并捕捉最终目的地与过去轨迹之间的长期依赖关系。
具体来说,以过去的轨迹序列S_T1:Th 作为输入,任务II继续训练θI以预测整个轨迹的目的地S_Te。考虑到人类运动固有的不确定性,我们遵循先前的工作[13, 49, 50],一次性预测多个目的地(例如K个)。在实践中,我们将目的地处的输出特征输入到一个多层感知机(MLP)中,以回归K个目的地。为了确保预测的准确性,我们引入了一个精度损失[13],以最小化真实目的地E与其最接近的预测目的地之间的距离,其形式为L_Precision = min_k L2(Eˆ_k, E)。这里,L2是欧几里得距离函数。此外,为了防止K个预测目的地落入同一模态,我们采用多样性损失[51, 54]以提供足够的多样性。如图2(b)所示,我们通过以下公式优化轨迹目的地之间的成对距离:
其中σs是一个缩放因子。通过这种多样性损失,模型可以生成更加多样化的目的地,从而产生更加多样化的轨迹。
该任务中目的地预测的损失函数表示为以下公式:
其中,λd用于平衡预测目的地的准确性和多样性。
值得注意的是,为了与模型θI的输入对齐,我们为每个位置分配了相应的位置编码。然而,由于未来轨迹的真实数据缺失,无法访问第(Te - 1)个位置作为输入来预测第Te个位置(目的地)。因此,我们引入了一个可学习的提示嵌入,并将其附加在过去轨迹序列之后,旨在以跨越式的方式预测目的地。我们进一步将此可学习嵌入的位置编码设置为Te - 1,以保持与任务I的一致性,表明其对第Te个位置(目的地)的预测,如图2(b)所示。
通过这一跨越式目的地预测任务,训练良好的模型θII可以获得长期预测的能力,这可以为整个未来轨迹预测提供指导参考以及与长期依赖关系相关的知识。
3.3任务-III:全面轨迹预测
通过对任务I和任务II的训练,模型θII具备了理解短期动态(从任务I中获得)和捕捉未来轨迹中长期依赖关系(从任务II中获得)的能力。在最终任务中,我们充分利用这些知识来完成完整的轨迹预测任务:预测未来轨迹中的所有位置。
具体来说,我们将模型θII复制为一个目的地预测器和一个轨迹预测器,如图2(b)所示。我们使用目的地预测器生成K个候选目的地,如任务II中所述,然后将最接近真实值(GT)的目的地输入到轨迹预测器中。轨迹预测器的输入序列可以分为三部分:从T1到Th的观察轨迹、从Th + 1到Te - 1的未观察未来轨迹,以及在Te处的伪目的地。特别地,对于未观察的未来轨迹,我们使用可学习的提示嵌入作为输入。通过这些输入,轨迹预测器输出整个未来轨迹的二维位置,即S_Th+1:Te 。在任务III期间,我们联合训练目的地预测器和轨迹预测器以回归整个未来轨迹。
为了避免先前预任务中的知识被遗忘,我们设计了一种跨任务知识蒸馏方法,用于在任务III中进行额外的正则化。具体来说,我们分别惩罚θI与轨迹预测器之间以及θII与目的地预测器之间的输出差异,此阶段的损失函数被表述为以下公式:
其中,F_t^i 和 F_d^i 分别表示在第i个任务中获得的未来轨迹和目的地的输出特征。P_t 和 P_d 表示线性投影器。
总体而言,此阶段的损失函数被表述为以下公式:
其中,L_Recon 是预测的未来轨迹与真实未来轨迹之间的L2距离。λ_t_kd 和 λ_d_kd 用于控制不同损失项之间的权衡。
3.4推理
在完成所有三个任务的训练后,模型逐步具备了预测整个未来轨迹的能力。在最终阶段,我们使用训练良好的目的地预测器和轨迹预测器进行推理。具体来说,我们首先利用目的地预测器预测K个目的地。然后,我们将这些目的地中的每一个作为轨迹预测器的输入,指导生成K条未来轨迹。
实验
表1:在SDD数据集上以minADE20 / minFDE20(像素)为度量标准,与当前最先进方法的比较,加粗文本表示最佳结果。实验表明,我们的方法大幅超越了其他方法。
本节中我们在多个流行的行人轨迹预测基准数据集上进行了广泛的实验。结果表明,我们的方法在定量和定性上均优于当前的最先进方法。此外,我们还提供了消融研究,以证明我们提出的框架中关键组件的有效性。
4.1实验设置
表2:在ETH/UCY数据集上以minADE20 / minFDE20(米)为度量标准,与当前最先进方法的比较。加粗文本表示最佳结果。在所有这些方法中,我们提出的方法取得了最佳性能。
表3:在GCS数据集上以minADE20 / minFDE20(像素)为度量标准,与当前最先进方法的比较。加粗文本表示最佳结果。我们的PPT方法显著优于其他方法。
数据集
我们提出的PPT框架在四个广泛使用的公共行人数据集上进行了评估:斯坦福无人机数据集(SDD)、ETH/UCY数据集和大中央车站(GCS)数据集。SDD是其中一个非常受欢迎的基准数据集,它是一个由无人机摄像头以鸟瞰视角记录的大规模数据集。该数据集包含了在八个不同场景中的5232名行人的轨迹。ETH/UCY是两个数据集的组合,包含五个不同的场景。ETH数据集包含两个场景,ETH和HOTEL,共有750名行人,而UCY由三个场景组成,包括786名行人,分别是UNIV、ZARA1和ZARA2。GCS数据集捕捉了美国最大和最繁忙的火车站之一内复杂且人口密集的场景。该数据集包括在大约一小时内12684名行人的轨迹。
评估指标
我们采用了与以往工作相同的数据处理程序和评估配置。在性能评估方面,我们采用了平均位移误差(ADE)和最终位移误差(FDE)作为评估指标,分别衡量预测轨迹与真实轨迹(GT)之间的平均位置距离和目标位置距离。考虑到未来的固有不确定性和人类运动的不确定性,我们为每个过去的轨迹生成K=20个未来轨迹,并计算最小ADE和FDE(Best-of-20策略)的性能,正如以往工作中所做的那样。对于所有数据集,我们将过去8步(3.2秒)作为观察轨迹,并预测接下来的12步(4.8秒)。
实施细节
我们框架的实现中,所有阶段的Transformer编码器都包含三层,其中Transformer的维度设置为128,并应用了8个注意力头。方程(1)中的缩放因子σs被赋予了1的值,方程(2)中的权重超参数λd被设置为100。我们在方程(4)中让λtkd=5和λdkd=0.5。为了最大程度地保留从任务I获得的知识,在训练阶段II时,我们最初训练一个多层感知器(MLP)用于目的地回归作为热身,然后联合训练整个模型。我们为所有三个训练阶段使用Adam优化器,并将学习率分别设置为{0.001, 0.0001, 0.0015}。我们的所有实验都是使用PyTorch在单个RTX 3090 GPU上进行的。
4.2与最新方法的比较
图3:跨任务知识蒸馏(KD)的效用分析。通过跨任务知识蒸馏,模型能够更一致地产生准确的未来轨迹。
表4:对SDD数据集上预训练任务的分析。我们研究了在没有任务I和任务II、只有任务II以及同时有任务I和任务II的情况下,我们框架的性能。
我们对提出的渐进式预训练任务学习(PPT)框架与多种现有方法在不同数据集上进行了定量比较。结果显示,我们的框架稳定达到了最先进的(SOTA)性能,特别是在SDD和GCS数据集上,与现有的最先进的方法相比,我们的框架在ADE/FDE指标上分别超过了0.58/1.01和1.22/3.15的显著差距。
在斯坦福无人机数据集(SDD)上,我们将我们的框架与8种现有方法进行了比较,结果如表1所示。可以看出,我们的方法显著提高了系统性能,将ADE指标从7.61降低到7.03,将FDE指标从11.66降低到10.65,与当前最先进的方法相比。这说明了采用三阶段渐进式预训练任务来学习短期动力和长期依赖关系的有效性,逐步使模型具备预测整个未来轨迹的能力。
在ETH/UCY数据集上,我们将我们的方法与10种现有方法进行了比较。如表2所示,我们的渐进式预训练任务学习框架再次实现了最佳的预测性能,与当前最先进的方法相比,将平均FDE性能从0.33降低到0.31,将平均ADE性能从0.21降低到0.20。
在大中央车站数据集(GCS)上,我们将提出的框架与8种最近的方法进行了比较。表3中的结果表明,我们的渐进式预训练任务学习框架在ADE和FDE指标上分别显著优于当前最先进的方法EigenTrajectory [2],提高了16.4%和25.2%,进一步验证了我们的PPT框架在预测未来轨迹方面的优越性。
4.3消融研究
图4:ADE/FDE作为方程2中权重λd的函数。λd=100提供了最佳性能。
图5:基于Transformer模型的推理速度和预测精度。
我们在SDD数据集上进一步进行了消融研究,以全面分析和研究我们PPT框架中不同组件的影响,包括预文本任务、跨任务知识蒸馏以及在任务II中利用的多样性损失。
渐进预文本任务的效果
在表4中,我们评估了所使用的渐进预文本任务,即任务I和任务II,对系统性能的影响。具体来说,我们首先使用所有三个预测任务训练模型,然后依次移除任务I和任务II进行比较。可以看出,这两个预文本任务都对提高系统性能有积极的贡献。此外,我们的实验还表明,在任务I的基础上,任务II中的目的地预测性能在FDE指标上从11.58提高到10.70。我们归因于以下事实:i)完成任务I的模型能够有效捕捉行人轨迹建模中固有的短期动力,这对预测精度贡献很大。ii)完成任务II为最终的轨迹序列预测提供了指导参考和长期依赖的知识,从而显著提高了FDE和ADE指标的预测性能。
跨任务知识蒸馏的分析
为了检验使用跨任务知识蒸馏(KD)的有效性,我们比较了使用和不使用KD训练的模型的预测性能。
我们对每个模型进行了超过20次独立运行(使用不同的随机种子),并将实验结果以箱线图的形式报告在图3中。如图所示,使用知识蒸馏(KD)训练的模型在ADE和FDE指标上均实现了更好的预测性能且方差更小,这表明跨任务知识蒸馏在实现预测稳定性方面很有效。
多样性损失的权重影响
图4展示了不同权重λd(在方程2中)对预测性能的影响。可以看出,当权重λd=100时,系统实现了最佳性能。λd过小或过大都会导致性能下降。这是因为:i)当λd过小时,模型倾向于忽略行人的意图模态,导致多样性不足和预测性能变差;ii)当λd过大时,多样性损失逐渐主导训练过程。因此,模型倾向于牺牲精度以最小化多样性损失,从而导致预测精度下降。
PPT的效率
为了验证我们PPT的效率,我们首先对其推理时间与五种现有的基于Transformer的方法进行了比较分析。如图5所示,1)利用所提出的可学习提示嵌入进行高效的并行生成,我们的预测器实现了显著超过所有自回归预测模型的推理速度,并且与一步预测模型TUTR(5.28ms对比4.06ms)相当。此外,2)通过我们的渐进式预训练任务学习框架进行训练,我们的预测器在性能上始终优于所有现有的基于Transformer的方法。此外,我们还注意到早期的预训练加速了后续阶段的收敛,从而使得我们的PPT框架在训练时间上非常高效,例如在SDD数据集上仅需4.7小时。所有结果都证明我们所提出框架的高效率和强有效性。
4.4定性结果
在本小节中,我们提供了一些可视化结果,以验证我们的渐进式预训练任务学习框架(PPT),并与当前最先进的方法进行定性比较。
渐进预训练任务的分析
图6:对预训练任务的定性分析。我们使用任务I和任务II训练的模型能够产生更准确且在时间上更可接受的轨迹。
我们仔细检查了使用或不使用预训练任务I和任务II训练的框架所预测的未来轨迹。如图6所示,一方面,当使用预训练任务I时,模型可以产生更准确的近期未来轨迹,验证了使用预训练任务I捕捉短期动力的有效性。另一方面,通过使用预训练任务II,实现了更好的长期预测性能,这表明任务II的利用对捕捉长期依赖有很大贡献。此外,使用预训练任务I和任务II,我们的框架可以直观地生成更准确且在时间上更可接受的未来轨迹,展示了我们PPT框架中每个渐进预训练任务的有效性。
与其他方法的比较
图7:在ETH/UCY数据集上预测轨迹的可视化。每一行展示不同场景中的一个样本。前四列展示了由PCCSNet [39]、SocialVAE [50]、MemoNet [49]和我们的PPT框架预测的20条轨迹。最后一列展示了这些方法产生的20个预测中最好的一个。红色轨迹表示真实(GT)未来轨迹。
图7可视化了四种不同方法(包括PCCSNet [39]、SocialVAE [50]、MemoNet [49]和我们的PPT框架)在ETH/UCY数据集场景中预测的未来轨迹。最后一列展示了这些方法生成的20个预测中最好的一个。结果表明,在所有方法中,我们的PPT框架预测的未来轨迹最符合真实未来轨迹,从视觉上验证了我们提出的框架的优越性。更详细地分析,前四列展示了这四种方法相应预测的20条未来轨迹。我们观察到,与其他方法相比,我们的PPT框架在目的地预测上表现出更大的变异性,同时保持了预测的准确性,从而生成了更准确和多样化的未来轨迹。此外当给定一个目的地时,行人通常会以相对均匀的速度朝这个目的地移动。如图所示,与MemoNet [49]相比,我们方法能产生更符合这种运动模式的未来轨迹。这验证了在我们PPT框架中学习和理解时间动态,特别是短期动力和长期依赖,对于人类轨迹建模的有效性。
结论
在本文中,我们提出了一种新颖的渐进式预训练任务学习(PPT)框架,用于制定行人轨迹预测,通过有效地捕捉轨迹中的短期动力和长期依赖,解决了以往工作的局限性。PPT包括三个阶段的渐进训练任务,以增强模型的能力。任务I旨在使模型具备理解轨迹中固有的短期动力的基本能力。任务II旨在增强模型捕捉长期依赖的能力。在任务III中,我们对模型进行微调,以进行整个未来轨迹预测,利用之前获得的知识。引入了跨任务知识蒸馏以保留来自先前预训练任务的知识。此外,我们设计了一个基于Transformer的预测器来补充我们的框架,该预测器通过两步推理实现了很高的效率。进行了广泛的实验以证明我们精心设计的框架的优越性。
鸣谢
这项工作得到国家自然科学基金(U21A20-471, U22A2095, 62076260, 61772570)、广东省自然科学基金项目(2023B1515040025)、广东省自然科学基金杰出青年项目(2022B15-15020009)、广东省信息安全技术重点实验室(2023B1212060026)及广州市科技计划项目(202201011134)的部分支持。
参考
相关文章:
Progressive Pretext Task Learning for Human Trajectory Prediction | 文献翻译
祥龙回首留胜景,金蛇起舞贺新程。 概述 行人轨迹预测是一项旨在预测行人未来位置的任务,它通常涵盖了从短期到长期的整个时间范围内的轨迹。然而,现有的研究试图通过单一、统一的训练范式来解决整个轨迹预测问题,往往忽视了行人轨…...
并发编程基础 - 并发编程的概念(C++)
前言 在当今多核处理器普及的时代,并发编程成为开发高性能应用程序的关键技术之一。无论是服务器端应用,桌面软件,还是移动应用,并发编程都扮演着重要角色。本文将详细介绍并发编程的基本概念,结合C语言特性ÿ…...
ARM嵌入式学习--第十天(UART)
--UART介绍 UART(Universal Asynchonous Receiver and Transmitter)通用异步接收器,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控…...
OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境
在OpenEuler上搭建Redis高可用生产环境,通常可以采用Redis Sentinel或Redis Cluster两种方式,以下分别介绍两种方式的搭建步骤: 基于Redis Sentinel的高可用环境搭建 安装Redis 配置软件源:可以使用OpenEuler的默认软件源&#…...
CTF从入门到精通
文章目录 背景知识CTF赛制 背景知识 CTF赛制 1.web安全:通过浏览器访问题目服务器上的网站,寻找网站漏洞(sql注入,xss(钓鱼链接),文件上传,包含漏洞,xxe,ssrf,命令执行,…...
java入门笔记基础语法篇(4)
变量 在Java中,每个变量都有一个类型(type)。在声明变量时,变量的类型位于变量 名之前。例如: int days; double salary; long earthPopulation; boolean done; 在Java中,每个声明以分号结束。变量名必须…...
【RocketMQ 存储】- broker 端存储单条消息的逻辑
文章目录 1. 前言2. DefaultMessageStore#asyncPutMessage 添加单条消息2.1 DefaultMessageStore#checkStoreStatus 检查存储服务的状态2.2 DefaultMessageStore#checkMessage 校验消息长度是否合法2.3 CommitLog#asyncPutMessage 核心存储逻辑2.4 MappedFile#appendMessage2.5…...
爬虫基础(四)线程 和 进程 及相关知识点
目录 一、线程和进程 (1)进程 (2)线程 (3)区别 二、串行、并发、并行 (1)串行 (2)并行 (3)并发 三、爬虫中的线程和进程 &am…...
29. C语言 可变参数详解
本章目录: 前言可变参数的基本概念可变参数的工作原理如何使用可变参数 示例:计算多个整数的平均值解析: 更复杂的可变参数示例:打印可变数量的字符串解析: 总结 前言 在C语言中,函数参数的数量通常是固定的ÿ…...
Java CAS操作
通过前面的学习认识到了CPU缓存,Java内存模型,以及线程安全的原子、可见、顺序三大特性。本文则重点认识CAS操作,这是Java并发编程常见的一个操作,AbstractQueuedSynchronizer基于此操作提供了丰富的同步器和各种锁。 CAS&#x…...
KNIME:开源 AI 数据科学
KNIME(Konstanz Information Miner)是一款开源且功能强大的数据科学平台,由德国康斯坦茨大学的软件工程师团队开发,自2004年推出以来,广泛应用于数据分析、数据挖掘、机器学习和可视化等领域。以下是对KNIME的深度介绍…...
超级强大的压缩和解压工具,免费解压
软件介绍 今天要给大家分享一款超厉害的软件 ——ZArchiver,在我心中,它堪称安卓平台目前最为强大的解压软件。 之前,我一直使用 MT 管理器来解压文件。然而,MT 管理器存在一些局限性。比如在处理解压分卷文件时,它有时…...
代码随想录_栈与队列
栈与队列 232.用栈实现队列 232. 用栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 思路: 定义两个栈: 入队栈, 出队栈, 控制出入…...
基于STM32的智能停车场管理系统设计
目录 引言系统设计 硬件设计软件设计 系统功能模块 车辆识别与进出管理模块车位检测与引导模块计费与支付模块数据存储与查询模块远程监控与异常报警模块 控制算法 车牌识别与车辆进出管理算法车位检测与引导算法计费与支付处理算法数据存储与远程反馈算法 代码实现 车辆检测与…...
告别重启!Vue CLI 动态代理配置实战:实现热更新与灵活配置
在前端开发中,代理配置是解决跨域问题的常见手段。尤其是在使用 Vue CLI 进行开发时,我们经常需要通过 devServer.proxy 来配置代理。然而,传统的代理配置通常是静态的,修改后需要重启开发服务器,这在频繁调整代理配置…...
Cocos Creator 3.8 2D 游戏开发知识点整理
目录 Cocos Creator 3.8 2D 游戏开发知识点整理 1. Cocos Creator 3.8 概述 2. 2D 游戏核心组件 (1) 节点(Node)与组件(Component) (2) 渲染组件 (3) UI 组件 3. 动画系统 (1) 传统帧动画 (2) 动画编辑器 (3) Spine 和 …...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.28 存储之道:跨平台数据持久化方案
好的,我将按照您的要求生成一篇高质量的Python NumPy文章。以下是第28篇《存储之道:跨平台数据持久化方案》的完整内容,包括目录、正文和参考文献。 1.28 存储之道:跨平台数据持久化方案 目录 #mermaid-svg-n1z37AP8obEgptkD {f…...
chrome源码剖析—UI架构消息机制
Chrome 浏览器的 UI 架构是高度模块化且基于现代图形技术和用户界面设计理念构建的。它的 UI 架构涵盖了窗口、标签页、控件、通知、菜单等组件的管理和交互。Chrome 的 UI 基本上是通过 views 框架和 Aura(Chrome 自己的 UI 层)构建的,后者又…...
面试经典150题——图的广度优先搜索
文章目录 1、蛇梯棋1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、最小基因变化2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、单词接龙3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 1、蛇梯棋 1.1 题目链接 点击跳转到题目位置 1.2 题目描述 给你一…...
Day30-【AI思考】-错题分类进阶体系——12维错误定位模型
文章目录 错题分类进阶体系——12维错误定位模型**一、认知层错误(根源性缺陷)****二、操作层错误(执行过程偏差)****三、心理层错误(元认知障碍)****四、进阶错误(专业级陷阱)** 错…...
利用Edu邮箱解锁Notion Pro,提升学习与工作效率
摘要: 本文将详细介绍如何通过Edu教育邮箱申请教育订阅,从而免费获得Notion Pro版的所有高级功能。此外,我们还将简要提及Edu邮箱的其他福利,如申请Azure 100免费VPS和OpenAI。通过对比Notion免费版和Pro版的差异,你将…...
剑指 Offer II 010. 和为 k 的子数组
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20010.%20%E5%92%8C%E4%B8%BA%20k%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84/README.md 剑指 Offer II 010. 和为 k 的子数组 题目描述 给定一个正整数数组和一个…...
【外文原版书阅读】《机器学习前置知识》2.用看电影推荐的例子带你深入了解向量点积在机器学习的作用
目录 3.3 Where Are You Looking, Vector? The Dot Product 个人主页:Icomi 大家好,我是Icomi,本专栏是我阅读外文原版书《Before Machine Learning》对于文章中我认为能够增进线性代数与机器学习之间的理解的内容的一个输出,希望…...
Vue.js组件开发-实现全屏平滑移动、自适应图片全屏滑动切换
使用Vue实现全屏平滑移动、自适应图片全屏滑动切换的功能。使用Vue 3和Vue Router,并结合一些CSS样式来完成这个效果。 步骤 创建Vue项目:使用Vue CLI创建一个新的Vue项目。准备图片:将需要展示的图片放在项目的public目录下。创建组件&…...
openRv1126 AI算法部署实战之——ONNX模型部署实战
在RV1126开发板上部署ONNX算法,实时目标检测RTSP传输。视频演示地址 rv1126 yolov5 实时目标检测 rtsp传输_哔哩哔哩_bilibili 一、准备工作 1.从官网下载YOLOv5-v7.0工程(YOLOv5的第7个版本) 手动在线下载: Releases ultraly…...
实验作业管理系统的设计与实现
标题:实验作业管理系统的设计与实现 内容:1.摘要 本系统旨在解决当前实验作业管理中存在的问题,提高管理效率和质量。通过对现有系统的调研和分析,我们确定了系统的功能需求和性能要求,并采用了先进的技术和架构进行设计和实现。系统实现了实…...
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》032-组件的Teleport功能
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
leetcode——二叉树的最大深度(java)
给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root [1,null,2] 输…...
【PyTorch】3.张量类型转换
个人主页:Icomi 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术,能够处理复杂的数据模式。通过 PyTorch࿰…...
自制一个入门STM32 四足机器人具体开发顺序
0 前期准备 1. 知识储备 学习 STM32 微控制器的基础知识,包括 GPIO、定时器、串口通信等外设的使用,可通过官方文档、教程和视频课程进行学习。了解舵机控制原理,因为四足机器人通常使用舵机来实现关节运动。掌握基本的机械结构设计知识&am…...
SpringCloud基础二(完结)
HTTP客户端Feign 在SpringCloud基础一中,我们利用RestTemplate结合服务注册与发现来发起远程调用的代码如下: String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);以上代码就…...
云原生时代,如何构建高效分布式监控系统
文章目录 一.监控现状二.Thanos原理分析SidecarQuerierStoreCompactor 三.Sidecar or ReceiverThanos Receiver工作原理 四.分布式运维架构 一.监控现状 Prometheus是CNCF基金会管理的一个开源监控项目,由于其良好的架构设计和完善的生态,迅速成为了监控…...
WordPress使用(1)
1. 概述 WordPress是一个开源博客框架,配合不同主题,可以有多种展现方式,博客、企业官网、CMS系统等,都可以很好的实现。 官网:博客工具、发布平台和内容管理系统 – WordPress.org China 简体中文,这里可…...
小白爬虫冒险之反“反爬”:无限debugger、禁用开发者工具、干扰控制台...(持续更新)
背景浅谈 小白踏足JS逆向领域也有一年了,对于逆向这个需求呢主要要求就是让我们去破解**“反爬机制”**,即反“反爬”,脚本处理层面一般都是decipher网站对request设置的cipher,比如破解一个DES/AES加密拿到key。这篇文章先不去谈…...
Time Constant | RC、RL 和 RLC 电路中的时间常数
注:本文为 “Time Constant” 相关文章合辑。 机翻,未校。 How To Find The Time Constant in RC and RL Circuits June 8, 2024 💡 Key learnings: 关键学习点: Time Constant Definition: The time constant (τ) is define…...
Python爬虫学习第三弹 —— Xpath 页面解析 实现无广百·度
早上好啊,大佬们。上回使用 Beautiful Soup 进行页面解析的内容是不是已经理解得十分透彻了~ 这回我们再来尝试使用另外一种页面解析,来重构上一期里写的那些代码。 讲完Xpath之后,小白兔会带大家解决上期里百度搜索的代码编写,保…...
JS 正则表达式 -- 分组【详解】含普通分组、命名分组、反向引用
普通分组 使用圆括号 () 来创建分组捕获匹配的内容,通过正则表达式匹配结果的数组来访问这些捕获的内容。 const str "Hello, World!"; const regex /(Hello), (World)!$/; const match str.match(regex);if (match) {console.log("完整匹配结果…...
Leetcode刷题-不定长滑动窗口
分享丨【题单】滑动窗口与双指针(定长/不定长/单序列/双序列/三指针/分组循环) - 力扣(LeetCode) 3090 class Solution:def maximumLengthSubstring(self, s: str) -> int:c Counter()res 0rk -1for i in range(len(s)):i…...
【Rust自学】15.6. RefCell与内部可变性:“摆脱”安全性限制
题外话,这篇文章一共4050字,是截止到目前为止最长的文章,如果你能坚持读完并理解,那真的很强! 喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以…...
护眼好帮手:Windows显示器调节工具
在长时间使用电脑的过程中,显示器的亮度和色温对眼睛的舒适度有着重要影响。传统的显示器调节方式不仅操作繁琐,而且在低亮度下容易导致色彩失真。因此,今天我想为大家介绍一款适用于Windows系统的护眼工具,它可以帮助你轻松调节显…...
使用 OpenResty 构建高效的动态图片水印代理服务20250127
使用 OpenResty 构建高效的动态图片水印代理服务 在当今数字化的时代,图片在各种业务场景中广泛应用。为了保护版权、统一品牌形象,动态图片水印功能显得尤为重要。然而,直接在后端服务中集成水印功能,往往会带来代码复杂度增加、…...
36、【OS】【Nuttx】OSTest分析(2):环境变量测试
背景 2025.1.29 蛇年快乐! 接之前wiki 35、【OS】【Nuttx】OSTest分析(1):stdio测试(五) 已经分析完了第一个测试项,输入输出端口测试,接下来分析下环境变量测试,也比较…...
C++并发编程指南04
文章目录 共享数据的问题3.1.1 条件竞争双链表的例子条件竞争示例恶性条件竞争的特点 3.1.2 避免恶性条件竞争1. 使用互斥量保护共享数据结构2. 无锁编程3. 软件事务内存(STM) 总结互斥量与共享数据保护3.2.1 互斥量使用互斥量保护共享数据示例代码&…...
Java实现LRU缓存策略实战
实现LRU模型选择LRU缓存回收算法集成Google Guava(LRU缓存策略)插件Google Guava(LRU策略)缓存示例总结LRU(Least Recently Used,最近最少使用)缓存是一种常见的缓存淘汰策略。它的基本思想是优先保留最近被访问过的数据,淘汰最久未被访问的数据。这种策略的目的是为了…...
三个不推荐使用的线程池
线程池的种类 其实看似这么多的线程池,都离不开ThreadPoolExecutor去创建,只不过他们是简化一些参数 newFixedThreadPool 里面全是核心线程 有资源耗尽的风险,任务队列最大长度为Integer.MAX_VALUE,可能会堆积大量的请求ÿ…...
Golang 并发机制-1:Golang并发特性概述
并发是现代软件开发中的一个基本概念,它使程序能够同时执行多个任务,从而提高效率和响应能力。在本文中,我们将探讨并发性在现代软件开发中的重要性,并深入研究Go处理并发任务的独特方法。 并发的重要性 增强性能 并发在提高软…...
Flink中的时间和窗口
在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一条就得处理一条,那么我们怎么统计最近一段时间内的数据呢?引入“窗口”。 所谓的“窗口”,一般就是划定的一段时…...
Alfresco Content Services dockerCompose自动化部署详尽操作
Alfresco Content Services docker社区部署文档 Alfresco Content Services简介 官方说明书 https://support.hyland.com/r/Alfresco/Alfresco-Content-Services-Community-Edition/23.4/Alfresco-Content-Services-Community-Edition/Using/Content/Folder-rules/Defining-…...
吴恩达深度学习——深层神经网络
来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。 符号约定 对于该深层网络,有四层,包含三个隐藏层和一个输出层。 隐藏层中,第一层有五个单元、第二层有五个单元,第三层有三个单元。标记 l l l…...
【算法设计与分析】实验1:字符串匹配问题的算法设计与求解
目录 一、实验目的 二、实验环境 三、实验内容 四、核心代码 五、记录与处理 六、思考与总结 七、完整报告和成果文件提取链接 一、实验目的 给定一个文本,在该文本中查找并定位任意给定字符串。 1、深刻理解并掌握蛮力法的设计思想; 2、提高应用…...