Elkhan Ismayilzada1 Yufei Zhang2 Zijun Cui1
1Michigan State University 2Independent Researcher
-
2026-05-26: Demo code and pretrained checkpoint released. -
2026-04-09: PAD-Hand selected as a Highlight at CVPR 2026! -
2026-02-20: PAD-Hand accepted at CVPR 2026!
This project uses two separate conda environments:
| Environment | Purpose |
|---|---|
wilor |
WiLoR hand detection and initial pose estimation |
pad_hand |
PAD-Hand diffusion refinement and rendering |
Follow the installation instructions in the WiLoR repository.
Then initialize the submodule:
git submodule update --init --recursivePlace pretrained WiLoR weights under:
WiLoR/pretrained_models/
├── wilor_final.ckpt
├── detector.pt
├── model_config.yaml
└── dataset_config.yaml
conda create -n pad_hand python=3.7
conda activate pad_hand
pip install -r requirements.txtNote:
torch-scatterrequires matching your CUDA and PyTorch versions. See the torch-scatter installation guide.
The MANO model files must be downloaded manually due to licensing. Please register and download from the MANO website and place the processed files under:
assets/
├── MANO_RIGHT.pkl
├── MANO_LEFT.pkl
├── MeshConv_template.ply
└── MeshConv_transform.pkl
Then run the preprocessing script to convert the official MANO files into the format expected by this codebase:
conda activate pad_hand
python mano_preprocessing.pyThe mesh convolution module is adapted from MobRecon. The mesh data processing module can be installed from psbody-mesh. We thank them for generously sharing their outstanding work.
conda activate pad_hand
python demo.py \
--video path/to/input.mp4 \
--checkpoint path/to/pad_hand.pth \
--output output.mp4Example:
python demo.py --video demo_input.mp4 --checkpoint pad_hand.pt| Argument | Required | Default | Description |
|---|---|---|---|
--video |
Yes | — | Input video path |
--checkpoint |
Yes | — | PAD-Hand model checkpoint (.pth) — download here |
--output |
No | demo_output.mp4 |
Output video path |
The output is a side-by-side video: WiLoR prediction (left, blue) vs PAD-Hand refined (right, green).
WiLoR inference is automatically invoked as a subprocess inside
demo.pyusingconda run -n wilor. No manual step needed.
This repository is based on
@InProceedings{Ismayilzada_2026_CVPR,
author = {Ismayilzada, Elkhan and Zhang, Yufei and Cui, Zijun},
title = {PAD-Hand: Physics-Aware Diffusion for Hand Motion Recovery},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2026},
pages = {28358-28368}
}