UniMate快速开始:从requirements.txt到首次推理的5个关键步骤
【免费下载链接】UniMate[SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons项目地址: https://gitcode.com/GitHub_Trending/un/UniMate
UniMate 是 SIGGRAPH Asia 2026 论文《One Unified Model to Animate Diverse Skeletons》的开源实现:一个统一的骨骼动画生成模型,用一段文本提示词即可为任意拓扑的骨架(人形、四足、鸟类、海洋生物、昆虫乃至刚体机械)实时生成动作,无需针对每个骨架重新训练。本文将带你完成 UniMate 快速开始的全流程:从安装 requirements.txt 依赖,到跑通首次文本生成动作推理,只需 5 个关键步骤。
1. 克隆仓库与一键环境安装:conda 环境创建步骤
所有组件(数据处理、渲染、训练、推理)共用同一个 conda 环境,依赖清单完整定义在 requirements.txt 中,基于 Python 3.10 + CUDA 12.4。克隆仓库:
git clone https://gitcode.com/GitHub_Trending/un/UniMate cd UniMate按官方推荐的 4 条命令安装环境:
conda create -n unimate python=3.10 -y conda activate unimate pip install "setuptools<81" pip install -r requirements.txt --no-build-isolation💡 两个细节别踩坑:
- 必须先安装
setuptools<81再加--no-build-isolation,因为 Motion 动画库依赖旧版pkg_resources,较新的 setuptools 已不再提供该模块(详见 requirements.txt 头部注释)。- 依赖中预装了对应的
bpy(Blender Python 模块,锁定bpy==4.0.0),无需单独安装 Blender 即可跑渲染相关流程。
安装完成后,可用任意一条推理命令验证环境是否就绪(会提示缺少模型/数据集,而不是包缺失,即为成功)。
2. 下载 UniML3D 数据集:获取动作特征
推理的骨架条件(T-pose 与拓扑)来自数据集本身,因此训练时使用的dataset/features/<dataset>/目录必须存在。UniMate 配套了UniML3D数据集——13,006 条文本配对的标准化动作序列,覆盖多种骨骼拓扑:
数据获取方式:
- 原始资产:通过 Hugging Face Hub 的
hfCLI 下载 Mixamo、Objaverse-XL 绑骨资产(仓库已内置下载脚本 run_download.sh,如bash data_process/scripts/run_download.sh mixamo)。 - 处理后的训练/推理特征(
dataset/features/):项目方正在准备开放发布,发布前可直接使用官方发布的 checkpoint 配套数据布局。 - Truebones ZOO 动物动作为商业资产包,需自行购买后放入
dataset/raw/truebones/Truebone_Z-OO/(说明见 data_process/README.md)。
3. 获取训练好的 Checkpoint:选择推理权重
推理从训练输出目录启动,需要三样东西:
| 文件 | 作用 |
|---|---|
config.json | 解析后的训练配置,推理时读取以重建模型 |
dataset_stats.npy | 归一化统计量,推理时复用 |
checkpoints/checkpoint_step_*.pt | 模型/EMA/优化器状态 |
项目方已在 Hugging Face 上发布了 UniMate 的预览 checkpoint(README 的 Checkpoints 徽章可直达),目录结构与训练输出一致,可直接作为exp_dir使用。
如果你要自己训练,配置文件位于 configs/ 目录,共 8 个(4 种数据组合 × 2 种模型变体,均为 60 帧)。例如 uniml3d_60frames_graph_adaln.json 使用全量 UniML3D 数据、graph 注意力 + adaLN 文本条件。单卡训练只需一条命令:
accelerate launch -m unimate.training.train --config configs/uniml3d_60frames_graph_adaln.json4. 编写测试用例:文本生成动作的 prompt 配置
文本条件推理的核心是一个测试用例 JSON:键为<object_type>-<case_id>(object_type 必须存在于数据集中,case_id 是自由命名的输出文件标签),值为动作描述 prompt。创建test_cases.json:
{ "Dog-walk": "a dog walks forward at a steady pace", "Dragon-takeoff": "a dragon flaps its wings and takes off" }case_id会直接出现在输出文件名里(motions/Dog-walk-rep_0-0.npy),起个好名字会让结果一目了然。
5. 首次推理:运行 UniMate 文本生成动作命令
在仓库根目录执行:
python -m unimate.inference.sample \ --exp_dir outputs/uniml3d_60frames_graph_adaln \ --test_cases_json test_cases.json \ --num_repetitions 3或使用封装好的脚本 run_sample_motion_text.sh——它会自动激活 conda 环境、挑选显存最充裕的 GPU:
bash scripts/run_sample_motion_text.sh outputs/uniml3d_60frames_graph_adaln test_cases.json关键参数速查
| 参数 | 说明 |
|---|---|
--exp_dir | 训练/发布 checkpoint 输出目录 |
--test_cases_json | 自定义 prompt 文件;省略则自动枚举数据集 eval 划分 |
--cfg_scale | 无分类器引导强度(≥1.0,默认读取训练配置) |
--num_repetitions | 每个用例生成的样本数 |
--seed | 固定噪声,保证结果可复现 |
--only_save_motion | 跳过 MP4 渲染,只输出.npy动作特征 |
输出结果在哪里
每次运行在samples/下生成:
motions/<case_id>-rep_<r>-<i>.npy:动作特征(T, J, 12);animations/<case_id>-rep_<r>-sample<i>_fk.mp4:骨架渲染视频;animations/<object_type>_tpos.png:作为条件的 T-pose;captions.json:每个.npy对应的 prompt 索引。
推理入口完整实现在 unimate/inference/sample.py,常用参数均可通过python -m unimate.inference.sample --help查看。
进阶:同一个模型免费解锁的 3 种玩法
推理跑通后,无需任何额外训练即可切换模式(三者互斥,且都需要--cfg_scale > 1.0):
- 动作补间(Motion in-betweening):固定关键帧、生成中间过渡,
KEEP_FRAMES="0,-1"可自动填充首尾姿态之间的一切; - 文本引导动作编辑:
--keep_joints "Hips,Spine,Neck,Head"锁定下半身,用新 prompt 重新生成上半身动作; - 动作扩展(Motion expansion):把多段 prompt 列表串联成长动作,
--expand_overlap控制衔接帧数。
对应脚本分别为 run_sample_motion_inbetween.sh、run_sample_motion_edit.sh、run_sample_motion_expand.sh,任意脚本带-h可查看完整选项。生成的.npy还可以交给数据流水线 Stage 5(run_animate_motion.sh)驱动原始网格,导出带动画的 GLB/FBX,完成从文本到可交付动画资产的最后一步。
🎉 至此,UniMate 快速开始的全部 5 个步骤已完成:环境安装 → 数据集 → checkpoint → 测试用例 → 首次推理。祝你的骨架动起来!
【免费下载链接】UniMate[SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons项目地址: https://gitcode.com/GitHub_Trending/un/UniMate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考