ln_resnet_unified: TartanIMU Challenge model (v25)

A single unified model with one shared set of weights (5.38M parameters) for car, dog (legged), drone and human. It predicts the mean body-frame velocity of every 1.0 s window from raw 6-axis IMU only, followed by a deterministic per-trajectory speed gate described below.

Official scoring service, full test split: 0.29790 (macro AVE 0.21338, ATE20 0.96484). Without the speed gate the same weights score 0.30682.

  • Backbone: LN-ResNet-derived SO(3)-equivariant vector-neuron residual network: xyz-shared temporal convolutions, VN leaky ReLU, cross-product (so(3) Lie bracket) features, invariant scalar gates, invariant attention pooling per 1 s window.
  • Auxiliary heads (training signal only): sensor-frame velocity and a world-frame-IMU-stream detector; a platform classifier. None of them is used to route or post-process predictions.
  • Non-equivariant components: 5 frame adapters (learned 3x3 output maps mixed by invariant weights); a 2-layer bidirectional LSTM (hidden 256) across windows that reads raw xyz components of window tokens.
  • Context: sequence mode, chunks of 64 consecutive windows with 7 context windows on each side (edge-replicated, masked). Each trajectory is processed independently.
  • Inputs read at inference: only imu (N, 6) = [ax, ay, az, gx, gy, gz] from each trajectory .npz, plus the window order from the windows CSV. No platform label, pose, timestamps or other metadata.
  • Weights: EMA of the training weights from a single run (step 32000). No ensembling, no test-time augmentation. The weights are byte-identical to the v19 release; v25 differs only by the speed gate.
  • Training data: the released challenge train+val splits only; no external data or pretrained weights.

Turn-kinematics speed gate (physics_gate.py)

A deterministic rescaling of this model's own output, computed from the same trajectory's IMU and nothing else: no labels, no test-set statistics, no information from any other trajectory, no second network. It is part of the inference pipeline, not a separate model.

In a steady turn the non-gravity acceleration equals w x v, so |v| ~ sqrt(|f|^2 - g^2)/|w| for span-averaged f, w. The network underestimates speed on fast flights of a racing rig it was trained on: training contains that rig at 7.81 m/s, yet a held-out flight of the same rig at 7.82 m/s is underestimated by 30%. The estimator's bias is speed dependent - measured median (physics / true) is 1.47 below 2 m/s, 1.26 from 2-5 m/s, and 0.95 above 5 m/s - so the correction is restricted to the fast band where it is unbiased, and damped because the estimator still carries about +-20% scatter there.

A trajectory is rescaled by min(1 + 0.5 (r - 1), 1.3) when its mean predicted speed is at least 1.5 m/s and r = median(physics speed / predicted speed) > 1.1, otherwise it is left unchanged. Constants were fixed before submission and are not tuned per trajectory.

On the challenge test set the gate fires on 9 of 89 trajectories, all aerial. Per-platform metrics for car, legged and handheld are unchanged to five decimals; aerial AVE improves 0.64768 -> 0.63611 and aerial ATE20 improves 3.01999 -> 2.81525.

Inference

pip install -r requirements.txt
python infer.py --traj_dir <test dir> --windows <index/test_windows.csv> --checkpoint model.pt --out submission.csv

The gate is enabled by default, as submitted; --no_physics_gate reproduces the plain v19 output.

  • Hardware: a single GPU with well under 16 GB (about 10 s for the full test set on an RTX 5080). CPU also works with --device cpu.
  • Determinism: TF32 is disabled; a clean run reproduces the submitted predictions to 1.3e-6.
Downloads last month
32
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for arattan7272/tartanimu-lnresnet

Finetunes
3 models