世界模型与视频扩散


文档摘要

世界模型与视频扩散 本节摘要:一个能预测场景接下来几秒的视频模型,就是一个世界模拟器;把预测条件在动作上,你就得到了一个学出来的游戏引擎。本节区分纯视频生成模型(Sora 2)与动作条件世界模型(Genie 3、DreamerV3),描述视频 DiT(时空 patch、3D 位置编码、跨 (T,H,W) token 的分离注意力),追踪世界模型如何接入机器人(VLM 规划→视频模型仿真→逆动力学发动作),并在 Sora 2、Genie 3、Runway GWM-1、Wan-Video、HunyuanVideo、Cosmos-Drive 间按用例(创意视频、交互仿真、自动驾驶合成)选择。这是第 5 章的收尾大图课,把图像生成、视频理解、智能体推理连成研究前沿的主导架构。

世界模型与视频扩散

本节摘要:一个能预测场景接下来几秒的视频模型,就是一个世界模拟器;把预测条件在动作上,你就得到了一个学出来的游戏引擎。本节区分纯视频生成模型(Sora 2)与动作条件世界模型(Genie 3、DreamerV3),描述视频 DiT(时空 patch、3D 位置编码、跨 (T,H,W) token 的分离注意力),追踪世界模型如何接入机器人(VLM 规划→视频模型仿真→逆动力学发动作),并在 Sora 2、Genie 3、Runway GWM-1、Wan-Video、HunyuanVideo、Cosmos-Drive 间按用例(创意视频、交互仿真、自动驾驶合成)选择。这是第 5 章的收尾大图课,把图像生成、视频理解、智能体推理连成研究前沿的主导架构。

对应原课程:Phase 4 · Lesson 28 · world-models-video-diffusion(原英文 phases/04-computer-vision/28-world-models-video-diffusion/docs/en.md)。本章最后一节。

学习目标

阅读完本节,你应当能够:

  1. 解释纯视频生成模型(Sora 2)与动作条件世界模型(Genie 3、DreamerV3)的区别。
  2. 描述视频 DiT:时空 patch、3D 位置编码、跨 (T, H, W) token 的联合注意力。
  3. 追踪世界模型如何接入机器人:VLM 规划 → 视频模型仿真 → 逆动力学发动作
  4. 按用例(创意视频、交互仿真、自动驾驶合成),在 Sora 2、Genie 3、Runway GWM-1、Wan-Video、HunyuanVideo 间选择。

一、问题与直觉

2026 年,视频生成与世界建模合流了。一个能生成连贯一分钟视频的模型,在某种意义上学会了世界如何运动:物体恒常、重力、因果、风格。把预测条件在动作上(向左走、开门),视频模型就变成了可学习的模拟器,能替代游戏引擎、驾驶模拟器或机器人环境。

利害很具体。Genie 3 从单张图生成可玩环境;Runway GWM-1 Worlds 合成无限可探索场景;Sora 2 产带同步音频、建模了物理的一分钟视频;NVIDIA Cosmos-Drive、Wayve Gaia-2、Tesla DrivingWorld 为自动驾驶训练数据生成逼真驾驶视频。世界模型范式正悄悄接管机器人的 sim-to-real。

本节是第 5 章的「大图」课,把图像生成、视频理解、智能体推理连成研究前沿正走向的主导架构模式。

世界建模三家族

  • Sora 2 是条件在提示上的纯视频生成,无动作接口,中途无法「转向」。
  • Genie 3GWM-1 WorldsMirage / Magica 是动作条件世界模型:从观测视频推断隐动作,再把未来帧预测条件在动作上,可交互——按键或移相机,场景响应。
  • DreamerV3 及经典 RL 世界模型家族在隐空间预测,带显式动作条件,按奖励信号训练,视觉性弱但更利于样本高效的 RL。

视频 DiT 架构

视频隐变量: (C, T, H, W) 空间 patch 化: 每帧 P_h × P_w 的 patch 网格 时间 patch 化: 每 P_t 帧合成一个时间 patch 得到的 token: (T / P_t) * (H / P_h) * (W / P_w) 个 token

位置编码是 3D 的:每个 (t, h, w) 坐标一个旋转或可学嵌入。注意力可为:

  • 全联合——所有 token attend 所有 token,O(N²) N 个 token,长视频不可行。
  • 分离——交替时间注意力(同空间位置跨时间:(H·W) · T²)和空间注意力(同时间步跨空间:T · (H·W)²),TimeSformer 和多数视频 DiT 用。
  • 窗口——(t, h, w) 上的局部窗口,Video Swin 用。

2026 年每个视频扩散模型都用这三种模式之一,加 AdaLN 条件(第 23 节)和整流流。

条件在动作上:隐动作模型

Genie 通过判别式地预测连续两帧间的动作,为每帧学一个隐动作。解码器然后条件在推断出的隐动作上——而非显式键盘按键。推理时,用户指定一个隐动作(或从新先验采一个),模型生成与该动作一致的下一帧。

Sora 完全跳过动作接口,解码器从过去时空 token 预测下一时空 token,提示条件化起点,生成中途无转向。

物理合理性

Sora 2 的 2026 发布明确宣传了物理合理性:重量、平衡、物体恒常、因果。团队用人工评分的合理性分数衡量;相比 Sora 1,模型在掉落物体、角色碰撞、故意失败(跳空)上明显改进。

合理性仍是主要失败模式。2024~2025 吃意大利面或从玻璃杯喝水的视频暴露了模型缺乏持久物体表示。2026 模型(Sora 2、Runway Gen-5、HunyuanVideo)减少但未消除这些问题。

自动驾驶世界模型

驾驶世界模型条件在轨迹、边界框或导航地图上,生成逼真道路场景。用途:

  • Cosmos-Drive-Dreams(NVIDIA)——为 RL 训练生成分钟级驾驶视频。
  • Gaia-2(Wayve)——轨迹条件场景合成,用于策略评估。
  • DrivingWorld(Tesla)——仿真多变天气、时段、交通状况。
  • Vista(字节)——反应式驾驶场景合成。

它们替代昂贵真实数据采集,覆盖长尾——夜间行人乱穿、结冰路口、异常车型——否则要数百万英里驾驶。

机器人栈:VLM + 视频模型 + 逆动力学

新兴的三件式机器人循环:

  1. VLM 解析目标(「拿起红杯」),规划高层动作序列。
  2. 视频生成模型 仿真执行每个动作会是什么样——预测 N 帧后的观测。
  3. 逆动力学模型 抽取能产生这些观测的具体电机指令。

这替代了奖励塑形和样本密集的 RL。世界模型负责想象,逆动力学闭环执行。Genie Envisioner 是一个实例;许多研究组正收敛到这个结构。

评估

  • 视觉质量——FVD(Fréchet 视频距离)、用户研究。
  • 提示对齐——每帧 CLIPScore、VQA 风格评估。
  • 物理合理性——基准套件上人工评分(Sora 2 内部基准、VBench)。
  • 可控性(交互式世界模型)——动作到观测一致性;能否回到先前状态?

2026 模型版图

模型 用途 参数 输出 授权
Sora 2 文生视频、音频 1 分钟 1080p + 音频 仅 API
Runway Gen-5 文/图生视频 10 秒片段 API
Runway GWM-1 Worlds 交互式世界 无限 3D rollout API
Genie 3 图生交互世界 110 亿+ 可玩帧 研究预览
Wan-Video 2.1 开源文生视频 140 亿 高质量片段 非商用
HunyuanVideo 开源文生视频 130 亿 10 秒片段 宽松
Cosmos / Cosmos-Drive 自动驾驶仿真 70~140 亿 驾驶场景 NVIDIA 开放
Magica / Mirage 2 AI 原生游戏引擎 可修改世界 产品

二、从零实现

步骤 1:视频 3D patch 化

import torch import torch.nn as nn class VideoPatch3D(nn.Module): def __init__(self, in_channels=4, dim=64, patch_t=2, patch_h=2, patch_w=2): super().__init__() self.proj = nn.Conv3d( in_channels, dim, kernel_size=(patch_t, patch_h, patch_w), stride=(patch_t, patch_h, patch_w), ) self.patch_t = patch_t self.patch_h = patch_h self.patch_w = patch_w def forward(self, x): # x: (N, C, T, H, W) x = self.proj(x) n, c, t, h, w = x.shape tokens = x.reshape(n, c, t * h * w).transpose(1, 2) return tokens, (t, h, w)

步长等于核的 3D 卷积充当时空 patch 化器,(T, H, W) → (T/2, H/2, W/2) 的 token 网格。

步骤 2:3D 旋转位置编码

旋转位置嵌入(RoPE)沿 thw 轴分别施加:

def rope_3d(tokens, t_dim, h_dim, w_dim, grid): """ tokens: (N, T*H*W, D) grid: (T, H, W) 尺寸 t_dim + h_dim + w_dim == D """ T, H, W = grid n, seq, d = tokens.shape if t_dim + h_dim + w_dim != d: raise ValueError(f"t_dim+h_dim+w_dim ({t_dim}+{h_dim}+{w_dim}) 必须等于 D={d}") assert seq == T * H * W t_idx = torch.arange(T, device=tokens.device).repeat_interleave(H * W) h_idx = torch.arange(H, device=tokens.device).repeat_interleave(W).repeat(T) w_idx = torch.arange(W, device=tokens.device).repeat(T * H) # 简化:仅按频率缩放通道。真实 RoPE 旋转成对通道。 freqs_t = torch.exp(-torch.log(torch.tensor(10000.0)) * torch.arange(t_dim // 2, device=tokens.device) / (t_dim // 2)) freqs_h = torch.exp(-torch.log(torch.tensor(10000.0)) * torch.arange(h_dim // 2, device=tokens.device) / (h_dim // 2)) freqs_w = torch.exp(-torch.log(torch.tensor(10000.0)) * torch.arange(w_dim // 2, device=tokens.device) / (w_dim // 2)) emb_t = torch.cat([torch.sin(t_idx[:, None] * freqs_t), torch.cos(t_idx[:, None] * freqs_t)], dim=-1) emb_h = torch.cat([torch.sin(h_idx[:, None] * freqs_h), torch.cos(h_idx[:, None] * freqs_h)], dim=-1) emb_w = torch.cat([torch.sin(w_idx[:, None] * freqs_w), torch.cos(w_idx[:, None] * freqs_w)], dim=-1) return tokens + torch.cat([emb_t, emb_h, emb_w], dim=-1)

简化加性形式。真实 RoPE 按频率旋转成对通道,位置信息相同。

步骤 3:分离注意力块

class DividedAttentionBlock(nn.Module): def __init__(self, dim=64, heads=2): super().__init__() self.time_attn = nn.MultiheadAttention(dim, heads, batch_first=True) self.space_attn = nn.MultiheadAttention(dim, heads, batch_first=True) self.ln1 = nn.LayerNorm(dim) self.ln2 = nn.LayerNorm(dim) self.ln3 = nn.LayerNorm(dim) self.mlp = nn.Sequential(nn.Linear(dim, 4 * dim), nn.GELU(), nn.Linear(4 * dim, dim)) def forward(self, x, grid): T, H, W = grid n, seq, d = x.shape # 时间注意力:同 (h, w),跨 t xt = x.view(n, T, H * W, d).permute(0, 2, 1, 3).reshape(n * H * W, T, d) a, _ = self.time_attn(self.ln1(xt), self.ln1(xt), self.ln1(xt), need_weights=False) xt = (xt + a).reshape(n, H * W, T, d).permute(0, 2, 1, 3).reshape(n, seq, d) # 空间注意力:同 t,跨 (h, w) xs = xt.view(n, T, H * W, d).reshape(n * T, H * W, d) a, _ = self.space_attn(self.ln2(xs), self.ln2(xs), self.ln2(xs), need_weights=False) xs = (xs + a).reshape(n, T, H * W, d).reshape(n, seq, d) xs = xs + self.mlp(self.ln3(xs)) return xs

时间注意力在每个空间位置跨时间 attend,空间注意力在每帧内跨位置 attend。两个 O(T² + (HW)²) 操作替代一个 O((THW)²)——这是 TimeSformer 和每个现代视频 DiT 的核心。

步骤 4:组装微型视频 DiT

class TinyVideoDiT(nn.Module): def __init__(self, in_channels=4, dim=64, depth=2, heads=2): super().__init__() self.patch = VideoPatch3D(in_channels=in_channels, dim=dim, patch_t=2, patch_h=2, patch_w=2) self.blocks = nn.ModuleList([DividedAttentionBlock(dim, heads) for _ in range(depth)]) self.out = nn.Linear(dim, in_channels * 2 * 2 * 2) def forward(self, x): tokens, grid = self.patch(x) for blk in self.blocks: tokens = blk(tokens, grid) return self.out(tokens), grid

不是能用的视频生成器,而是证明每块形状正确的结构性演示。

步骤 5:检查形状

vid = torch.randn(1, 4, 8, 16, 16) # (N, C, T, H, W) model = TinyVideoDiT() out, grid = model(vid) print(f"输入 {tuple(vid.shape)}") print(f"token 网格 {grid}") print(f"输出 {tuple(out.shape)}")

patch 后应得 grid = (4, 8, 8)out = (1, 256, 32);头部再投影到每 token 时空 patch,准备反 patch 化回视频。

三、框架对比

2026 生产访问模式:

  • Sora 2 API(OpenAI)——文生视频、同步音频,高端定价。
  • Runway Gen-5 / GWM-1(Runway)——图生视频、交互世界。
  • Wan-Video 2.1 / HunyuanVideo——开源自托管。
  • Cosmos / Cosmos-Drive(NVIDIA)——驾驶仿真开放权重。
  • Genie 3——研究预览,需申请。

搭交互世界模型 demo:从 Wan-Video 起步要质量,叠加隐动作适配器要交互;自动驾驶仿真:Cosmos-Drive 是 2026 开放参考。

机器人实战栈:

  1. 语言目标 → VLM(Qwen3-VL)→ 高层规划。
  2. 规划 → 隐动作视频模型 → 想象 rollout。
  3. rollout → 逆动力学模型 → 低层动作。
  4. 动作执行 → 观测反馈回步骤 1。

四、可复用产物

本节产出两个可复用文件(位于原课程 outputs/):

  • prompt-video-model-picker.md:按任务、授权、延迟,在 Sora 2 / Runway / Wan / HunyuanVideo / Cosmos 间挑。
  • skill-physical-plausibility-checks.md:一个技能——定义自动化检查(物体恒常、重力、连续性),在任何生成视频上线前跑。

五、练习

  1. (简单) 计算 patch-t=2、patch-h=8、patch-w=8 下 5 秒 360p 视频的 token 数,推理此规模注意力的内存。
  2. (中等) 把上面的分离注意力块换成全联合注意力块,测量形状和参数量,解释为何真实视频模型必须用分离注意力。
  3. (困难) 搭一个最小隐动作视频模型:取任意简单 2D 游戏的 (frame_t, action_t, frame_{t+1}) 三元组数据集,训一个条件在动作嵌入上的微型视频 DiT,证明不同动作产出不同下一帧。

本节要点回顾

  1. 视频生成与世界建模在 2026 合流——能生成连贯视频的模型在某种意义上学会了世界如何运动;条件在动作上就成了可学习模拟器。
  2. 三家族:纯视频生成(Sora 2,无动作接口)、动作条件世界模型(Genie 3/GWM-1,可交互)、RL 世界模型(DreamerV3,隐空间+奖励)。
  3. 视频 DiT = 时空 patch + 3D 位置编码 + 分离注意力 + AdaLN + 整流流
  4. 分离注意力是核心——时间注意力(同空间跨时间)+ 空间注意力(同时间跨空间),O(T²+(HW)²) 替代 O((THW)²)。
  5. 隐动作模型——从连续两帧判别式预测隐动作,条件化下一帧;Genie 用,Sora 跳过。
  6. 物理合理性是主要失败模式——物体恒常、重力、因果仍弱;2026 模型减少但未消除(食物、玻璃杯经典翻车)。
  7. 自动驾驶世界模型——Cosmos-Drive/Gaia-2/DrivingWorld/Vista 条件在轨迹上合成驾驶场景,替代长尾真实采集。
  8. 机器人三件栈:VLM 规划 → 视频模型仿真想象 → 逆动力学发动作 → 执行反馈;替代奖励塑形与样本密集 RL。
  9. 评估四维:FVD(视觉)、CLIPScore(对齐)、人工合理性(VBench)、可控性(交互模型)。
  10. 2026 版图:Sora 2(API 顶尖)、Genie 3(图生可玩世界)、Wan/Hunyuan(开源)、Cosmos-Drive(驾驶开放)、Magica/Mirage(AI 游戏引擎)。

本章总结

至此,第 5 章「计算机视觉」28 节全部走完。从第 1 节的像素与色彩空间起步,我们一路手工实现了卷积、CNN、检测、分割、生成;在中段把扩散、视频、3D/NeRF、ViT、边缘部署、毕业流水线串成生产骨架;在后段 11 节里,又把 Stable Diffusion、自监督、CLIP、OCR、检索、姿态、3D 高斯泼溅、扩散 Transformer、SAM3、视觉语言模型、单目深度、多目标跟踪、世界模型这些 2026 前沿逐一吃透。两条主线贯穿全章:从零实现理解原理,再用框架对比验证工程;从静态图像到时空,从感知到生成,从单一模型到端到端系统。掌握了这套工具箱,你就具备了搭建 2026 年生产级视觉系统的全部基础——无论是 AR 试穿、自动驾驶、机器人操作,还是创意生成、文档智能、世界模拟,本章的某一节都是它的根。

下一章(第 6 章)将进入新的主题领域。视觉作为 AI 最成熟的感知通道,会持续作为后续章节的输入与基石——多模态、具身智能、智能体编排,都建立在「让机器看懂世界」这一章之上。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U