【VectorNet】vectornet网络学习笔记

文章目录


VectorNet Overview

前言

(vectornet算法流程)

  • 读取轨迹地图 数据,将其转换为向量化表示

  • 对每个向量化的polyline实体,使用子图网络(MLP+GNN)进行局部子图编码,并输出局部特征

  • 以每个实体的局部子图输出特征作为节点,节点间基于自注意力机制的相似度作为边构建全局图(GNN+self-attention)

  • 对所有向量化的polyline实体,使用GNN进行全局交互建模,输出每个实体的隐状态

  • 对每个agent,使用一个MLP解码器生成多个可能得未来轨迹,并估计他们的概率

  • 计算损失函数,使用ADE和FDE作为评价指标

  • GNN:

    • GNN 聚合轨迹和地图polyline的局部信息,全局聚合所有polyline之间的特征,然后可以将该图用于行为预测
    • GNN聚合polyline局部信息 时候通过多层GNN操作来找到polyline内部向量之间的关系,在聚合全局信息 时通过self-attention自注意力机制来找到各个polyline之间的联系

(向量表示)

  • 地图向量构建

    • 选定起点和方向,从相同空间距离的样条中均匀采样关键点,并将相邻关键点顺序连接成向量
  • 轨迹向量构建

    • 从t=0开始,以固定时间间隔0.1s采样,并将他们连成向量

不管是地图还是轨迹,只要空间或时间间隔合适,生成的折线polyline就可以作为原始元素的近似

(图构建)

  • 我们在向量集之上能够形成一个图形表示

  • 将polyline的一个向量视为节点 , 每个节点特征如下 v i = d i s , d i e , a i , j v_{i} =d_{i}\^{s}, d_{i}\^{e}, a_{i}, j vi=dis,die,ai,j

    • 前两个是start和end点坐标, 可以是(x,y)也可以是(x,y,z)
    • 第三个是属性特征, 比如目标类型, 时间戳, 道路特征, 道路限速和其他目标特征
    • 第四个是polyline的整数id,表示节点属于polyline, polyline内部相同
  • 以agent为中心,所有向量的坐标归一化;最后还需要共享所有交互agent的坐标中心以便能并行预测它们的轨迹

(子图构建)

  • 在向量级别构建子图, 以利用节点的空间和语义局部性, 属于同一polyline的所有节点相互连接, 即每个节点和polyline其余所有节点连接

  • 对于一个polyline, P的节点有 v 1 , v 2 , . . . , v p {v_1, v_2, ..., v_p} v1,v2,...,vp

  • 可以定义子图网络如下 v i l + 1 = ϕ r e l ( g e n c ( v i l ) , φ a g g ( v j l ) ) v_{i}^{l+1} = \phi {rel}(genc(v{i}^{l}), \varphi {agg}(v{j}^{l}) ) vil+1=ϕrel(genc(vil),φagg(vjl))

    v i l v_{i}^{l} vil:表示第i个节点L层的节点特征
    g e n c genc genc:表示节点的变换,实践中采用MLP来实现
    φ a g g \varphi _{agg} φagg:表示节点聚合,用来从相邻的节点获取信息,实践中采用的是max_pooling
    ϕ r e l \phi _{rel} ϕrel:表示 v i v_i vi与周围节点的关系,实践中采用的是concatenate操作

    如下图所示

  • 经过多层的堆叠,来获取整个polyline级别的特征 P = φ a g g ( v i L p ) P = \varphi {agg}(v{i}^{L_{p} }) P=φagg(viLp)
    φ a g g \varphi _{agg} φagg也是max_pooling操作

  • 结合上图来理解 ,总结来说: g e n c o d e r g_encoder gencoder转换单个节点的特征, φ a g g \varphi _{agg} φagg聚合左右相邻节点的信息,而 ϕ r e l \phi _{rel} ϕrel是节点与相邻节点之间的关系算子,可以简单拼接

    • m a x p o o l i n g max_pooling maxpooling最大池化:获取相邻节点最为明显的行为特征,如突然加速等
    • 上图是一个多层感知机MLP,其权重所有节点共享,MLP包含全连接层,然后进行层归一化,再经过ReLU引入非线性
    • 如上图的网络进行堆叠,每个子图网络的 g e n c o d e r g_encoder gencoder权重不同,经过如下处理,得到折线级特征,即再次池化找出一个polyline最需要重点关注的信息 P = φ a g g ( v i L p ) P = \varphi {agg}(v{i}^{L_{p} }) P=φagg(viLp)

(全局图构建)

  • 全局图的节点 就是每个polyline 编码的结果, 就是自注意力机制 计算的相似度
  • 对折线节点特征{ p 1 , p 2 , . . . , p P {p_1, p_2, ..., p_P} p1,p2,...,pP}上的高阶交互进行建模 { p i l + 1 } = G N N ( p i l , A ) \left \{ p_{i}^{l+1} \right \} =GNN\left ( p_{i}^{l}, A \right ) {pil+1}=GNN(pil,A)
  • 从自注意力机制的角度来理解 。 A A A是对折线节点集的,假设 A A A是一个全连接图,那么这个图网络被实现为self-attention自注意力操作 G N N ( P ) = s o f t m a x ( P Q P K T ) P V GNN\left ( P \right ) =softmax(P_{Q}P_{K}^{T} )P_{V} GNN(P)=softmax(PQPKT)PV
  • P P P是节点特征矩阵, P Q , P K , P V P_{Q},P_{K},P_{V} PQ,PK,PV是其线性投影
  • 文章中只使用了单层GNN,也可以使用多层GNN来模拟高阶交互

(解码器: 轨迹预测)

  • 推理过程对于移动agent节点解码未来轨迹: v i f u t u r e = φ t r a j ( p i L t ) v_{i}^{future} = \varphi {traj}(p{i}^{L_{t} } ) vifuture=φtraj(piLt)
  • 其中, L t L_t Lt是GNN总层数, φ t r a j \varphi _{traj} φtraj是轨迹解码器,文章中采用了简单的MLP作为解码器,还可以使用其他类型的解码器
  • MLP: 多个全连接层和ReLU激活函数组成, 提取特征并映射到输出向量
  • 输入: 局部/全局特征图
  • 输出: 二维坐标向量

(辅助研究)

  • 文章中为了更好地捕捉 不同polyline之间的交互 , 在训练期间, 随机屏蔽 掉polyline子集特征,如屏蔽 p i p_i pi,然后尝试将其掩盖的特征恢复 p i ^ = φ n o d e ( p i L t ) \hat{p_{i} } =\varphi {node}(p{i}^{L_t} ) pi^=φnode(piLt)
  • 其中 φ n o d e \varphi _{node} φnode是MLP节点特征解码器,在推理过程中不使用这些解码器
  • p i ^ \hat{p_{i} } pi^是全连接无序图中的一个节点,文章中通过计算相对的 p i d p_{id} pid来识别单个 p i p_{i} pi

(损失函数)

L = L t r a j + α L n o d e L=L_{traj}+\alpha L_{node} L=Ltraj+αLnode

  • L t r a j L_{traj} Ltraj是预测轨迹与GT轨迹的的交叉熵 -> 负高斯对数似然
  • L n o d e L_{node} Lnode是预测节点与掩码节点之间的Huber损失(综合MSE和MAE优点的指标)
  • 使用minADEminFDE 作为评价指标

(实验)

  • 基线: 使用ConvNet对光栅图像进行编码
  • 参数: 使用了3层MLP表示polyline子图,使用1层MLP表示全局交互图,所有MLP中hidden_size = 64
  • 向量坐标归一化,使用最后观察点的目标车辆位置为中心
  • 消融实验得到的几个结论:
    • ConvNet感受野: 精心设计的栅格图裁剪策略能带来性能提升, 但是以增加计算成本为代价
    • 渲染分辨率: 随着栅格图渲染分辨率的提高, 性能普遍提高
    • 地图信息: 添加地图信息能显著提高预测轨迹性能
    • 轨迹信息: 结合他车轨迹信息也能进一步提高性能
    • 辅助研究: 添加节点掩码机制有助于提高性能, 尤其是在较长时间范围内
    • 图层: 对于折线子图3 层MLP提供了最佳性能,对于全局图 ,只需要1层 ; 使用更深的MLP不会带来更好的性能
    • 注意力机制: 注意力机制可视化,注意力机制是agent能够专注于正确的选择

(问题厘清)

  • 问题1:怎么理解子图构建过程中的的MLP, 网络怎么针对所有节点运作的, 是单个polyline的所有节点作为输入?

    • 这里的节点node是polyline内每一个vector node;
    • 是一个多层MLP, polyline的所有vector nodes features 作为输入 ,文章中是3层MLP,每层的参数不同,但是针对所有节点的(所有节点共享)
  • 问题2:文章开头所述, 聚合局部信息的时候使用GNN还是MLP,还是GNN使用MLP实现?

    • 子图构建阶段MLP 主要用于vector node节点级别的特征提取 ,将原始的输入数据转换为有用的特征表示;然后使用GNN 进行vector nodes节点间的信息聚合和交互建模。通过这种方式,vectornet能充分利用节点的特征信息,并捕获子图内复杂的交互关系
    • 全局图构建阶段 :使用自注意力机制GNN 来捕获polyline之间的交互 关系,提取每个polyline特征都会根据其他polyline特征进行更新;提取了全局特征后,使用MLP 作为解码器生成最终的预测结果,MLP根据全局特征图生成每个agent未来可能的轨迹,并评估这些轨迹的概率,实现从特征空间到输出空间的映射
  • 问题3:vectornet是交互式模型, 支持多智能体同时预测吗?

    • 可以
    • vectornet是一种交互式模型,通过全局图构建和自注意力机制的应用,使得vectornet能够同时处理多个智能体的预测任务,为每个智能体生成准确的预测结果
  • 问题4 :vectornet输出一个目标的一条 还是多条 轨迹, vectornet输出除了未来3s 轨迹还包括每条轨迹的概率吗(softmax层得到)

    • vectornet预测得到的轨迹是相对于最后一个观测点的坐标偏移coordinate offset
    • vectornet生成的是单目标多轨迹 ,除了给出未来3s 轨迹,还会通过内部softmax 层给出每条轨迹的概率
    • vectornet轨迹偏移通过minADE/minFDE等回归,概率值通过交叉熵损失评估

参考文章

1. vectornet阅读笔记

2. vectotnet论文翻译和学习笔记

3. vectornet vs hivt

4. TNT论文

5. TNT论文笔记

6. denseTNT论文笔记

created by shuaixio, 2024.07.04

相关推荐
星马梦缘20 天前
机器学习与模式识别 第十六章 Transformers 考点压缩
人工智能·机器学习·cnn·transformer·attention·注意力机制·mlp
星马梦缘21 天前
机器学习与模式识别 第十六章 Transformers 模拟卷及答案
人工智能·机器学习·cnn·transformer·attention·注意力机制·mlp
minhuan2 个月前
FlashAttention、PagedAttention两代注意力算法,改写大模型推理生态详解.186
自注意力机制·大模型应用·flashattention·pagedattention·注意力算法详解
SuperHeroWu73 个月前
【AI大模型】Self-Attention:为什么它能取代 RNN 解决长距离依赖?
人工智能·rnn·深度学习·循环神经网络·自注意力机制·self-attention
@陈小鱼3 个月前
基于 KAN 模型的世界发展指标下预期寿命预测研究
人工智能·python·mlp·ml·kan·预期寿命
self-motivation3 个月前
model_optimizer使用实践----------分析pi05 nvfp4量化后精度下降明显的问题
量化·mlp·fp8·nvfp4·敏感层
带娃的IT创业者4 个月前
MLP vs Transformer:不同问题用不同工具
人工智能·深度学习·神经网络·transformer·架构设计·mlp
阿钱真强道4 个月前
08 从 MLP 到 LeNet:为什么一个神经元不够?
深度学习·神经网络·机器学习·mlp·决策边界
Roselind_Yi4 个月前
多模态数据挖掘前沿:生物医学与情感分析领域论文深度解析
人工智能·python·数据挖掘·nlp·gnn·情感分析·loss
weixin_440401694 个月前
GNN(图神经网络)+GCN
人工智能·深度学习·神经网络·图神经网络·gnn·gcn