【论文导读】iMoT: Inertial Motion Transformer for Inertial Navigation

631 阅读8分钟

论文名称:iMoT: Inertial Motion Transformer for Inertial Navigation

开源项目地址:https://github.com/Minh-Son-Nguyen/iMoT

会议:AAAI

时间:2025

提出了一种全新的基于Transformer架构的惯性导航系统(iMoT),其核心目标是通过对IMU(惯性测量单元)信号进行建模,来实现对运动轨迹的高精度估计

数据集

使用了四个开源的惯性导航数据集,所有数据集均仅使用IMU信号(加速度计+陀螺仪),未与GNSS或其他传感器融合

数据集名称简介官方链接
RIDI2018年发布,包含行人手持设备在不同场景下的IMU数据(如口袋、手持、背包等)RIDI Dataset
RoNIN2020年发布,目前最大的IMU轨迹数据集,包含100人、40小时的自然运动数据RoNIN Dataset
OxIOD2018年发布,牛津大学发布的多场景IMU数据集(如手持、口袋、推车等)OxIOD Dataset
IDOL2021年发布,专注于自然运动场景下的IMU轨迹估计IDOL Dataset

主要工作

惯性导航系统(Inertial Navigation System, INS)通过分析IMU信号(包括加速度和角速度)来估计物体的三维轨迹。传统方法(如PDRSINS)在噪声和漂移问题上存在严重缺陷,而现有的深度学习方法又未能充分利用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) 动态调整粒子权重,优化速度估计

模型对比

对比模型简介
RIDI2018年提出的基于CNN+LSTM的惯性导航系统
RoNIN2020年提出的基于CNN/LSTM/ResNet的惯性导航系统
TLIO2020年提出的基于LSTM+EKF的惯性导航系统
CTIN2022年提出的基于Transformer的惯性导航系统(只有这个是基于Transformer的)
IoNet2018年提出的基于LSTM的直接速度回归方法
PDR传统基于步态检测的行人航位推算法
SINS传统基于积分的惯性导航系统

实验结果

模型ATE(平均轨迹误差)相对提升
RIDI15.75 m-
CTIN6.89 m-
TLIO6.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 个粒子的速度进行概率加权,从而把 “运动不确定性”量化成可学习的粒子分布