PyMAF项目全解:ICCV‘21 Oral单目3D人体姿态与形状回归HMR工具有多强大?
2026/8/23 13:49:02 网站建设 项目流程

PyMAF项目全解:ICCV'21 Oral单目3D人体姿态与形状回归HMR工具有多强大?

【免费下载链接】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是一个面向单目 3D 人体姿态估计与人体网格恢复(HMR)的开源 PyTorch 项目,出自 ICCV 2021 Oral 论文《PyMAF: 3D Human Pose and Shape Regression with Pyramidal Mesh Alignment Feedback Loop》。只需一张普通照片或一段视频,它就能回归出完整的 3D 人体姿态、体型形状(SMPL 参数)与相机位置,并直接渲染出贴合真实图像的 3D 人体网格。对于想快速上手人体姿态回归、复现论文或在此基础上做二次开发的同学,这是一个功能完整、代码清晰的参考实现 🚀

📌 一分钟了解 PyMAF 能做什么

PyMAF 的核心任务可以概括为一句话:从单张 RGB 图像回归出 SMPL 人体模型的姿态、体型和相机参数

  • 单目输入:一张照片或一段视频即可,无需深度传感器或多目相机
  • 完整 3D 输出:SMPL 姿态(72维)、体型(10维 beta)、相机参数
  • 网格恢复:输出可直接用于渲染的人体 3D 网格顶点
  • 视频支持:内置多人跟踪,能处理视频中多人交叉、遮挡的场景
  • 双任务:同时支持 2D 关键点定位评估与 3DPW 3D 姿态评估

它还有一个进阶版本 PyMAF-X(TPAMI 2023),在 SMPL-X 全身模型上进一步提升了 UV 对齐质量。

🔍 核心原理:金字塔网格对齐反馈循环

PyMAF 的命名来自Pyramid ofMesh-AlignedFeatures。整个网络是一个"预测—对齐—反馈"的迭代结构,这也是它精度领先的关键:

网格对齐特征提取(MAF)

网络先粗预测一版 SMPL 姿态,把人体网格投影回 2D 图像,再从网格顶点位置采样图像特征图上的特征(即"mesh-aligned features"),送进回归器进行下一轮修正。这一过程迭代多次(默认 3 次,见配置MODEL.PyMAF.N_ITER),让网格与真实人体逐步对齐,如同"金字塔"般逐层逼近。

实现位于 models/maf_extractor.py,其中MAF_Extractor类会加载降采样后的 SMPL 网格结构(data/mesh_downsampling.npz),沿网格顶点金字塔逐层提取特征并降维。

残差式迭代回归

回归器Regressor采用残差学习:每一轮只预测姿态、体型、相机的增量,叠加到上一轮结果上再送入 SMPL 前向计算,保证迭代过程稳定收敛。相关代码见 models/pymaf_net.py 中的RegressorPyMAF两个类。

IUV 辅助监督:让网格"贴合"像素级更紧

除了姿态和体型,PyMAF 还引入 DensePose 风格的IUV 回归辅助监督:把图像每个像素映射到人体网格的 UV 纹理坐标,等价于预测"每个像素属于网格哪个位置",从而获得像素级的对齐监督。实现见 models/iuv_predictor.py 中的IUV_predict_layer(U、V、部件索引、UV 索引共 4 个分支)。

模型总览

输入图像 → ResNet-50 骨干 → 反卷积特征图 ├─ 网格对齐特征(MAF)提取 ├─ 21×21 空间网格特征 └─ 迭代回归器 ×3 轮(残差修正) → SMPL 前向 → 姿态 / 体型 / 相机 / 3D 网格

骨干与结构配置均可在 configs/pymaf_config.yaml 中找到,例如BACKBONE: res50MLP_DIM、损失权重LOSS.*等。

🚀 快速上手:3 步跑通单目 3D 人体姿态演示

PyMAF 官方提供了可直接运行的图像/视频 demo,无需自己写推理代码。

第 1 步:准备运行环境

需要 Python 3.8 与 PyTorch 1.9.0(CUDA 11.1 验证通过):

conda create --no-default-packages -n pymafx python=3.8 conda activate pymafx 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" pip install -r requirements.txt

第 2 步:获取必要文件

一条命令拉取网格降采样数据与 DensePose UV 数据:

bash fetch_data.sh

此外还需手动准备:

文件说明
SMPL 模型(SMPL_*.pkl)需从官方渠道申请,放入data/smpl
预处理数据 / final_fits从 SPIN 等渠道获取
PyMAF 预训练权重放入data/pretrained_model/

第 3 步:运行 Demo

单张图片输入

python3 demo.py --checkpoint=data/pretrained_model/PyMAF_model_checkpoint.pt \ --img_file examples/COCO_val2014_000000019667.jpg

视频输入(单人 / 多人均可):

python3 demo.py --checkpoint=data/pretrained_model/PyMAF_model_checkpoint.pt \ --vid_file examples/dancer.mp4

示例素材已内置在仓库 examples/ 目录下:单张测试图、单人舞者视频dancer.mp4和多人视频flashmob.mp4。多人场景的跟踪由 multi_person_tracker_yolov8.py 提供,配合utils/pose_tracker.py完成逐帧平滑。

📊 评估与训练:如何验证效果、复现论文

评估命令速查

# COCO 2D 关键点定位评估 python3 eval_coco.py --checkpoint=data/pretrained_model/PyMAF_model_checkpoint.pt # 3DPW 3D 姿态评估 python3 eval.py --checkpoint=data/pretrained_model/PyMAF_model_checkpoint.pt --dataset=3dpw

COCO 评估只需额外下载coco_2014_val.npz放入data/dataset_extras/即可,流程非常轻量。

两阶段训练策略

PyMAF 采用论文中的两阶段训练,入口为 train.py:

# 阶段一:Human3.6M 单数据集训练 CUDA_VISIBLE_DEVICES=0 python3 train.py --regressor pymaf_net --single_dataset --misc TRAIN.BATCH_SIZE 64 # 阶段二:2D+3D 混合数据集继续训练 CUDA_VISIBLE_DEVICES=0 python3 train.py --regressor pymaf_net --pretrained_checkpoint path/to/ckpt.pt --misc TRAIN.BATCH_SIZE 64

💡 官方强烈建议:使用 EFT 生成的标注训练可显著提升 baseline 效果,兼容标签文件已在项目公告中放出,详见 README 顶部的 Update 说明。

训练配置(学习率、损失权重、批大小等)集中在 configs/pymaf_config.yaml,例如KP_2D_W: 300POSE_W: 60PART_WEIGHTS: 0.3(24 个 DensePose 部件加权)。训练过程可通过 TensorBoard 监控./logs目录。

损失函数设计

PyMAF 的监督是多路组合的,各权重同样在 YAML 中可调:

损失作用默认权重
KP_2D / KP_3D2D/3D 关键点回归300
POSE_WSMPL 姿态60
SHAPE_W体型 beta0.06
PART_WEIGHTSDensePose 24 部件0.3
POINT_REGRESSION_WEIGHTSUV 回归0.5

🗂️ 项目结构导览

目录内容关键文件
models/网络结构pymaf_net.py(主网络)、maf_extractor.py(MAF)、iuv_predictor.py(IUV 头)、hmr.py(baseline)、smpl.py(SMPL 前向)
datasets/数据与推理mixed_dataset.py(混合训练集)、coco_keypoint_dataset.pyinference.py(测试封装)
core/训练基础设施base_trainer.py/trainer.py(训练器)、cfgs.py(配置解析)、train_options.py
utils/工具集renderer.py(网格渲染)、pose_tracker.py(视频平滑)、densepose_methods.py(DensePose 标签转换)、transforms.py
configs/配置pymaf_config.yaml
根目录入口脚本demo.py、train.py、eval.py、eval_coco.py、fetch_data.sh

✨ 总结:谁适合使用 PyMAF?

  • 3D 姿态 / HMR 方向的研究者:ICCV 2021 Oral 的完整开源实现,MAF 机制 + IUV 监督是精读"人体网格恢复"论文代码的绝佳样本
  • 想快速出效果的开发者:3 步跑通 demo,图像、视频、单/多人场景开箱即用
  • 需要强 baseline 的项目:配合 EFT 标签训练,可得到一个精度更高的 HMR baseline

相比传统"图像→SMPL 参数"的一次性回归,PyMAF 的网格对齐反馈循环让预测的 3D 人体与输入图像在像素级别逐步对齐——这正是它"强大"的底层原因。clone 仓库(https://gitcode.com/gh_mirrors/py/PyMAF)后,跟着上文的三步流程即可开始你的单目 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询