AI视频生成走到今天,画面清晰度已经不是最大的瓶颈。
真正让创作者头疼的是运动控制。你想让镜头缓缓推进,画面里的人物跟着"飘"了;你指定物体从左走到右,镜头却莫名其妙跟着摇。镜头和物体的运动缠在一起,成了精细化控制绕不过的坎。
星宇智算AI视频工作台上线的运动解耦模块,针对的就是这个问题。
运动解耦到底在解什么
一段视频里的运动,本质上来自两个完全不同的源头。
一个是镜头运动——相机本身的位姿变化,行业里用6个自由度描述:三个轴向的旋转(俯仰、偏航、翻滚)加三个方向的平移。这是全局的、刚性的变换,影响画面里每一个像素。
另一个是物体运动——前景主体自身的位移、形变和动作。人从A点走到B点,车驶过街道,花瓣飘落,这些是局部的、非刚性的变化,只影响特定区域。
传统模型把这两种运动混在同一个隐空间里编码,模型"看到"的是最终的像素变化,至于哪些是镜头动的、哪些是物体动的,它并不区分。调一个参数,两边都变。
运动解耦要做的,就是把这两条通道从表征层面拆开,各自独立可控,再在生成阶段融合。
为什么值得单独做一个模块
可能有人会问:不就是控制运动吗,有必要搞这么复杂?
实际用过就知道有必要。目前主流工具在运动控制上普遍存在三个问题。
一是运镜精度不够。输入"镜头缓慢推进",模型给你的可能是忽快忽慢的变焦,甚至伴随画面边缘扭曲——因为模型没有显式的相机位姿概念,只是在"模仿"推进效果。
二是物体漂移。镜头运动时,前景物体的位置和形态容易不一致,上一帧还在左侧,下一帧就"跳"到中间——因为模型没有把物体轨迹和相机变换分开算。
三是前后景打架。想让镜头固定、只让物体动,或者物体不动、镜头环绕拍摄,模型经常做不到。两种运动耦合在一起,调一个就牵动另一个。
根源都是表征没有解耦。
技术实现:三层架构拆开运动
模块采用三层架构,思路与学术界前沿一致——TokenMotion的token解耦、OrthoMotion的正交注意力、WorldReel的场景流编码,核心都是把相机运动和物体运动分到不同通道。
第一层:运动表征层——统一语言描述两种运动
解耦的前提是统一表征。模块以光流为基础——光流描述每个像素的帧间位移,天然包含两种运动的叠加。
在此基础上引入3D场景流。和2D光流不同,场景流直接在三维空间编码:相机运动对应6-DoF位姿变换,物体运动对应独立的3D轨迹。这一步很关键——在2D平面上,物体向前移动和相机向前推进都表现为物体变大,数学上是一个不可识别的逆问题。只有升到3D空间,才能干净地把两者分开。
第二层:解耦注意力层——两条通道各算各的
有了表征,接下来是分别处理两种运动。
模块在DiT注意力机制中做了通道拆分。相机运动走几何通道——通过对旋转位置编码(RoPE)的相位进行保范旋转注入相机位姿,本质上是改变token间的相对位置,对应相机运动带来的全局视角变化。
物体运动走语义通道——通过交叉注意力中的门控值注入,把物体轨迹和形变作为条件引导对应区域生成,只影响前景,不干扰背景。
两条通道在注意力计算中保持正交,几何通道不会泄漏到语义通道,反之亦然,从机制上保证两种运动不会互相"串味"。
第三层:轨迹融合层——3D合成再投影回2D
两条通道计算完成后,需要融合成最终帧。
模块在3D空间完成合成:先根据相机位姿计算视角变化,再叠加物体3D轨迹,最后通过可微投影渲染回2D平面。光流作为中间桥梁——3D运动合成后先算出对应的2D光流场,再引导扩散模型生成。
好处是每一步变换都可解释、可追溯。你可以单独查看相机运动的光流分量、物体运动的光流分量,以及融合后的总光流,出问题能定位到具体哪一层。
实际能解决什么问题
说了这么多技术,最终要落到能用的功能上。
模块上线后,工作台在三个场景下的表现明显提升。
精确运镜。 用户可以通过参数或文本指定相机的6-DoF运动轨迹——比如"镜头以0.5米/秒速度向前推进,同时保持水平",模型会严格按指定位姿生成,不再出现忽快忽慢或意外旋转。
物体路径规划。 前景物体的运动可以独立指定。在首帧用框选标记物体,然后绘制运动路径——从左下角走到右上角,同时保持大小不变。镜头可以完全固定,也可以独立设置运镜,两者互不干扰。
复杂场景稳定性。 在多物体、大运镜的场景下,前后景运动一致性显著提升。之前容易出现的"物体漂移""背景扭曲""边缘撕裂"等问题大幅减少——每种运动都有自己的计算通道,不会在耦合状态下互相干扰。
最后
AI视频生成的竞争,正从"能不能生成"转向"能不能精确控制"。
运动解耦不是炫技,它解决的是创作者每天都会遇到的真实痛点。镜头和物体各走各的路,听起来简单,背后是从2D光流到3D场景流、从耦合注意力到正交双通道的一整套技术重构。
星宇智算把这套能力放进AI视频工作台,目标很明确:让运动控制从"碰运气"变成"指哪打哪"。