
先问你一个问题。
如果你手里有一段视频,视频里一只小怪兽在蹦跳、扭动、张嘴,你也有这只怪兽的3D模型,但这个模型是静止不动的雕像。你想让这个雕像照着视频里的动作动起来,你会怎么做?
传统做法是找个动画师,给模型装骨骼,绑定蒙皮权重,再手动调整每一帧的姿势。这个流程可能要花上几天到几周。
那如果让AI来做呢?过去几年里,研究者们试过一种看起来很直接的思路:干脆让神经网络直接预测每个顶点在每一帧该往哪儿挪。视频给什么动作,网络就输出对应的顶点位移。听起来很合理,对吧,毕竟这是最没有假设、最灵活的做法。
但这里有个问题很少被戳破:一个普通的3D模型可能有几万甚至几十万个顶点,每一帧都要给每个顶点单独算一个三维位移,这个预测空间大得离谱。更麻烦的是,相邻的顶点明明应该一起动(比如整条胳膊),但网络并不知道这个常识,它是逐点预测的,结果就是关节容易扭曲、部件容易穿模、画面容易抖动。
这篇来自Roblox和UMass Amherst、TU Crete联合团队的论文BLARM,就是冲着这个痛点去的。他们提出了一个反直觉的思路:不去预测每个顶点怎么动,而是学一套"隐藏的骨骼",让整个模型的运动被压缩成几十个刚性变换,再用一套权重把这些变换"分配"给每个顶点。
这套思路听起来像是在向传统动画的骨骼绑定致敬,但骨骼是人工设计的,BLARM的这套"隐藏骨骼"是模型自己从视频里学出来的,而且不需要任何人工标注的骨架或蒙皮权重。
难点到底在哪里
先说清楚这件事有多难。
传统动画流水线里有一整套成熟工具:骨骼、笼子变形、蒙皮权重,这些东西的共同特点是把高分辨率的几何形状压缩成一个低维的控制空间。动画师只需要拖动几个关节,整个网格就跟着变形,而不用一个个去挪顶点。这套体系强大的原因在于,很多物体的运动本质上是低维的,一大片顶点会作为一个整体一起移动,比如一只手臂上的所有顶点。
但问题在于,这套体系依赖人工设计的骨架,而如果输入的是一个奇形怪状的生物、一个没有预设骨骼模板的物体,传统骨骼系统就很难套用。
近年有一类学习式的打骨骼方法,比如RigNet这样的工作,试图直接从几何形状预测骨骼和蒙皮权重。这类方法的问题是,它们主要依据物体的静态几何形状来猜测骨架,而不参考实际的视频动作。
这就好比你只看一个人站着不动的照片,去猜他跑步时膝盖会怎么弯,猜出来的骨架可能长得对,但未必真的贴合这个人实际的运动方式。如果视频里这个怪兽的某个部位有一种特殊的扭动方式(比如某种非常规的关节联动),仅从静止形状推断出的骨架大概率猜不中,因为这种运动特征根本没有体现在静态几何里。
另一条路是前面提到的直接预测顶点位移,这类方法的代表是ActionMesh、Mesh4D、Motion3-to-4这几个近期的工作。它们的优点是灵活,不需要设定任何骨架结构,理论上什么样的形变都能表达。但代价是维度爆炸和缺乏结构约束,导致时序抖动、部件纠缠这些问题反复出现。
BLARM想要的是一个中间地带:既不像固定骨架那样死板、脱离视频语境,又不像逐顶点预测那样杂乱无章、缺乏约束。
隐式骨骼的核心设计:把"怎么动"和"哪里动"拆开
BLARM的核心想法可以用一句话概括:把运动拆成两部分,一部分描述"整个物体在每一帧是怎么变形的",另一部分描述"每个顶点该跟着哪部分变形走"。
具体来说,模型会学习一组数量固定的隐藏运动分量,论文里设成31个非根分量加1个根分量,一共32个。每一帧,每个分量都会被解码成一个刚性变换(旋转加平移)。
刚性变换*:指一种只包含旋转和平移、不改变物体形状的变换,比如你拿起一本书转个方向、挪个位置,书本身没有被压扁拉伸。
这32个刚性变换会随时间变化,代表整个视频里物体运动的"基本词汇表"。而另一边,每个网格顶点会预先学到一组权重,决定这个顶点应该在多大程度上参与每个运动分量的变换。这组权重是固定不变的,不随时间改变。
这个设计的关键在于时间和空间被彻底解耦:时变的部分只有32个刚性变换,不随时间变化的部分是顶点和分量之间的关联权重。换句话说,模型只需要在每一帧决定"这32个抽象关节怎么摆",剩下的顶点具体怎么跟着动,是提前定好的分配规则来决定的。
蒙皮权重*:源自传统计算机图形学的线性混合蒙皮技术,指每个网格顶点受哪些骨骼影响、影响程度多大的一组数值,通常要求非负且加起来等于1。
这就好比你在指挥一支舞蹈队跳集体舞。如果你要求每个舞者都自由发挥、自己决定每一秒钟手脚该在哪个位置,那这支队伍大概率会乱成一锅粥,因为没有人知道该跟谁保持一致。但如果你先把舞者分成几个小组(比如"前排""后排""领舞"),每个小组共享同一套动作指令,只是各自的站位不同,那整支队伍看起来就会协调得多。你只需要在每一拍决定"领舞组这一拍该做什么动作",其他人跟着自己所属的组走就行了。如果不这样分组,你就得给每个舞者单独下达每一拍的指令,不仅指挥的工作量爆炸,而且很容易出现某个人手部动作和身体不协调这种局部错乱,这正是纯逐顶点预测方法容易出现的抖动和穿模问题。
论文的消融实验直接验证了这套设计的价值。如果去掉这套结构化表示,换成直接预测每个顶点的位移,衡量运动一致性的指标CD-M从7.15恶化到10.96,这是个不小的差距,说明结构化的骨骼表示确实比纯粹的逐点预测更能保证运动的连贯性。
architecture怎么把视频和形状拧到一起
光有这套运动表示还不够,模型得知道怎么从视频里"读出"这32个刚性变换该怎么变。
BLARM的流程分成两条主线:一条是几何编码,另一条是运动编码,最后再用蒙皮权重把两者拼在一起。
几何编码这一步,模型先从输入的静止网格上采样一万个表面点,喂给一个冻结的(不参与训练、参数固定)TripoSG形状编码器,得到密集的几何特征。但这些特征数量太多,不能直接当运动分量用,于是引入32个可学习的"查询向量",通过交叉注意力机制去"提炼"这些密集特征,压缩成32个几何感知的形变潜变量。
交叉注意力*:一种神经网络机制,让一组向量(查询)去"询问"另一组向量(键和值),从中提取相关信息,可以理解为让32个抽象的"探针"去几万个表面点里各自找到自己关心的那部分信息。
这一步做完之后,模型手里有32个token,每个token代表一个候选的运动区域,但这时候它们还只是"静态形状的总结",完全没看过视频,不知道物体实际怎么动。
接下来是运动编码,这是整个架构里最讲究的部分。BLARM把这32个几何token在时间轴上广播(复制)到每一帧,再叠加一个可学习的帧位置编码,让模型知道"现在是第几帧"。然后经过16层运动编码模块,每一层依次做三件事:先让这32个token去看当前帧的DINOv3视觉特征(跟视频对齐),再让32个token之间互相看一眼(同一帧内部件之间会不会互相牵制),最后让同一个token在16帧之间互相看一眼(保证同一个运动分量随时间变化是平滑的,不会一帧朝左一帧朝右)。
DINOv3*:Meta开源的一种自监督视觉特征提取网络,能从图像里抽取出语义丰富的特征,不需要标注数据训练。
这种"先看视频、再看同伴、再看历史"三步走的注意力设计,论文管它叫因子化时空注意力。为什么不干脆把所有帧、所有分量的token拼一起做一次全局注意力?论文给出了复杂度上的账:如果做完整的自注意力,计算量是随(帧数×分量数)的平方增长,而因子化之后,计算量变成分量数平方乘以帧数,加上帧数平方乘以分量数,这个复杂度低了不止一个量级。
这就好比一个公司开会,如果每次决策都要把全公司所有部门的所有员工拉到一个会议室里从头讨论到尾,效率极低。更合理的方式是分层开会:先各部门内部小范围碰头(对应"帧内空间注意力"),再让各部门负责人跨时间对齐进度(对应"跨帧时间注意力"),信息照样能传递到位,但会议室里同时挤的人数少了很多。如果不这样拆分开会,公司规模一旦变大(分量数或帧数增加),会议成本会以平方级别爆炸式增长,这正是完整自注意力在这里会遇到的麻烦。
论文里也给出了实测的推理速度,处理一段16帧的视频,BLARM只需要3.13秒,而ActionMesh要350秒,Mesh4D要55.33秒,Motion3-to-4要4.5秒。这个速度差距,很大程度上就来自这套因子化注意力设计省下的计算量。
蒙皮权重是怎么学出来的:没有标注,靠"运动相似的东西该长得像"这条规则
前面说完了怎么算出32个刚性变换,接下来的问题是,顶点和这32个分量之间的关联权重从哪来?
论文的答案是:这组权重完全靠训练学出来,训练数据里没有任何人工标注的蒙皮权重可以模仿,模型必须自己摸索出一套合理的分配方案。
具体做法是,对每个顶点,先算一个几何描述符(顶点坐标和法线经过位置编码再过一个多层感知机),再叠加一个冻结的PartField编码器提取的语义特征。
PartField*:一种预训练的3D特征场模型,能为网格的每个点提取出反映"这个点属于哪个部件"的语义特征,但本身不输出具体的分割标签。
这两种描述符拼在一起,再通过交叉注意力去看那32个运动分量(经过时间平均池化后的版本),算出每个顶点对32个分量的关注程度,最后用softmax归一化成非负、加起来为1的权重分布。
但光这样训练,模型很容易走捷径,比如让所有顶点都均匀地依赖所有32个分量,这样虽然能凑出一个还过得去的动画结果,但完全丧失了"结构化"的意义,32个分量变成了32份高度重叠冗余的信息,跟直接逐点预测没什么本质区别。
论文为此设计了两个额外的正则项。第一个是熵正则化,逼着每个顶点的权重分布尽量集中在少数几个分量上,而不是雨露均沾地摊在32个分量上。第二个是运动感知的对比学习损失,核心思路是:运动轨迹相似的顶点,应该学到相似的蒙皮权重分布;运动轨迹差异大的顶点,权重分布应该被拉开。
对比学习*:一种训练方式,通过构造"正样本对"(应该相似的例子)和"负样本对"(应该不同的例子),让模型学会把相似的东西编码得接近、不同的东西编码得疏远。
这套对比学习的采样策略挺讲究,论文特意区分了"简单负样本"(空间上离得远、运动也不一样的顶点对)和"困难负样本"(空间上离得近,但运动方向完全不同的顶点对)。为什么要专门挑困难负样本?因为真正容易出错的地方恰恰是那些相邻但该独立运动的区域,比如一只手掌心和手背,几何上紧挨着,但翻转手腕的时候两者的局部运动轨迹可能差异很大。
这就像你在整理一个家庭的合影相册,如果只按"这两张照片里的人脸长得像不像"来分类,你可能会把一对双胞胎兄弟的照片错分到一起,即便这两人经常做出完全不同的表情和动作。真正靠谱的分类规则得同时参考"这两人平时的行为模式像不像",而不只是长相。困难负样本的设计就是在提醒模型:光看位置近不代表该归为一类,还得看运动方式是否一致。如果不特意挑出这些困难样本,模型很可能被大量简单样本"喂饱",对真正容易混淆的边界情况视而不见,蒙皮权重预测在关节交界处就容易出问题。
消融实验证实了这两个正则项都不能省。论文表格显示,如果同时去掉PartField特征、熵正则化和对比损失,模型会退化成几乎只用1个非根分量,也就是说32个分量的容量完全没被用起来,CD-M指标飙到13.53。单独去掉对比损失也会造成类似的坍缩现象,说明运动感知对比学习是防止"分量退化成摆设"的关键一环。
三大损失函数的配合:让重建、稀疏、连贯三件事同时发生
BLARM的训练目标由三部分组成,各自负责不同的事情。
第一部分是轨迹重建损失,最直接地要求预测出来的顶点位置和真实动画的顶点位置尽量对齐。这里有个小设计:论文用了一种"焦点式"加权方式,让误差大的点(通常是动作剧烈的区域)在损失里权重更高,避免损失被大片静止不动的背景区域主导。
这个设计的道理很朴素。想象你在给一个班级的考试卷打总分,如果班上大部分学生做的都是同一道送分题(对应网格里大片静止的顶点),而只有几道难题真正拉开差距(对应剧烈运动的关节部位),那么单纯按平均分排名,其实反映不出谁真正学得好。你得给难题额外加权,才能让分数真实体现出学生的水平差异。如果不做这个加权,模型可能靠"把静止的部分做对"就能拿到不错的损失值,反而在真正难啃的关节运动上偷懒。
第二部分是前面提到的熵正则化,逼迫权重分布稀疏。
第三部分是运动感知对比损失,逼迫运动相似的顶点学到相似的权重。
三者的权重设置分别是3、0.001、0.3,重建损失的权重明显更大,说明它是主导信号,另外两项是辅助性的结构约束。
实验结果:三个数据集全面领先
论文在三个数据集上做了评测:ActionBench(128个16帧序列)、Motion80(80个变长序列)、以及Consistent4D的野外场景(没有真值网格,需要先用图生3D模型重建出静态网格)。
评测指标分两类,几何类指标衡量预测出的网格和真值网格有多接近,包括CD-3D(逐帧对齐后的倒角距离)、CD-4D(整体序列级别的一致性)、CD-Motion(点对点的运动轨迹保真度);外观类指标衡量渲染出来的视频看起来像不像,包括LPIPS、CLIP相似度、FVD、DreamSim。
FVD*:Fréchet Video Distance的缩写,一种衡量生成视频和真实视频在时序动态上是否接近的指标,对画面抖动、部件闪烁这类时序瑕疵特别敏感。
在ActionBench上,BLARM的CD-3D是1.71,CD-4D是3.07,CD-Motion是7.15,全部优于对比的三个基线方法(Mesh4D、Motion3-to-4、ActionMesh)。外观指标上,FVD达到426.72,远低于第二名Mesh4D的787.38,几乎是腰斩的差距。
在Motion80上,趋势保持一致,BLARM的CD-3D是1.93,CD-4D是3.46,CD-Motion是8.72,FVD是482.50,均为最优。
在Consistent4D的野外测试里,因为没有真值网格,只报了外观指标,BLARM的LPIPS是0.12,FVD是890.96,DreamSim是0.18,都是最好的,只有CLIP相似度上和ActionMesh基本持平(0.84对0.85)。
论文还做了一个有意思的可视化实验:把每个运动分量分配一种颜色,然后按顶点的蒙皮权重给网格上色。结果显示,学出来的颜色分区往往和真实的物理部件对应得上,比如某只怪兽的脚部会被涂成一种颜色,翅膀的羽毛区域会被涂成另一种颜色,而这一切都是在完全没有骨骼标注的情况下自发学出来的。
局限性:相邻但该独立运动的部位仍是软肋
论文自己也坦白了两个局限。
第一个局限恰好呼应了前面讨论对比学习设计时提到的那个困难场景:如果两个区域视觉上非常相似、位置又紧挨着,但实际运动方向不同,模型有时候还是会分配错误的权重,导致这两个部件的运动被错误地纠缠在一起。论文里给了一个例子,钢铁侠模型的手臂关节处,抬手动作有时候会牵连到不该动的躯干部分。
第二个局限是,这套方法假设输入的静态网格的拓扑结构本身能够支撑目标动作。如果网格的几何形状和视频里的目标动作根本不匹配(比如网格没有明显分割出四肢,但视频里动作需要四肢独立摆动),模型的预测就可能出现明显的形变错误。
这两个局限其实指向同一件事:蒙皮权重的学习终归还是依赖几何和语义特征的相似性作为线索,而运动本身的复杂度一旦超出这条线索能覆盖的范围,模型就会犯错。
这个方向上还能往前推进的工作,比如更进一步利用视频里跨帧的运动线索来辅助权重预测,或许能缓解这个问题,但论文目前给出的方案已经在效率和效果之间找到了一个相当扎实的平衡点。
Q&A
Q1:BLARM是什么?
A:BLARM是Roblox等机构提出的一种从单目视频驱动3D网格动画的方法,核心是用一组可学习的隐藏刚性运动分量加上固定的顶点蒙皮权重来表示动画,不需要预设骨骼或人工标注。
Q2:BLARM和直接预测顶点位移的方法比有什么优势?
A:BLARM把运动压缩成32个刚性变换加蒙皮权重的结构化表示,相比直接逐顶点预测位移,在运动一致性指标CD-M上明显更优(7.15对10.96),同时推理速度更快,16帧视频仅需3.13秒。
Q3:BLARM训练时需要人工标注的骨骼或蒙皮权重吗?
A:不需要。BLARM通过轨迹重建损失、熵正则化和运动感知对比学习三种损失联合训练,蒙皮权重完全由模型自主学习得到,不依赖任何预设骨架或人工标注数据。
好文章,需要你的鼓励
论文提出动态民主同意框架,融合伯奈斯公关理论与系统动力学反馈模型,分析政治支持率如何受滚雪球增长、选民饱和、感知延迟和制度信任侵蚀四种机制影响,揭示宣传投放为何会失效甚至反噬。
阿里巴巴团队推出E-Commerce Bench基准,让18个顶尖AI模型经营虚拟网店一年,揭示AI在长周期自主商业决策、供应商谈判防骗、现金流管理及经验学习方面存在巨大能力差异与隐藏短板。
本文解读ReFlowSET框架,它通过系统评测多款图像压缩器选出最适合雷达与光学图像的编解码器,并从零训练轻量生成模型完成雷达图到光学图的翻译,在多个数据集上取得领先的感知与分布质量表现。
阿里团队提出DICS方法,通过评估图片、问题、答案三者的内在一致性给训练数据打分,结合自适应采样策略筛选高质量子集。仅用25%的LLaVA-1.5-665K数据训练即超越全量数据效果,并在600万样本规模验证下用不到四分之一数据逼近官方InternVL3-8B性能。