当 AI 学会"因果":MoRight 如何让视频里的手推倒杯子
开场:一个推不倒的杯子
想象你在玩一款物理引擎糟糕的游戏。你操控一只手去推桌子上的杯子,手穿过杯子,杯子纹丝不动。手和杯子各自演绎着互不相干的轨迹——像两个平行宇宙的幽灵。
这不是夸张。这就是 2025 年之前大多数运动控制视频生成模型的真实水平。你给它一条运动轨迹,它就老老实实按轨迹搬像素——管你物理不物理,手穿过墙也照搬。
NVIDIA 的 Shaowei Liu 团队觉得这不对劲。他们 2026 年 4 月发表的论文 MoRight: Motion Control Done Right(arXiv:2604.07348)要解决两件事:让相机和物体运动解耦,让动作和后果之间有因果。论文名字里的 "Done Right" 带着一股"前人都做错了"的直率——这种直率在论文标题里不常见,值得拆开看看他们到底做对了什么。
第一层困境:相机和物体被同一根线拴着
先说解耦。现有方法把相机运动和物体运动塞进同一个"运动轨迹"信号里。这就像用一根油门线同时控制车速和方向盘——你想左转的时候整个画面都在左移,想加速的时候所有物体都在变大。
MoRight 的解法是双流架构:一个"规范流"在静态相机视角下处理物体运动,一个"目标流"处理用户想要的相机视角。两流之间通过 Transformer 自注意力层做信息交换——规范流告诉目标流"物体在往这边走",目标流告诉规范流"相机要这么转"。
关键设计是"注入再同步"(inject-then-synchronize):每一层 Transformer block 里,相机编码和轨迹编码先分别注入到两个流的特征里,然后两个流拼接起来做自注意力,让 token 互相 attend。这个过程在每一层重复,运动信息在潜空间里逐步跨视角转移。
这不是什么花哨的技巧,但很扎实。消融实验里,去掉规范视角锚点(只用动态相机视角)后,相机和轨迹误差都显著上升——规范流就像一个"不动点",让另一个流有所参照。
第二层困境:手推了,杯子为什么不动?
真正有意思的是第二件事——运动因果性。
MoRight 把所有前景物体的运动轨迹拆成两组:
- 主动运动(active):用户驱动的动作,比如手推杯子的那只手
- 被动运动(passive):动作的后果,比如被推走的杯子
训练时用了一个叫运动 dropout 的技巧:随机把主动或被动运动从输入里去掉,但监督信号还是完整的视频。也就是说,有时候只给模型看手的轨迹,让它脑补杯子的运动;有时候只给杯子的轨迹,让它反推手是怎么动的。
这个训练方式让我想起 BERT 的 masked language model——遮住一部分,让模型预测被遮住的部分。只不过这里遮的不是词,是因果链的一端。模型不能简单记忆轨迹,必须内化"手推→杯子动"这种因果关系。
推理时这就变成了两种模式:
- 正向推理(action → reaction):给手的运动,模型预测杯子怎么动
- 逆向推理(reaction → action):给杯子的运动,模型反推手是怎么推的
数据:用 VLM 切分因果
训练这种模型需要标注好"哪个是主动物体、哪个是被动物体"的数据。现实世界的视频不会自带这种标签。
MoRight 的数据流水线值得单独说:
1. ViPE 估计每帧深度图和相机位姿 2. AllTracker 提取稠密像素轨迹 3. 轨迹反投影到 3D,再投影回第一帧的规范视角 4. Qwen3(视觉语言模型)识别视频里的主动物体和被动物体 5. SAM2 做分割,生成主动和被动物体的 mask 6. 轨迹按 mask 归属到主动或被动组
另外,因为真实视频大多是单视角的,模型需要"同一场景不同视角"的配对数据。他们从静态相机视频出发,用相机控制视频到视频生成模型合成动态相机版本,造了 43K 配对视频。加上 76K 静态视角视频和 3.4K 来自 SyncMaster 的合成交互视频,凑成训练集。
这条流水线的意义在于:因果标签不是人标的,是 VLM 自动分的。如果 VLM 判断错了"哪个是主动物体",训练信号就有噪音。但论文没有报告这个误差有多大——这是个值得追问的空白。
数字:15 分钟一段视频的代价
MoRight 基于 Wan2.1-14B 预训练模型,只微调相机编码器、轨迹编码器和自注意力层。64 块 GPU 训练 15K 轮次,全局 batch size 16,学习率 3e-5。推理时采样 35 步扩散,一块 A100 生成一段视频大约 15 分钟。
性能方面,三个基准测试(DynPose-100K、WISA、Cooking)上:
- 可控性:相机旋转误差 4.55°(vs WanMove 4.12°,但 MoRight 不需要前景背景分离的特权轨迹)
- 因果推理:在 WISA 上物理常识分数(PC)最高,视频质量(FID/FVD)也最好
- 人类评估:53.5% 可控性、54.6% 运动真实度、55.9% 视觉真实度——而 ATI 和 WanMove 分别只有 18-25%
限制:诚实的失败清单
论文 4.7 节列了四种失败模式:
1. 错误因果推理:两个烤串合并成一个物体 2. 稀疏轨迹导致运动异常:手被遮挡时轨迹断了,模型猜不出意图 3. 物理一致性违反:物体在交互中消失 4. 幻觉内容:后面帧里多出一只手
还有相机运动太剧烈时整个交互动力学都会退化。这些限制很诚实——不是"我们的方法完美无缺",而是"这几种情况会崩"。崩的原因也清楚:训练数据里复杂交互少、轨迹稀疏时模型没有足够信号、扩散模型对长程一致性本来就弱。
这篇论文真正做对了什么
MoRight 的 "Done Right" 不是说它性能碾压一切——客观指标上它和 WanMove 差距不大。它做对的是把问题定义对了:
1. 解耦不是选项,是前提:相机和物体运动必须分开控制,否则用户没法用 2. 因果不是装饰,是核心:运动不只是位移,是"谁推了谁"的因果关系 3. 训练要逼模型推理:运动 dropout 强制模型内化因果,而不是记忆轨迹
这三条加起来,把"运动控制视频生成"从"像素搬运"升级成了"物理推理"。视频生成模型不再只是渲染器,而是要理解"动作会导致什么"。
逆向推理模式是这条思路的自然延伸——如果模型真的理解了因果,它应该既能正向预测也能逆向反推。这和 AlphaGo 既能下棋也能复盘是同一个道理:真正理解了规则,才能双向推理。
未解的问题
论文留了几个口子:
- VLM 自动标注因果角色的错误率没有报告——如果 Qwen3 把"杯子"标成主动物体,训练信号就反了
- 逆向推理的定量评估缺失——只展示了定性例子,没有"逆向推理准确率"这种指标
- 训练数据只有 3.4K 交互视频——相比 76K 静态视角视频,交互数据太少了,这可能是失败模式 1(错误因果推理)的根源
- 15 分钟一段视频的推理成本——实时交互场景(游戏、embodied AI)还用不了
一句话总结
MoRight 把视频生成从"按轨迹搬像素"升级成"理解动作和后果的因果关系"。运动 dropout 这个训练技巧——遮住因果链的一端让模型自己补——是整篇论文最值得记住的设计。它和 BERT 的 masked LM、MAE 的 masked autoencoder 一脉相承:遮住一部分信息,逼模型学会推理而不是记忆。
这个思路不只适用于视频生成。任何需要模型理解因果关系的场景——Agent 的动作规划、机器人的操作预测、自动驾驶的轨迹推理——都可以用"遮住因果链一端"来训练。MoRight 做了一个示范:在视频生成的具体场景里,这个原则怎么落地。
---
*论文链接*:arXiv:2604.07348 *项目页面*:research.nvidia.com/labs/sil/projects/moright *作者团队*:Shaowei Liu, Xuanchi Ren, Tianchang Shen, Huan Ling, Saurabh Gupta, Shenlong Wang, Sanja Fidler, Jun Gao(NVIDIA + UIUC)