🚩 [更新] PyMAF-X 的面部部分已更新。请在 NoW 基准测试 上查看仅面部评估结果。
逐帧重建。视频片段来自 此处。
COCO验证集图像上的重建结果。
点击此处 查看更多结果
安装
- Python 3.8
conda create --no-default-packages -n pymafx python=3.8
conda activate pymafx
依赖包
- PyTorch 测试版本为 1.9.0
conda install pytorch==1.9.0 torchvision==0.10.0 cudatoolkit=11.1 -c pytorch -c conda-forge
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
- 其他列在
requirements.txt
中的包
pip install -r requirements.txt
必要文件
smpl_downsampling.npz 和 mano_downsampling.npz
- 运行以下脚本获取必要文件。
bash fetch_data.sh
SMPL 和 SMPL-X 模型文件
下载 部分网格 文件并将其放入
./data/partial_mesh
目录。
下载 预训练模型 并将其放入
./data/pretrained_model
目录。 收集上述必要文件后,./data
目录的结构预期如下:
./data
├── J_regressor_extra.npy
├── smpl_mean_params.npz
├── smpl_downsampling.npz
├── mano_downsampling.npz
├── flame_downsampling.npy
├── partial_mesh
│ └── ***_vids.npz
├── pretrained_model
│ └── PyMAF-X_model_checkpoint_v1.1.pt
└── smpl
├── FLAME2020
│ ├── FLAME_NEUTRAL.pkl
│ ├── flame_dynamic_embedding.npy
│ └── flame_static_embedding.pkl
├── MANO_RIGHT.pkl
├── SMPLX_NEUTRAL_2020.npz
├── SMPL_NEUTRAL.pkl
└── model_transfer
├── MANO_SMPLX_vertex_ids.pkl
├── SMPL-X__FLAME_vertex_ids.npy
└── smplx_to_smpl.pkl
演示
你可以先在我们准备的 Google Colab 笔记本上试一试,无需自己准备环境:
运行演示代码。
对于图片文件夹输入:
python -m apps.demo_smplx --image_folder examples/coco_images --detection_threshold 0.3 --pretrained_model data/pretrained_model/PyMAF-X_model_checkpoint_v1.1.pt --misc TRAIN.BHF_MODE full_body MODEL.PyMAF.HAND_VIS_TH 0.1
对于视频输入:
python -m apps.demo_smplx --vid_file examples/dancer_short.mp4 --pretrained_model data/pretrained_model/PyMAF-X_model_checkpoint_v1.1.pt --misc TRAIN.BHF_MODE full_body MODEL.PyMAF.HAND_VIS_TH 0.1
结果将保存在 ./output
目录。你可以在脚本中设置不同的超参数,例如,--detection_threshold
用于人体检测阈值,MODEL.PyMAF.HAND_VIS_TH
用于手部可见性阈值。
训练
要进行训练,我们首先需要收集训练数据集的预处理文件。伪 SMPL-X 标签(带有 'xpose'/'xshape' 键)可以在这里下载。关于训练的更多细节,请参考 PyMAF。示例用法:
python -m apps.train --regressor pymaf_net --train_data h36m_coco_itw --eval_every 10 --save_every 20 --train_data h36m_coco_itw --misc TRAIN.BATCH_SIZE 64 MODEL.PyMAF.AUX_SUPV_ON True MODEL.PyMAF.TRANS.USE_ATT True MODEL.PyMAF.TRANS.ATT_HEAD 1 MODEL.PyMAF.TRANS.ATT_FEAT_IDX 2 MODEL.MESH_MODEL smplx TRAIN.USE_EFT True MODEL.PyMAF.USE_CAM_FEAT True LOSS.SHAPE_W 0.6 MODEL.PyMAF.BACKBONE res50 POSE_RES_MODEL.PRETR_SET coco
引用
如果这项工作对你的研究有帮助,请引用以下论文:
@article{pymafx2023,
title={PyMAF-X: Towards Well-aligned Full-body Model Regression from Monocular Images},
author={Zhang, Hongwen and Tian, Yating and Zhang, Yuxiang and Li, Mengcheng and An, Liang and Sun, Zhenan and Liu, Yebin},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
year={2023}
}
@inproceedings{pymaf2021, 标题={PyMAF: 基于金字塔网格对齐反馈循环的3D人体姿态和形状回归}, 作者={张宏文 and 田雅婷 and 周鑫池 and 欧阳万里 and 刘烨斌 and 王立民 and 孙哲南}, 会议论文集={国际计算机视觉会议论文集}, 年份={2021} }
## 致谢
部分代码借鉴自以下项目,包括 [DaNet](https://github.com/HongwenZhang/DaNet-3DHumanReconstruction), [SPIN](https://github.com/nkolot/SPIN), [VIBE](https://github.com/mkocabas/VIBE), [SPEC](https://github.com/mkocabas/SPEC), [MeshGraphormer](https://github.com/microsoft/MeshGraphormer), [PIFu](https://github.com/shunsukesaito/PIFu), [DensePose](https://github.com/facebookresearch/DensePose), [HMR](https://github.com/akanazawa/hmr), [HRNet](https://github.com/leoxiaobin/deep-high-resolution-net.pytorch), [pose_resnet](https://github.com/Microsoft/human-pose-estimation.pytorch)。非常感谢他们的贡献。