论文名称:iMoT: Inertial Motion Transformer for Inertial Navigation
开源项目地址:https://github.com/Minh-Son-Nguyen/iMoT
会议:AAAI
时间:2025
提出了一种全新的基于Transformer架构的惯性导航系统(iMoT),其核心目标是通过对IMU(惯性测量单元)信号进行建模,来实现对运动轨迹的高精度估计
数据集
使用了四个开源的惯性导航数据集,所有数据集均仅使用IMU信号(加速度计+陀螺仪),未与GNSS或其他传感器融合
| 数据集名称 | 简介 | 官方链接 |
|---|---|---|
RIDI | 2018年发布,包含行人手持设备在不同场景下的IMU数据(如口袋、手持、背包等) | RIDI Dataset |
RoNIN | 2020年发布,目前最大的IMU轨迹数据集,包含100人、40小时的自然运动数据 | RoNIN Dataset |
OxIOD | 2018年发布,牛津大学发布的多场景IMU数据集(如手持、口袋、推车等) | OxIOD Dataset |
IDOL | 2021年发布,专注于自然运动场景下的IMU轨迹估计 | IDOL Dataset |
主要工作
惯性导航系统(Inertial Navigation System, INS)通过分析IMU信号(包括加速度和角速度)来估计物体的三维轨迹。传统方法(如PDR、SINS)在噪声和漂移问题上存在严重缺陷,而现有的深度学习方法又未能充分利用IMU信号中不同模态(加速度 vs 角速度)之间的互补性,也未能很好地建模运动的不确定性。
论文提出了一种名为 iMoT(Inertial Motion Transformer)的多模态Transformer架构
- Progressive Series Decoupler (
PSD):在编码阶段将IMU信号分解为季节性信号(如走路、跑步等周期性动作)和趋势信号(如突然停止、转弯等),以突出关键运动事件 - Adaptive Positional Encoding (APE):动态调整位置编码,以处理加速度与角速度模态之间的时间差异
- Query Motion Particles:在解码阶段引入一组可学习的“查询运动粒子” ,每个粒子代表一种可能的运动模式(如快走、慢跑、转弯等),用于建模运动不确定性
- Dynamic Scoring Mechanism (
DSM):在最终解码阶段动态调整粒子权重,以优化轨迹估计
论文做的是短期轨迹估计,不是整条轨迹,也不是单步 3D 位置,即从IMU序列中估计每一小段时间内的瞬时二维速度(velocity segment)向量 v_{t}=(v_{x},v_{y})∈R^{2}
每1s的IMU窗口 → 输出1个速度向量。后续处理中,把连续窗口估计的速度做积分,模型本身不做长期递归
深度学习模型:iMoT(Inertial Motion Transformer)
Encoder
把原始IMU序列编码成“运动-旋转混合上下文特征”,供后续粒子查询
原始输入
A_{raw} = [Aa, Ag]
Aa: 加速度 (ℝ^{3×T}) Ag: 角速度 (ℝ^{3×T})
合并后:A ∈ ℝ^{6×T} (3+3 轴 IMU)
Progressive Series Decoupler (PSD)
输入: A_{raw} (6 × T) 逐通道做季节-趋势分解 → 输出两部分
输出: A_{trend} (6 × T) 趋势项 A_{season} (6 × T) 季节项
在PSD内部把二者沿特征维concat: A_{psd} = [A_{trend} ; A_{season}]
输出: A_{psd} (12 × T)
Adaptive Positional Encoding (APE)
输入: A_{psd} (12 × T)
先按通道拆回两条原始模态,即加速度部分 (前 6 行) 与角速度部分 (后 6 行),分别用两个 MLP 生成权重 αa, αg ∈ ℝ^{3×T}
再乘到共享正余弦 PE 上,得 Ea ∈ ℝ^{3×T}; Eg ∈ ℝ^{3×T}
- PE = sinusoidal_position_table(T) ∈ ℝ^{T×d_pos} 论文把 d_pos 设为 3(和通道数相同),因此 PE 重排后维度为 (3×T)。 记作 E_base ∈ ℝ^{3×T}。
- PE(pos, 2i) = sin(pos / 10000^{2i/d_pos}) PE(pos, 2i+1) = cos(pos / 10000^{2i/d_pos}) 其中 pos∈[0,T-1],i∈[0,d_pos/2-1]。
最终把 A_{psd} 与位置编码相加后切成 Aa ∈ ℝ^{3×T}; Ag ∈ ℝ^{3×T}
输出: Aa ∈ ℝ^{3×T}; Ag ∈ ℝ^{3×T}; Ea ∈ ℝ^{3×T}(位置编码,供 Decoder 交叉注意用 Key); Eg ∈ ℝ^{3×T}
Transformer Encoder Layer ×2
每层内部子模块顺序与维度变化
-
Multi-Head Self-Attention
输入: X_{in} = [Aa ; Ag] (6 × T)
QKV均来自 X_{in}本身
输出: X_{attn} (6 × T) (残差+LayerNorm)
-
Adaptive Spatial Sync (ASC)
输入: X_{attn} (6 × T)
1×3 卷积+ GAP + Sigmoid 生成通道权重
输出: X_{asc} (6 × T) (残差加回)
-
Feed-Forward Network (FFN)
输入: X_asc (6 × T)
两层 MLP + GELU
输出: X_ffn (6 × T) (残差+LayerNorm)
经过第 1 层后:X^1 (6 × T) 经过第 2 层后:X^2 (6 × T)
拆分回模态专用特征
- 先把 PSD 的输出再拆一次(与步骤 1 的拆法一致): Ãa = A_psd[0:3, :] (3×T) Ãg = A_psd[3:6, :] (3×T) (这里 3-5 是 PSD 为加速度通道生成的趋势/季节附加维)
- 逐元素相加: ̃Aa = Ãa + ̃Ea (3×T) ̃Ag = Ãg + ̃Eg (3×T)
这样就得到 Encoder 真正送进自注意力的两条 token 序列 ̃Aa ̃Ag,各 3×T。
A_psd(12×T) → 拆回原始 3 轴与附加 3 轴 → 两个 MLP 得到 αa/αg(1×T) → α 与固定 PE(3×T) 逐通道相乘 → 生成可适应位置编码 ̃Ea/̃Eg(3×T) → 与对应 3×T 特征相加 → 最终得到 ̃Aa(3×T) ̃Ag(3×T)。
Decoder
输入张量
加速度上下文特征 ̃Aa: 来自于Encoder输出,形状(3 × T)
角速度上下文特征 ̃Ag: 来自于Encoder输出,形状(3 × T)
对应的位置编码 ̃Ea, ̃Eg: APE产生,形状(3 × T)
128 个粒子的初始速度先验v̂⁰: 随机初始化,形状(P × 2)
128个粒子的内容特征C⁰: 零初始化,形状(P × T)
单层Decoder内部子模块(共M=2层)
-
Particle Positional Embedding
输入:v̂^{j-1} (P×2) 先对 v̂^{j-1} 做 sinusoidal PE → PE(v̂^{j-1}) ∈ ℝ^{P×d} (d=32) 过一个 MLP → Ê_v^{j} ∈ ℝ^{P×T} (把 32 维映射到 T 维,与 C 对齐)
-
Self-Attention on Queries
输入:C^{j-1} (P×T) 加位置:Q = K = V = C^{j-1} + Êv^{j} Multi-Head Self-Attention → C^{j} sa (P×T)
-
Cross-Attention ×2(分别对加速度 & 角速度)
-
加速度分支
Q = C^{j}sa + Êv^{j} K = ̃Aa + ̃Ea V = ̃Aa → C^{j}_a (P×T)
-
角速度分支
同上,把 Aa→Ag、Ea→Eg → C^{j}_g (P×T)
-
-
融合 & FFN
沿特征维 concat:[C^{j}a ; C^{j} g] → 过 MLP → C^{j} (P×T) LayerNorm + 残差 → 得到该层最终内容特征 C^{j}
-
Particle Refinement
共享参数的 MLP 以 C^{j} 为输入,输出 Δv^{j} ∈ ℝ^{P×2} 更新粒子:v̂^{j} = v̂^{j-1} + Δv^{j}
两层递归示意
v̂⁰, C⁰ ↓ 第 1 层 Decoder v̂¹, C¹ ↓ 第 2 层 Decoder v̂², C²
最终输出层(Dynamic Scoring Mechanism)
-
MLP-Score 输入:v̂² (P×2) 输出:S ∈ ℝ^{P} (softmax 前 logits) Softmax → w = Softmax(S) ∈ ℝ^{P}
-
加权平均
v̂ = Σ {p=1}^{P} w_p · v̂²p → (1×2)
这个 v̂ 就是模型对当前 1 s IMU 窗口估计的瞬时二维速度。
Decoder 通过 128 个可学习的速度粒子 + 两层 Cross-Attention Transformer,把 Encoder 提供的加速度/角速度上下文压缩成 单个二维瞬时速度向量,完成短期/瞬时速度估计任务。
网络概述
Encoder输入为IMU序列(加速度+角速度),其中关键模板有:
- PSD:将IMU信号分解为季节性和趋势性成分
- APE:动态调整位置编码,处理模态差异
- ASC:在残差连接中保留跨通道细节
Decoder引入Query Motion Particles(可学习的运动模式),通过交叉注意力机制从编码器提取跨模态特征,使用Dynamic Scoring Mechanism (DSM) 动态调整粒子权重,优化速度估计
模型对比
| 对比模型 | 简介 |
|---|---|
| RIDI | 2018年提出的基于CNN+LSTM的惯性导航系统 |
| RoNIN | 2020年提出的基于CNN/LSTM/ResNet的惯性导航系统 |
| TLIO | 2020年提出的基于LSTM+EKF的惯性导航系统 |
| CTIN | 2022年提出的基于Transformer的惯性导航系统(只有这个是基于Transformer的) |
| IoNet | 2018年提出的基于LSTM的直接速度回归方法 |
| PDR | 传统基于步态检测的行人航位推算法 |
| SINS | 传统基于积分的惯性导航系统 |
实验结果
| 模型 | ATE(平均轨迹误差) | 相对提升 |
|---|---|---|
| RIDI | 15.75 m | - |
| CTIN | 6.89 m | - |
| TLIO | 6.77 m | - |
| iMoT(本文) | 5.31 m | ↑21.57% vs TLIO |
这篇论文提出了一种基于Transformer的多模态惯性导航系统(iMoT),通过Query Motion Particles建模运动不确定性,在仅使用IMU信号的情况下,实现了对瞬时速度段的高精度估计,并在多个开源IMU数据集上显著优于现有方法
iMoT 用一组可学习的 Query Motion Particles(128 个速度向量) 把“一个人在这一时刻到底可能以多少种不同方式运动”显式地离散成 128 个候选速度模式;通过 Transformer 解码器让粒子在每一层“看”到 IMU 上下文后自我修正,最终在测试阶段对这 128 个粒子的速度进行概率加权,从而把 “运动不确定性”量化成可学习的粒子分布