复现HMMR论文训练:从下载5大数据集到运行do_train.sh的一站式实操教程
复现HMMR论文训练:从下载5大数据集到运行do_train.sh的一站式实操教程
【免费下载链接】human_dynamicsProject for paper "Learning 3D Human Dynamics from Video"项目地址: https://gitcode.com/gh_mirrors/hu/human_dynamics
想复现CVPR 2019论文《Learning 3D Human Dynamics from Video》(简称HMMR)的训练流程,却被繁琐的数据集下载和TFRecord转换劝退?这篇HMMR论文训练实操教程整理了从环境搭建、5大数据集下载,到执行do_train.sh启动训练的完整路径,帮你少踩坑、快速跑通官方训练代码。项目源码位于gh_mirrors/hu/human_dynamics,训练说明见 doc/train.md,全程只需跟着本文一步步操作即可。
HMMR是什么?一张图看懂3D人体动力学模型
HMMR(Human Motion and Recurrent Reconstruction)来自伯克利团队,核心目标是从一段普通视频中恢复人体的3D姿态、形状和运动轨迹。它把经典的HMR单帧重建扩展到时序上,引入时序编码器(Temporal Encoder)和"幻觉"模块(Hallucinator),让模型能同时预测过去、现在和未来的3D人体运动。
上图就是论文的完整系统架构:输入视频帧经过ResNet提取特征phi,再送入时序模块,最终输出逐帧的3D人体参数(SMPL姿态与形状),配合L2D(2D关键点损失)、L3D(3D监督)和对抗先验L_adv prior进行优化。想深入理解每个模块,可以翻看 src/models.py 和 src/trainer_sequence_fc.py。
复现HMMR训练前,先把运行环境搭好
官方代码基于Python 3.5 + TensorFlow 1.8 + PyTorch 0.4,并且只支持GPU(论文实验环境为CUDA 9.0 + Titan Xp/1080 Ti),建议提前准备好显卡和对应版本的驱动。核心步骤只有三步:
第一步:拉取代码并创建虚拟环境
git clone https://gitcode.com/gh_mirrors/hu/human_dynamics cd human_dynamics virtualenv venv_hmmr -p python3 source venv_hmmr/bin/activate pip install -U pip pip install numpy pip install -r requirements.txt第二步:安装外部依赖(渲染和人体检测用)
cd src/external sh install_external.sh该脚本会自动安装Neural Mesh Renderer,并拉取AlphaPose/PoseFlow的fork版本(跑demo提取视频中人物轨迹时必需)。完整依赖列表见 requirements.txt。
第三步:下载预训练模型
wget http://angjookanazawa.com/cachedir/hmmr/hmmr_models.tar.gz && tar -xf hmmr_models.tar.gz解压后把models目录放在项目根目录,训练和TFRecord生成都会用到里面的hmr_noS5.ckpt-642561与hmmr_model.ckpt-1119816。
HMMR训练数据集下载清单:5大数据集一次理清
复现训练共涉及5个数据集,其中3个用于训练、1个可选、1个用于评估。下表是完整清单:
| 数据集 | 用途 | 说明 |
|---|---|---|
| Human3.6M | 训练(3D监督) | 提供3D关节标注,但受版权限制不再提供Mosh SMPL真值 |
| Penn Action | 训练(2D监督) | 户外运动视频,含2D关键点标注 |
| Mosh数据(CMU + JointLimits) | 训练(对抗先验) | 仅限非商业科研使用 |
| InstaVariety | 训练(可选) | 官方开源的Instagram运动视频数据集 |
| 3DPW | 评估 | 野外3D人体数据集,用于验证模型 |
其中InstaVariety是HMMR论文自建的大规模数据集:作者爬取了92个运动相关的Instagram标签、共28,272个视频,覆盖跳舞、骑车、跑步、滑雪等动作(上图即为示例)。项目提供了视频列表 datasets/instavariety/insta_variety_train.txt 和 insta_variety_test.txt,还附带一键下载脚本 download_insta_variety.py:
python download_insta_variety.py --savedir /path/to/save此外还有一个可选数据Vlog-people(上图为生活vlog场景示例),视频ID清单在 datasets/vlog/vlog_ids.txt。建议先下载UPenn和Human3.6M,InstaVariety和Vlog可后补,每个数据集都请遵守其各自的许可协议。
用prepare_datasets.sh把数据集转成TFRecord
训练前,所有数据集都必须转换成统一的TFRecord格式(每个视频一个文件,内含图像帧、关键点标注、预计算的2048维HMR特征phi等,格式说明见 doc/datasets.md)。转换工作全部由 prepare_datasets.sh 统一调度:
第1步:创建TFRecord输出目录
mkdir ~/hmmr/tf_datasets/第2步:修改 prepare_datasets.sh 中的路径变量,把OUT_DIR、H36_DIR、PENN_DIR、TDPW_DIR、MOSH_DIR、HMR_MODEL等替换成你的实际路径。
第3步:按脚本注释逐条执行。脚本里每个数据集对应一条命令,建议逐条取消注释、分别运行,不要一次性全部放开:
- Human3.6M:先运行预处理 src/datasets/h36/read_human36m.py,再执行
src.datasets.h36_to_tfrecords_video - UPenn:运行
src.datasets.upenn_to_tfrecords_video(train和test各一次) - InstaVariety:运行
src.datasets.video_in_the_wild_to_tfrecords - Mosh:运行
src.datasets.smpl_to_tfrecords(CMU和jointLim各一次) - 3DPW:先运行 src/datasets/threedpw/compute_neutral_shape.py 计算中性模型,再执行
src.datasets.3dpw_to_tfrecords_video
转换完可以用可视化脚本检查数据是否正确:
python -m src.datasets.visualize_train_tfrecords --data_rootdir ${OUT_DIR} --dataset insta_variety⚠️ 注意:Human3.6M 的 Mosh 数据因授权问题已不再公开,因此你无法100%复现论文原版模型,但数据仍保留3D关节标注,官方也提供了在此设置下重新训练的模型权重。
一键运行do_train.sh启动HMMR训练
TFRecord准备就绪后,训练就变得非常简单。先编辑 do_train.sh,把脚本开头的两个路径改成你的实际路径:
DATA_DIR='/home/jason/tf_datasets_phi_shard_oldaugmin40_toes' # 改成你的TFRecord目录 PRETRAINED_HMR='/home/jason/hmmr/models/hmr_noS5.ckpt-642561' # 改成你的模型路径脚本默认使用的训练参数与论文一致:--datasets h36m,penn_action,insta_variety、--batch_size=8、--T 20(时序长度20帧)、--num_conv_layers 3,并开启--do_hallucinate幻觉模块。随后直接运行:
sh do_train.sh训练日志和模型会写入logs_release目录(可在 src/config.py 中通过--log_dir调整)。若中途中断想断点续训,把do_train.sh中被注释的--load_path ${LP}一行打开,填入之前的日志目录即可。
训练监控与常见问题排查
用TensorBoard实时监控训练是官方反复强调的一步:将TensorBoard指向训练日志目录,重点观察加载的图像是否正确、损失曲线是否正常下降。训练时记得在 src/config.py 里核对e_lw_kp、e_lw_smpl等损失权重,以及freeze_phi、precomputed_phi等关键开关。
新手最容易踩的几个坑:
- 路径不匹配:
DATA_DIR写错或TFRecord目录结构不符合<tfrecords_dir>/<dataset_name>/<split>规范,训练启动即报错。 - 版本不兼容:TensorFlow 1.x 与新版2.x差异巨大,务必使用官方要求的1.8版本。
- 显存不足:batch_size为8且T=20时显存占用较高,可适当调小
--batch_size。 - 数据集不完整:缺了Mosh数据会导致对抗先验部分无法工作,可加
--mosh_ignore跳过。
训练完成后,可用 src/evaluation/eval.py 在3DPW、UPenn、Human3.6M的测试集上评估模型,具体命令与官方指标对照见 doc/eval.md。
结语
到这里,你已经走完了复现HMMR论文训练的全流程:环境搭建 → 5大数据集下载 → TFRecord转换 →do_train.sh一键训练。虽然HMMR的代码基于较老的TensorFlow 1.x,但作为从视频学习3D人体动力学的经典工作,其"时序编码 + 幻觉预测"的思路至今仍值得学习。跟着这篇教程动手跑一遍,你对3D人体重建的训练管线会有更直观的理解。祝训练顺利,早日跑出你想要的3D人体模型!🎉
【免费下载链接】human_dynamicsProject for paper "Learning 3D Human Dynamics from Video"项目地址: https://gitcode.com/gh_mirrors/hu/human_dynamics
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
