AI编舞

打字就能让人一直动下去:30M 参数的动作模型开源了,一张 RTX 3060 四小时训完,还能中途换指令

2026年11月14日1 次阅读
打字就能让人一直动下去:30M 参数的动作模型开源了,一张 RTX 3060 四小时训完,还能中途换指令
AI 编舞 · 动作生成

3分钟看懂:11 月 13 日上架的这个东西是什么

11 月 13 日,Hugging Face 上出现了一个叫 PartLock-CMU 的仓库。作者署名「やきますく(Yakimasuku)」,是一位独立研究者,不是大厂团队。仓库里放的是完整的一套东西:生成器权重、分词器权重、训练代码、本地实时演示页面,许可证是 Apache 2.0。

它做的事用一句话说清楚:你打一行英文,它给你一段 3D 人体骨架动作,而且不会停。

这件事听着像已经有很多了,但真正动手做过 3D 动画的人会知道,过去这类模型有两个让人难受的地方:一是「片段式」——你输入一句话,它吐 5 秒动画,结束,想要下一段得重新生成再手动接;二是「许可脏」——大部分开源动作模型建在 HumanML3D 或 AMASS 上,那两个数据集的条款写着仅限研究用途,商业项目碰不得。

PartLock-CMU 这两个问题都正面回答了:它用滑动窗口一直生成下去,你随时可以改指令;它只用 CMU Motion Capture Database 训练,而 CMU 的条款明确写了「可以把数据包含在商业销售的产品里,但不能转售数据本身」。

它解决的第一个问题:动作不能中途改

以前的工作流是这样的:写 prompt → 生成一段 → 不满意 → 改 prompt → 再生成一段 → 两段拼起来 → 发现接缝处人物突然抽一下 → 回 DCC 软件里手 K。

PartLock 的做法是把「上下文」变成可滑动的。生成器是一个 8 层、宽 512、8 个注意力头的 decoder-only Transformer,上下文窗口是 64 步,大约 8.5 秒,而且这个窗口会一直往前滑,所以理论上可以无限生成。

更关键的是文本是怎么进去的:CLIP ViT-B/32 的文本嵌入被加到每一个位置上,而不是只在开头喂一次。所以你在第 3 秒把 walk 改成 jump,模型看到的不是「一段新任务」,而是「接下来的每一步都带着 jump 这个提示」,动作会顺滑过渡,不会硬切。

按模型卡的说法,新指令在下一个 4 帧步生效——30fps 下就是 0.13 秒。

它解决的第二个问题:许可

这一点值得单独说,因为它决定了这东西能不能进真实项目。

作者在模型卡里写得很直白:训练数据只有 CMU Motion Capture Database,2308 段片段、约 9.9 小时,全部左右镜像翻倍,按原始片段划分 90/5/5,镜像副本始终跟着原片段走,不会跨集泄漏。他特别声明:没有使用任何 HumanML3D 或 AMASS 的数据或权重(代码里几个共享模块的注释提到过 HumanML3D 实验,但只用了模型类和辅助函数)。

CMU 数据库的原始条款是:「本数据可免费用于研究项目。你可以将本数据包含在商业销售的产品中,但不得直接转售本数据,即使经过转换也不行。」

也就是说:用它生成的动画可以进商业项目,但你不能把这个模型包一层当数据卖。 这个边界对游戏、动画、虚拟制片团队来说是可以接受的——比「仅限研究」宽得多。

技术账:为什么它能跑得比实时还快

整个系统被拆成两半,都很小:

  • 分词器 7.5M 参数:因果分层 VQ。每 4 帧压成 7 个 token——1 个全局码(码本 4096)加 6 个部位码(码本各 128),分别对应躯干、头、右臂、左臂、右腿、左腿。编码器和解码器都只看过去,这是能流式的前提。
  • 生成器 30.5M 参数:8 层 Transformer,RoPE 位置编码,上下文 64 步,classifier-free guidance 取 s=4(训练时 10% 样本用空文本)。

动作表示沿用 MotionStreamer 那套 272 维逐帧特征(根节点速度与朝向、22 个 SMPL 顺序关节的位置、速度、6D 旋转),30fps。

实测数字在模型卡上:RTX 3060 12GB 上,一个 4 帧步耗时 35–38 毫秒。实时阈值是 133 毫秒(4 帧 ÷ 30fps),所以有大约 3.5 倍余量。训练也不贵:分词器 2 小时,生成器 75 分钟收敛到最佳验证损失,含数据转换的整条流水线大约 3 小时 50 分钟,一张 3060 跑完。

重建精度方面,分词器在验证集上的整体位置误差 57.4 毫米、全局旋转误差 9.9 度——部位越靠外越差,手臂 67–68 毫米、14.2 度,躯干最好 33.2 毫米。

作者也老实说明了一句:CMU-only 的模型没有标准 text-to-motion 基准,这些数字不能直接和 HumanML3D 上训练的模型对比。

对编舞和动画的人意味着什么

模型卡给的可用词表里有 salsa dance、boxing、kick、cartwheel、jump、walk backwards and turn、Mickey sneaking walk 这些。也就是说,「让角色跳一段萨尔萨」是它能力范围之内的事,这在编舞预演、舞蹈游戏原型、短视频动作参考这类场景里,已经足够当草稿用。

但必须把边界说清楚:它只认 CMU 动作描述那套短句。作者自己测了 20 个 CMU 里没有的新动作,全部近乎原地不动。想在一条指令里混两件事(比如「一边挥手一边走」)通常会把动作大部分吃掉,正确姿势是分时段切指令。

所以它不是「文字编舞工具」,更像是「动作草稿的实时阀门」——你手里得先有一个大致合理的动作意图,它能立刻给你看得见的身体。

怎么用:四步跑起来

第一步,确认硬件。需要 NVIDIA GPU 且装好 CUDA。模型卡是在 RTX 3060 12GB 上测的。

第二步,拉仓库装依赖。四个依赖:torch、numpy、transformers、safetensors。权重很小,生成器加分词器一共约 157MB。

git clone https://huggingface.co/Yakimask/PartLock-CMU && cd PartLock-CMU
pip install -r requirements.txt

第三步,起本地实时页面:

python live/live_server.py   # 然后打开 http://localhost:8765

页面是日文的,几个按钮对照:生成 = 生成,一時停止 = 暂停,最初から = 重开(清空上下文),文章の強さ = 文本强度(也就是 CFG 系数)。服务器只预生成 0.8 秒,所以按下按钮后大约 0.6 秒能看到新指令的效果。Windows 上可以双击 live/start_windows.bat。

第四步,要成品就导出文件:

python generate.py --sec 4 --out motion.npz "walk" "Wave" "run/jog" "jump"

每条 caption 用 4 秒,按顺序接成一段连续动作。输出的 .npz 是 30fps:positions 形状 (T,22,3) 世界坐标(米,y 向上,SMPL 关节顺序)、rotations (T,22,3,3)、root_xz 骨盆在地面的轨迹、prompt 每帧用的指令、parents 骨架父子关系。数值四舍五入到 0.001(位置即 1 毫米)。

适用场景:谁现在就该去试

  • 游戏和原型开发:需要一堆不重样、能连续播放的 NPC 或背景动作,懒得搭状态机。
  • 动画预演:分镜阶段要快速看「这段走位配这个动作对不对」,不想等渲染。
  • 编舞/舞蹈内容的前期参考:想要一段能立刻看见的肢体草稿,再拿去给真人舞者或手 K 细化。
  • 教学和研究:整套训练流水线开源,一张消费级卡四小时能复现,用来做动作生成课的例子很合适。

不适用场景:哪些人先别折腾

  • 要精确表演的:它给的是 22 关节骨架和旋转,重定向到你的角色 rig 是你自己的活,手指、面部、道具交互一概没有。
  • 要中文指令的:文本编码器是 CLIP,只支持英文。
  • 要 HumanML3D 级别表现力的:词表外的动作基本不动,复杂组合会塌。
  • 没有 NVIDIA 显卡的:实时服务端的 CUDA 图路径是硬要求,Mac 和纯 CPU 跑不动演示页。

避坑:模型卡里已经写明的几个坑

  • run 会掉速:单独写 run,跑约 2 秒后会慢到 0.5 m/s。要持续跑请用 run/jog,能维持约 2.2 m/s。
  • 一句话里塞两个动作会废:wave while walking 这种通常只剩一点点动作,正确做法是按时间切段。
  • 别指望零样本泛化:作者测了 20 个新动作,全部近乎静止,这不是调参能救的,是数据域限制。
  • 骨架长度会漂:CMU 受试者体型不同且数据没有归一化到统一身体,同一段动作里骨骼长度可能略有变化。
  • 大小写无所谓:Run 和 run 结果一样,CLIP 分词器会转小写。
  • run_cmu.py 的发布版改动没跑通全流程:作者只把路径改成了命令行参数,那份副本没有端到端重跑过,自己重训时留意。

成本与时间:这套东西到底多贵

  • 训练:一张 RTX 3060 12GB,分词器 2 小时 + 生成器 75 分钟,含转换约 3 小时 50 分钟。
  • 推理:单步 35–38 毫秒,实时余量约 3.5 倍;显存需求按 12GB 卡测的,模型本身只有 157MB。
  • 商用:Apache 2.0,代码和权重都能商用;数据侧受 CMU 条款约束(可进商业产品,不可转售数据)。CLIP ViT-B/32 是运行时下载,遵守它自己的许可。

行动建议

如果你只是想看看效果:今天就能做完——装四个依赖、起本地页面、打 walk 然后改成 salsa dance,两分钟内知道这东西值不值得放进你的流程。

如果你是想在项目里用:先想清楚你要的动作在不在 CMU 那 2308 段里。在,它就是目前许可最干净、最省算力的实时方案之一;不在,把它当成一个可训练、可改的底座,而不是成品。

如果你想复现或改进:code/run_cmu.py 一条命令跑完转换 → 分词器 → 预处理 → 生成器,作者把训练配置和超参都写在模型卡里,这是少见的「能四小时跑完的完整动作生成流水线」。

参考来源

  • 一手仓库与模型卡(Apache-2.0,2026-11-13 创建):https://huggingface.co/Yakimask/PartLock-CMU
  • 模型卡全文(数据、结构、指标、局限):https://huggingface.co/Yakimask/PartLock-CMU/raw/main/README.md
  • CMU Motion Capture Database 与使用条款:http://mocap.cs.cmu.edu/
  • 第三方报道(2026-11-13,与本篇事实一致):https://artrealmai.com/article/partlock-cmu-open-real-time-text-to-motion-commercial-weights
  • 第三方报道(2026-11-13):https://neyrolearn.cloud/news/yakimask--partlock-cmu/

评论

0 条已公开
登录或注册后可以参与评论。

正在加载评论...