Official PyTorch implementation for the paper "Probabilistic Inertial Poser (ProbIP): Uncertainty-aware Human Motion Modeling from Sparse Inertial Sensors" (ICCV 2025).
Authors: Min Kim, Younho Jeon, Sungho Jo
ProbIP is a novel probabilistic human motion estimation framework designed to work with sparse inertial measurements (e.g., from 6 IMUs).
Unlike existing methods that rely on physical priors or heuristics, ProbIP directly models uncertainty in motion prediction through probabilistic representations, enabling robust and accurate full-body motion reconstruction, even under sparse sensor configurations.
Our model not only predicts full-body pose sequences but also captures and quantifies uncertainty in the motion predictions, essential for real-world deployment in interactive environments.
🎥 Check out qualitative video results in submission/videos/
-
RU-Mamba Blocks: We introduce Rotation-Uncertainty Mamba (RU-Mamba), a novel sequence model block that outputs a matrix Fisher distribution over rotation matrices, capturing both motion and its uncertainty.
-
PDN (Progressive Distribution Narrowing): A unique mechanism that gradually refines the motion distribution across layers to stabilize training and improve prediction quality across diverse motion types.
-
Sensor Efficient: Achieves SOTA results with just 6 IMUs, and remains competitive with fewer sensors, ideal for real-world applications with hardware constraints.
- Achieves state-of-the-art accuracy on multiple public datasets with only 6 IMUs.
- Robust to sensor dropout and reduced sensor scenarios.
- Outperforms existing physically-constrained models in both accuracy and uncertainty modeling.
We recommend using conda to manage your environment:
conda create -n probip python=3.10
conda activate probipThen install PyTorch appropriate for your system and CUDA version:
👉 https://pytorch.org/get-started/locally/
Next, install the remaining dependencies:
pip install -r requirements.txt
⚠️ Note onchumpy:
If you encounter anumpy-related error when installingchumpy, comment out the following line insite-packages/chumpy/__init__.py:
# from numpy import bool, int, float, complex, object, unicode, str, nan, infProbIP uses SMPL models to reconstruct 3D body mesh.
- Register and download
.pklfiles from the official SMPL website. - Place them under the
smpl_model/directory:
smpl_model/
├── smpl_male.pkl
├── smpl_female.pkl
└── smpl_neutral.pkl
ProbIP uses multiple publicly available inertial motion datasets originally introduced in DynaIP. Please download the following:
- AnDy Dataset (
xsens_mvnx.zip) - UNIPD (Use
.mvnxfiles insingle_person/) - EmoKine
- CIP (
MTwAwinda.zip) - Virginia Natural Motion
- DIP-IMU
Organize your downloaded data as follows:
datasets/
├── raw/
│ ├── andy/
│ ├── cip/
│ ├── dip/
│ ├── emokine/
│ ├── unipd/
│ └── virginia/
├── extract/
└── work/
Then update the dataset paths in utils/config.py accordingly.
To preprocess the raw data:
python dataset/process.pyTo train ProbIP from scratch, run:
python train.pyTraining behavior and parameters are configured via utils/config.py.
To evaluate a trained model:
python eval.pyYou can use our pretrained model weights (download below) or your own checkpoint.
We provide pretrained weights for quick evaluation and reproducibility:
🔗 Download ProbIP Pretrained Weights
After downloading, place them under:
model_log/
└── best_modeln.pth
Then update your evaluation config accordingly.
This repository is built upon prior foundational works in motion modeling and shape estimation.
We would like to acknowledge:
- DynaIP for their dataset preparation and IMU processing pipeline.
- SMPL for the 3D human body model.
- Hierarchical Kinematic Probability Distributions for 3D Human Shape and Pose Estimation from Images in the Wild, ICCV 2021.
Read the paper here: https://openaccess.thecvf.com/content/ICCV2021/papers/Sengupta_Hierarchical_Kinematic_Probability_Distributions_for_3D_Human_Shape_and_Pose_ICCV_2021_paper.pdf
Feel free to open issues or contribute!
Let’s build better motion models together 🤝