news 2026/8/18 15:56:06

复现HMMR论文训练:从下载5大数据集到运行do_train.sh的一站式实操教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
复现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-642561hmmr_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_DIRH36_DIRPENN_DIRTDPW_DIRMOSH_DIRHMR_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_kpe_lw_smpl等损失权重,以及freeze_phiprecomputed_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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 15:53:21

一副普通眼镜如何变成AI助手?OpenGlass 25元开源改造方案全解析

一副普通眼镜如何变成AI助手&#xff1f;OpenGlass 25元开源改造方案全解析 【免费下载链接】OpenGlass Turn any glasses into AI-powered smart glasses 项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass OpenGlass 是一个把任意眼镜变成 AI 智能眼镜的开…

作者头像 李华
网站建设 2026/8/18 15:52:24

用JSON定义游戏界面:FlatUI序列化功能完整上手教程

用JSON定义游戏界面&#xff1a;FlatUI序列化功能完整上手教程 【免费下载链接】flatui Efficient Immediate Mode UI for Games 项目地址: https://gitcode.com/gh_mirrors/flatu/flatui FlatUI 是 Google 开源的高效即时模式&#xff08;Immediate Mode&#xff09;游…

作者头像 李华
网站建设 2026/8/18 15:51:36

开发效率提升300%:这套SpringBoot3+Vue3脚手架让你的项目快速启动

项目介绍 基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统&#xff1b;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈&#xff0c;前端基于Vue3、T…

作者头像 李华
网站建设 2026/8/18 15:46:14

BilibiliDown使用指南:收藏夹300条内容一键落地的离线视频备份方案

BilibiliDown使用指南&#xff1a;收藏夹300条内容一键落地的离线视频备份方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/…

作者头像 李华
网站建设 2026/8/18 15:45:32

Python进阶 - sys模块 退出程序与异常信息获取

&#x1f44b; 大家好&#xff0c;欢迎来到我的技术博客&#xff01; &#x1f4da; 在这里&#xff0c;我会分享学习笔记、实战经验与技术思考&#xff0c;力求用简单的方式讲清楚复杂的问题。 &#x1f3af; 本文将围绕Python进阶这个话题展开&#xff0c;希望能为你带来一些…

作者头像 李华