【TNT】Target-driveN Trajectory Prediction学习笔记

 

TNT Framework

前言

(文章的核心思想)

p ( s F ∣ χ ) = ∫ τ ∈ τ ( c P ) p ( τ ∣ χ ) p ( s F ∣ τ , χ ) d τ p(s_F|\chi)=\int_{\tau\in \tau(c_P)}^{} p(\tau|\chi)p(s_F|\tau,\chi)d\tau p(sFχ)=ττ(cP)p(τχ)p(sFτ,χ)dτ

  • 其中, χ = ( s P , c P ) \chi = (s_P, c_P) χ=(sP,cP) s P s_P sP是单个目标的观察状态序列, c P c_P cP是与其他代理和场景元素组成的环境交互, s F s_F sF是未来时间步的状态序列
  • 我们想捕获的是整体概率分布 p ( s F ∣ χ ) p(s_F|\chi) p(sFχ)
  • τ \tau τ是目标空间, p ( τ ∣ χ ) p(\tau | \chi) p(τχ)p(t|x)是目标分布可以很好的捕获意图的不确定性
  • 文章使用一组离散的位置来近似目标空间, 将目标分布p(t|x)的估计转换为分类任务,有更好的解释性,在考虑目标空间t的时候也引入了专家知识即道路拓扑结构

文章分为三个阶段进行:

  • 1阶段: 确定目标空间 τ \tau τ的信息。即目标预测, 根据观察到的 χ \chi χ, 用一组离散目标状态来模拟意图的不确定性, 然后输出目标分布 p ( τ ∣ χ ) p(\tau | \chi) p(τχ), 也就是anchor打分
  • 2阶段: 以目标为条件的运动估计。有了选定的目标空间, 即top离散点, 对从初始状态到未来可能运动状态进行单模态建模, 即输出公式(1)的结果
    3阶段: 适应下游任务。需要给出一小部分有代表性的未来预测, 而不是所有可能未来的完整分布, 什么都预测相当于没预测。所以3阶段就是学习评分函数对结果进行评分选择

pipeline的三个阶段

  • target prediction: 给所有anchor点打分, 选出top的anchor点
  • target-conditioned motion estimation: 就选出的anchor点回归出完整轨迹
  • trajectory scoring & selection: 就2阶段得到的几条轨迹, 考虑其他预测轨迹的同时估计轨迹的概率

(1阶段)

  • 1阶段最重要, 可有不同的撒点策略
  • 撒点策略需要有适当的分辨率, 对全部可行驶区域都要有很好的覆盖。只要goal选定, 对下游就很有帮助
  • 文章中提到的撒点策略:
    • (1) 根据地图信息撒点
    • (2) grid网格化撒点
  • 1阶段在给goal打分的同时还会回归出两个offset,goal+offset才是2阶段用到的endpoint

(2阶段)

  • 轨迹拟合难度不高, 需要符合运动学和动力学约束

(3阶段)

  • 对整条轨迹进行打分, 打分策略见下一章节

(网络框架)

在这里插入图片描述

1. 场景上下文编码
  • 场景上下文编码是轨迹预测的第一步, 以捕获agent-agent和agent-road交互
  • 如果场景上下文仅自上而下的图像可用, 采用ConvNet作为上下文编码器
  • 如果高精地图可用, 采用先进的VectorNet作为上下文编码器
    • polyline作为高精地图元素 c P c_P cP和智能体轨迹 s P s_P sP的抽象
    • 采用子图网络(MLP+GNN)对每条折线进行编码, 使用全局图(注意力机制的GNN)来模拟折线之间的交互关系
    • 输出每个agent的全局上下文特征x(MLP作为decoder)
2. 目标预测
  • 通过一组N个离散的, 具有连续偏移量的量化位置来模拟潜在未来目标
    τ = { τ n } = { ( x n , y n ) + ( △ x n , △ y n ) } n = 1 N \tau = \left \{ \tau^n \right \} =\left \{ (x^n,y^n)+(\bigtriangleup x^n, \bigtriangleup y^n) \right \} _{n=1}^{N} τ={τn}={(xn,yn)+(xn,yn)}n=1N

    • 小写 τ \tau τ被定义为agent在固定时间范围T(预测时长)内可能出现的位置 ( x , y ) (x,y) (x,y),然后通过离散连续分解, 对目标分布进行建模 p ( τ n ∣ χ ) = π ( τ n ∣ χ ) ⋅ N ( △ x n ∣ v x n ( χ ) ) ⋅ N ( △ y n ∣ v y n ( χ ) ) p(\tau^n|\chi)=\pi(\tau^n | \chi)\cdot N(\bigtriangleup x^{n}|v_{x}^{n}(\chi) )\cdot N(\bigtriangleup y^{n}|v_{y}^{n}(\chi) ) p(τnχ)=π(τnχ)N(xnvxn(χ))N(ynvyn(χ))

    • 其中 π ( τ n ∣ χ ) = e x p ( f ( τ n , χ ) ) ∑ τ ′ e x p ( f ( τ ′ , χ ) ) \pi(\tau^{n}|\chi)=\frac{exp(f(\tau^{n}, \chi))}{\sum_{\tau'}^{} exp(f(\tau', \chi))} π(τnχ)=τexp(f(τ,χ))exp(f(τn,χ))是位置选择的离散分布,以此来预测目标位置及其最可能的偏移量的离散分布

    • p ( τ n ∣ χ ) p(\tau^{n} | \chi) p(τnχ)将连续空间上概率分布的预测拆成两部分:一部分是离散点, 也就是anchor点;另一部分是offset, 也就是anchor对应的offset, 两者加起来得到goal的位置

    • N ( ⋅ ∣ v ( ⋅ ) ) N(\cdot|v(\cdot)) N(v())表示广义正态分布, 均值记为 v ( ⋅ ) v(\cdot) v()

    • f ( ⋅ ) f(\cdot) f() v ( ⋅ ) v(\cdot) v()都使用具有目标坐标 ( x k , y k ) (x^{k}, y^{k}) (xk,yk)和场景上下文特征 χ \chi χ为输入的2层MLP实现

    • f f f用于给所有target打分, v v v用于拟合回归出offset

    • f f f使用交叉熵, v v v使用Huber loss

  • 此阶段损失函数如下 L S 1 = L c l s ( π , u ) + L o f f s e t ( v x , v y , △ x u , △ y u ) L_{S1}=L_{cls}(\pi, u)+L_{offset}(v_x,v_y,\bigtriangleup x^u, \bigtriangleup y^u) LS1=Lcls(π,u)+Loffset(vx,vy,xu,yu)

    • 其中 u u u为最接近GT真值位置的目标, L c l s L_{cls} Lcls交叉熵, L o f f s e t L_{offset} LoffsetHuber Loss, v x , v y v_x, v_y vx,vy均值位置, △ x , △ y \bigtriangleup x, \bigtriangleup y x,y u u u与GT真值位置的空间偏移量
  • 撒点过程

    • 对于车辆: 车道中心线上的点进行均匀采样, 作为候选目标

      • 该方法基于车辆通常不会偏离车道太远的假设
      • 文章中每1m至少采样一个点作为候选目标
    • 对于行人: 在agent周围生成一个虚拟网络grid, 并将网格点作为候选目标

      • 文章中网络比如10x10, 每1m一个网格点作为候选目标
    • 对于每个候选目标, TNT目标预测器会生成一个 ( π , △ x , △ y ) (\pi, \bigtriangleup x, \bigtriangleup y) (π,x,y)组成的元组

      • π \pi π表示到达该目标的概率, 如前面的 π \pi π表达式;另两个是相对目标中心偏移量
      • 过程中可能设置N = 1000, 以增加潜在未来点的覆盖范围
      • 然后保留较小数目,比如top M = 50,好的M有助于平衡召回率模型效率
      • 采用有限离散目标空间回归相比直接回归,可以避免模式平均问题;模式平均是阻碍多模态预测的主要因素
3. 目标条件运动估计
  • 第二阶段隐藏了两个假设:

    • [1] 条件独立性: 未来时间步之间相互独立, 而不是未来时间步t影响t+1
    • [2] 给定目标的轨迹分布是正态分布的: 对于短时预测假设成立, 长时预测需要多次迭代目标预测和运动估计两个过程以保持该假设成立
  • 这个阶段也是用2层MLP实现, 输入是上下文特征 χ \chi χ和目标位置 τ \tau τ, 输出可能的 M M M条轨迹

  • 损失函数如下 L S 2 = ∑ t = 1 T L r e g ( s ^ t , s t ) L_{S2}=\sum_{t=1}^{T}L_{reg}(\hat{s}_t, s_t ) LS2=t=1TLreg(s^t,st)

    • L r e g L_{reg} Lreg为每步坐标偏移的Huber Loss
4. 轨迹评分与选择
  • 评估未来完整轨迹s_f的可能性

  • 使用最大熵模型对第二阶段的M个轨迹进行评分得到预测分数 ϕ ( s F ∣ χ ) = e x p ( g ( s F , χ ) ) ∑ m = 1 M e x p ( g ( s F m , χ ) ) \phi (s_F|\chi)=\frac{exp(g(s_F, \chi))}{\sum_{m=1}^{M}exp(g(s^m_F, \chi)) } ϕ(sFχ)=m=1Mexp(g(sFm,χ))exp(g(sF,χ))

    • g ( ⋅ ) g(\cdot) g()2层MLP
  • 这个阶段训练损失函数如下 L S 3 = L C E ( ϕ ( s F ∣ χ ) , ψ ( s F ) ) L_{S3}=L_{CE}(\phi (s_F|\chi), \psi (s_F)) LS3=LCE(ϕ(sFχ),ψ(sF))

    • 预测分数和GT真值分数的交叉熵
    • 真值分数计算 ψ ( s F ) = e x p ( − D ( s , s G T ) / α ) ∑ s ′ e x p ( − D ( s ′ , s G T ) / α ) \psi (s_F)=\frac{exp(-D(s, s_{GT})/\alpha)}{\sum_{s'}^{}exp(-D(s',s_{GT})/\alpha) } ψ(sF)=sexp(D(s,sGT)/α)exp(D(s,sGT)/α)
    • D的单位是m, alpha是温度,D的计算公式 D ( s i , s j ) = m a x ( ∥ s 1 i − s 1 j ∥ 2 2 , . . . , ∥ s t i − s t j ∥ 2 2 ) D(s^{i},s^{j})=max(\left \| s_{1}^{i}-s_{1}^{j} \right \| _{2}^{2} , ...,\left \| s_{t}^{i}-s_{t}^{j} \right \| _{2}^{2}) D(si,sj)=max( s1is1j 22,..., stistj 22)
  • 这一阶段, 从M条中选择K条, 这个过程先对评分轨迹由高到低排序, 然后贪婪选择, 过程中剔除近乎重复的轨迹, 剔除过程使用类似非最大抑制算法NMS

  • 轨迹评分的时候有个似然得分和多样性得分:

    • 似然得分: 衡量每个轨迹与真实轨迹的匹配程度, 使用广义正态分布计算
    • 多样性得分: 衡量每个轨迹与其他轨迹的差异程度, 使用轨迹间平均距离计算
  • 排序过程: 先根据似然得分进行排序, 再根据多样性得分进行排序

(模型推理)

  • 端到端训练, 总的损失函数:
    L = λ 1 L S 1 + λ 2 L S 2 + λ 3 L S 3 L=\lambda _{1}L_{S1}+\lambda _{2} L_{S2}+\lambda _{3} L_{S3} L=λ1LS1+λ2LS2+λ3LS3

    • λ 1 / λ 2 / λ 3 \lambda _{1}/\lambda _{2}/\lambda _{3} λ1/λ2/λ3用来平衡训练过程
  • 推理过程如下:

    • (1) 对上下文进行编码
    • (2) 取样 N N N个候选目标作为目标预测器的输入,根据 π ( τ ∣ χ ) \pi(\tau|\chi) π(τχ)的估计取前 M M M个目标
    • (3) 从运动估计模型 p ( s F ∣ τ , χ ) p(s_F|\tau, \chi) p(sFτ,χ)中为 M M M个目标中的每个目标提取 M A P MAP MAP轨迹
    • (4) 通过 ϕ ( s F ∣ τ , χ ) \phi (s_F|\tau, \chi) ϕ(sFτ,χ) M M M个轨迹进行评分,并选出最终的 K K K个轨迹集

(总结)

  • 参数选择:

    • TNT三个阶段都采用的是2层MLP
    • hidden_size设置为64
    • 阶段3中温度 α \alpha α设置为0.01
    • 总的损失权值设置为 λ 1 \lambda_{1} λ1 = 0.1, \lambda_{2} = 1.0, \lambda_{3} = 0.1
    • 优化器选用Adam
    • epochs = 50
    • 学习率设置为0.001
    • batch_size = 128
  • 三阶段总结

    阶段输入输入描述输出输出描述LossLoss描述
    S 1 S1 S1 χ = ( s P , c P ) \chi=(s_P,c_P) χ=(sP,cP)agent的全局上下文特征编码 p ( τ n ∣ χ ) p(\tau^{n} | \chi) p(τnχ)N个目标位置及其偏移量的分布;再根据位置离散分布结果 π ( τ ∣ χ ) \pi(\tau|\chi) π(τχ)选择前M个 L S 1 = L c l s ( π , u ) + L o f f s e t ( v x , v y , △ x u , △ y u ) L_{S1}=L_{cls}(\pi, u)+L_{offset}(v_x,v_y,\bigtriangleup x^u, \bigtriangleup y^u) LS1=Lcls(π,u)+Loffset(vx,vy,xu,yu) L c l s L_{cls} Lcls=交叉熵; L o f f s e t L_{offset} Loffset=Huber Loss
    S 2 S2 S2 ( χ , τ ) (\chi, \tau) (χ,τ)场景上下文特征和目标位置 p ( τ n ∣ χ ) p(\tau^{n} | \chi) p(τnχ)M条轨迹 L S 2 = ∑ t = 1 T L r e g ( s ^ t , s t ) L_{S2}=\sum_{t=1}^{T}L_{reg}(\hat{s}_t, s_t ) LS2=t=1TLreg(s^t,st) L r e g L_{reg} Lreg为每一时间步坐标偏移的Huber Loss
    S 3 S3 S3 ( χ , s F , s G T ) (\chi, s_F, s_{GT}) (χ,sF,sGT) s F s_F sF=M条轨迹; s G T s_{GT} sGT=真值轨迹K条轨迹及其概率从M条轨迹中选择K条轨迹,NMS方法 L S 3 = L C E ( ϕ ( s F ∣ χ ) , ψ ( s F ) ) L_{S3}=L_{CE}(\phi (s_F|\chi), \psi (s_F)) LS3=LCE(ϕ(sFχ),ψ(sF))预测分数 ϕ \phi ϕ与真值分数 ψ \psi ψ的交叉熵
  • TNT对1阶段目标撒点(对 ( x k , y k ) (x^{k}, y^{k}) (xk,yk)的分布),以及2阶段运动估计对未来轨迹建模,都采用了广义正态分布

  • 评估指标采用 A D E ADE ADE F D E FDE FDE以及 M R MR MR, 对于 K K K个轨迹采用 m i n A D E K minADE_K minADEK m i n F D E K minFDE_K minFDEK

(消融研究结论)

  • (1) 条件运动估计能生成以条件目标为终点的轨迹
  • (2) 对于行人,采用网格法比地图采样方式获取目标表现更好
  • (3) 在达到饱和点之前,越密集的目标能够获得更好的性能,如下
  • (4) 通过1阶段的偏移回归(目标增加偏移量),1阶段性能提高了0.16m
  • (5) 2阶段的假设成立, 即机器人的运动状态是单模态的, 也就是2阶段用单模态分布对从初始状态到目标的未来可能运动进行建模是合理的

(网络)

  • Encoding
    • 采用vectornet编码子图和全局图信息
  • Decoding
    • 即上面所述的3个预测阶段
    • 输出topK个带概率的轨迹

(问题厘清)

  • 问题1: TNT输出是多模态的吗

    • 多模态。文章在目标预测的时候也是对未来有限个目标位置进行建模
    • TNT的多模主要放在第一阶段,第二阶段目标条件运动估计就是给定target出轨迹了
  • 问题2: TNT支持多目标同时预测吗

    • TNT方法是围绕单目标设计的,通过三个阶段生成单目标智能体的多条预测轨迹(单目标多模态)
    • 也支持拓展到多目标预测, 但是会存在未来轨迹依赖和计算效率方面的问题
  • 问题3: 目标预测阶段, 会因为撒点漏掉真实意图吗

    • 理论上撒点会对全局区域都有覆盖, 但是因为行人是网格撒点, 应该是不会遗漏意图的, 最多不准确; 但是车辆是结合道路结构特征的撒点, 如果地图元素缺失可能会导致没有撒点到真实意图
    • 由于撒点太稀疏或者撒点分布不合理或者传感器噪声地图误差等, 会造成撒点漏掉真实意图的可能性; 文章中出于平衡召回(意图找查全率)和模型效率考虑, 选定N=1000, 选择top M=50
  • 问题3: TNT中的NMS非最大抑制方法是什么, 如何选择局部高分目标, 启发式搜索? 贪心算法?

    • NMS是非最大值抑制, Non-Maximum Suppression. 抑制非最大值的元素, 保留极大值的元素; 多用于目标检测,目标跟踪等, 是一种去重策略; 步骤:选高置信度结果->计算IoU->阈值过滤->遍历
    • NMS本身是一种贪心算法, 只考虑当前选择的区域, 而忽略了全局最优解的可能性
    • 可以考虑其他全局优化算法如DP等, 或者使用改进的NMS算法如soft NMS等
  • 问题5:TNT编码的车道元素时lane centerline还是lane boundary

    • 如果两者都提供, 那可以同时编码两种地图元素;
    • 如果只关注在车道上正常行驶车辆, 且LC已经足够表达这种趋势, 那TNT倾向于只编码LC
    • 如果是需要预测变道行为, 则可能同时编码车道边界LB
    • 根据具体情况而定
  • 问题6:TNT第一阶段如何从N个撒点里保留M个

    • 一阶段使用交叉熵监督打分网络 f f f的输出,使用Huber loss监督偏移量预测网络 v v v的输出;
    • 通过 π \pi π得到候选目标点的概率值,然后按照概率选择最高的M个候选目标点

 


 
创作不易,如有帮助,请 点赞 收藏 支持
 


[参考文章]
[1]. TNT论文翻译和笔记
[2]. TNT学习笔记
[3]. TNT论文翻译
[4]. NMS算法

created by shuaixio, 2024.07.05

### 回答1: 数据驱动的电池循环寿命预测在电池容量退化之前起到了重要作用。电池的循环寿命是指电池在充放电过程中可以循环使用的次数。然而,电池容量会随着循环次数的增加而逐渐下降,最终导致电池无法继续使用。 实时监测和分析电池运行数据可以帮助我们预测电池的循环寿命。通过收集电池内部的各种参数数据,如电压、电流、温度等,可以建立一个数据模型来预测电池容量的退化趋势。这个模型可以根据历史数据和算法进行训练和优化,从而提高预测的准确性。 在预测电池的循环寿命之前,我们首先需要对电池进行较长时间的循环测试,以获取足够的数据量。然后,通过将这些实际测试数据与模型进行比对,我们可以了解电池在不同循环次数下的容量退化情况。根据这些数据,我们可以建立一个预测模型,通过监测电池的循环次数和实时数据来预测电池的剩余循环寿命。 数据驱动的电池循环寿命预测可以帮助我们及时了解电池的健康状态,并在容量退化之前采取相应的措施,如调整充电和放电策略,延长电池的使用寿命和性能。这对于一些依赖电池供电的设备和系统尤为重要,如电动汽车、无人机和可穿戴设备等。通过预测电池的循环寿命,我们可以减少电池的更换频率和维修成本,提高电池的可持续使用性。 ### 回答2: “数据驱动的电池循环寿命预测在容量降解之前”是一种利用数据分析和模型预测电池在经历一定循环充放电后容量降解之前的寿命。这种方法通过分析电池的充放电循环数据,结合模型和算法,能够预测电池在未来的循环中容量下降的时间和程度。 在这种方法中,首先收集电池的充放电循环数据,并通过数据处理和分析,提取有关电池性能和容量变化的特征。特征可以包括电池循环次数、充放电电流大小、温度变化等。然后,建立一个预测模型,利用这些特征来预测电池的寿命。 预测模型可以使用机器学习算法,如回归模型、支持向量机、深度学习网络等。这些模型可以根据已有的大量数据进行训练,并根据特征来预测电池的寿命。模型可以考虑多个因素,例如电池的类型、制造商、使用条件等。 通过数据驱动的电池循环寿命预测,在容量降解发生之前,可以提前预测电池的寿命,为电池的管理和维护提供依据。这样可以减少电池的寿命损失,并确保电池在关键应用中的长时间可靠运行。 总之,数据驱动的电池循环寿命预测是一种利用数据分析和模型预测电池寿命的方法。通过收集和分析电池的充放电循环数据,并建立适当的预测模型,能够提前预测电池容量降解的时间和程度,为电池管理和维护提供依据。 ### 回答3: 数据驱动预测电池循环寿命在容量降解之前的情况成为了一种越来越重要的方法。随着电动汽车和可再生能源的快速发展,电池的寿命成为了一个关键的问题。传统上,电池寿命的预测主要依赖于试验数据和经验法则。然而,这种方法往往需要耗费大量的时间和资源,而且无法明确地确定电池的寿命。 数据驱动的预测方法通过分析电池的运行数据和性能参数,利用机器学习和数据挖掘的技术来建立模型,并预测电池循环寿命。这种方法基于大规模的数据集和复杂的算法,可以快速准确地预测电池的寿命。同时,该方法还能够捕捉到电池性能的微小变化,提前发现电池的降解趋势,从而采取相应的维护措施。 数据驱动的预测方法具有以下优点。首先,它不需要对电池进行试验和评估,节省了时间和成本。其次,它可以根据电池实际运行的情况进行预测,更加符合实际应用环境。此外,数据驱动的预测方法还具有较高的准确性和可靠性,能够预测电池的寿命和性能。 当然,数据驱动的预测方法也面临一些挑战。首先,它需要大量的电池运行数据和性能参数,才能建立准确的预测模型。其次,预测模型的复杂性可能导致计算成本的增加。此外,预测结果的可解释性也是一个问题,因为数据驱动的模型通常很难解释其预测的原因。 总的来说,数据驱动的预测方法在预测电池循环寿命上具有重要的意义。尽管面临一些挑战,但它仍然是未来电池寿命预测的一个重要方向,可以为电动汽车、可再生能源等领域的发展提供技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值