跳转至

CameraAnything: Refilming Videos with Arbitrary Camera Control

会议: ECCV2026
论文: ECCV 原文
项目: CameraAnything
领域: 3D 视觉 / 视频生成
关键词: 相机控制、视频重拍、焦距编辑、分辨率适配、多镜头生成

一句话总结

CameraAnything 将逐像素相机射线注入视频扩散模型的注意力位置编码,并用可独立变化的合成相机监督训练,在一次生成中联合改变视点、焦距、画幅和镜头切换,在 DAVIS 重拍评测中将旋转误差从 ReCamMaster 的 5.11982 度降至 2.7600 度。

研究背景与动机

视频重拍不是从文字生成一个相似场景,而是保留已有视频中的人物、动作和时间进程,重新决定摄影机如何观看它。 既有路线中,TrajectoryCrafter 先从单目深度恢复点云,再沿目标轨迹渲染,并用生成模型填补遮挡区域;复杂动态场景里的几何误差会传到最终视频。 ReCamMaster 则直接学习多机位视频之间的生成映射,但主要控制相机外参,难以完整表达改变焦距或切换画幅的摄影需求。 单纯让相机平滑移动,也不同于把一个长镜头重新剪成包含突然切换机位的多镜头序列。

困难在于,画面中主体变大既可能来自摄影机靠近,也可能来自焦距增大,二者的透视效果却并不相同。 经典的 dolly zoom 甚至需要同时改变位置和焦距,以保留主体的近似大小并改变背景透视。 如果训练数据总把两种操作绑定,模型就无法知道哪部分视觉变化应归因于哪一个控制量。 画幅同样不是生成后的附属裁剪问题:横屏改竖屏时,目标像素网格、主点和对应的视线都可能变化,模型需要在新的成像几何下组织画面。

本文因此同时修改条件表示和训练数据,而不是只向网络再加入一个焦距标量。 逐像素射线把相机位置、朝向和内参落实到每个视觉 token,目标分辨率则决定潜变量网格及其位置编码。 同步合成视频提供“动作不变而摄影设置变化”的监督,独立采样控制轴则让模型见到只改一个设置以及组合改动的情况。 核心 idea:用几何条件告诉模型每个目标像素应该朝哪里看,再用部分控制维度保持不变的配对训练,让视点、焦距和画幅能够分别编辑、联合使用。

方法详解

整体框架

输入是源视频、源相机参数以及逐帧目标相机设置;输出是保留源场景内容和动态、但遵循目标摄影设置的新视频。 骨干为 Wan2.1-T2V-1.3B,先用 3D VAE 编码视频,再由扩散 Transformer 对目标潜变量进行去噪。 源视频 token 与带噪目标 token 沿帧维度拼接,使每层自注意力都能建立源内容与目标画面之间的联系。 源分支提供内容参照,目标分支提供需要生成的画面位置,二者都携带各自的相机几何信息。 训练侧先构造同步多机位配对,再按独立控制轴选择任务;生成侧通过射线与 RoPE 条件解释选定的目标设置。 这里没有先为每段输入视频优化显式 3D 场景的步骤,也不是先生成固定画幅再做外扩。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
        A["同步合成配对"] --> B["正交控制采样"]
        B -->|训练配对与相机参数| C["逐像素射线条件"]
        S["推理输入<br/>源视频与目标设置"] --> C
        C --> D["分辨率感知<br/>RoPE 注入"]
        D --> E["源 token 与目标 token<br/>联合注意力去噪"]
        E --> F["目标画幅的重拍视频"]

关键设计

1. 同步合成配对:让动作时间一致,只改变摄影条件

作者用 Unreal Engine 5 构造包含动画人物的动态环境,每个场景录制 20 段时间严格对齐的视频。 Group A 的 1–5 段是固定焦距、连续单镜头的基础视角,作为内容和运动的输入锚点。 Group B 的 6–10 段加入每段 1–3 次瞬时切镜头,让目标相机的位置和方向可以突然改变。 Group C 的 11–20 段复用 A、B 的外参轨迹,但改变焦距,因此能够比较“同样的相机运动、不同的视场”。 这种组织方式的重要之处是,焦距变化不会自动伴随一次新的动作表演,否则模型可能把动作差异误学成摄影控制的后果。 单镜头源与多镜头目标也共享动作时间线,所以切镜头应改变观察位置,而不是重新开始一段动作。

原始视频统一渲染成高分辨率正方形,训练时通过参数化中心裁剪得到不同画幅和分辨率的样本。 这与推理时“不靠裁剪完成编辑”并不矛盾:裁剪是构造训练监督的方法,最终生成直接在目标网格上进行。 需要区别的是,模型重生成整幅目标画面,并不承诺原视频某个裁剪区域的像素逐点保持不变。 正文没有给出完整训练场景数,不能把每场景 20 段误写成数据集总规模。

2. 正交控制采样:通过保持部分维度不变学习解耦

每个训练样本都从单镜头、固定焦距的视频中选择源视频,随后独立决定外参、焦距和宽高比是否变化。 外参模式包括同相机、不同单镜头、单镜头到多镜头,抽样概率依次为 0.2、0.4、0.4。 焦距变化独立以 0.5 的概率启用,宽高比变化独立以 0.2 的概率启用。 焦距分支利用相同外参轨迹的重新渲染版本,避免把光学缩放与额外的位姿变化混为一谈。 启用画幅变化时,源与目标从分辨率桶中独立选取,并保证宽高比不同。

三个轴给出最多 \(3\times2\times2=12\) 种名义任务组合,但并非每种组合都以相同概率出现。 如果抽到“同相机、不改焦距、不改画幅”,作者将其改为焦距变化样本,保证训练不是完整的恒等复制。 因此消融中的 identity samples 应理解为部分控制轴保持不变的样本,而不是大量完全不编辑的视频对。 去掉这类样本后,所有维度一起改变,网络虽然仍看到变化,却缺少辨认各个控制量独立作用的对照。 这是数据层面的解耦机制,不是额外加入一个显式的解耦损失。

3. 逐像素射线条件:把整帧相机参数变成局部观看方向

帧级基线把外参的 \(3\times4\) 矩阵与内参的 \(3\times3\) 矩阵展平,拼成 21 维向量,再将同一个嵌入广播给该帧所有空间 token。 它能描述整台相机,却不直接区分左上角像素和画面中心对应的空间视线。 本文使用由相机内外参构造的逐像素六维射线表示,经 patchification 和可学习投影后,提供给每个 DiT block。 所有相机姿态都相对源视频首帧表达,避免生成控制依赖任意选择的世界坐标系。 焦距进入内参,影响不同像素的视线方向;相机旋转和平移则决定这些视线在共同坐标系中的方向与位置。

改变目标分辨率时,模型重新构造目标内参、主点和射线场,而不是给原来的固定网格加一个分辨率标签。 这样,目标 token 数量变化与其对应的成像几何可以同时变化,支持不同宽高比的原生输出。 不过,缓存中的式 (3) 严重损坏,正文紧接着将六维表示写成原点与方向的拼接,引言却称其包含方向与矩。 标准 Plücker 坐标通常使用方向和矩,这里不能据名称擅自把正文改成某个叉乘公式。 笔记保留“逐像素射线条件”的确定机制,精确坐标约定仍需以清晰原文或实现核实。

4. 分辨率感知 RoPE 注入:让几何影响注意力匹配而非直接改写特征

作者比较了加法注入、AdaLN 注入和 RoPE 注入三种方式。 加法直接改变 token 隐状态;AdaLN 根据相机条件预测缩放和平移参数,改变归一化后的特征分布。 最终方案沿用 ReDirector 的 RoCE 思路,用轻量 MLP 将相机射线条件映射为相位偏移,与原始 3D RoPE 并行作用于自注意力的查询和键。 因此相机条件介入的是 token 之间的相似度计算,而不是简单把摄影机向量加到视觉内容中。 直观上,源 token 与目标 token 能否互相提供信息,不仅由外观决定,还会受到其观看几何的调节。 这种注入并不是严格的射线对应求解器,几何一致性仍来自学习,而非显式硬约束。

目标画幅还控制原始 3D RoPE 使用的空间坐标。 正文第 9 页给出潜变量 patch 网格的尺寸关系,记 VAE 空间压缩率为 \(s_{\mathrm{vae}}\)、patch 步长为 \(s_{\mathrm{patch}}\)

\[ h'=\frac{H_t}{s_{\mathrm{vae}}s_{\mathrm{patch}}},\qquad w'=\frac{W_t}{s_{\mathrm{vae}}s_{\mathrm{patch}}}. \]

分辨率变化后,按新网格重算位置坐标,同时使用新目标相机的射线;不是维持旧 token 布局而仅缩放解码后的图像。 本文给出的 VAE 空间压缩率为 8,时间压缩率为 4,但正文未明确给出此处 patch 步长的数值。 当源与目标分辨率不同,双方 token 数也可能不同,不能将预备知识中等大小情况下的 \(2N\) 长度当作所有编辑任务的固定长度。 实际推理还需要源相机参数;正文没有详细交代真实输入的完整参数标定流程,不能将 ViPE 评测过程直接当成已说明的输入预处理。

一个完整示例

以正文的横屏改竖屏设置为例,源视频中的人物持续行走,目标希望获得 832×480 的竖屏画幅,并在途中切换到另一机位。 训练时,可以从 Group A 取源视频,从对应多镜头轨迹及其重焦距版本取目标,二者仍对齐同一次行走过程。 推理时则由用户指定目标相机序列和焦距设置,不需要提供真实的目标视频。 模型先根据目标内参及位姿生成逐像素射线,再建立与竖屏尺寸一致的目标潜变量和 RoPE 空间坐标。 去噪中的目标 token 通过联合自注意力读取源视频内容;切镜头发生时,相机条件突变,但人物动作时间不应因此重置。 输出直接解码为竖屏重拍视频,而不是先完成横屏重拍,再从中间裁出人物。 这个例子说明模块如何协作,并非原文额外报告的一项逐例量化实验。

损失函数 / 训练策略

训练仅更新自注意力层、相机编码器和相机 adapter,其余骨干参数冻结,新引入相机模块采用零初始化。 训练共 20k 步,学习率为 \(5\times10^{-5}\),batch size 为 32。 正文列出的分辨率桶为 480×832、832×480、384×672、672×384、512×672、672×512、384×512、512×384、640×640 和 320×320。 本文沿用预训练视频生成骨干的训练框架,没有在可读正文中单列完整的去噪损失公式、采样器设置或推理步数。 因此这里不补写某个通用扩散损失作为作者的精确实现,也不据模型规模推断显存或速度。

实验关键数据

主实验

合成评测从 50 个未见场景各取 6 个测试设置,共 300 对视频;目标覆盖画幅、单镜头外参、多镜头外参以及焦距组合变化。 真实评测选取 50 段 DAVIS 视频,每段配 6 个合成目标轨迹,同样为 300 对,但不存在真实目标视频。 真实相机误差由 ViPE 估计生成视频位姿后计算:RotErr 是首帧归一化后的平均旋转误差,TransErr 是按轨迹弧长对齐尺度后的平均平移误差。 因此 TransErr 不能解读成以米计的绝对位置误差,真实评测也不能报告有配对真值的 PSNR。

下表摘录原文表 1(第 12 页)与表 2(第 13 页);PSNR、SSIM 越高越好,LPIPS、FVD 和相机误差越低越好。

来源与任务 指标 基线 A 基线 B CameraAnything
表 1,合成外参/焦距 PSNR TrajectoryCrafter 12.24 ReCamMaster 12.87 15.88
表 1,合成外参/焦距 LPIPS TrajectoryCrafter 0.654 ReCamMaster 0.607 0.179
表 1,合成外参/焦距 FVD TrajectoryCrafter 462.9 ReCamMaster 351.5 231.0
表 1,合成分辨率编辑 PSNR Follow-Your-Canvas 19.91 VACE 19.45 20.54
表 1,合成分辨率编辑 SSIM Follow-Your-Canvas 0.765 VACE 0.714 0.758
表 1,合成分辨率编辑 LPIPS Follow-Your-Canvas 0.206 VACE 0.194 0.174
表 2,DAVIS 外参/焦距 RotErr,度 TrajectoryCrafter 13.9916 ReCamMaster 5.11982 2.7600
表 2,DAVIS 外参/焦距 TransErr TrajectoryCrafter 0.9949 ReCamMaster 0.4628 0.3309

表 1 的外参/焦距 PSNR 比 ReCamMaster 高 3.01,但分辨率编辑的 SSIM 低于 Follow-Your-Canvas,不能概括成所有指标最佳。 表 2 中 ReCamMaster 的主体一致性为 0.9094,本文为 0.8410;作者解释前者保留源首帧且不执行多镜头切换,更少合成新区域。 这提供了指标差异的可能原因,但不是消除了评价偏差的受控证明。

消融实验

原文表 3(第 13 页)比较相机表示与注入方式,其余设置固定;下表保留三个重建指标。

表示 注入 PSNR SSIM LPIPS
Linear,21 维帧级 Addition 15.62 0.481 0.434
Plücker Ray,逐像素 AdaLN 16.51 0.517 0.368
Plücker Ray,逐像素 RoPE 16.66 0.528 0.372

RoPE 比 AdaLN 的 PSNR 高 0.15、SSIM 高 0.011,但 LPIPS 从 0.368 变为 0.372,略有变差。 第一行到第二行同时改变了表示和注入方式,不能把该差值全部归功于逐像素射线。 表 3 的绝对数值与表 1 的汇总不同,不能跨表混合求改进幅度,正文也未完整解释两个表的聚合差异。

原文表 4(第 15 页)在合成基准上比较训练策略;每个单元格依次为 PSNR / SSIM / LPIPS。

配置 外参任务 焦距任务 分辨率任务
完整模型 14.13 / 0.423 / 0.483 20.03 / 0.606 / 0.213 20.05 / 0.743 / 0.187
仅外参训练 14.00 / 0.414 / 0.497 不适用 不适用
去掉部分维度不变的样本 13.87 / 0.406 / 0.503 15.94 / 0.475 / 0.399 14.64 / 0.456 / 0.414

关键发现

  • 去掉部分维度不变的样本,焦距任务 PSNR 从 20.03 降至 15.94,分辨率任务从 20.05 降至 14.64,说明组合变化本身不足以教会独立控制。
  • 联合训练的外参 PSNR 为 14.13,仅外参训练为 14.00,至少在这一基准上没有明显的外参性能牺牲。
  • 真实场景位姿跟随改善与所有感知维度最优是两件事,论文更有力的证据集中在相机准确度、重建质量和控制范围。

亮点与洞察

  • 任务解耦不仅依靠网络结构,也依靠配对样本让某些因素保持不变。表 4 说明,受控数据变化本身就是监督信息。
  • 分辨率被同时落实到射线几何与位置网格,而不是仅改变最终图像大小。这使原生画幅生成具备明确的条件入口。
  • 切镜头被表示成逐帧相机条件的突变,并用同步目标视频训练。它把连续运动和剪辑切换放进同一视频生成流程。

局限与展望

  • 正文没有单列详细失败案例或限制章节;以下主要是依据方法与评测提出的阅读判断,而非作者逐项承认的结论。
  • 训练依赖合成动态场景,DAVIS 的迁移结果不能证明对所有复杂材质、遮挡、长时动作或极端镜头都有效。
  • “任意控制”描述的是支持的控制接口,不代表任意焦距、分辨率和位姿范围都有覆盖充分的测试;正文没有完整范围或外推曲线。
  • 真实位姿误差依赖 ViPE 的估计可靠性,正文未给出专门的真实焦距恢复误差或切镜头时刻误差,联合内参控制的评测仍可加强。
  • 源相机参数如何稳定获得、跨分辨率 token 如何具体组织,以及推理时延与显存成本,正文披露不足,影响直接复现。
  • 式 (1)、(3)、(6) 的缓存抽取存在明显损坏,且射线的原点/矩描述不一致;补充材料提到的用户研究未包含在此全文缓存中,不能引用其人数或偏好比例。

相关工作与启发

  • 对比 ReCamMaster:继承源与目标沿帧维拼接的条件方式,但从帧级外参控制扩展到逐像素几何、焦距和原生画幅,训练目标也覆盖多镜头切换。
  • 对比 ReDirector:RoCE 是已有注意力注入思路,本文的重点是将射线、目标分辨率网格和多轴监督组合成统一编辑框架,不宜把 RoPE 相机注入单独说成首创。
  • 对比 TrajectoryCrafter:后者显式恢复几何再重渲染,本文依靠生成先验学习跨视点映射;省去显式重建也意味着新暴露区域主要由模型补全。
  • 对比 Follow-Your-Canvas 与 VACE:外扩或参考式编辑倾向于保留已有区域,本文重生成目标整帧;二者对像素保留与新构图的取舍不同。
  • 可延伸方向,非原文结果:为相机各控制轴建立独立校准测试,再逐步增加复合操作强度,可以区分“接口接受参数”和“输出确实遵从参数”。

评分

  • 新颖性: 4/5。主要价值是多种摄影控制与数据监督的统一,而非提出完全新的骨干或注意力算子。
  • 实验充分度: 4/5。兼有合成、真实和训练消融,但缺少更完整的真实内参精度及效率报告。
  • 写作质量: 3/5。任务与数据设计较清楚,射线定义、跨分辨率细节及部分表间口径仍需澄清。
  • 价值: 4/5。对已有视频的重构图、镜头设计和多平台适配有实用启发,但尚不能据此认定达到稳定生产级质量。