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 进行渲染。

快速开始(概览)

  1. 创建 conda 环境(python=3.10,安装 requirements.txt)。
  2. 安装系统工具 – ffmpeg(用于生成 GIF)和 git-lfs。
  3. 下载资源 – 通过提供的 prepare/*.sh 脚本下载 GloVe 嵌入、T5 文本编码器、SMPL 模型和预训练检查点。
  4. 准备 HumanML3D 数据集(或使用迷你演示数据集)。仓库期望的数据集布局请参见 README。
  5. 运行演示:
    # 重建
    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
    
    输出(GIF + .pkl 文件)将保存在 experiments_*_test/.../demo_<timestamp> 目录下。
  6. 渲染 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;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目