TartanIMU Challenge - Single Unified Time-Frequency Model
One model, one weight set, four platforms (car, dog, drone, human). It reads a 1.0 second window of raw 6-axis IMU and predicts that window's mean body-frame velocity. No platform label, no ground-truth orientation or position, no internet. It runs on CPU in seconds.
Public leaderboard: 0.412 (top 25 of 81).
Files
infer.py- self-contained inference. Bundles the model definition and the feature engineering, loads the frozen weights, reads the test.npzfiles, writessubmission.csv.weights/model.pt- the single frozen weight set (five internal branches).weights/norm.npz- per-channel input normalisation statistics.submission.csv- the exact submission that scored on the leaderboard.requirements.txt- pinned dependencies.
Run
pip install -r requirements.txt
python infer.py --test_dir /path/to/test --index test_windows.csv --out submission.csv
Each test file is <traj_id>.npz with imu of shape (N, 6) = [ax, ay, az, gx, gy, gz] in the
body frame at 200 Hz. The script windows each trajectory into non-overlapping 200-frame blocks
and emits one velocity per window, keyed by window_id from test_windows.csv.
Method
The six raw IMU channels are extended to nine by a gravity-aware split (a causal EMA of the accelerometer tracks gravity; subtracting it isolates linear acceleration). The model is a single module with one weight set holding five branches that all read the same window and whose velocity outputs are blended by fixed weights:
- a wide short-time-FFT spectrogram branch (time + frequency image),
- a base spectrogram branch,
- a full-spectrum frequency branch,
- an average-pool time branch,
- an attention-pool time branch.
Each branch pairs a 1-D dilated residual convolutional trunk with an input-driven FiLM conditioning path, so the network infers the platform from the signal itself and adapts, with no external label and no per-platform routing. The frequency and spectrogram views capture the distinct rhythm of each platform (a car's smooth non-holonomic motion, the pulse-and-stop of a walking human or trotting dog, a drone's free 6-DOF motion).
Rule compliance
- Single unified model, one weight set, evaluated identically on all four platforms.
- Inference consumes raw 6-axis IMU only. No ground truth and no platform label are read.
- No attempt to recover the anonymised platform identity.
- Fully offline, CPU-capable, well under the 16 GB and 2 hour re-execution limits.
- Re-running
infer.pyreproducessubmission.csvto under one part in a million.