IMU-Bench¶
Benchmarking wrist IMU representations across kinematic, semantic and clinical tasks.
IMU-Bench evaluates one wrist-IMU encoder on ten tasks from eight datasets: arm and full-body pose, inertial odometry, microgesture recognition, IMU–text retrieval, Parkinson's disease classification and activity recognition on four sets. Every task is defined by a task card that fixes the raw input, the decoder, the training recipe, the split, the selection rule and the scorer, so that the encoder is the only thing that differs between rows of the leaderboard. The benchmark ships with InrtlWrist, a general-purpose inertial foundation model for wrist-worn IMUs, and with the per-cell result files behind every number in the paper.
Overview¶
- One harness, one protocol.
imu-bench evaltrains and scores every encoder with the same decoders, splits, budgets and scorers; nothing on the leaderboard is typed by hand. - Two submission paths. Plug any PyTorch encoder in through a small interface, or register an encoder trained with the shared backbone for the controlled track.
- Audited data. Every evaluation set was checked for duplicated participants and for overlap with common pretraining pools before it was split; submissions declare their corpus and are checked the same way.
- Open results. Each cell of the leaderboard is one JSON file with all metrics, the selected checkpoint and the exact config; submissions are pull requests that carry the same artefacts.
Latest news¶
- Oct 2026. Paper on arXiv: 2610.19481.
- Oct 2026.
imu-benchcommand line, plugin encoders and the open track; InrtlWrist weights and the results dataset on the Hugging Face Hub; website and leaderboard live. - Sep 2026. Paper submitted.
Quick start¶
git clone https://github.com/SPICExLAB/IMU-Bench && cd IMU-Bench
python -m venv imu-bench && source imu-bench/bin/activate && pip install -e .
export IMUBENCH_DATA_ROOT=/data/imubench # see Datasets
imu-bench tasks # the ten task cards
imu-bench eval --encoder examples/plugin/inrtlwrist_plugin.yaml --tasks har_hhar --protocols probe
import torch
from huggingface_hub import hf_hub_download
from scripts.load_inrtlwrist import load_inrtlwrist, zscore
enc = load_inrtlwrist(hf_hub_download("YiquanLi/InrtlWrist", "inrtlwrist_mae_5src_step144k.pt"))
z = enc(zscore(torch.randn(2, 6, 512))) # [2, 384] pooled embedding of two 10.24 s wrist windows
Documentation structure¶
- Getting started: Tasks, Installation, Quickstart, Datasets.
- Guides: Submission modes, Evaluation, Tracks and leaderboard submission, Data audit and leakage, Reproducing the paper.
- Reference: CLI, Encoder cards, Task cards, Result files.
- FAQ and Roadmap.
Available resources¶
| Resource | Where |
|---|---|
| Code, task cards, generated configs, scorers | github.com/SPICExLAB/IMU-Bench |
| InrtlWrist checkpoint (encoder + decoder + config) | huggingface.co/YiquanLi/InrtlWrist |
| Per-cell results, registry, splits, leaderboard data | huggingface.co/datasets/YiquanLi/IMU-Bench-results |
| Website and leaderboard (also mirrored as a Space) | spicexlab.github.io/imubench · Space |
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}
}