InrtlWrist
A masked-autoencoder wrist-IMU encoder, the reference model of IMU-Bench: Benchmarking Wrist IMU Representations Across Kinematic, Semantic and Clinical Tasks (Li, Bradshaw, Gao, Ahuja, 2026; arXiv:2610.19481). Paper: https://arxiv.org/abs/2610.19481 · Website and leaderboard: https://spicexlab.github.io/imubench/ · Code: https://github.com/SPICExLAB/IMU-Bench
Among six self-supervised objectives trained on the same corpus and backbone, InrtlWrist is best or joint-best under frozen probing on nine of the ten benchmark tasks (arm and full-body pose, inertial odometry, microgesture recognition, IMU–text retrieval, Parkinson's disease classification and four activity-recognition sets), and fine-tuning it beats training from scratch on nine of ten.
Model
| Architecture | 12-layer ViT over 0.32 s patches, width 384, 6 heads, alternating frame-wise (across the six channels) and global attention, learnable summary token; 21.4 M parameters |
| Input | [B, 6, T]: accelerometer x/y/z (m/s²) then gyroscope x/y/z (rad/s) of one wrist in a forward–left–up frame at 50 Hz, z-scored per channel and window; T a multiple of 16 up to 512 (1.28–10.24 s) |
| Output | [B, 384] pooled embedding (the summary token), or [B, 6·T/16, 384] per-channel patch tokens |
| Pretraining | masked reconstruction of accelerometer and gyroscope patches (the 1.9 M-parameter reconstruction decoder is included under decoder), 144,000 updates, batches cropped to 1.28–10.24 s, 24 octahedral rotations as augmentation |
| Corpus | 197,094 unlabeled windows (10.24 s, 50 % overlap, about 280 h) from UT-Watch, WISDM, RecoFit, PAMAP2, SAMoSA, Shoaib, OCDetect, EatingSpeed, and wrist motion simulated from Motion-X++ and BONES-SEED; no benchmark evaluation set is in the corpus |
Files
inrtlwrist_mae_5src_step144k.pt— PyTorch checkpoint:model(encoder state dict),decoder(reconstruction decoder),config(architecture, objective, preprocessing),step,best_val_loss.pretrain_config.yaml— the full pretraining configuration used withscripts/run_pretrain.pyin the code repository.encoder_meta.json— input and architecture summary.
Usage
The encoder class lives in the code repository (imu_lm/models/ViT1D/model.py); the loader below is
scripts/load_inrtlwrist.py there.
import torch
from huggingface_hub import hf_hub_download
from scripts.load_inrtlwrist import load_inrtlwrist, zscore # from https://github.com/SPICExLAB/IMU-Bench
path = hf_hub_download("YiquanLi/InrtlWrist", "inrtlwrist_mae_5src_step144k.pt")
enc = load_inrtlwrist(path) # eval mode
x = zscore(torch.randn(2, 6, 512)) # [B, 6, T], acc then gyro, 50 Hz, z-scored per channel/window
z = enc(x) # [2, 384] pooled embedding, what the frozen probes read
tokens, patches = enc.forward_tokens(x) # [2, 192, 384] patch tokens for sequence decoders
For the benchmark's probing, fine-tuning and scoring recipes, register the checkpoint in
bench/registry/encoders.yaml of the code repository and run the task cards; see its README.
Citation
@article{li2026imubench,
title = {IMU-Bench: Benchmarking Wrist IMU Representations Across Kinematic, Semantic and Clinical Tasks},
author = {Li, Yiquan and Bradshaw, Aidan and Gao, Chenfeng and Ahuja, Karan},
journal = {arXiv preprint arXiv:2610.19481},
year = {2026}
}
Licence
MIT License, the same as the code repository (https://github.com/SPICExLAB/IMU-Bench/blob/main/LICENSE). The pretraining datasets keep their own licences.