SCoPE: 视线坐标位置编码实现视频生成相机控制 · 干货攻略
- 链接: https://x.com/_akhaliq | https://github.com/TencentARC/SCoPE
- 分类: x-tips
- 来源: X @_akhaliq
- 作者: Jay
- 更新: 2026-08-28
- 仓库: TencentARC/SCoPE
这是什么
SCoPE(Sightline-Coordinate Positional Encoding)是腾讯 ARC Lab 与港大、港科大联合提出的视频生成相机控制方法,发表在 2026 年。其核心思想极为优雅:将每条相机视线(camera ray)作为 token 的第二类位置坐标,注入预训练视频 Diffusion Transformer(DiT)的注意力机制,从而让相机轨迹成为坐标系的内置属性,而非外加的控制分支。
SCoPE 基于 Wan2.2-I2V-A14B(Wan2.2 图像到视频 14B MoE 版本)构建,以 Apache-2.0 许可证开源,自包含完整推理所需权重(无需另行下载 Wan2.2 基座模型)。官方 GitHub README 原文
为什么值得关注
视频生成模型(如 Wan2.2、Sora、Gen-3)有一个根本性矛盾:token 按「像素-时间网格」寻址,但用户关心的是「世界坐标系中的空间位置」。当你想让镜头绕着场景旋转 90°,传统方案要么额外训练一个相机控制分支,要么用复杂的 ControlNet-like 模块——这些方法要么破坏预训练先验,要么引入大量新参数。
SCoPE 解决的就是这个矛盾:把相机射线本身当作位置编码来处理,从而在保留原始 DiT 能力的同时,实现精确的相机轨迹控制。
具体来说,每个视频 token 的相机射线用 Plücker 坐标 表示,在注意力计算时将射线特征注入 query 和 key,使 attention score 获得一个「仅凭两条视线就能判断几何一致性」的项(两条视线越接近,该项越大)。整个方案:
- 保持 RoPE bit-exact:不修改任何预训练旋转位置编码的数值
- 新增参数 < 0.1%:几乎不影响原始模型
- 支持异源姿态输入:通过 per-clip 深度归一化 + 可学习的 scale gate,可以消费不同重建流程产生的相机姿态
性能提升(官方 project page,14B 规模):visual-ai.github.io/scope - 旋转误差减少 29% - FVD(Fréchet Video Distance)降低 43%
这意味着在同等的训练数据和算力预算下,SCoPE 相比基座 Wan2.2 在相机控制任务上有显著代际提升。
核验过程
官方来源
- GitHub README(TencentARC/SCoPE):包含完整方法描述、安装方式(uv sync / pip)、推理命令、目录结构、模型下载(Hugging Face,约 67 GB)、训练配方。关键说法:Plücker 坐标、Normalize-Gate-Inject、RoPE bit-exact、< 0.1% 新参数、基于 Wan2.2-I2V-A14B。
- Hugging Face 模型页(TencentARC/SCoPE):明确注明「self-contained release for Wan2.2-I2V-A14B」,继承了 Wan2.2 的视觉能力、安全限制和计算需求;明确列出适用边界(不准确姿态、大分布外轨迹、大遮挡、快速运动会导致效果下降)。HF 页面
- Project Page(visual-ai.github.io/scope):核心定量数据——
< 0.1% new parameters, −29% rotation error, −43% FVD at 14B;方法图示;六场景 demo 视频。
交叉验证
- Wan2.2 背景数据(+65.6% 图片、+83.2% 视频训练数据,MoE 架构 ~27B 总参/14B 激活)来自 Wan2.2 GitHub 官方仓库,与 SCoPE README 引用一致。
- SCoPE 的 Plücker 坐标公式与论文 arXiv:2606.27345 中的公式(公式 3)一致。
- 关键数字(0.1% 新增参数、旋转误差 −29%、FVD −43%)在 project page、deeplearn.org 摘要和官方 README 中表述完全一致。
未核验项:原帖提及「视频生成 position encoding 新思路」,该描述性说法无法量化核对,属实但不构成精确数据点。
上手步骤
环境准备
推荐使用 uv(自动解析 CUDA 12.8 torch 构建):
git clone https://github.com/TencentARC/SCoPE.git
cd SCoPE
uv sync
source .venv/bin/activate
备选 pip(需指定 PyTorch CUDA 12.8 wheel):
conda create -n scope python=3.11 -y
conda activate scope
pip install -e . --extra-index-url https://download.pytorch.org/whl/cu128
⚠️ 官方明确建议使用 PyTorch 2.9.1(CUDA 12.8),更换 PyTorch 版本可能导致数值输出变化。官方 README 原文
下载模型权重
pip install -U huggingface_hub
hf download TencentARC/SCoPE --local-dir checkpoints/SCoPE
模型约 67 GB,确保本地存储空间充足(同时保留 Hugging Face 缓存)。
推理示例
快速上手(交互式选择轨迹):
python inference.py \
--model_path checkpoints/SCoPE \
--case omni-mystic-forest \
--output_path outputs/omni-mystic-forest__truck_right.mp4
直接指定轨迹(非交互式脚本用法):
python inference.py \
--model_path checkpoints/SCoPE \
--case omni-mystic-forest \
--trajectory truck_right \
--output_path outputs/omni-mystic-forest__truck_right.mp4
一键生成同一场景所有轨迹:
python inference.py \
--model_path checkpoints/SCoPE \
--case omni-mystic-forest \
--all_trajectories \
--output_dir outputs/omni-mystic-forest
💡 仓库
examples/目录下预置了示例首帧、提示词和相机轨迹,无需准备额外素材即可运行。
可视化相机控制
安装 viz 依赖后可叠加相机轨迹 HUD:
pip install -e .[viz]
python scripts/overlay_camera.py --video outputs/xxx.mp4 --trajectory poses/xxx.npy
训练配方(RDBO high-only)
如需在自己数据上微调:
bash scripts/train.sh
训练入口为 train.py,配方配置在 configs/ 目录。
坑与适用边界
⚠️ 已知局限
官方文档明确指出以下情况效果会下降: - 姿态/内参不准确:输入相机姿态或内参有误差时生成质量下滑 - 训练分布外轨迹:超出训练数据覆盖范围的运动幅度或类型 - 大面积遮挡:被遮挡区域难以保持时序一致性 - 快速相机运动:运动过快时出现伪影或时序断裂
⚠️ 硬件门槛
- Python 3.11(强制要求)
- CUDA GPU:必需
- 存储:模型 67 GB + 生成中间结果,建议预留 100 GB+
- 显存:未在文档中明确给出最低要求,但从 Wan2.2-A14B(MoE ~27B 总参/14B 激活)推测,至少需要 24 GB 显存的显卡(如 A100 40GB 或 4090 24GB 实际可用)
⚠️ 分辨率与帧数
输出固定为 480 × 832,生成 81 帧,这是该版本模型的硬编码默认值,不支持直接调节(需修改源码 scope/config.py 中的默认值)。
适用边界
| 场景 | 推荐程度 |
|---|---|
| 精准相机控制的 I2V 生成 | ✅ 最佳选择 |
| 多轨迹一致性(去/回程场景) | ✅ 射线坐标天然支持 |
| 通用视频生成(非相机控制) | ❌ 需基座自己更强 |
| 快速原型 / Hugging Face Space 体验 | ✅ 有在线 demo |
一句话结论
SCoPE 将相机射线作为第二位置坐标注入 DiT 注意力,新增参数不足 0.1%,在 Wan2.2-14B 上实现旋转误差 −29%、FVD −43% 的相机控制提升——是目前视频生成相机控制领域参数效率最高、集成成本最低的方案,适合需要精细镜头运动控制的视频生成项目直接采用。