2024 年 2 月,OpenAI 放出了 Sora 的技术报告,标题叫 Video generation models as world simulators。这份报告里没有大家预想中的复杂时序网络,反而有一张把视频切成整齐小方块的示意图。我当时盯着那张图看了半天,心里冒出一个念头:视频生成的核心问题,可能就这么被绕过去了。

Sora 没有重新发明轮子,它把两个已经很成熟的轮子——扩散模型和 Transformer——焊在了一起,中间用了一个叫“时空补丁”的连接件。这个组合看起来简单,但它确实是视频生成的一个转折点。为什么?你得先理解这三个零件各自在干什么。
时空补丁:把视频变成 Transformer 能吃的“积木”
图像模型早就知道怎么处理图片:把一张图切成固定大小的小块,每个小块叫一个 patch,然后像句子里的词一样喂给 Transformer。这个思想来自 2020 年的 ViT 论文。视频比图像多了一个时间维度,所以 Sora 的做法是把视频也切成 patch,只不过每个 patch 是三维的:一小段连续帧中的一个小空间块。这样一个 patch 就是一个 token,整个视频就变成了一串 token 序列。
为什么这一招很妙?因为它让图像和视频在表示上彻底统一了。图像可以看作时间维度只有 1 的视频,所以同一个模型既能做图像又能做视频,还能用图像数据来辅助训练视频模型。更关键的是,patch 化让模型不再依赖固定的分辨率。Sora 可以根据视频的长度和宽高比,决定用多少 patch,而不是像以前的模型那样先把所有视频强行缩放成正方形。这也是 Sora 能生成各种宽高比视频的直接原因。
这里我想纠正自己以前的一个误解。我最早以为 patch 就是把像素网格直接切下来,后来看了 Sora 的更多细节才发现,它是在一个视频压缩网络(类似 VAE)生成的 latent 上切 patch。相当于先把视频压缩成一个小得多的特征图,再切块。这样每个 patch 携带的信息更丰富,计算量也小得多。
我们训练了一个网络,直接对视频 latent 的时空补丁进行操作。
为什么是 Transformer?因为 U-Net 真的卷不动了
在 Sora 之前,主流的视频扩散模型,比如 Stable Video Diffusion,用的去噪网络是 U-Net。U-Net 在图像生成上表现不错,但它在视频生成上有一个麻烦:它的架构里有很多针对固定分辨率设计的卷积和跳跃连接,想扩大规模或者改变输入尺寸都很别扭。你想让模型多看几帧,它就得重新调整结构。
Diffusion Transformer(DiT)就是用来替换 U-Net 的。2022 年,William Peebles 和谢赛宁在论文 Scalable Diffusion Models with Transformers 里证明了一个结论:把扩散模型里的 U-Net 换成标准 Transformer,在相同的计算量下,图像生成质量更好;而且模型参数越多、计算量越大,提升越稳定。这是 U-Net 很难做到的。
| 对比维度 | U-Net | DiT(Transformer) |
|---|---|---|
| 核心操作 | 卷积 + 跳跃连接 | 自注意力 |
| 输入长度 | 受结构限制,分辨率固定 | 任意 patch 数量 |
| 扩展性 | 堆通道,收益递减 | 加参数、加数据,稳定提升 |
| 跨模态能力 | 难统一 | 天然把一切变成 token |
Transformer 的自注意力让每个 patch 都能“看到”视频里所有其他 patch——无论是空间上离得远的,还是时间上隔了好几秒的。这对视频生成来说是决定性的:它让模型更容易保持全局一致,不会出现前面一个人,后面就变成另一个人这种低级错误。
扩散生成:Sora 不是“画帧”,是“洗噪”
Sora 本质上是一个扩散模型。训练的时候,它把一段干净视频逐步加噪声,直到变成一团纯噪声;模型的任务是学会逆向过程——从噪声里一步步把视频“洗”回来。生成的时候,模型从一团随机噪声开始,反复迭代,每次消除一点噪声,最终得到一个完整的视频。
这个设计有一个容易被忽略的优势:它跟自回归视频生成有本质区别。自回归模型是一个帧一个帧地预测,每一帧都依赖前面生成的帧,误差会累积,时间一长就会漂移。扩散模型则是在每一步都对整段视频做修正,相当于每个 patch 都能影响其他 patch,所以时间一致性要好得多。
Sora 的生成流程大致是:
- 把文本提示词编码成条件向量。
- 初始化一个随机噪声的 latent 视频。
- 在 DiT 中迭代去噪几十步,每步让 latent 更接近真实视频。
- 用视频解码器把 latent 还原成像素视频。
为什么这是视频生成的转折点
在 Sora 之前,视频生成领域其实是分裂的:一边是逐帧生成然后用光流或后处理拼接的方法,一边是用 3D 卷积扩散模型直接生成整个视频。前者容易漂移,后者计算量巨大且扩展困难。Sora 的 patch 方法打破了这种分裂:视频不再是“帧的集合”,而是“patch 的集合”。这个视角转变,让模型可以同时利用图像和视频数据,也让它能够处理任意长度和宽高比。
Sora 没有发明 Transformer,也没有发明扩散模型,更没有发明 patch。它真正的贡献,是把这三样东西组合起来,并且验证了一条可规模化、能统一图像和视频的路线。
第一,可扩展性。视频模型的瓶颈从来都是算力。DiT 让视频模型可以像 GPT 那样通过堆参数量、堆数据来提升效果,而不是像 U-Net 那样只能靠手工调结构。OpenAI 明确说 Sora 是 DiT 的一个“规模化版本”。这意味着,未来视频模型的能力提升,大概率会遵循一条类似大语言模型的 scaling 曲线。
第二,统一性。时空补丁让图像、视频、不同分辨率、不同宽高比,全都被表示成同一种 token。这让模型可以用海量的图像和视频混合训练,也能用同一个模型完成图像和视频的生成任务。在 Sora 之前,这两个领域基本是分开的。
第三,也是最有意思的,是涌现能力。Sora 的技术报告里提到,模型没有经过任何显式的 3D 建模训练,却学会了遮挡关系、物体恒存性,甚至能根据文本提示模拟相机运动。比如你把镜头推进,画面里的物体会自然地变大、被遮挡的部分会重新出现。这些行为不是被工程师写进去的,而是模型在大量视频数据里自己学到的。
这就是为什么 OpenAI 管它叫“世界模拟器”。它不是在做简单的文生视频,它是在尝试学习一个高维的、视觉的“世界模型”。
它还不是世界模型
把话说回来,Sora 生成的内容依然会违反物理规律。比如一个人走路时腿突然扭曲,或者玻璃杯掉到桌上没有碎。为什么?因为它学习的是视频像素之间的概率关系,而不是物理定律。模型看到一千个杯子掉落的视频,它学会的是“杯子落地后通常会发生什么”,而不是牛顿力学。
所以严格来说,Sora 是一个非常好的“视觉概率模型”,但不是一个可靠的物理引擎。它会输给真实世界的规则,只是因为训练数据里这些规则出现的频率足够高。
另外,Sora 的算力消耗极大,视频生成以秒计都是快的,离实时还很远。它的文本可控性也有限,提示词里的细节经常被忽略。这些都决定了它在短期内更可能出现在视频剪辑、创意原型这类场景,而不是作为物理仿真工具。
关于 Sora 的几个常见误解
时空补丁是 Sora 发明的吗?
不是。把视频切成 3D patch 的想法在之前的研究里就有,比如一些视频 Transformer 模型。Sora 的贡献不是发明 patch,而是把 patch 和 Diffusion Transformer 结合起来,并且用大规模数据证明了这条路能走通。真正有价值的是这个组合的工程实现和规模化能力。
Sora 是自回归模型吗?
不是。Sora 是一个扩散模型,它在每一步都对整个视频的 latent 做去噪,而不是像自回归模型那样一个 patch 接一个 patch 地预测。扩散模型的全局修正能力,让它在时间一致性上比自回归方法更有优势。
Sora 真的理解物理吗?
它没有显式的物理引擎。它只是在训练数据中统计了“什么画面通常跟着什么画面”出现。所以它能在常见场景下表现得像懂物理,但遇到训练数据里少见的组合就会出问题。比如它可能不理解玻璃杯摔碎的因果链条,只是生成一个看起来像碎了的画面。
Sora 是第一个用 DiT 的视频模型吗?
不是。DiT 最初是图像生成模型,之后也有不少工作把它扩展到视频,比如一些开源模型。Sora 的特殊之处在于它是第一个由顶级实验室公开的、把 DiT 规模化到分钟级视频的模型。这给整个行业指明了一个技术方向。
如果你回头再看那张把小视频切成方块的示意图,会发现 Sora 真正的野心不是做一个更好的视频生成器,而是把视觉世界变成一种“语言”。当视频和图像都能被切成 patch,当成 token 来理解,那视频生成和视频理解就不再是两件事,而是一个模型的两种能力。这才是它最值得关注的地方。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/200.html