Vid-CamEdit: Video Camera Trajectory Editing with Generative Rendering from Estimated Geometry
核心思想
给定一个单目视频和用户定义的新相机路径,重新合成沿新路径的视频。
核心挑战:
- 新视角可能看到原视频中不可见的区域
- 需要保持时间一致性
- 缺乏多视角动态视频(4D)训练数据
Vid-CamEdit 分两阶段解决:
- 几何估计:获取时序一致的 3D 几何(点图)
- 生成渲染:用估计的几何引导扩散模型合成新视角
关键创新:分解微调——空间块用 3D 数据训练,时间块用视频数据训练 → 完全避免 4D 数据。
背景知识
为什么需要视频相机编辑
| 应用 | 说明 |
|---|---|
| 电影后期 | 拍摄后改变镜头运动 |
| VR/AR | 将 2D 视频转为多视角体验 |
| 运动分析 | 从不同角度回放体育动作 |
现有方法的局限
| 方法 | 思路 | 问题 |
|---|---|---|
| 3D 重建后渲染 | NeRF/3DGS 重建场景 | 遮挡区域无法填充 |
| 重投影+修复 | 投影到新视角+补洞 | 严重扭曲区域无法修复 |
| 端到端生成 | 直接预测新视角 | 缺乏 4D 训练数据 |
方法详解
1. Stage 1:时序一致几何估计
使用 MonST3R 估计每帧的点图 $G \in \mathbb{R}^{T \times H \times W \times 3}$——每个像素对应的 3D 世界坐标。
也兼容其他几何模型:DepthCrafter、Depth-Anything2、DepthAnyVideo。
2. Stage 2:几何引导的视频到视频翻译
2.1 重投影为光流
将 3D 几何转换为 2D 光流:
\[f_{\text{rel}}(u, v, t) = \Pi\left(C_{\text{rel}}(t) \cdot G(u, v, t), K\right) - (u, v)\]- $\Pi$:透视投影
- $C_{\text{rel}}(t)$:相对相机变换
- $K$:相机内参
优势:将复杂的 3D 变换简化为 2D 光流 → 扩散模型更容易处理。
2.2 光流条件位置编码重对齐
\[\text{PE}'(u, v, t) = \text{PE}(u + f_x, v + f_y, t)\]将位置编码根据光流偏移 → 扩散模型内在地学习光流条件,无需显式 warp 操作。
2.3 架构
- 基础模型:AnimateDiff(Stable Diffusion 1.5)
- 视频编码器:ReferenceNet 架构,与扩散模型共享权重
- 交替的空间和时间交互块
- 视频编码器特征拼接进空间块的自注意力
3. 分解微调策略(消除 4D 数据需求)
核心创新:将时空学习分解为两个独立的训练阶段。
| 模块 | 训练数据 | 数据类型 |
|---|---|---|
| 空间/多视角块 | RealEstate10K, MannequinChallenge, MegaScene, ScanNet | 3D(多视角图像) |
| 时间块 | TikTok, WebVid-10M | 视频 |
训练配置:
- 空间块:344K 步,batch 192,512×384/512×288
- 时间块:30K 步,batch 16
- 交替冻结防止过拟合
- 视频编码器 dropout 0.3
关键:多视角图像当作 $T=1$ 的视频处理(输入/输出相机相同)→ 统一训练接口。
实验结果
Neu3D 数据集
| 方法 | LPIPS↓ | SSIM↑ | PSNR↑ | 帧一致性↑ |
|---|---|---|---|---|
| MonST3R | 0.562 | 0.206 | 10.42 | 0.747 |
| Pseudo-DVS | 0.564 | 0.352 | 14.43 | 0.655 |
| Gen. Camera Dolly | 0.505 | 0.249 | 10.71 | 0.682 |
| Ours | 0.414 | 0.358 | 14.91 | 0.858 |
ST-NeRF 数据集
| 方法 | LPIPS↓ | SSIM↑ | PSNR↑ | 帧一致性↑ |
|---|---|---|---|---|
| MonST3R | 0.649 | 0.224 | 8.39 | 0.757 |
| Pseudo-DVS | 0.527 | 0.415 | 15.33 | 0.742 |
| Gen. Camera Dolly | 0.425 | 0.346 | 13.60 | 0.748 |
| Ours | 0.386 | 0.381 | 14.89 | 0.917 |
帧一致性 0.917 远超所有基线 → 时间块训练有效保证了时序连贯性。
消融实验
| 配置 | LPIPS↓ | SSIM↑ |
|---|---|---|
| 无几何引导 | 0.498 | 0.314 |
| 重投影+视频修复 | 0.485 | 0.336 |
| 完整框架 | 0.414 | 0.358 |
几何模型兼容性
| 几何模型 | LPIPS↓ |
|---|---|
| DepthCrafter | 0.416 |
| Depth-Anything 2 | 0.420 |
| DepthAnyVideo | 0.425 |
| MonST3R | 0.414 |
不同几何模型的性能差异极小(0.414-0.425)→ 方法不依赖特定几何模型。
4D 重建增强(DyCheck 数据集)
集成到 Shape-of-Motion 框架中:
- 可见区域 LPIPS:0.450 → 0.261
- 遮挡区域 LPIPS:0.465 → 0.129
个人思考
- “3D 几何 → 2D 光流 → 位置编码偏移” 的简化链非常优雅:避免了在扩散模型中处理复杂 3D 表示,让 2D 模型”以为”自己在做标准的视频生成。
- 分解微调消除 4D 数据需求是最重要的实用贡献:4D 数据(多视角动态视频)几乎不存在 → 分解为”多视角图像学空间”和”视频学时间”是可行的替代。
- 帧一致性 0.917 说明时间块的训练非常有效——这是视频编辑中最关键的指标,因为用户对闪烁/不连贯极为敏感。
- 几何模型无关性(LPIPS 差异仅 0.011)说明生成模型的鲁棒性足以弥补不同几何估计的差异 → 未来几何模型改进会自动提升效果。
- 遮挡区域 LPIPS 从 0.465 到 0.129 说明生成渲染在处理不可见区域方面远超纯重建方法。