TartanIMU Challenge (IROS 2026) β€” team Lexxxxx β€” model a3v20_s42

Single unified model, one shared set of weights, for all four platforms (car, dog, drone, human). Frozen weights: weights/tartanimu_a3v20_s42.pt (sha256 071994ba24bbe45648dc010f4c899f38f4b62721d092a8904efa0dad1b1eeabb). The checkpoint is one file holding the velocity network plus its two learned input-preprocessing sub-modules (attnet, calnet, see Method); all three are frozen and loaded by predict.py from this single file. submission.csv is the exact prediction file behind the claimed Kaggle score (md5 545d7cddc859a16db045f872251be03c; official scoring service: TartanIMU Score 0.25878, macro AVE 0.22017, macro ATE20 0.61704).

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 25 s wall, 2.0 GB RSS; on one GPU < 1 min, < 1 GB VRAM. Cross-machine numerical tolerance vs submission.csv (produced on an RTX 5090): componentwise mean 2.0e-5, p99 1.7e-4, max 1.9e-3 m/s. SHA256SUMS covers every file (sha256sum -c SHA256SUMS).

Method (short)

Per recording (test IMU only, no labels, no adaptation of any weight):

  1. calnet β€” a small network reads a 64-d summary of the recording's IMU and predicts an accelerometer scale / bias / time-constant correction and the gyro-axis map class (two IMU mountings exist in the data); applied to the raw IMU.
  2. attnet β€” a rest-anchored SO(3) gyro integration with GRU-predicted corrections gives a per-frame attitude estimate; from it: rest-frame "up", a bounded dead-reckoned velocity v_DR = qΒ·tanh(∫(R f + g)/q) (q = 8 m/s), time since the rest anchor, and the first two columns of the rotation to the anchor frame.
  3. Main network β€” dense random-offset 1 s windows β†’ 25 input channels (raw IMU + 8-channel decomposition about the slow "up" + the channels of step 2) β†’ dilated 1-D ResNet trunk (5 tokens per window) β†’ bidirectional GRU over 40-window chunks β†’ a direct velocity head and a learned-gain recursion v_k = Ξ”R_k v_{kβˆ’1} + Ξ”V_k + K_k (v_direct βˆ’ v_prop) inside the same network (the "EKF" head; Ξ”R, Ξ”V are the gyro/acc increments between window ends) β†’ body-frame velocity per window. Huber loss (Ξ² 0.05) on the output and on the direct head, BCE on the gain. 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; random dropout of the step-2 channels. Final weights = last epoch of a 120-epoch train+val run, seed 42 (pre-designated before any seed of this recipe was scored; seed 43 reported for range in the technical report). calnet/attnet were trained once on train+val GT attitude / calibration targets and frozen before the main network was trained.

Compliance declaration

  1. Single model, one shared set of weights? Yes. One checkpoint file, one deterministic pipeline (calnet β†’ attnet β†’ velocity network) executed once per recording / chunk; no per-platform experts. The sub-modules are fixed feature extractors of the same model, not a second estimator: the only velocity output is the main network's.
  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 and nothing is routed. calnet's gyro-map class is an IMU-mounting correction (applied to the input signal), not a platform switch.
  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 (pure model output only).
  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 learned-INS input channels / recursion head described above. Model/checkpoint selection used the released validation split and two stress folds of the training split.
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