论文:论文链接
代码:代码链接
9月初下载的代码需要将utils.py 文件第54行代码修改为
def __inc__(self, key, value, store):
关键字: transformer, vector, multi-agent prediction,实时预测,分层预测,拉普拉斯分布
阅读总结:
HiVT将预测问题分为局部上下文提取以及全局交互建模,实现多智能体轨迹的预测。方法中还提出一种平移不变的场景表示和旋转不变的空间学习模块,它们提取了对场景的几何变换具有鲁棒性的特性,并使用模型能够在依次前向传递中对多个智能体进行准确的预测。
传统将感知的地图等信息栅格化或者转成BEV格式来供预测使用,通常存在着计算成本高等问题,采用向量化轨迹以及地图元素等信息(以VectorNet为代表)可以有效的减小参数量,提高计算效率。然后用图神经网络和Transformer或者是点云模型来学习向量化后车道与车辆等之间的关系。
之前的向量化方法对于处理快速变化交通环境下的实时运动预测有很大难度,因为矢量化方法通常对参考框架的平移和旋转不具有鲁棒性,为了解决这个问题,最近的研究[17, 31 , 49]将场景规范化为以目标智能体为中心并与目标智能体的航向对齐 。但是在大型场景中,重新规范化场景和为每个智能体重新计算特征就十分的消耗算力。更近的方法[38, 51],是对时空维度中所有的关系进行建模,来捕获向量化实体之间的细粒度交互,这存在这随着智能体数量的增加,计算随之爆炸的问题。
动机: 向量化的方法可以在处理环境信息时减小计算量,但对参考框架的平移和旋转不具有鲁棒性,现有解决方法有:1)将每个场景都规范化成以智能体为中心并航向对齐,但场景大时计算每个智能体特征的成本高;2)对时空场景中所有关系进行建模,建立全面的交互,但会算力爆炸。
方法:HiVT在多智能体轨迹预测中利用对称性和层次结构,把任务分成多阶段并基于Transformer对实体之间进行层次建模。第一阶段,不采取全对全交互建模,仅在局部提取上下文特征。具体而言,HiVT将场景划分为一组局部区域集,每个局部区域都以一个建模的智能体为中心。对每个智能体为中心的局部区域,从包含与中心智能体相关的丰富信息的局部向量化实体中提取上下文特征。第二阶段,为了补偿受限的局部感受野并捕获场景中的远程依赖关系,HiVT通过使用局部参考帧之间的几何关系为 Transformer 编码器提供支持,在以智能体为中心的局部区域之间执行全局消息传递。最后,给定局部和全局表示,解码器在一次前向传递中为所有智能体生成未来轨迹。为了进一步利用问题的对称性,模型采用了一种与全局坐标系的平移无关的场景表示,其中使用相对位置来表征所有矢量化实体。基于这种场景表示,模型引入了用于空间学习的旋转不变交叉注意模块,它可以学习对场景旋转不变的局部和全局表示。
优势:首先,HiVT通过将问题分解为局部上下文提取和全局交互建模,逐步聚合不同尺度的信息,高效的对大量实体进行建模。其次,方法可以通过平移不变的场景表示和旋转不变的空间学习模块来学习对输入的平移和旋转具有鲁棒性的表示。最后,模型参数更少,预测更加精准迅速。
交通场景表示 [4, 9, 12, 15, 19, 25, 43] 使用格栅化作为模型的输入,使用标准的图像模型进行学习。这模型从高清地图中提取地图元素利用不同的颜色或者掩码处理场景作为一个BEV图象。智能体的历史轨迹也被栅格化为传统的图像通道,或者利用时序模型进行处理。
光栅化和计算机视觉技术很兼容但是学习成本高效率低。最近,矢量化方法 [17, 31, 49] 因其高效的稀疏编码和捕获复杂结构信息的能力而广受欢迎。与光栅化方法不同,这些方法将场景视为与语义和几何属性相关联的一组实体,并学习实体之间的关系。VectorNet [17] 使用图神经网络对车道和轨迹折线之间的交互进行建模,在[22,32,52]中用作骨干网。 LaneGCN [31] 从车道段构建车道图,并利用多尺度图卷积网络来学习图节点的表示。 TPCN [49] 扩展点云模型以从由轨迹航点和车道点组成的时空点集中学习。HiVT的场景表示也属于这一类,但不同之处在于所有矢量化实体都以相对位置为特征,这使得HiVT的表示平移不变。
运动预测 social pooling[2,13,23],GNN[8,27,31,37],或Attention [17,30,32,36,38,43,48,50]。 [21、30、32、36、38、50、51]使用Transformer 来模拟空间关系、时间依赖性以及智能体和地图元素之间的关系。HIVT不同在于分层学习和层次化的全局表示。
首先将交通场景处理为矢量化实体的集合,基于这种场景表示,框架分层聚合场景中的时空信息。在第一阶段,HiVT为每个智能体编码旋转不变的局部上下文特征,自我运动、相邻智能体的运动和局部地图结构的聚合可以提供与建模智能体相关的丰富信息。在第二阶段,全局交互模块聚合不同智能体的局部上下文并更新每个智能体的表示以捕获远程依赖关系和场景级动态。最后,分层学习的表示用于同时对所有智能体进行多模态轨迹预测。
交通场景包括智能体和地图信息,结构化场景需要提取矢量实体。矢量化实体与语义和几何属性相关联。与之前的向量化方法[17,31,49]相比,智能体或车道的几何属性涉及点的绝对位置,HiVT的表示避免使用任何绝对位置,并用相对位置来表征几何属性,这使得场景完全成为一个向量集。智能体 i 的轨迹表示为 ,是智能体i在时间步t时刻的位置,T是整个时间步。对于车道线元素 ξ,几何属性由给出,其中 和 是 ξ 的起点和终点坐标。通过将点集转换为向量集,这种表示自然地保证了平移不变性。然而,关于实体之间的相对位置的信息也被丢弃了。为了保持空间关系,HiVT引入了智能体-智能体和智能体-车道对的相对位置向量。例如,智能体 j 在时间步 t 相对于智能体 i 的位置向量是 ,它充分描述了两个智能体的空间关系,并且也是平移不变的。在不丢失任何信息的情况下,HiVT的场景表示确保应用到它的任何可学习函数都必须重视平移不变性。
直接使用Transformer计算大量向量化的实体之间时空关系的复杂度:,N 、T 和 L 分别是智能体数量、历史时间步长和车道段数。为了降低计算复杂度,从大量实体中进行学习,HiVT分解了时间和空间的维度,并仅在每个时间步局部的学习空间关系。具体来说,模型将空间划分为 N 个局部区域,每个局部区域以场景中的一个智能体为中心。每个局部区域内是中心智能体的轨迹段和局部环境,其中环境信息涉及相邻智能体的轨迹段和围绕中心智能体的局部车道段。对于每个局部区域,通过对每个时间步长的智能体-智能体交互、每个智能体的时间依赖性以及当前时间步的智能体-车道交互进行顺序建模,将局部信息聚合到单个特征向量中。聚合后,特征向量包含与中心智能体相关的丰富信息。分解后复杂度:,通过限制局部区域半径,可以使复杂度进一步降低:,。
局部学习会受到局部区域的限制,这会降低预测的性能,因此,HiVT提出一种全局交互模块来补偿受限的感受野并捕获场景级动态,其中,模型在局部区域之间执行信息传递。全局交互模块可以以 复杂度为代价显着增强模型的表达能力,与局部编码器相比相对轻量级。
多智能体运动预测问题表现出平移和旋转对称性。现有方法 [17, 31] 重新规范化关于每个智能体所有矢量化实体并多次进行单智能体预测以实现不变性。这种范式与智能体的数量呈线性关系。相比之下,HiVT模型可以通过使用平移不变的场景表示和旋转不变的空间学习模块,在不牺牲不变性的情况下,在单个前向传递中对所有智能体进行预测。下文是更详细的说明。
个人理解的建模方式,不知道对不对
智能体-智能体交互 该模块意在学习每个时间步的每个局部区域的中心智能体和相邻智能体之间的关系。为了利用问题的对称性,模型引入了一个旋转不变的交叉注意块来聚合空间信息。具体的,统一将中心智能体 i 的最新轨迹段 作为局部区域的参考向量,并根据参考向量的方向 旋转所有局部向量。基于旋转向量及其相关语义属性,使用多层感知器 (MLP) 在任何时间步 t 获得中心智能体 i 的embedding 和任何相邻智能体 j 的embedding:
是两个不同的 MLP 块,是被参数化的旋转矩阵,和分别是智能体 i 和智能体 j 的语义属性。因为所有关于中心智能体的几何属性在被馈入到MLP之前都进行了归一化处理,所以这些embeddings不受全局坐标系旋转的影响。除了轨迹段, 的输入还包含相邻智能体相对于中心智能体的位置向量,使相邻编码(embedding)具有空间感知。然后将中心智能体的embedding转换为查询向量,并使用相邻智能体的embedding来计算键和值向量:
其中 是线性投影的可学习矩阵, 是变换向量的维数。生成的查询、键和值向量作为缩放点积注意力块的输入:
其中是智能体 i 相邻智能体的集合, 是可学习的矩阵,表示逐元素乘积。与标准的缩放点积注意力[46]相比,模型的变体使用门控功能将环境特征 与中央智能体的特征 融合在一起,使块能够更好地控制特征更新。与原始的 Transformer 架构一样,模型的注意力块也可以扩展到多个头。多头注意力块的输出通过 MLP 块获得智能体 i 在时间步 t 的空间embedding 。此外,HiVT在每个块之前应用层归一化[3],在每个块之后应用残差连接[24]。在实践中,可以使用有效的分散和聚集操作来实现该模块,以并行化所有局部区域和所有时间步长的学习。
时间依赖 为了进一步捕获每个局部区域的时间信息,HiVT在智能体-智能体交互模块之上使用了一个时间 Transformer 编码器。对于任何中心智能体 i,该模块的输入序列由智能体-智能体交互模块在不同时间步返回的embeddings 组成。与 BERT [14] 类似,HiVT在输入序列的末尾附加了一个额外的可学习token 。然后,HiVT将可学习的位置embeddings添加到所有tokens中,并将tokens堆叠到矩阵 中,然后将其馈入时间注意块:
其中,是可学习矩阵,是强制 tokens 只关注当前时间步长的时间掩码。时间学习模块还包括交替的多头注意力块和 MLP 块。HiVT将更新的额外tokens输入到后续的智能体车道交互模块,这些tokens总结了局部区域的时空特征。
智能体-车道交互 局部地图结构可以指示中心智能体的未来意图。因此,HiVT将局部地图信息合并到 embeddings 中。HiVT首先在当前时间步 T 旋转本地车道段和智能体车道相对位置向量。旋转后的向量然后由 MLP 编码:
是车道段的 MLP 编码器,是智能体 i 的局部区域的旋转矩阵,以及分别是车道段 ξ 的起始位置,结束位置,语义属性。将中心智能体的时空特征作为查询输入,将 MLP 编码的车道段特征作为键/值输入,智能体-车道注意力的计算方式与等式 (3) 到等式 (7)描述的相同。HiVT进一步应用另一个 MLP 块来获得中心智能体 i 的最终局部embedding 。
在对智能体-智能体交互、时间依赖性和智能体-车道交互进行顺序建模之后,embeddings融合了与局部区域中心智能体相关的丰富信息。
HiVT引入了一个全局交互模块来捕获场景中的长期依赖关系。由于局部特征是在以智能体为中心的坐标系中提取的,因此全局交互模块在执行局部区域之间的消息传递时需要桥接框架间的几何关系。为此,HiVT扩展了 Transformer 编码器以了解局部坐标帧之间的差异。例如,智能体 i 和智能体 j 坐标系之间的差异可以通过 和 参数化,其中 表示。当执行从智能体 j 到智能体i 的消息传递时,HiVT使用 MLP 来获得成对embedding :
然后将成对embedding 合并到向量的转换中,
其中和是智能体 i 和智能体 j 的局部embeddings, 是可学习矩阵。为了在全局范围内捕获成对交互,HiVT应用与局部编码器中相同的空间注意块,然后是一个 MLP 块,该块输出任何智能体 i 的全局表示。
未来轨迹是多模态的,因此,HiVT将未来轨迹的分布参数化为混合模型,其中每个混合分量都是拉普拉斯分布。一次性对所有智能体进行预测。对于每个智能体 i 和每个组件,MLP 接收局部和全局表示作为输入,并在局部坐标系输出智能体每个未来时间步长的位置及其相关的不确定性。回归head的输出张量的形状为 ,其中 F 是混合成分的数量,N 是场景中的智能体数量,H 是预测的未来时间步数。HiVT还使用另一个 MLP 和一个 softmax 函数来为每个智能体生成混合模型的混合系数,其形状为 。
HiVT使用多样性损失 [23, 45] 来鼓励多轨迹假设的多样性,这在训练期间仅优化 F 预测中的最佳值。在优化之前,HiVT首先计算真实位置与模型为每个智能体每个时间步长预测的 F 混合分量的位置之间的误差。然后,HiVT将所有未来时间步的误差相加,得到一个形状为的矩阵,据此HiVT为每个智能体选择误差最小的轨迹,即找出误差矩阵中每一列的最小值。最终的损失函数包括回归损失 和等权重的分类损失:
HiVT采用负对数似然作为回归损失:
其中是拉普拉斯分布的概率密度函数,和是智能体 i 的最佳预测轨迹的位置和不确定性。我们使用交叉熵损失作为分类损失来优化混合系数。
数据集 :Argoverse 运动预测数据集 [10],所有训练和验证场景都是以 10 Hz 采样的 5 秒序列,而测试集中只有前 2 秒的轨迹是公开的。鉴于最初的 2 秒观察,Argoverse 运动预测挑战需要预测智能体未来 3 秒的运动。
指标 :最小平均位移误差 (minADE)、最小最终位移误差 (minFDE) 和未命中率 (MR)。这些指标允许模型为每个智能体预测多达 6 条轨迹。minADE 测量最佳预测轨迹和地面真实轨迹之间在所有未来时间步长上的平均距离(2范数)(以米为单位),而 minFDE 测量未来最后时间步长的误差。最佳预测轨迹被定义为具有最小端点误差的轨迹。MR指的是ground-truth端点和最佳预测端点之间的距离在2.0米以上的场景的比率。
实施细节: HiVT使用 AdamW 优化器 [35] 在 RTX 2080 Ti GPU 上训练模型 64 个 epoch,批量大小、初始学习率、权重衰减和 dropout 率分别设置为 32、和 0.1。学习率使用余弦退火调度器[34]衰减。HiVT的模型由 1 层 agent-agent 和 agent-lane 交互模块、4 层时间学习模块和 3 层全局交互模块组成。所有多头注意力块中的头数为8。所有局部区域的半径为50米。HiVT遵循基线中的约定,并将预测模式 F 的数量设置为 6。HiVT不使用集成方法和数据增强等技巧。HiVT基于一个有 64 个隐藏单元的小模型和一个有 128 个隐藏单元的大模型进行实验,分别称为 HiVT-64 和 HiVT-128。
对 Argoverse 验证集进行消融研究。除非另有说明,否则实验结果基于64 维模型 HiVT-64。
每个模块的重要性 HiVT通过交替删除一个组件来展示每个模块对预测性能的贡献。如表1中所示。 每个组件都能在一定程度上提高性能。首先,没有智能体-智能体交互模块,该模型无法在之前的时间步捕获细粒度的局部交互,并且会遭受性能下降的影响。添加更多层此模块可以进一步提高性能,但HiVT继续使用一层以提高效率。其次,时间学习模块对性能的影响最大,因为在高度动态的交通场景中推断交通智能体的未来运动在很大程度上依赖于历史信息。第三,车道信息在运动预测中起着至关重要的作用,因为由于交通规则的约束,交通智能体通常沿着车道移动。此外,全局交互模块可以显着提高预测性能。该结果验证了其捕获远程依赖关系的能力。
注意块的消融研究 评估空间注意块中的门控更新函数和时间注意块中的时间掩码的效果。如表2中所示,使用门控功能可以提高预测性能,大概是因为一些智能体与环境的交互不多。表2结果还表明,去除时间注意块中的时间掩码会导致更差的性能,这表明阻止tokens参与后续时间步长对模型是有益的。
平移和旋转不变性的重要性 定量地测量平移和旋转不变性的重要性。在消融研究中,首先将场景表示为一个点集,并根据自动驾驶汽车在当前时间步的位置和航向对坐标进行归一化。这种表示是以场景为中心的,并且对于场景的翻译不是不变的。进一步将空间学习模块中的旋转不变交叉注意块替换为它们的非不变对应部分。如表3的第一行所示,在以场景为中心的表示下学习不能产生可靠的预测结果。图 3结果还表明,采用HiVT提出的平移不变表示和旋转不变空间学习模块可以显着提高预测性能,这表明几何先验可以缓解模型的学习难度。有趣的是,虽然 HiVT-128 的模型尺寸是 HiVT-64 的近三倍(见表 4),但如果没有旋转不变性的感应偏置,HiVT-128 的性能无法超越 HiVT-64。这种现象表明了对称性对参数效率的重要性。
Table 3. Impact of translation and rotation invariance on the prediction performance.
表 4. Argoverse 运动预测排行榜的定量结果 [1]。模型大小由作者报告或使用官方实现计算。符号“-”表示模型大小未知,因为作者没有披露它并且没有可用的开源实现。
进一步证明受益于旋转不变性的数据效率和鲁棒性。使用 5%、10%、20%、50% 和 100% 的训练数据训练 HiVT-64,有无旋转不变性的归纳偏差,并评估验证集的性能。如图 2 (a) 所示,旋转不变模型需要较少的训练数据来实现与其非不变模型相似的性能。在图 2 (b) 中,表明HiVT提出的空间学习模块对场景的旋转具有鲁棒性,而其对应部分的预测性能受到旋转角度的严重影响。
当场景中只需要预测一个智能体时,现有的向量化方法[17,31,49]通过对场景中的所有实体进行归一化来实现平移和旋转不变性。然而,在多智能体预测的设置中,这些方法无法准确预测单个前向传递中多个智能体的运动,因为每次只有一个智能体在场景中被归一化。为了验证这一点,评估 LaneGCN [31] 对场景旋转的鲁棒性。与 Argoverse 数据集上的许多其他竞争方法一样,LaneGCN 将场景标准化为以目标智能体为中心并与目标智能体的航向对齐。图 2 (b) 中的结果表明,LaneGCN 的预测性能对场景的旋转角度很敏感,这表明它无法对具有任意航向的智能体做出准确的预测。因此,对多个智能体进行预测需要重新规范化场景并多次执行前向传递以实现不变性。相比之下,HiVT 对所有智能体进行对称建模,并在不牺牲不变性的情况下一次性对所有智能体进行预测,从而转化为快速准确的多智能体预测。
与最先进的比较 方法与 Argoverse 测试集上最先进的模型进行比较。 表4是在 2021 年 11 月 16 日从 Argoverse 排行榜 [1] 中收集的。 HOME+GOHOME [18,19] 是表中唯一的栅格化方法,它使用的参数比大多数矢量化方法多得多,但在除 MR 之外的指标上表现不佳。使用 82.1%、74.6% 和 40.0% 的参数,HiVT-64 在 minADE 和 minFDE 的指标上显着优于 LaneGCN [31]、mmTransformer [32] 和 DenseTNT [22]。与 Scene Transformer [38] 和 MultiModalTransformer [28] 相比,它们是最近提出的两个基于 Transformer 的运动预测模型。HiVT-64 使用的参数减少了 95.7% 和 89.5%,但仍能达到同等或更好的性能。与 Scene Transformer 和 MultiModalTransformer 相比,HiVT-128 的参数减少了 83.5% 和 60.0%,优于表4中所示的所有方法。 在 minADE 和 minFDE 方面。上述结果表明HiVT的方法具有优越的预测性能和参数效率。方法在 2021 年 11 月 16 日的 minADE 方面排名第一,并且在 Argoverse 排行榜上保持竞争力排名。
推理速度 使用 RTX 2080 Ti GPU 和批量大小 32 比较了 Argoverse 验证集上模型的推理速度。这样的批量大小接近每个场景的平均代理数量。如表中所示。如图5所示,模型的所有变体都具有比基线更快的推理速度,并且当局部区域的半径不小于20米时,完整模型的预测精度超过了基线。虽然在图 5 中,假设了多智能体预测需要多个前向传递,并展示了当批量大小为 32 时的推理速度,由于对称设计,HiVT的方法实际上可以使用单个前向传递对所有智能体进行准确预测。当batch size为1,半径为50米时,HiVT-128的平均推理速度在20ms左右,满足实时性要求。
从图 5 中,可以看到添加全局交互模块引入的计算成本可以忽略不计,但大大提高了预测性能。该结果验证了全局交互模块的有效性。此外,改变局部区域的半径以获得具有不同计算复杂度的模型。表 5 表明,减小半径可以加快整个模型的推理速度,而使用更大的半径 80 米会导致推理速度变慢,但对性能没有帮助。局部全局架构允许从业者根据对预测精度的要求和计算资源的限制选择适当的局部区域大小。
表 5 Argoverse 验证集上模型的推理速度和预测性能。符号“r”表示模型的局部区域的半径,以米为单位。
定性结果 在 Argoverse 验证集上展示了 HiVT-128 的定性结果。为清楚起见,仅可视化每个场景的两个智能体。如图 3 所示,模型可以在复杂的情况下同时对多个代理进行准确、多模态和合理的预测交通场景。有趣的是,虽然数据集不包含有关交通灯状态的信息,但左上角的示例显示模型成功地预测了交叉路口车辆的突然加速。
图 3 HiVT-128 的定性结果。黄色显示过去的轨迹,红色显示真实轨迹,绿色显示预测轨迹
在本文中,HiVT提出了一种新的多智能体运动预测框架,该框架通过局部上下文提取和全局交互建模对向量化实体之间的交互进行分层建模。基于这个框架,HiVT提出了一种平移不变的场景表示和一种用于学习的旋转不变的Transformer架构。对称设计可以显着提高模型的预测精度、数据效率和参数效率。实验表明,HiVT方法在 Argoverse 运动预测基准上实现了最先进的性能,与现有解决方案相比,模型参数少得多,推理速度更快。