PyMAF避坑清单:pytorch3d编译、SMPL许可证、EFT标签下载等常见报错速查手册
【免费下载链接】PyMAF[ICCV 2021, Oral] PyMAF: 3D Human Pose and Shape Regression with Pyramidal Mesh Alignment Feedback Loop项目地址: https://gitcode.com/gh_mirrors/py/PyMAF
PyMAF(ICCV 2021 Oral)是从单张图像回归 3D 人体姿态与体型(SMPL 参数)的经典方法,通过"金字塔网格对齐反馈环"实现高精度人体重建。但它的部署链路很长:pytorch3d 编译、SMPL 模型许可、EFT 标签数据下载,每一步都可能卡住新手。本文把部署 PyMAF 时最高频的报错整理成一份速查手册,帮你少走 90% 的弯路 🛠️
部署 PyMAF 前的三大高危坑位
坑位一:pytorch3d 编译失败(最高频报错)
pytorch3d 是 PyMAF 渲染与网格计算的核心依赖(见 utils/renderer.py 中大量pytorch3d.renderer导入),但它需要本地编译 CUDA 扩展,是新手翻车第一重灾区。
典型报错长这样:
error: subprocess-exited-with-error Building wheel for pytorch3d ... did not run successfully✅ 快速排坑步骤:
- 锁定版本组合:项目经过验证的组合是 Python 3.8 + PyTorch 1.9.0 + CUDA 11.1。torch 和 CUDA 版本不匹配是最常见原因。
- 用 conda 装 torch:
conda install pytorch==1.9.0 torchvision==0.10.0 cudatoolkit=11.1,避免 pip 的 torch 与系统 CUDA 打架。 - 确认编译工具链:Linux 下需要 g++/gcc 与 CUDA toolkit 匹配;Windows 需要 Visual Studio Build Tools。
- 其余依赖直接
pip install -r requirements.txt即可(注意其中固定了smplx==0.1.28、scipy==1.2.2,不要随意升级,否则 SMPL 模型加载和几何计算会出诡异问题)。
坑位二:SMPL 模型文件与许可证
PyMAF 基于 SMPL 人体模型,模型文件不随仓库分发,需要自行申请:
- 到 SMPL 官网(smpl.is.tue.mpg.de)注册并同意 MPICH 许可证后下载 SMPL_NEUTRAL、SMPL_MALE、SMPL_FEMALE 三个 pkl 文件。
- 将文件重命名并放入
data/smpl/目录。 - 模型加载逻辑在 models/smpl.py 中,所有路径统一由 core/path_config.py 里的
SMPL_MODEL_DIR = 'data/smpl'控制。
⚠️ 没有许可证就私自传播模型文件是违规的,请务必走官方申请流程。另外 SMPL 旧版 pkl 依赖chumpy库,这正是 requirements.txt 中列出它的原因——缺了它会在pickle.load阶段报AttributeError。
坑位三:EFT 标签与训练数据下载
想跑通推理只需预训练权重 + SMPL 文件;但若要训练,还需要一批预处理标签,其中官方特别推荐 EFT 标签(可显著提升 HMR 基线):
| 数据项 | 获取方式 | 放置位置 |
|---|---|---|
| mesh_downsampling.npz + DensePose UV 数据 | 运行bash fetch_data.sh(见 fetch_data.sh) | data/、data/UV_data/ |
| 预处理 npz 标签 | 按 SPIN 项目的数据说明下载 | data/dataset_extras/ |
| EFT / final_fits 标签(.npy) | 官方 issue #58 提供的兼容版 EFT 数据 | data/final_fits/ |
| 预训练权重 PyMAF_model_checkpoint.pt | 官方网盘下载 | data/pretrained_model/ |
全部就位后,data/目录结构应与 README 中给出的树状结构一致,缺一个文件都会在不同阶段抛出FileNotFoundError。
常见报错速查表 📋
| 报错关键词 | 可能原因 | 解决方案 |
|---|---|---|
Building wheel for pytorch3d ... error | torch/CUDA 版本不匹配、编译器过旧 | 按上文锁定 Python 3.8 + torch 1.9.0 + CUDA 11.1 重装 |
No module named 'pyrender'或 EGL 报错 | 无头环境缺 GPU 渲染平台 | 安装 pyrender 并保证 EGL/OSMesa 可用(demo 入口 demo.py 已设置PYOPENGL_PLATFORM=egl) |
FileNotFoundError: data/smpl/... | SMPL 模型未下载/放错路径 | 按许可证申请后放入data/smpl/ |
AttributeError: 'module' object has no attribute 'chumpy' | 缺 chumpy 依赖 | pip install chumpy |
KeyError/ 标签加载失败 | final_fits 或 EFT 标签缺失 | 下载 EFT 兼容 npy 放入data/final_fits/ |
RuntimeError: CUDA out of memory | 显存不足 | 用--misc TRAIN.BATCH_SIZE 16等方式调小批量(见 core/train_options.py) |
eval_coco.py报找不到 coco_2014_val.npz | COCO 评测数据未下载 | 按官方说明放入data/dataset_extras/ |
最快验证方法:先跑单图 Demo
环境搭好后,用仓库自带的示例图做一次"冒烟测试",30 秒确认全链路 OK:
python3 demo.py --checkpoint=data/pretrained_model/PyMAF_model_checkpoint.pt \ --img_file examples/COCO_val2014_000000019667.jpg能顺利输出output/下的_smpl.png重建图,说明 pytorch3d、SMPL 模型、渲染管线全部就绪 ✅ 视频推理与多人追踪(yolov8 检测器,见 multi_person_tracker_yolov8.py)在此基础上即可直接启用。
总结
记住三句话,PyMAF 部署基本就不会翻车:
- 先锁版本:Python 3.8 + torch 1.9 + CUDA 11.1,再编译 pytorch3d;
- 先申许可证:SMPL 模型走官方渠道,放对
data/smpl/; - 训练先补标签:跑
fetch_data.sh+ EFT 标签,核对 README 中的目录结构。
按这份清单逐项排查,绝大多数报错都能在几分钟内定位并解决。祝顺利跑通你的第一张 3D 人体重建结果!🚀
【免费下载链接】PyMAF[ICCV 2021, Oral] PyMAF: 3D Human Pose and Shape Regression with Pyramidal Mesh Alignment Feedback Loop项目地址: https://gitcode.com/gh_mirrors/py/PyMAF
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考