Dai-Wenxun/MotionLCM
[ ECCV 2024 ] MotionLCM: This repo is the official implementation of "MotionLCM: Real-time Controllable Motion Generation via Latent Consistency Model"
MotionLCM – 实时可控的人体运动生成
是什么
- MotionLCM 是一个研究代码库,能够从文本提示 以及 可选的控制信号(例如特定关节的期望轨迹)生成三维人体运动序列。它基于一种 潜在一致性模型(扩散模型的快速替代方案),应用于运动潜在扩散主干网络,实现 单步或少数几步推理,从而支持实时生成。
核心思想
- 潜在一致性模型(LCM):用单次(或少数几次)确定性更新替代大量扩散步骤,显著缩短运行时间。
- Motion ControlNet:一个条件网络,将显式的控制线索(初始运动或关节轨迹)注入潜在空间,保持可控性的同时维持快速推理。
- Motion VAE 与 Motion 潜在扩散(MLD):该流程首先学习人体运动的紧凑潜在表示(VAE),并在该空间中构建扩散模型;MotionLCM 随后对这一扩散模型进行微调,以实现快速采样。
你可以用它做什么
- 运动重建 – 将真实运动编码到潜在空间并解码回来,可用于评估表示质量。
- 文本到运动 – 输入自然语言描述(例如:"一个人跳跃并挥手"),即可获得合理的三维运动。
- 运动控制 – 提供某个关节(骨盆、手腕等)的稀疏轨迹,让模型生成符合该路径且尊重文本提示的全身运动。
- 渲染 SMPL 网格 – 将生成的关节轨迹转换为完整的 SMPL 身体网格,并使用 Blender 进行渲染。
快速开始(概览)
- 创建 conda 环境(
python=3.10,安装requirements.txt)。 - 安装系统工具 –
ffmpeg(用于生成 GIF)和git-lfs。 - 下载资源 – 通过提供的
prepare/*.sh脚本下载 GloVe 嵌入、T5 文本编码器、SMPL 模型和预训练检查点。 - 准备 HumanML3D 数据集(或使用迷你演示数据集)。仓库期望的数据集布局请参见 README。
- 运行演示:
输出(GIF +# 重建 python demo.py --cfg configs/vae.yaml # 文本到运动 python demo.py --cfg configs/motionlcm_t2m.yaml --example assets/example.txt # 使用 ControlNet 的运动控制 python demo.py --cfg configs/motionlcm_control_s.yaml.pkl文件)将保存在experiments_*_test/.../demo_<timestamp>目录下。 - 渲染 SMPL – 安装
chumpy,然后运行python fit.py --pkl assets/example.pkl获取网格数据,并使用附带的 Blender 脚本生成图像或视频。
训练自己的模型
- 根据目标任务(VAE、MLD、MotionLCM、ControlNet)更新 YAML 配置文件(
configs/*.yaml)。 - 运行相应的训练模块,例如:
python -m train_vae --cfg configs/vae.yaml python -m train_motionlcm --cfg configs/motionlcm_t2m.yaml - 评估也遵循相同模式,使用
python -m test --cfg <config>。
它所处的位置
- 属于新兴的 文本条件人体运动合成 领域,与 MotionDiffuse、TEMOS 和 OmniControl 等工作类似。
- 通过利用 LCM,MotionLCM 将边界推向 交互式实时应用(如虚拟化身、游戏动画、机器人仿真)领域,其中延迟至关重要。
资源
- 论文(arXiv:2404.19759) – https://arxiv.org/abs/2404.19759
- YouTube / Bilibili 上的演示视频(请参见徽章栏中的链接)。
- Hugging Face Space 提供在线演示。
- 包含更多视觉结果的项目网页。
许可证
- 仅限非商业用途(详见
LICENSE)。依赖库保留其各自许可证。
以上所有细节均直接取自仓库的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目