tartanimu-a3v21 / README.md
LexHo's picture
model card: drop the robotics task tag (empty video-preview widget)
10a3613 verified
|
Raw History Blame Contribute Delete
5.57 kB
---
license: mit
tags:
- inertial-odometry
- imu
- tartanimu
- iros2026
- state-estimation
- sensor-fusion
---
# TartanIMU Challenge (IROS 2026) β€” team Lexxxxx β€” model `a3v21_s42` (second leaderboard entry)
Second of the two final entries of a team that finished **20th of 131** in the IROS 2026 TartanIMU Challenge. Official scoring service over all 89 test sequences: **TartanIMU Score 0.26306** (macro ATEβ‚‚β‚€ 0.637 m, macro AVE 0.222 m/s). The delivered entry is `a3v20_s42` (0.25878).
| | |
|---|---|
| **Code, evaluation rulers, technical report, full development record** | https://github.com/Jadiouo/tartanimu-unified-io |
| Results and how to verify the standing | https://github.com/Jadiouo/tartanimu-unified-io/blob/main/docs/results.md |
| Technical report (PDF, submitted to the organisers) | https://github.com/Jadiouo/tartanimu-unified-io/blob/main/report/technical_report.pdf |
| Competition | https://www.kaggle.com/competitions/tartan-imu-challenge-iros2026 Β· [final standing](https://www.kaggle.com/competitions/tartan-imu-challenge-iros2026/leaderboard?search=Lexxxxx) Β· [challenge page](https://superodometry.com/imuchallenge/) |
| Delivered entry (official 0.25878) | https://huggingface.co/LexHo/tartanimu-a3v20 |
Single unified model, one shared set of weights, for all four platforms (car, dog, drone, human).
This repository is our **second** considered submission; the primary one (`a3v20_s42`, official 0.25878) is at
https://huggingface.co/LexHo/tartanimu-a3v20. Each repository holds exactly one model and the exact prediction file it produced.
Frozen weights: `weights/tartanimu_a3v21_s42.pt` (sha256 `7d90badeb2873b1d8f3e13ffca21a624cf2b2ae8a5f838473a7ac44964f9c07b`).
`submission.csv` is the exact prediction file behind the claimed Kaggle score (md5 `a53e196f6b67e8ea52733f4386b5c403`;
official scoring service: TartanIMU Score 0.26306, macro AVE 0.22232, macro ATE20 0.63665).
## Run
pip install -r requirements.txt
python predict.py --data /path/to/tartan-imu-challenge-iros2026 --out submission.csv
Input: `index/test_windows.csv` + `test/*.npz` (raw 6-axis IMU only). No internet, no ground truth, no platform label.
Measured re-execution of this repository as downloaded (CPU only, isolated environment, process-level socket block,
empty cache): 1 min 10 s wall, 1.4 GB RSS; on one GPU < 1 min, < 1 GB VRAM.
Cross-machine numerical tolerance vs `submission.csv` (produced on an RTX 5090): componentwise mean 1.8e-5, p99 1.6e-4, max 1.6e-3 m/s.
`SHA256SUMS` covers every file (`sha256sum -c SHA256SUMS`).
## Method (short)
Same main network as the primary entry, **without** the learned-INS sub-modules and recursion head, **with** a
recording-level FiLM conditioning: dense random-offset 1 s windows β†’ 14 input channels (raw IMU + an 8-channel
decomposition about a slow complementary-filter "up" direction computed from the same IMU) β†’ dilated 1-D ResNet trunk
(5 tokens per window) whose blocks are modulated (FiLM: per-channel scale and shift) by a 35-dimensional descriptor of
the whole recording (per-axis mean / spread / step roughness of the raw IMU, rest-window statistics, a 10-bin
|acc| spectrum, gyro-rate percentiles, log duration β€” IMU only, no labels) β†’ bidirectional GRU over 40-window chunks β†’
linear head β†’ body-frame velocity per window. Huber loss (Ξ² 0.05). Trunk initialised from a masked-IMU self-supervised
pre-training on the released train+val IMU (no labels). Training augmentations: time dilation k ∈ [0.7, 1.5] (drone;
identity-source racing family capped at 1.2) and, for the racing family only, translation scaling s ∈ [1.0, 1.8]
applied to velocity labels and the gravity-removed specific force ("S-fast"); yaw augmentation about the estimated up
(direction-only) for the identity source. Final weights = last epoch of a 120-epoch train+val run, seed 42
(pre-designated; seed range reported in the technical report).
## Compliance declaration
1. **Single model, one shared set of weights?** Yes. One checkpoint, one forward pass per chunk; no per-platform experts.
The FiLM descriptor is a function of the recording's own IMU computed inside the same forward pass; it is not a
platform label and nothing is routed.
2. **Platform classification, routing or specialization at inference?** No. An auxiliary platform head exists only as a
training loss; it is not used at inference.
3. **Ensembling, checkpoint averaging or test-time augmentation?** No. Single checkpoint, deterministic inference,
overlapping-chunk averaging of one model's own predictions only (stride K/2 within a trajectory).
4. **Test-set leakage avoidance, incl. model / checkpoint selection?** Test ground truth never used. The final checkpoint
is the fixed last epoch (no selection on any test signal). The self-supervised trunk pre-training used only the released
train+val IMU. No external data or external pretrained weights are used in the submitted system. Development-time
experiments with an external dataset (NeuroBEM) were run and are disclosed in the report; none of their weights or data
enter this model. A public-leaderboard probe with a physics post-processing rule was made during development and is
NOT part of this submission.
5. **Development-time vs submitted system?** Identical inference code; the submitted checkpoint differs from earlier
leaderboard entries by the training augmentation (S-fast) and the recording-level FiLM. Model/checkpoint selection used
the released validation split and two stress folds of the training split.