微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 ReMoMask-2:当AI生成人体动作时,它到底在"抄"什么?

ReMoMask-2:当AI生成人体动作时,它到底在"抄"什么?

2026-10-01 18:01
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-01 18:01 • 科技行者

你有没有想过,让电脑生成一段"一个人绕圈走路"的动作视频,到底难在哪里?

听起来简单,做起来却是个大麻烦。人类动作有几百个关节协同工作,胳膊、腿、躯干各自有各自的节奏,还要跟文字描述严丝合缝地对上。更麻烦的是,很多描述是"长尾"的,比如"一个人一边后退一边顺时针滑行",这种句子在训练数据里可能压根没见过几次。这时候,纯靠模型自己"想象"出动作,效果往往很差。

于是有人想到一个办法:既然自己编不好,那就去"借鉴"别人的。这就是检索增强生成的思路,在生成之前先从一个动作数据库里找几个相似的例子出来参考。这篇来自悉尼大学和北京大学团队的论文,讲的正是这套"借鉴机制"该怎么设计才靠谱。它提出了两代方案,ReMoMask 和它的升级版 ReMoMask-2,而升级版解决的问题,恰恰是第一代方案自己都没意识到的一个深层漏洞。

先借鉴,还是先想好怎么用借来的东西

在这篇论文之前,检索增强的动作生成已经有一些代表性工作,比如 ReMoDiffuse,它靠文本和文本的相似度去间接找动作参考,再用扩散模型生成;还有 ReMoGPT,用跨模态的方式直接做文本和动作的匹配检索。这些方法确实比纯生成模型更擅长处理生僻描述,但研究者发现它们有两个说不清道不明的毛病。

第一个毛病是检索粒度太粗。

大多数方法只把整段动作压缩成一个全局向量去和文本对齐,完全忽略了人体动作其实是分层次的,胳膊有胳膊的动作逻辑,腿有腿的动作逻辑,"左手举起同时右脚踢出"这种非对称动作,光看全局特征根本分不清楚哪只手哪条腿在干什么。

第二个毛病是融合方式和动作结构不匹配。

现有方法要么简单地把检索到的信息拼接(concat)到生成网络里,要么用最普通的交叉注意力机制,但没人认真研究过,动作到底应该被表示成一条时间序列,还是一张"关节乘以时间"的二维网格,以及这两种表示分别配哪种融合方式才最有效。

作者做了个对照实验来验证这件事,见下表:

| 生成器 | 潜变量结构 | 融合方式 | FID↓ | Top1↑ |

|---|---|---|---|---|

| MoMask | 1D | 拼接 | 0.057 | 0.511 |

| MoMask | 1D | 交叉注意力 | 0.043 | 0.525 |

| MoMask | 2D | 拼接 | 0.049 | 0.518 |

| MoMask | 2D | 交叉注意力 | 0.036 | 0.536 |

FID 是衡量生成质量的核心指标(Frechet Inception Distance,数值越低说明生成分布越接近真实数据分布),Top1 是文本-动作匹配准确率,数值越高越好。

结果很清楚:二维结构配交叉注意力是最优组合。这不是巧合,这说明动作本来就该被当成一张"关节×时间"的网格来处理,硬把它拉平成一维序列,会丢掉很多结构信息。

这就好比你有一箱乐高积木,如果按"颜色+形状"两个维度摆放整齐,找起来又快又准;但如果你图省事把所有积木倒进一个长条盒子里排成一排,虽然每块积木都还在,但找一块"红色的方形积木"就得从头翻到尾。如果不保留这种二维结构,你等于是在用一维的方式去理解一个本质上二维的问题,信息没丢,但组织方式错了,检索和生成都会跟着受损。

基于这两个发现,作者提出了 ReMoMask 框架,用三个模块来分别解决这两个轴上的问题。

分层双向动量对齐:让检索既懂全局又懂局部

第一个模块叫 HBM

HBM(Hierarchical Bidirectional Momentum,分层双向动量对齐):一种对比学习方法,同时监督全局动作语义和局部身体部位语义与文本的对应关系,并用动量编码器扩大负样本规模来稳定训练。

具体做法是把一段完整动作拆成六个身体部位:左臂、右臂、左腿、右腿、脊柱、根节点,每个部位单独编码,再和文本做对比学习对齐。这样模型不仅知道"这段动作整体上是走路",还知道"左腿在做踢的动作,右臂在做摆动的动作"。

对比学习本身用的是 InfoNCE 损失

InfoNCE:一种常见的对比学习目标函数,让正样本对(真正匹配的文本和动作)的相似度远高于负样本对,从而学出有判别力的表征空间。

同时引入了动量编码器机制,用指数滑动平均的方式更新一套"影子"编码器参数,把它编码出来的历史样本存进一个队列里当作负样本库,这样负样本数量可以远超单个训练批次的大小,让对比学习更稳定。

效果如何?论文在 HumanML3D 数据集上把 HBM 和之前最好的方法 ReMoGPT 对比,文本到动作检索的 R@1(前一名命中率)从 11.00 直接跳到 18.49,几乎翻了一番。这就好比你去图书馆找书,以前十次里只有一次能一下找到对的书,现在接近两次就能找到,提升是实打实的。

拓扑结构化掩码:告诉模型"这里不能瞎猜"

第二个模块叫 TSM

TSM(Topology Structured Masking,拓扑结构化掩码):一种训练策略,根据文本和身体部位的语义相关度动态调整掩码概率,语义关联强的部位被保护起来少掩码,关联弱的部位被更激进地遮盖。

传统的掩码训练是随机的,不管这个身体部位跟文本描述关不关键,都有同样的概率被遮住让模型去猜。TSM 的思路是反过来:既然 HBM 已经算出了文本和每个身体部位的关联强度,那就让关联强的部位少被遮挡,关联弱的部位多被遮挡。

这样做的道理在于,如果一句话说的是"踢腿",那腿部动作就是核心语义锚点,应该被完整保留让模型学习如何围绕这个锚点组织全身动作,而不是让模型连锚点本身都要去瞎猜。

这就像老师批改作文,如果学生写的是命题作文"记一次难忘的旅行",老师会重点检查"旅行"相关的细节写得对不对,而对无关的语法小错睁一只眼闭一只眼。如果不做这种区分,把所有句子都同等严格地检查,学生反而搞不清楚这篇作文的核心到底要写什么,连最重要的部分都可能被改得面目全非。

语义时空注意力:三条信息各走各的门

第三个模块叫 SSTA

SSTA(Semantic Spatial-Temporal Attention,语义时空注意力):一种非对称的注意力融合机制,让查询(Query)只来自当前动作、键(Key)负责决定该关注哪里、值(Value)负责决定该合成什么内容,三者接收的信息种类刻意区分开。

这个设计挺有意思的地方在于,它没有把检索到的文本和动作信息一股脑塞进注意力模块,而是做了精细分工。Query 只由当前生成中的动作潜变量产生,保证注意力计算始终锚定在正在生成的动作结构上;Key 融合了当前动作状态和一个压缩过的语义信号(提示词、检索到的文本、检索到的动作三者拼接后过一层 MLP),决定"该往哪儿看";Value 则只融合当前动作和检索到的动作细节,决定"该合成什么",刻意把纯文本信息排除在 Value 之外,防止文本这种和动作数据"域"不同的东西直接污染合成内容。

这套设计像是餐厅后厨的分工:领班(Key)看菜单和顾客口味决定这道菜该往哪个方向做,但真正下锅炒菜(Value)的时候,用的是食材本身,不会把菜单纸也扔进锅里。如果不做这个区分,把菜单和食材混在一起处理,锅里可能会出现不该出现的"纸屑",也就是文本这种和动作表示不兼容的信息,直接干扰了动作细节的合成质量。

代际升级:检索到的东西,到底和生成的东西是不是一回事

讲到这里,ReMoMask 已经把两个结构一致性问题解决了:检索的粒度问题(用 HBM)和融合的兼容性问题(用 SSTA + TSM)。但作者又往前想了一步,发现还有第三个更隐蔽的问题没解决。

这个问题是:HBM 学到的对比语义空间,和动作生成器实际操作的潜变量空间,根本就是两个不同的空间。

检索到的动作参考活在一个专门为"区分匹配与不匹配"训练出来的对比空间里,而生成器操作的是一个专门为"重建动作"训练出来的 RVQ-VAE

RVQ-VAE(Residual Vector Quantized Variational Autoencoder,残差向量量化变分自编码器):一种把连续动作序列压缩成离散编码的模型,通过多层残差量化逐步逼近原始动作,常用于动作生成的底层表示。

潜变量空间。这两个空间从来没有在训练中真正"见过面",谁也不知道对方的几何结构长什么样。论文管这个叫检索-生成表示鸿沟。

这就好比你请了一位外语翻译来帮你谈生意,翻译很擅长判断"这句话是不是符合对方的意图",但他给你翻译过来的话,用的是他自己那套语法习惯,未必能直接套进你原本准备好的合同模板里。你的生成模块(合同模板)还得再花力气去理解翻译过来的东西,中间这层转换从没被专门训练过,靠的是生成损失"隐式"地去凑。如果不解决这个鸿沟,两个空间的几何结构可能完全对不上:论文里实测发现,语义空间和动作潜变量空间对同一批候选检索结果的排序,斯皮尔曼相关系数只有 0.09,前十名候选集合重合度只有 7.3%,这几乎等于两套排名毫不相干。

于是 ReMoMask-2 做了一件很干脆的事:不再让检索发生在语义空间里,而是直接把检索数据库搬进生成器自己的潜变量空间。

具体怎么搬?先用那个已经训练好、被冻结参数的 RVQ-VAE 编码器,把每段动作编码成量化之前的连续潜变量网格(叫 ze),再对这个网格做平均池化和归一化,得到一个检索用的"键"。这样构建出来的数据库,天然就活在生成器认识的那个几何空间里。

那文本查询怎么办?文本本身来自 CLIP

CLIP(Contrastive Language-Image Pretraining,对比语言-图像预训练):一种能把文本和图像/其他模态映射到同一个语义空间的模型,这里用来提供文本的初始向量表示。

编码器,这个空间和动作潜变量空间也对不上。论文的做法是训练一个极其轻量的查询投影器(只有大约157万参数),把 CLIP 文本向量映射进动作潜变量空间。

但这个投影器不是随便训的,而是用蒸馏的方式,让原来那个强大的 HBM 检索器当"老师",把它对候选集的排序偏好,通过 KL 散度的方式"教"给这个投影器。作者试了好几种蒸馏目标(KL散度、InfoNCE、均方误差回归),结果发现一个很反直觉的现象:跟老师的排名一致性最低的 KL 散度方案(一致性只有0.030),最终生成质量反而是最好的(FID 0.042);而一致性最高的 InfoNCE(0.051)和 MSE 回归(0.048),生成质量却分别只有 0.064 和 0.372,MSE 回归甚至差出十倍。

这说明什么?说明学生完全模仿老师的"标准答案"未必是好事,关键是要学到老师排序候选集时那种"有梯度的偏好",而不是死记硬背某一个最优答案。MSE 回归失败的原因也很直观:一句话可能对应很多种合理动作,强行让投影器只瞄准一个固定目标,会导致查询结果坍缩,论文测出这种坍缩后的检索集合只覆盖了正常情况下6.2%的数据库条目,相当于几乎所有不同的提示词都被喂进同一小撮样本里,参考价值大打折扣。

这套投影器加检索机制的效果如何?我们来看关键的对比表。

| 检索表示方式 | FID↓ | Top1↑ |

|---|---|---|

| 语义空间(HBM,第一代设计) | 0.109 | 0.503 |

| 语义空间,但文本流对齐到潜变量 | 0.101 | 0.507 |

| 量化后的离散编码 | 0.060 | 0.519 |

| **预量化连续潜变量(本文方案)** | **0.042** | **0.528** |

数字摆在这里,从0.109降到0.042,几乎是腰斩再腰斩。更值得注意的是,论文做了个拆解实验:单独把文本流搬进潜变量空间只带来0.008的提升,单独把动作数据库搬过去带来0.011的提升,但两者都搬过去以后,提升不是简单相加的0.019,而是0.067。这说明两股检索信息之间存在协同效应,只有两边都表达在生成器的几何空间里,效果才能真正叠加放大,任何一边留在原地都会拖累整体。

单阶段够不够:砍掉"精修"阶段反而更好

论文里还有一个挺有意思的发现,值得单独说说。

第一代 ReMoMask 沿用了很多动作生成模型的惯例,用两阶段流程:先用一个掩码 Transformer 生成粗略结果,再用一个残差精修网络(residual-refinement transformer)去修正细节。这种设计在 MoMask 等模型里确实有效,能把 FID 从 0.085 降到 0.046,提升了 0.039。

但作者给 ReMoMask-2 也接上这个精修阶段试了试,结果却是负向的:FID 从 0.042 反而恶化到 0.068。

为什么会这样?作者的解释是,当检索已经发生在生成器的潜变量空间里之后,第一阶段的粗略预测本身就已经把该修正的信息吸收进去了,精修阶段已经没有"系统性错误"可修了,它的更新反而变成了一种额外的干扰噪声。

这就像装修房子,如果你请的施工队本身手艺粗糙,那请个验收师傅二次修补墙面裂缝确实划算;但如果施工队已经是顶级工匠,墙面平整光滑,你还非要再派个人去"修补",那个人找不到真正的裂缝可修,为了显得有活干,反而可能在好墙上凿出新问题。如果不砍掉这个阶段,ReMoMask-2 就要为一个不再必要的环节付出额外的推理时间和潜在的质量损耗,这也是为什么论文最终选择把精修阶段整个拿掉,单阶段设计不仅生成质量更高,推理速度也从大约0.14秒降到0.05秒。

三大数据集上的成绩单

论文在 HumanML3D、KIT-ML、SnapMoGen 三个数据集上做了系统评测。检索方面,HBM 在三个基准上都拿到了文本到动作检索的最优结果;生成方面,我们直接看核心表格(节选自论文 Table 4,展示部分代表性方法):

| 数据集 | 方法 | FID↓ | Top1↑ |

|---|---|---|---|

| HumanML3D | MoMask | 0.046 | 0.521 |

| HumanML3D | ReMoMask(第一代) | 0.123 | 0.485 |

| HumanML3D | **ReMoMask-2** | **0.042** | **0.528** |

| KIT-ML | MoMask | 0.204 | 0.433 |

| KIT-ML | ReMoMask(第一代) | 0.562 | 0.404 |

| KIT-ML | **ReMoMask-2** | **0.138** | **0.457** |

| SnapMoGen | MoMask | 17.404 | 0.777 |

| SnapMoGen | ReMoMask(第一代) | 27.816 | 0.752 |

| SnapMoGen | **ReMoMask-2** | **13.174** | **0.788** |

在 HumanML3D 上,ReMoMask-2 用单阶段生成打赢了 MoMask 的完整两阶段方案;在 KIT-ML 和 SnapMoGen 上,它拿到了所有对比方法中最低的 FID。

论文还做了个用户研究,找了50多名参与者,用强制选择的方式问"哪个动作更真实"和"哪个动作更贴合文本描述"。第一代 ReMoMask 相对真实动作数据的偏好率达到42%,相对 MoMask 有67%的胜率,相对 ReMoDiffuse 有75%的胜率;在文本对应度上分别是47%、72%和86%。这些数字说明,人类评审员的直观感受和自动化指标的结论是一致的。

写在后面

读这篇论文的过程中,最让我意外的不是那些具体的模块设计,而是那个 0.09 的斯皮尔曼相关系数。

两个看似都在做"文本-动作匹配"的空间,排序结果几乎没有关联,这个数字提醒我一件容易被忽略的事:很多系统里看起来"接得上"的模块,实际上可能只是被损失函数强行捏合在一起,内部的几何结构从未真正对齐过。这种"表面兼容、内部错位"的问题,恐怕不只存在于动作生成这一个领域。

还有一个细节值得单独说:论文里那个 MSE 回归蒸馏失败的实验。0.372 的 FID,比什么都不做(no retrieval,0.055)还差了六倍还多。这不是一个小失误,而是一个很有教育意义的反例,它说明"让学生完全复刻老师的答案"这个听起来最直接的思路,在存在多对多映射关系的任务里反而是最危险的。这个教训,恐怕在很多知识蒸馏场景里都适用。

如果检索数据库里压根没有和查询相关的动作,这套机制还能撑住吗?论文自己也承认这是局限,当检索语料和查询分布脱节时,检索带来的收益会自然衰减。这个问题目前还没有答案,但已经足够让人好奇了。

Q&A

Q1:ReMoMask-2是什么?

A:ReMoMask-2是一种检索增强的文本生成人体动作模型,它把检索数据库直接建在生成器自己的潜变量空间里,让检索到的参考动作和生成器实际操作的表示保持一致,从而在HumanML3D、KIT-ML、SnapMoGen三个数据集上都取得了当前最优的生成效果。

Q2:ReMoMask-2和第一代ReMoMask相比有什么核心区别?

A:第一代ReMoMask的检索发生在单独训练的对比语义空间里,和生成器的潜变量空间不一致,存在表示鸿沟;ReMoMask-2把检索数据库直接建在生成器的预量化潜变量空间中,并用蒸馏方式训练轻量投影器对齐文本查询,同时去掉了残差精修阶段,实现单阶段生成且速度更快。

Q3:ReMoMask-2为什么要去掉残差精修网络?

A:论文实验发现,检索已经搬进生成器的潜变量空间后,粗略生成阶段本身就吸收了大部分需要修正的信息,残差精修阶段已经没有系统性错误可修,再接上反而会让FID从0.042恶化到0.068,因此单阶段设计效果更好、推理也更快。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-