SCoPE: Sightline-Coordinate Positional Encoding for Video Diffusion Transformers
论文信息: arXiv:2606.27345v3 [cs.CV], 12 Aug 2026, Minghao Yin et al., 香港大学 / 香港科技大学 / 腾讯 ARC Lab
Link: arXiv:2606.27345 | Project Page
核心问题是什么?
目的
实现视频扩散模型 (Video DiT) 的精确相机轨迹控制,让生成的视频严格按照用户指定的相机轨迹运动。
现有方法及局限性
| 方法类型 | 代表方法 | 局限性 |
|---|---|---|
| Adapter方法 | CameraCtrl, ControlNet | 额外模块,增加序列长度 |
| 渲染条件 | GS-DiT, Diffusion as Shader | 需要重建代理场景 |
| 拼接token | ReCamMaster, CAVIA | 依赖原生attention自动发现对应 |
| 潜空间操作 | Go-with-the-Flow | 正交路线,可结合 |
| 相机感知PE | GTA, UCPE, ReRoPE, ViewRoPE | 几何信息乘性作用于content,无纯几何项 |
核心问题:
- 现有Video DiT使用 (u,v,t) 像素-时间网格索引,是张量地址而非世界地址
- 两个token可能拍摄同一3D点,但位置编码只反映网格偏移,无法建立3D对应
- 相机控制被当作附加信号而非坐标系属性
现有相机PE的问题:
- Frame-level变换:同帧所有token几何相同,无法区分token
- Direction-only编码:对平移不敏感,丢失视差信息
- 乘性应用:几何完全通过content路由,注意力分数中没有纯射线项
本文方法
提出 SCoPE (Sightline-Coordinate Positional Encoding):
- 射线作为第二坐标:每个token的相机射线作为第二个位置坐标
- Plücker Flip PE:将Plücker射线加性注入query和key
- Normalize-Gate-Inject (NGI):处理不同数据集的尺度异构性
效果
| 指标 | Wan2.2 5B | Wan2.2 14B |
|---|---|---|
| RotErr↓ | 0.085 (vs 0.113 UCPE) | 0.058 (vs 0.082 UCPE) |
| TransErr↓ | 0.751 (vs 0.856 UCPE) | 0.517 (vs 0.693 UCPE) |
| FVD↓ | 543 (vs 703 UCPE) | 280 (vs 529 UCPE) |
| FID↓ | 57.8 (vs 61.5 UCPE) | 41.0 (vs 54.8 UCPE) |
14B模型提升:旋转误差↓29%,FVD↓43%
核心贡献是什么?
核心创新:加性注入(而非乘性)使注意力分数中自然出现纯几何项(ray-ray),这是乘性方法无法产生的。
-
加性注入机制 ⭐ 核心创新
- 现有方法:乘性作用于q/k/v(GTA, UCPE, ViewRoPE)
- SCoPE:加性注入到q/k,保持RoPE不变
- 效果:注意力分数分解为4项,产生纯几何项(ray-ray)
- 理论:加性注入 →
<q,k>展开 → ray-ray项 = Plücker互积
-
理论分析:注意力分数分解
<q, k> = (A) content-content ← 原始注意力 + (D) ray-ray ← 纯几何项 (SCoPE独有)-
(D) 的规范形式 = Plücker互积 = d_i·m_j + d_j·m_i
-
Q/K Flip使对称配置对应标准Plücker互积形式
-
消融实验:移除(D)后旋转误差几乎翻倍
+ (B) content → ray ← 混合项 + (C) ray → content ← 混合项
-
-
Normalize-Gate-Inject (NGI)
- 方向/幅度解耦:尺度不变的方向 + 显式log幅度
- 尺度感知门控:根据moment幅度自适应调整注入强度
- 匹配归一化:与content分支的QKNorm对齐
- 处理不同数据集的尺度异构性(SfM归一化、度量单位等)
NGI 详细解释:NGI 是几何信号注入到 attention q/k 时的预处理+注入模块,解决核心问题:几何数据的尺度和方向差异很大,直接注入不稳定。
- 方向/幅度解耦:Plücker 坐标同时编码射线方向(单位向量)和位置(moment 向量,有幅度信息)。方向部分做归一化使其尺度不变,幅度部分单独用 log 表示。这样模型不会因 SfM 重建的坐标系不同(有的归一化到 [-1,1],有的用真实米制单位)而学到错误的尺度偏好。
- 尺度感知门控:用可学习的 gate 根据 moment 向量的幅度大小,自适应决定"注入多少几何信息"——幅度大则几何信号强、多注入;幅度小则几何信号弱、少注入。类似于一个 attention 级别的"音量旋钮"。
- 匹配归一化:content 分支(原始 q/k)用了 QKNorm(RMSNorm),几何注入分支也要做对应归一化,否则两个分支数值尺度不匹配,加性注入时会产生数值问题。
- 尺度异构性处理:不同数据集的 3D 坐标尺度差异巨大(室内 vs 室外场景,归一化方式不同),NGI 的设计让模型对这种尺度变化具有鲁棒性。
-
零初始化 + 轻量级
- 零初始化:从精确预训练DiT状态开始训练
- 保持RoPE bit-exact不变
- 仅增加 <0.1% 参数
- 无额外attention或adapter分支
注:Plücker坐标表示射线本身不是创新(经典线几何,UCPE已使用),创新在于如何将其注入到attention中。
为什么是加性注入?三种方式对比
| 方式 | 公式 | 展开结果 | 4项完整性 |
|---|---|---|---|
| 加性 (SCoPE) | q' = q + E·r | <q,k> + <q,r> + <r,k> + <r,r> | ✅ 全部4项 |
| Concat | q' = [q; r] | <q,k> + <r,r> | ❌ 缺少(B)(C)交叉项 |
| 乘性 (UCPE) | q' = M(r)·q | q^T·M^T·M·k | ❌ 无纯射线项 |
加性注入:
q' = q + E·r, k' = k + E·r
<q', k'> = <q + E·r, k + E·r>
= <q,k> + <q, E·r> + <E·r, k> + <E·r, E·r>
───── ────────── ────────── ────────────
(A) (B) (C) (D)
纯内容 内容→射线 射线→内容 纯射线 ← 新增!
Concat:
q' = [q; r], k' = [k; r]
<q', k'> = <[q;r], [k;r]> = <q,k> + <r,r>
───── ───────
(A) (D)
纯内容 纯射线
→ 有纯射线项,但缺少交叉项(B)(C)
乘性:
q' = M(r)·q, k' = M(r)·k
<q', k'> = q^T · M(r)^T · M(r) · k
→ 每一项都包含content,无法分离出纯射线项
消融实验验证(Table 4):
- 移除(B)+(C)交叉项:RotErr 0.085 → 0.135 (↑59%),FVD 543 → 695 (↑28%)
- 结论:交叉项(B)(C)很重要,Concat缺少这两项,效果不如加性
加性注入的优势:
- 维度不变:Concat维度翻倍,计算量翻倍;加性投影到同维度
- 有交叉项:(B)(C)允许内容和几何直接交互
- 可学习:E_q, E_k可学习如何将射线映射到content空间
大致方法是什么?
┌─────────────────────────────────────────────────────────────────────┐
│ SCoPE 方法流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 输入: 视频帧 + 相机轨迹 (extrinsics T_t, intrinsics K_t) │
│ │
│ Step 1: 计算每token的相机射线 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 像素坐标 (p_u, p_v) → 相机坐标系射线方向 d_cam │ │
│ │ d_cam = K^(-1) [p_u, p_v, 1]^T / ||...|| │ │
│ │ 世界坐标系: d = R · d_cam, 原点 o = camera position │ │
│ │ Plücker坐标: r = (d, m), m = o × d (moment) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ Step 2: Normalize-Gate-Inject │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 方向/幅度解耦: m̂ = m/||m||, s = log||m|| │ │
│ │ 7D特征: f = (d, m̂, s) [尺度不变的前6维 + log幅度] │ │
│ │ 门控: g = σ(G_s(s)) ∈ (0,1)^d │ │
│ │ 投影+归一化+门控: pe = g ⊙ N(E·f) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ Step 3: Plücker Flip注入 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Query: q = QKNorm(RoPE(W_Q·x)) + α · pe_q │ │
│ │ pe_q接收 (d, m̂, s) │ │
│ │ Key: k = QKNorm(RoPE(W_K·x)) + α · pe_k │ │
│ │ pe_k接收 (m̂, d, s) ← Q/K Flip! │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ Step 4: 注意力分数分解 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ <q, k> = (A) content-content ← 原始注意力 │ │
│ │ + (B) content → ray ← 混合项 │ │
│ │ + (C) ray → content ← 混合项 │ │
│ │ + (D) ray-ray ← 纯几何项! │ │
│ │ │ │
│ │ (D) 的形式 = Plücker互积 = d_i·m_j + d_j·m_i │ │
│ │ 当两射线共面(相交/平行)时为0,否则>0 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 输出: 按指定相机轨迹生成的视频 │
│ │
└─────────────────────────────────────────────────────────────────────┘
关键数学
Plücker坐标:
射线 r = (d, m) ∈ R^6
- d: 方向向量 (单位向量)
- m = o × d: moment (携带平移信息)
约束: d·m = 0, ||d|| > 0
Plücker互积 (Reciprocal Product):
<r_i, r_j>_Pl = d_i·m_j + d_j·m_i = r_i^T · J · r_j
性质:
- 双线性: 关于r_i, r_j分别线性
- 共面判据: = 0 当且仅当两射线共面(相交/平行)
- SE(3)不变: 只依赖相对几何
Q/K Flip的作用:
Query接收 (d, m), Key接收 (m, d)
当 E_q = E_k = I 时:
(D) = d_i·m_j + m_i·d_j = <r_i, r_j>_Pl
Flip使得对称配置对应标准Plücker互积
训练
数据集
| 数据集 | 类型 | 用途 |
|---|---|---|
| RE10K | 室内场景 | 主训练+测试 |
| DL3DV | 大规模场景 | 混合训练 |
| PanShot | 相机轨迹数据 | 混合训练 |
| OmniWorld | 多域多模态 | 混合训练 |
Loss
标准扩散/流匹配损失:
L = E[||predicted_noise - target_noise||²]
或
L = E[||predicted_velocity - target_velocity||²]
训练策略
架构配置: | 参数 | 值 | |------|-----| | 基础模型 | Wan2.2 (5B / 14B) | | 分辨率 | 480×832 | | 帧数 | T=81 (T_z=21 latent) | | 新增参数 | < 0.1% | | 初始化 | 零初始化 (从精确预训练DiT开始) |
关键超参数:
- α: 几何/content平衡系数,初始化为0
- 门控MLP: 2层,偏置初始化为g≈0.5 at s=0
- Log-scale增强: δ ~ Uniform(-1.2, 1.6), prob=0.3
实验与结论
主要结果
| 方法 | CLIP↑ | RotErr↓ | TransErr↓ | FVD↓ |
|---|---|---|---|---|
| CameraCtrl | 25.04 | 0.152 | 1.292 | 824 |
| ReCamMaster | 24.97 | 0.131 | 1.226 | 874 |
| UCPE | 25.39 | 0.113 | 0.856 | 703 |
| ReRoPE | 25.20 | 0.137 | 1.109 | 685 |
| SCoPE | 26.05 | 0.085 | 0.751 | 543 |
闭环重访实验
| 方法 | Return Trans.↓ | Return Rot.↓ | LPIPS Recovery↑ |
|---|---|---|---|
| UCPE | 0.433 | 3.42° | 0.102 |
| SCoPE | 0.090 | 1.89° | 0.587 |
Return Translation Ratio降低79%,LPIPS Recovery提升475%
消融实验
| 变体 | RotErr↓ | FVD↓ | 说明 |
|---|---|---|---|
| Full SCoPE | 0.085 | 543 | - |
| w/o (D) ray-ray | 0.159 | 733 | 移除纯几何项,性能大降 |
| w/o (B)+(C) mixed | 0.135 | 695 | 移除混合项,性能下降 |
| w/o NGI | 0.086 | 560 | 移除归一化门控 |
| w/o Q/K flip | 0.091 | 580 | 边际影响 |
关键发现:(D) ray-ray项是最重要的几何组件,移除后旋转误差几乎翻倍
与 HumanVid/CamAnimate (42) 的相机控制对比
| 维度 | HumanVid / CamAnimate (42) | SCoPE (239) |
|---|---|---|
| 相机控制思路 | 相机运动轨迹作为外部条件输入模型 | 相机射线作为位置编码的一部分,融入 token 坐标系 |
| 相机信息表示 | 相机轨迹参数(SLAM 估计或规则生成),作为条件 token 拼接 | Plücker 坐标(射线方向 + moment),加性注入 q/k |
| 注入方式 | 类似 ControlNet 思路,相机运动作为条件信号与人体姿态一起送入 | 加性注入 attention 的 query/key,产生纯几何项(ray-ray = Plücker 互积) |
| 位置编码 | 常规 (u,v,t) 像素-时间索引,相机信息是额外条件 | (u,v,t) 升级为"像素坐标 + 相机射线"双坐标系 |
| 模型改动 | 需要额外的条件编码模块 | 仅增加 <0.1% 参数(NGI 模块),保持 RoPE 不变 |
| 适用场景 | 人体图像动画(人物为中心) | 通用视频生成(任意场景) |
| 数据质量要求来源 | 既来自业务场景(人体真实感/恐怖谷效应),也来自算法设计(数据驱动) | 通过几何先验绕过了算法层面的数据质量依赖 |
核心区别:HumanVid 把相机轨迹当"遥控器"(外部条件),SCoPE 把相机射线当"坐标系"(位置编码本身)。前者告诉模型"相机怎么动",后者让每个 token 天然知道自己"从哪个方向看世界"。
局限性
Loss
- 未显式建模深度,射线只确定视线方向,不确定深度
- 依赖预训练DiT的content理解能力
其他局限
- 需要已知的相机轨迹作为输入
- 对于极端大尺度变化可能需要额外的尺度适应
有效
-
射线作为坐标系属性:相机控制不再依赖额外模块,而是坐标系的内在属性
-
加性注入 vs 乘性变换:保持RoPE不变,零初始化,从精确预训练状态开始
-
Plücker互积的代数匹配:注意力分数的双线性形式与Plücker互积天然契合
-
NGI处理尺度异构:方向/幅度解耦 + 门控,适应不同数据集的尺度惯例
局限性
-
依赖相机轨迹输入:需要用户提供准确的相机参数
-
不建模深度:射线只确定视线,深度由content推断
-
乘性方法对比:某些乘性相机PE设计未充分探索
启发
-
位置编码的新维度:除了网格索引,可以将几何量(如射线)作为位置坐标
-
代数结构匹配:利用Plücker互积与注意力点积的双线性形式匹配
-
加性 vs 乘性:加性注入保持预训练平衡,乘性变换可能破坏预训练先验
-
尺度不变性设计:对于异构数据,显式解耦尺度相关/无关部分
-
零初始化原则:ControlNet思想的延伸,从精确预训练状态开始微调
遗留问题
-
如何结合深度估计:射线+深度 = 完整3D坐标,能否直接建模?
-
动态场景处理:当前假设静态场景,动态物体如何处理?
-
无相机轨迹的相机控制:能否从文本描述推断相机轨迹?
-
多相机协同:能否扩展到多相机同时控制?
-
与3D生成结合:能否将SCoPE用于3D场景生成(如FlashWorld)?
参考材料
- Wan2.2: arXiv:2503.20314
- RoPE: arXiv:2104.09863
- Plücker坐标: Hartley & Zisserman, Multiple View Geometry
- UCPE: arXiv:2503.xxxxx
- GTA: [ICLR 2024]