几何先验驱动视频生成:从3D一致性困境到Geometry-then-Appearance新范式
最近在尝试用视频扩散模型生成一些动态场景时,总感觉哪里不对劲。生成的单帧画面可能很惊艳,但帧与帧之间,物体的形状、大小、位置,甚至光影,都像喝醉了酒一样飘忽不定。你明明想生成一个稳定旋转的物体,结果它却在画面里“抽搐”和“闪烁”。这背后的问题,其实不是画面不够“好看”,而是生成的世界缺乏一个稳固的“骨架”——也就是我们常说的3D几何一致性。
传统的视频扩散模型,无论是基于图像模型扩展,还是直接训练的视频模型,其核心逻辑大多是“逐帧生成,再想办法对齐”。它们擅长捕捉纹理、颜色和短时运动模式,但在理解物体作为一个三维实体在空间中的连续变化时,往往力不从心。这导致生成的视频更像是一系列精美但关联松散的图片幻灯片,而非一个连贯、可信的动态世界。
而“用3D几何先验驱动视频扩散”这个思路,正是在尝试解决这个根本问题。它不再把视频生成看作一个纯粹的2D像素预测任务,而是先为整个视频序列构建一个隐含的、一致的3D场景表示(几何先验),再基于这个稳固的“骨架”去生成每一帧的“皮肉”(外观)。简单说,它的工作流变成了“先定骨架,再长血肉”(Geometry-then-Appearance)。这种方法生成的视频,物体在三维空间中的运动、形变和遮挡关系会自然得多,因为它从一开始就遵循了物理世界的几何规则。
1. 为什么“逐帧对齐”治标不治本,而“几何先验”能治本?
要理解几何先验的价值,我们得先看看主流视频扩散模型面临的“一致性困境”是怎么来的。
1.1 传统视频扩散的“阿喀琉斯之踵”:缺乏空间锚点
大多数视频扩散模型,无论是通过帧间注意力(Inter-frame Attention)还是3D卷积/Transformer,其优化目标都是最大化所有帧在像素空间或特征空间的联合似然。模型会努力让相邻帧看起来相似,但这种“相似”是统计意义上的、基于2D图像特征的。
问题在于,一个物体在三维空间中旋转时,它在每一帧2D图像上的投影(外观)会发生剧烈变化。模型没有“物体是刚体”这个概念,它只能看到像素块在移动和变形。为了保持“相似”,模型可能会采取两种策略:
- 过度平滑:让物体运动幅度变小,避免外观剧烈变化,导致视频动态感不足。
- 内容漂移:在不同帧中,用不同的纹理细节去“拟合”运动,导致物体表面花纹、材质闪烁不定。
这两种策略都无法产生真正几何一致的运动。就像一个没有骨骼的橡皮人,你可以捏出各种形状,但无法让它做出连贯、合理的肢体动作。
1.2 几何先验:为生成过程提供一个“不变”的参考系
引入3D几何先验,本质上是为生成过程引入了一个超越2D像素的、更高维的约束。这个先验可以是一个隐式的3D场景表示(如NeRF、3D高斯泼溅),也可以是一组显式的3D参数(如相机轨迹、物体姿态)。
它的核心作用是为视频中的每一个像素点,在三维空间中找到一个“锚点”。无论相机怎么动,这个锚点在3D空间中的位置是相对固定的。生成模型的任务,就从“凭空猜下一帧像素”变成了“根据3D锚点和当前视角,渲染出对应的2D外观”。
这个转变带来了几个关键优势:
- 运动一致性:物体的运动由3D空间中的轨迹(如刚体变换、形变场)直接决定,因此跨帧的运动必然是平滑、合理的。
- 视角一致性:物体在不同视角下呈现的外观,都源于同一个3D表示,因此纹理、材质自然保持一致,不会闪烁。
- 物理合理性:可以更容易地融入物理约束(如碰撞检测、重力),因为计算是在3D空间进行的。
注意:这里说的“几何先验”不一定是一个精确的CAD模型。在生成式任务中,它更多是一个从数据中学到的、能够表征场景几何结构的隐式表示,甚至在推理时可以根据文本或图像提示动态生成。
2. Geometry-then-Appearance:一套新的视频生成范式
“先几何,后外观”不是一个具体的模型,而是一种设计范式。理解这个范式,比记住某个模型架构更重要。我们可以将其拆解为三个核心阶段。
2.1 阶段一:从输入中“蒸馏”或“生成”3D场景表示
这是整个流程的基石。根据不同的输入条件(如文本描述、单张参考图、多视图图像、甚至是一段不一致的初始视频),我们需要得到一个对应的3D场景表示。
- 基于文本/单图生成3D:这是目前最活跃的方向。利用大规模预训练的2D扩散模型(如Stable Diffusion)作为“老师”,通过分数蒸馏采样(Score Distillation Sampling, SDS)或其变体,优化一个3D表示(如NeRF),使其从各个视角渲染出的2D图像都与文本描述匹配。代表性工作有DreamFusion、Magic3D等。在视频生成中,这个3D表示就成为了贯穿始终的几何先验。
- 从视频中重建3D:如果有一段真实视频(哪怕是不一致的生成视频),可以使用运动结构恢复(SfM)、多视角立体视觉(MVS)或最新的单视频3D重建方法,反推出一个粗糙的3D场景。这个重建结果可以作为先验,去引导一个新的、更一致的视频生成过程。
- 动态3D表示:对于动态场景,我们需要的是4D表示(3D空间+时间)。这可以是一个形变场(Deformation Field),描述每个3D点如何随时间运动;也可以是一系列时序关联的3D表示。这方面的研究如Dynamic NeRF、4D Gaussian Splatting正在提供更多工具。
2.2 阶段二:基于几何先验,规划相机轨迹与场景动态
有了3D场景表示,我们就有了一个可以“游览”的虚拟舞台。接下来需要决定“怎么拍”(相机轨迹)和“舞台上发生什么”(场景动态)。
- 相机轨迹控制:这是赋予视频镜头语言的关键。我们可以指定或让模型生成一条平滑的相机路径(如环绕、推进、平移)。由于有3D场景,渲染任意相机视角在理论上都是可行的,这保证了视角变换的极度流畅。
- 场景动态注入:如果场景是静态的,那么视频就是纯粹的“环物展示”。要生成动态内容(如物体旋转、开门、人物走动),我们需要在3D表示中定义动态部分。这可以通过在3D空间定义运动场、为特定物体赋予动画参数(如旋转速度、移动路径)来实现。几何先验确保了这些动态在3D空间中是自洽的。
2.3 阶段三:利用外观扩散模型进行多视角、多帧的纹理“渲染”
这是将3D几何“翻译”成最终2D视频帧的步骤。此时,扩散模型的任务发生了根本变化。
传统视频扩散:噪声 + 条件(文本、首帧) -> 直接预测所有帧的像素。 几何驱动扩散:噪声 + 条件(文本、3D几何先验、当前帧的相机参数) -> 预测当前帧的外观。
具体来说,对于要生成的每一帧:
- 根据当前时间戳
t和预设的动态,确定3D场景的状态(例如,物体旋转了30度)。 - 根据当前帧的相机参数,将3D场景投影(或光栅化)得到一个几何缓冲区(Geometry Buffer),可能包含深度图、法线图、遮蔽信息等。
- 将这个几何缓冲区(作为强条件)与文本提示、噪声潜变量一起,输入到一个图像扩散模型中。
- 扩散模型基于几何缓冲区所定义的“形状轮廓和空间关系”,去“填充”符合文本描述的纹理和光照,生成该帧图像。
由于每一帧都共享同一个3D几何源,并且扩散模型接收了精确的几何指引,最终生成的各帧外观自然保持了极高的一致性。
3. 核心实现技术与关键抉择
要将上述范式落地,需要在技术栈上做出一系列选择。不同的选择,决定了方案的复杂度、效果和适用场景。
3.1 3D表示的选择:隐式场 vs. 显式表示
| 表示类型 | 代表技术 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 隐式场 | NeRF (Neural Radiance Fields) | 渲染质量高,视图连续性好,内存效率高(存储网络参数)。 | 训练和渲染慢,难以编辑,动态场景建模复杂。 | 对视觉质量要求极高的静态或简单动态场景生成。 |
| 显式表示 | 3D高斯泼溅 (3D Gaussian Splatting) | 渲染速度极快,支持实时交互,易于编辑和动画化。 | 内存占用较大(存储大量高斯参数),在极度稀疏或复杂纹理区域可能效果不佳。 | 当前更受青睐,适合需要快速迭代、动态控制或实时预览的视频生成流程。 |
| 混合表示 | 网格+纹理,点云+特征 | 直观,易于与传统图形管线集成。 | 通常需要从隐式场或多视图重建得来,生成质量依赖重建精度。 | 需要与下游游戏引擎、仿真环境集成的应用。 |
当前趋势:由于3D高斯泼溅在速度上的巨大优势,越来越多的新工作开始以其作为核心的3D表示,用于构建几何先验。
3.2 外观生成模型的选择:适配与改造
直接用预训练的2D图像扩散模型(如SDXL)作为“外观生成器”是常见起点,但需要对其进行改造以接受几何条件。
- 条件注入方式:
- 控制网络(ControlNet)风格:将深度图、法线图等几何缓冲区作为额外输入,通过一个并行的编码网络将其特征注入到扩散模型UNet的各个层中。这是最主流且有效的方式。
- 交叉注意力(Cross-Attention):将几何特征与文本特征拼接或分别处理,通过注意力机制让模型同时关注文本和几何信息。
- 特征拼接(Feature Concatenation):直接将几何缓冲区的特征图与扩散模型潜变量在通道维度拼接。
- 模型训练策略:
- 微调(Fine-tuning):在现有图像扩散模型上,使用“(几何条件,文本)-> 图像”配对数据继续训练,使其学会尊重几何输入。
- 从头训练:如果对生成风格有特殊要求,或几何条件非常复杂,可能需要从头训练一个扩散模型,但这需要海量数据和算力。
3.3 动态建模:如何让3D场景“动”起来?
这是几何驱动视频生成中最具挑战性的一环。静态3D场景的生成已相对成熟,但如何生成合理、多样的动态,仍是前沿问题。
- 基于物理的动画:为3D表示中的物体赋予刚体/柔体物理属性,通过仿真生成运动。这能保证运动的物理正确性,但往往不够“有趣”或“可控”。
- 学习运动先验:从大量4D数据(如动态扫描数据集、电影)中学习物体和场景的典型运动模式。在生成时,从一个运动潜变量中解码出形变场。这种方法能生成更自然、更符合认知的运动,但数据获取困难。
- 文本/音频驱动:用额外的模态(如详细的运动描述文本、音乐、语音)来控制动态。例如,文本提示“一个人缓慢地挥手”,需要先解析出“挥手”这个动作,再将其映射到3D人体姿态序列上,最后驱动3D人体模型运动。
4. 从理论到实践:一个简化的操作推演
虽然完整的SOTA系统非常复杂,但我们可以勾勒一个简化的、概念性的操作流程,来理解如何动手尝试。
4.1 环境与工具准备
假设我们想基于“一个正在旋转的陶瓷花瓶”这个文本生成视频。
- 3D生成工具:选择使用基于3D高斯泼溅的生成工具,如
gaussian-splatting-3d-generation(假设项目名)。你需要配置好它的环境,通常包括PyTorch、CUDA以及一些特定的3D渲染库。 - 条件图像扩散模型:需要一个支持深度或法线图控制的扩散模型。例如,使用 Stable Diffusion 1.5/XL 搭配其对应的 Depth ControlNet 模型。Hugging Face Diffusers 库是管理这些模型的便捷工具。
- 视频合成脚本:需要编写脚本,用于序列化地生成每一帧,并将帧合成为视频。OpenCV 或 FFmpeg 可以完成这个任务。
4.2 三步走流程
第一步:生成静态3D高斯表示
- 输入:文本提示 “a photorealistic ceramic vase, intricate blue patterns, on a wooden table”。
- 过程:调用3D生成工具,它内部会利用2D扩散模型(如SD)和SDS损失,从随机初始化开始,优化数十万个3D高斯椭球体的参数(位置、颜色、透明度、尺度、旋转),直到从任何视角渲染这个3D高斯集合,都能得到符合文本描述的2D图像。
- 输出:一个
.ply文件,包含了所有3D高斯的参数,以及一个实时渲染器,可以指定任意相机视角进行快速渲染。
第二步:规划动态与渲染几何序列
- 定义动态:我们决定让花瓶绕其垂直轴匀速旋转360度。这需要定义一个旋转矩阵
R(t),其中t从0到1。对于3D高斯,我们需要对每个高斯的位置(x,y,z)应用这个旋转:[x‘, y’, z‘] = R(t) * [x, y, z]。 - 定义相机:我们让相机保持固定,正对着桌子。
- 渲染几何序列:对于视频的每一帧
i(共N帧):- 计算时间
t = i / N。 - 根据
R(t)变换所有3D高斯的位置。 - 使用3D高斯渲染器,从固定相机视角渲染这一帧,但不渲染颜色,只渲染深度图(Depth Map)。这张深度图编码了每个像素到相机的距离,完美反映了旋转花瓶的3D形状。
- 计算时间
第三步:基于深度图进行外观生成
- 准备条件:现在我们有N张深度图序列,以及文本提示。
- 生成每一帧:对于第
i帧:- 加载其对应的深度图。
- 使用 Diffusers 库,调用
StableDiffusionControlNetPipeline。 - 将深度图和文本提示作为条件输入,进行扩散采样(如DDIM),生成一张彩色图像。由于深度图提供了精确的形状约束,生成的图像会严格遵循花瓶的旋转轮廓,从而保证帧间几何一致性。
- 合成视频:将生成的N张彩色图像按顺序拼接,编码成MP4等视频格式。
4.3 可能遇到的坑与排查思路
- 3D生成质量差:花瓶形状扭曲或纹理模糊。
- 排查:首先检查2D扩散模型生成的单视图图像质量。如果单视图就不好,3D生成不可能好。其次,调整SDS损失的权重、优化器步数和学习率。3D生成对超参数敏感。
- 视频闪烁:虽然形状一致,但花瓶表面颜色或花纹在帧间跳动。
- 排查:这是外观不一致。确保在第三步为每一帧生成时,使用相同的随机种子,并采用完全相同的采样器参数。扩散过程的随机性会导致外观差异。更高级的方法是使用视频扩散模型或帧间注意力机制来平滑外观。
- 运动不自然:旋转看起来是“跳变”的而非平滑的。
- 排查:检查渲染的深度图序列是否平滑。用图像查看器快速浏览深度图,看边缘是否连续变化。问题可能出在动态定义(
R(t)是否连续)或3D高斯渲染的离散化误差上。增加视频帧率(N)可能改善。
- 排查:检查渲染的深度图序列是否平滑。用图像查看器快速浏览深度图,看边缘是否连续变化。问题可能出在动态定义(
- 推理速度慢:
- 优化点:3D高斯渲染本身很快,瓶颈通常在扩散模型采样。可以考虑使用更快的采样器(如DPM-Solver),或使用LCM-LoRA等加速技术。对于固定动态,可以预先渲染所有深度图。
5. 不止于旋转花瓶:范式带来的可能性与当前边界
几何先验驱动的价值,远不止生成一个旋转的物体。它为我们打开了一扇门,通往更可控、更一致、更物理可信的视频内容生成。
- 精确的相机控制:可以像导演一样,自由设计复杂的运镜路径(如无人机穿梭镜头),而无需担心视角跳跃。
- 场景编辑与重组:在3D空间中直接添加、删除、移动物体,然后重新渲染视频,所有光影和遮挡关系会自动、一致地更新。
- 与仿真环境结合:生成的3D场景可以直接导入游戏引擎或物理仿真器,用于机器人训练、自动驾驶模拟等。
- 长视频生成:有了稳定的3D锚点,生成长时间序列视频时,场景“崩坏”或主体“突变”的概率会大大降低。
然而,这一范式也面临清晰的边界:
- 复杂动态生成仍是挑战:生成逼真的人体运动、流体、火焰等非刚性、高度复杂的动态,需要极其强大的4D先验,目前仍是研究难点。
- 对抽象、非现实内容的支持:对于“一只会飞的彩虹猫”这种没有明确3D对应物的概念,构建有意义的几何先验本身就很困难。
- 计算成本:虽然推理时3D高斯渲染很快,但前期生成高质量的3D表示(尤其是动态的)需要大量的计算和优化时间。
- 艺术风格化:如何让几何驱动的方式生成高度风格化(如油画、水墨风)且保持一致的视频,需要探索更适合的外观生成模型。
最终,选择是否采用几何先验驱动,取决于你的核心需求是什么。如果你的目标是生成一段镜头运动复杂、物体需要精确空间互动、对长期一致性要求极高的视频(如产品展示、建筑漫游、概念验证动画),那么投入精力构建几何先验是值得的。如果你的需求是快速生成一段富有想象力、动态天马行空的短视频,传统的、纯数据驱动的视频扩散模型可能仍然是更直接、更高效的选择。
这项技术的演进,正让我们从“生成好看的画面”走向“生成可信的世界”。它提醒我们,在追求像素级逼真度的同时,或许更应该关注那些让世界得以成立的、更深层的规则——比如空间、时间和几何。
