This repository contains the official implementation of the ICLR 2026 paper:
Pose Prior Learner: Unsupervised Categorical Prior Learning for Pose Estimation
Ziyu Wang, Shuangpeng Han, Mengmi Zhang
Access to our poster HERE and presentation video HERE.
A prior represents a set of beliefs or assumptions about a system, aiding inference and decision-making. In this paper, we introduce the challenge of unsupervised categorical prior learning in pose estimation, where AI models learn a general pose prior for an object category from images in a self-supervised manner. Although priors are effective in estimating pose, acquiring them can be difficult. We propose a novel method, named Pose Prior Learner (PPL), to learn a general pose prior for any object category. PPL uses a hierarchical memory to store compositional parts of prototypical poses, from which we distill a general pose prior. This prior improves pose estimation accuracy through template transformation and image reconstruction. PPL learns meaningful pose priors without any additional human annotations or interventions, outperforming competitive baselines on both human and animal pose estimation datasets. Notably, our experimental results reveal the effectiveness of PPL using learned prototypical poses for pose estimation on occluded images. Through iterative inference, PPL leverages the pose prior to refine estimated poses, regressing them to any prototypical poses stored in memory.
The basic environment contains these packages:
- Python 3.12.9
- torch 2.7.0
- torchvision 0.22.0
- pytorch-lightning 2.5.0
Other dependencies can be installed as needed.
The Taichi, Human3.6m, CUB, 11k Hands, Horse2Zebra and Flower can be found on their websites. We provide the Youtube Dog Video dataset here.
The pre-trained models can be downloaded from Google Drive.
To train the model from scratch, please follow the steps below:
- Modify the
DATA_DIRindataset/xxx.pyto your own. - Run the command as shown in the following example.
sh script/train_h36m.py
To test the model:
- Modify the
DATA_DIRindataset/xxx.pyto your own. - Run the command as shown in the following example.
sh script/test_h36m.py
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
If you find our paper and/or code helpful, please cite:
@article{wang2024pose,
title={Pose Prior Learner: Unsupervised Categorical Prior Learning for Pose Estimation},
author={Wang, Ziyu and Han, Shuangpeng and Zhang, Mengmi},
journal={arXiv preprint arXiv:2410.03858},
year={2024}
}









