【论文导读】A Transformer Encoder Approach for Localization Reconstruction During GPS

426 阅读10分钟

论文名称:A Transformer Encoder Approach for Localization Reconstruction During GPS Outages from an IMU and GPS-Based Sensor

开源项目地址:

期刊:Sensors

时间:2025

论文提出了一种基于 Transformer 编码器(Transformer Encoder)的“后处理”方法,用于在 GPS 信号弱或丢失的情况下,通过 IMUGPS 数据进行定位重建

数据集

Alogo Move Pro 马匹运动数据集(作者自建),未开源,作者表示“原始数据将在请求后提供”,未提供公开链接或 GitHub/Gitee 地址

多传感器融合:IMU + GPSGNSS),作者团队自行采集,使用 Alogo Move Pro 设备

采集场景为室外马术训练、比赛、越野等,共 53 个会话,约 29 小时

IMU:100HzGPS:5Hz,融合输出:100Hz

数据包含加速度、角速度、磁场、GPS 位置/速度、融合位置/速度/姿态等

主要工作

GPS 信号丢失(outage)的情况下,如何利用 IMU 数据进行事后(post-processing)定位补全,任务类型为轨迹重建 / 路径补全

使用 Transformer 模型预测 GPS 丢失期间的 速度velocity),而非直接预测位置(position

通过 双向积分(bidirectional integration)将速度转换为位置

使用 插值(interpolation)确保轨迹在 GPS 恢复处的平滑过渡

时间跨度:

  • 短期预测:GPS 中断 10-20 秒(small outage)
  • 中期预测:GPS 中断 30 秒-2 分钟(medium outage)

非实时预测,而是 后处理(post-processing),允许使用未来数据

深度学习模型

输入为 IMU+GPS+融合数据的序列窗口(100Hz),输出为三轴速度(v_{x}, v_{y}, v_{z})

  • Transformer Encoder-only(BERT 风格),只用左侧 Encoder 堆栈
  • 使用双向 Transformer 编码器,允许利用未来信息(非因果),非自回归
  • 任务是重建被 mask 片段(类似 BERT、MLM),输出与输入 等长 的三维速度序列

提供 10Hz 版本,输入序列长度缩短 10 倍,性能接近

原始传感器窗口 → 线性投影 → +PosEncN×EncoderLayer → 前馈头 → 3D 速度

输入张量 X

”session“为一次骑手-马匹从进入训练场到结束训练或比赛的完整连续记录,对应一个 .csv 文件,长度从 27 s 到 50 min 不等。这篇论文共有 53 个 session,总共 29h4min

  • 每个 session 内部 100Hz 连续采样,因此一条 session 就是一条 超长时间序列
  • 输入张量来自于 1 次 session 中截出的窗口

长度 Lseq(短时 2400 步 = 24 s;中时 12400 步 = 124 s),每步 26 维特征

Shape:(Lesq, 26​)

  • 其中 26 = 9(IMU) + 7(GPS) + 10(Fusion)

缺失 GPS/Fusion 时,人为把一段 GPS 信号设为”丢失“,位置用 -1 mask

线性投影 F_{proj}

为把 26 维升到模型维度 d_{model},d_{model}=32

W_{emb}: (26, d_{model}) ;b_{emb}: (d_{model}, )​

  • 随机初始化(赋一个随机的初始值)+端到端反向传播学习(训练时把”预测误差“通过链式法则一路回传,自动计算处每个参数该怎么改,让网络自己学会“如何把 26 维特征映射到 d_{model})
  • 没有任何预训练权重,完全是训练时一起学出来的参数
  • 使用标准 Xavier/Glorot 初始化(Transformer 默认如此)
  • 训练时与所有注意力权重、FFN 权重一起,由 Adam 优化器更新

Z_{0} = X · W_{emb} + b_{emb}

线性投影后,得到每个时间步的初始“词向量”Z_{0}: (Lseq, d_{model}),其携带传感器各通道的“强度/模式” ,但没有时间顺序

可学习位置编码 PE

Transformer的自注意力本身是排列等变permutation-equivariant)的: 把输入序列打乱顺序,输出也会跟着同样顺序打乱,因此不会自动知道“第 1 个时间步”和“第 10 个时间步”谁在前谁在后

为了让模型能够区分“这是 0.5 秒前的 IMU 值”还是“这是 5 秒前的 IMU 值”,必须把位置信息显式地注入进去

用于给 Transformer 提供顺序信息,所以加入 b_{pe},让注意力知道“我当前在和哪个时刻的数据做关联”

Z_{1} = Z_{0} + b_{pe}​

  • b_{pe}: (Lseq, d_{model}) 可学习

如果直接拿 Z_{0} 用,可以跑,但实验中通常会看到:

  • 轨迹漂移变大(因为模型无法区分时间顺序,积分时误差累计更快)
  • 训练收敛变慢
  • 最终 ATE/RTE 指标变差

因此位置编码是时间序列任务里的“刚需” ,除非用别的方案(相对位置 RPE、卷积前置、Sinusoidal PE 等),否则不能省

输出 Z_{1}: (Lseq, d_{model})

  • Lseq为时间步数(经典值为2400/12000)
  • d_{model}为模型隐藏维度,32为论文中最优值

堆叠 N_encoder 个 Encoder Layer

N_{encoder}为层数,每个Layer顺序做:

多头自注意力(MHA

  • 输入Z_in(Lseq, d_model)
  • 输出Z_attn(Lseq, d_model)
 Q = Z_in · W_Q          # (Lseq, d_model//h)
 K = Z_in · W_K
 V = Z_in · W_V
 head_i = softmax(Q·K^T / √d_k) · V
 Z_attn = Concat(head_1…head_h) · W_O  # (Lseq, d_model)

其中,W_Q、W_K、W_V 和 W_O​ 一样,都是 随机 Xavier 初始化 + 端到端反向传播学出来的可训练参数,没有任何预训练或人工设定

这里得到的 Z_{attn} 让当前时间步能“看到”整条序列里 哪些其他时刻对它最有用 的信息

  • 加残差 & LayerNorm

得到真正传给下一层的特征Z_attn = LayerNorm(Z_in + Z_attn)

这里把原始信息 Z_{in} 直接加回来,防止梯度消失

由多头注意力刚算出的加权特征 Z_ff, 得到残差归一化后的稳定特征 Z_attn

前馈网络(FFN

  • 输入 Z_attn(Lseq, d_model)
  • 输出 Z_ff(Lseq, d_model)

Z_ff = ReLU(Z_attn · W1 + b1) · W2 + b2

这是在每个时间步独立做两次线性变换 + 非线性

  • W1(d_model, d_hidden),d_{model}为FFN中间维度
  • W2(d_hidden, d_model)

(1)先进行线性升维,ReLU(Z_{attn} · W1 + b1),维度(Lseq, d_{model}) → (Lseq, d_{hidden}),扩展特征空间,增加非线性表达能力

(2)再进行线性降维,· W2 + b2,维度 (Lseq, d_{hidden}) → (Lseq, d_{model}),把维度压回原大小,保持残差可加

加残差 & LayerNorm

  • Z_out = LayerNorm(Z_attn + Z_ff)

Z_out一个Encoder层的输入,再把它送进下一层、再下一层……共重复 N_encoder,最后那一层的输出才改名叫 Z_enc

  • Z_{out}(layer=0) → Z_{out}(layer=1) → … → Z_{out}(layer=N_{encoder-1})

最后一层 的 Z_{out} 重新标记为 Z_{enc},维度仍是 (Lseq, d_{model})

经过 N_{encoder} 层后得到 Z_{enc}:(Lseq, d_{model})

最终前馈头(Velocity Head)

为把 d_{model} 映射到3维速度 (v_{x}, v_{y}, v_{z})

v_{pred} = ReLU(Z_{enc} · W'_1 + b'_1) · W'_2 + b'_2

  • W'1:(d{model}, d_{hidden})
  • W'2:(d{hidden}, 3)

线性 → 非线性 → 线性,但目的与 Transformer 内部的 FFN 完全不同

  • 非线性的目的是让网络能学习复杂的、非线性的“上下文到速度”的映射关系
  • 这只是一个任务特定的输出头(类似分类器),用两层 MLP 把 32 维特征“解码”成 3 维速度;ReLU 提供非线性能力,使模型可以近似任意连续函数

输出 v_{pred}: (Lseq, 3),即窗口内每10ms 的三轴速度预测值(单位 m/s,已反归一)

补充:Xavier/Glorot 初始化

使用于任何线性层/全连接层/卷积层的 权重矩阵 W

论文中的 W_{emb} 就是 (26, d_{model}) 的权重矩阵

计算公式

设权重矩阵 W ∈ R^{(fan_{in}, fan_{out})}

Xavier 均匀分布版本:

  • limit = sqrt(6 / (fan_{in} + fan_{out}))
  • W ~ Uniform(-limit, limit)

Xavier 正态分布版本

  • std = sqrt(2 / (fan_{in} + fan_{out}))
  • W ~ Normal(0, std)

本文实际数字

  • fan_{in} = 26 输入维度特征
  • fan_{out} = d_{model} 论文中提到的最优值

代入均匀版:

  • limit = sqrt(6 / (26 + 32)) ≈ 0.321
  • W_{emb[i,j]} 初始化为 -0.321 到 0.321 之间的均匀随机数

代码

 import torch.nn as nn
 linear = nn.Linear(26, 32)
 # 内部已默认用 Xavier uniform
 nn.init.xavier_uniform_(linear.weight)

偏置 b_{emb}

通常直接初始化为 0(Transformer 也是如此)

代码:nn.init.zeros_(linear.bias)

“随机初始化”指先用 Xavier 规则给 W_emb 填 -0.321~0.321 的随机数、b_emb 填 0;随后在整个训练过程中,通过反向传播自动微调这些值,让网络自己学会最佳映射。

补充:位置编码别的方案

Transformer的自注意力是排列等变的,把输入序列任意打乱,输出也跟着同样顺序打乱

  • 如果不注入位置信息,模型完全不知道“第1步”和”第100步“谁在前谁在后,积分后误差会迅速累积

因此必须给模型某种“时间身份证” ,下面给出 4 种常见方案及其原理

方案是否需参数原理一句话优点缺点
不做位置编码✅ 无全靠注意力自己猜顺序0 参数量轨迹漂移爆炸,不可接受
Sinusoidal PE❌ 固定用不同频率正弦/余弦函数给每个位置一个唯一、可外推的向量无需训练,可推广到更长序列与内容无关,表达能力有限
可学习绝对 PE (本文用的 b_{pe})✅ 训练把位置当“词向量”直接学与任务耦合,通常更准只能处理训练见过的最大长度
相对位置编码 (RPE)✅ 训练注意力计算时把“相对距离”直接加到注意力权重上,而非加到输入向量对平移/裁剪更鲁棒,天然支持变长实现稍复杂,参数稍多
卷积前置✅ 训练先用 1-D 卷积/因果卷积把局部时序模式编码进特征,再交给 Transformer卷积本身带局部顺序,可减弱或取代显式 PE卷积核大小决定感受野,长程依赖仍需 Transformer 补

补充:ATE/RTE/RDE评估指标

ATE(Absolute Trajectory Error)

把预测轨迹与真值轨迹逐点对齐后,计算所有时刻 欧氏距离的平均值

  • 公式: ATE = (1/N) Σ_{n} ‖P(n) – P̂(n)‖_{2},单位:米(m)

特点:对漂移、累积误差非常敏感

RTE(Relative Trajectory Error)

只看起点-终点的相对位移误差不关心中间路径

  • 公式:RTE = | ‖P(N) – P(0)‖ – ‖P̂(N) – P̂(0)‖ | / ‖P(N) – P(0)‖

结果是无量纲比例(0=完美,>1 表示终点飘得很远)

特点:对长距离漂移最敏感

RDE(Relative Distance Error)

比较整条轨迹的总路程差异

  • 公式:RDE = 1 – ( Σ_{n} ‖P̂(n) – P̂(n-1)‖ ) / ( Σ_{n} ‖P(n) – P(n-1)‖ )

无量纲,0 表示总路程预测完全正确

特点:对“绕远路”或“抄近路”最敏感

模型性能对比

对比维度本文方法同领域方法(如LSTMCNNTCN等)
是否使用未来信息✅ 是(双向)❌ 否(多数为实时、因果)
是否直接预测位置❌ 否(预测速度后积分)✅ 多数直接预测位置
数据类型马匹(高速、高加速度)行人(低速、低加速度)
ATE误差3m(短期),12m(中期)4–9m(行人短期)
RTE误差0.2–0.70.9–6(行人)
RDE误差0.3(稳定)无统一报告

提出了一种基于Transformer Encoder的非实时轨迹重建方法,使用自建的马术IMU+GPS数据集,在GPS中断10–120秒的场景下,通过预测速度积分实现高精度轨迹补全,优于现有基于LSTM/CNN的实时因果方法