AxisTilted2 โ€” Tartan IMU Challenge (IROS 2026) final submission

A shared model that estimates body-frame velocity from raw six-axis IMU across car, quadruped, drone and handheld motion. It combines spectral and recurrent neural features with a learned, calibrated Gaussian smoother. Inference uses 64-second contexts and is offline and non-causal.

This release contains the weights, inference code and exact predictions for team AxisTilted2, Kaggle submission 56287620 (public score 0.27765).

Authors: Sanjayan Sreekala (san@sankala.me) and Chinmayan Pradeep (chinpradk@gmail.com), both Independent Researchers. Code and weights: Apache-2.0.

The official all-89 evaluation returned 0.21556 (ATE20 0.56008 m, AVE 0.17614 m/s, RTE 0.82921 m). This is distinct from the public leaderboard population.

Model CalibratedIMU โ€” one shared model, 3,549,642 parameters
Weights model.pt, SHA256 0caa21fed31c77b5ed11f258d49459064e5cf6e6a72a318f3e52e28718fcd1f9
Predictions submission.csv, 30,644 rows, MD5 62c722045add864387c1b01c83695a1b, SHA256 529ebc972daed3cea5de317096769436a87a652af35819383bcb1164388dc916
Inference input Raw six-axis IMU at 200 Hz and the public test window index only
Context 64-second windows, stride 32, overlap-weighted, offline within one trajectory
Runtime Python 3.12, torch==2.10.0+cu128; ~10 s and ~0.5 GB GPU memory for the full test set on an RTX 3090
Training data Released train + validation labels only (475 trajectories); no external data or pretrained weights
Report Technical report

Reproduce the submission

python3.12 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python scripts/infer_candidate.py --weights model.pt --data-root /path/to/competition --output out/submission.csv --device cuda

--data-root must contain index/test_windows.csv, sample_submission.csv and test/*.npz from the competition release. The script writes out/submission.csv.json with the output hashes. Two runs on the original RTX 3090 reproduced the submitted CSV exactly. A fresh Python 3.12 install with the pinned dependencies also ran successfully on an RTX 4090: 30,644 rows in 8.31 seconds, with 0.52 GB peak reserved CUDA memory. Two runs on that setup produced the same hash, but differed from the RTX 3090 output.

Tested setup Reference CSV SHA256
RTX 3090 (submitted predictions) 529ebc972daed3cea5de317096769436a87a652af35819383bcb1164388dc916
RTX 4090 (reproduction reference) 35683cd11a39f2ddf91390c063518e3e6fbcb7053530df80e1f7623710eb14e0

Window IDs and row order match. Across the two GPUs, the mean per-window velocity-vector difference is 0.000421 m/s and the maximum absolute component difference is 0.014917 m/s. Disabling TF32 did not remove the difference; BF16 computation and hardware-dependent cuDNN kernels are the suspected sources. Bit-exact cross-hardware reproduction is not guaranteed. See the RTX 4090 measurements and reference CSV for the environment and details. The root submission.csv is the original RTX 3090 output used for all reported competition scores.

CPU inference also differs from the submitted output: the macOS check found mean/max absolute component differences of 0.000381/0.071294 m/s. These are component statistics, distinct from the GPU vector-difference mean above.

release_files.sha256.json lists hashes for this release. artifact_manifest.json records the original inference package; its README is preserved as FROZEN_PACKAGE_README.md.

Model

One shared network for all platforms: a dilated 1D CNN over raw IMU (20 Hz features), per-second statistics and a local spectrogram branch, a two-layer bidirectional GRU at 4 Hz, and a 20 Hz decoder producing a shared velocity plus four soft-gated internal residual heads. A small sensor-calibration subnetwork (86,610 parameters), supervised separately on released relative-rotation and gravity labels and then frozen inside the same checkpoint, supplies gyro corrections, gravity direction and confidence to a nine-state (velocity, accelerometer bias, gravity) conditional Gaussian smoother. The smoother output is blended with the raw neural velocity by a learned strength.

Disclosures: platform-supervised internal gating (signal-only at inference); EMA .995 during training; overlap-weighted blending of 64 s contexts at stride 32; non-causal context within a trajectory; no ensemble, no test-time augmentation, no test-time adaptation, no platform labels, no external pretrained weights. Model selection used three family-grouped folds over the 475 released labelled trajectories; the final weights are one fresh fit on all 475. See the technical report for the full description and the five compliance answers.

Training

training/frozen_source.tar.gz is the exact source archive used for the training run (SHA256 94e150da0446e957a67dcefa4ca3a87235e0e1afe3d26ad146f98f6d750c09a5; per-file hashes in training/frozen_source_manifest.json). Entry points: scripts/prepare_combination_assets.py then scripts/run_combination_cv.py --config config/combination_cv_20260916.json. It is a research workspace with remote-machine paths, provided for audit, not a one-command training release. Competition data is not redistributed here.

License and data

Model weights and code in this repository are released under the Apache License 2.0 (see LICENSE). references/TartanIMU/LICENSE is the Apache-2.0 license of the organizer's reference code used for the metric. The Tartan IMU Challenge dataset is licensed for the competition and non-commercial academic research only; it is not included here.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support