File size: 2,713 Bytes
46ff5ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c3cf025
46ff5ea
c3cf025
46ff5ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bef3606
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
library_name: fmpose3d
pipeline_tag: image-to-3d
tags:
  - pose-estimation
  - 3d-pose-estimation
  - monocular
  - flow-matching
  - human-pose
  - animal-pose
  - pytorch
datasets:
  - human3.6m
  - animal3d
language:
  - en
---

# FMPose3D: Monocular 3D Pose Estimation via Flow Matching

Official model weights for **[FMPose3D: monocular 3D pose estimation via flow matching](https://arxiv.org/abs/2602.05755)** by Ti Wang, Xiaohang Yu, and Mackenzie Weygandt Mathis.

| [Paper](https://arxiv.org/abs/2602.05755) | [Project Page](https://xiu-cs.github.io/FMPose3D/) | [GitHub](https://github.com/AdaptiveMotorControlLab/FMPose3D) | [PyPI](https://pypi.org/project/fmpose3d/) |

## Overview

FMPose3D lifts 2D keypoints from a single image into 3D poses using **flow matching** — a generative technique based on ODE sampling. It generates multiple plausible 3D pose hypotheses in just a few steps, then aggregates them using a reprojection-based Bayesian module (RPEA) for accurate predictions, achieving state-of-the-art results on human and animal 3D pose benchmarks.

## Available Checkpoints

| Filename | Skeleton | Joints | Training Data | Description |
|---|---|---|---|---|
| `fmpose3d_humans.pth` | H36M | 17 | Human3.6M | Human 3D pose estimation |
| `fmpose3d_animals.pth` | Animal3D | 26 | Animal3D | Quadruped animal 3D pose estimation |

## Quick Start

```bash
pip install fmpose3d
```

Weights are downloaded automatically when using the Python API:

```python
from fmpose3d import FMPose3DInference

# Human — weights auto-downloaded on first use
result = FMPose3DInference().predict("photo.jpg")

# Animal
result = FMPose3DInference.for_animals().predict("dog.jpg")
```

For the full API reference, see the [GitHub repository](https://github.com/AdaptiveMotorControlLab/FMPose3D).

## Manual Download

```python
from huggingface_hub import hf_hub_download

path = hf_hub_download(repo_id="DeepLabCut/FMPose3D", filename="fmpose3d_humans.pth")
# or
path = hf_hub_download(repo_id="DeepLabCut/FMPose3D", filename="fmpose3d_animals.pth")

api = FMPose3DInference(model_weights_path=path)
```

## Citation

```bibtex
@misc{wang2026fmpose3dmonocular3dpose,
      title={FMPose3D: monocular 3D pose estimation via flow matching}, 
      author={Ti Wang and Xiaohang Yu and Mackenzie Weygandt Mathis},
      year={2026},
      eprint={2602.05755},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2602.05755}, 
}
```

## License

Model weights are for non-commerical use. Please contact the EPFL TTO for future information.  We thank the Swiss National Science Foundation (SNSF Project # 320030-227871) and the Kavli Foundation for financial support.