ICLR 2025 · Camera-controllable video diffusion

把每个像素的相机射线,接入视频扩散模型的时间建模

CameraCtrl 将一条相机轨迹展开为逐帧、逐像素的 Plücker 射线图,经带时间注意力的轻量编码器提取多尺度特征,再注入冻结视频 U-Net 的时间注意力层。训练只更新相机模块与融合线性层。

Hao He 等 7 位作者ICLR 2025 正式论文32 页合订 PDFarXiv:2404.02101v2官方代码核查
65KRealEstate10K 训练片段
50K论文报告的优化步数
12.98T2V TransErr,MotionCtrl 为 14.02
1.29°T2V RotErr,MotionCtrl 为 1.58°
01 · RESEARCH GAP

文本描述内容,矩阵描述相机;两者需要在像素与时间两个维度建立联系

AnimateDiff MotionLoRA 只能选择八类预设运动;MotionCtrl 接收数值化相机参数,却缺少每个图像位置对应的三维射线几何。CameraCtrl 的核心假设是:相机姿态若表示为像素射线场,视频模型能够更容易把控制信号解释成全局视点变化,并复用已有时间一致性能力。

参数尺度

旋转矩阵受正交约束,平移向量的量级自由。直接拼接数值会给数据驱动学习带来尺度差异。

空间对应

单个姿态向量没有显式说明图像中每个像素向三维世界发出哪条射线,细粒度空间控制较弱。

跨域泛化

相机编码器若同时看到训练视频 latent,容易记住 RealEstate10K 的室内外观。作者因此只输入几何射线图。

Version NotearXiv 首次提交题名为 CameraCtrl: Enabling Camera Control for Text-to-Video Generation;ICLR 2025 正式题名为 CameraCtrl: Enabling Camera Control for Video Diffusion Models。作者、arXiv 标识与方法内容表明两者是同一论文的版本更新。
Paper Verified论文在 AnimateDiffV3 和 SVD 两类生成器上训练独立 CameraCtrl,并展示与 RealisticVision、ToonYou、SparseCtrl 的组合;量化表验证了 T2V 与 I2V 两种设置的相机误差。
Author Claim作者把模块称作 plug-and-play。证据覆盖共享相似 U-Net 注意力结构的模型组合,尚未覆盖任意架构的视频生成器。
02 · CAMERA GEOMETRY

Plücker 表示记录一条有向射线的方向与力矩

符号定义作用
\(K\in\mathbb{R}^{3\times 3}\)相机内参,包含焦距与主点把像素坐标还原到相机坐标系方向
\(R,t\)相机到世界坐标变换中的旋转与相机中心把相机射线旋转、平移到统一世界坐标系
\(\mathbf{o}_i\)第 \(i\) 帧相机中心每帧所有像素共享
\(\mathbf{d}_{i,u,v}\)世界坐标系中的单位射线方向随像素位置与相机旋转变化
\(\mathbf{p}_{i,u,v}\)\(\left(\mathbf{o}_i\times\mathbf{d}_{i,u,v},\mathbf{d}_{i,u,v}\right)\in\mathbb{R}^{6}\)同时编码射线位置与朝向
\(\mathcal{P}\)\(\mathbb{R}^{n\times6\times h\times w}\)整个视频轨迹的逐像素条件张量

从像素到世界射线

\[ \widetilde{\mathbf{d}}_{i,u,v}=R_iK_i^{-1}[u,v,1]^{\mathsf T}, \qquad \mathbf{d}_{i,u,v}= \frac{\widetilde{\mathbf{d}}_{i,u,v}} {\lVert\widetilde{\mathbf{d}}_{i,u,v}\rVert_2} \] \[ \mathbf{p}_{i,u,v}= \left(\mathbf{o}_i\times\mathbf{d}_{i,u,v},\mathbf{d}_{i,u,v}\right) \]

第一式将像素中心反投影成单位方向;第二式构造 Plücker 坐标,其中 moment \(\mathbf{o}\times\mathbf{d}\) 指明射线相对世界原点的位置。实现读取 world-to-camera 矩阵后求逆得到 camera-to-world;方向只乘旋转,原点取平移。论文正文 Eq. 3 把 \(t\) 写入方向表达式,代码把平移放在射线原点,代码形式符合常用射线几何。

相对坐标变换

\[ T^{\mathrm{rel}}_i= T^{\mathrm{target}}_0 \left(T^{\mathrm{w2c}}_0T^{\mathrm{c2w}}_i\right), \qquad T^{\mathrm{rel}}_0=I_4 \]

官方数据代码先把第一个相机设为统一参考,再生成相对 c2w 序列;训练配置同时启用 relative_pose 与 zero_t_first_frame。这样模型学习轨迹变化,弱化世界坐标原点的任意选择。

官方仓库提供的 CameraCtrl 相机轨迹可视化官方仓库提供的 CameraCtrl 生成结果动画
官方仓库实例:左侧为每帧相机视锥及移动轨迹,右侧为相同轨迹条件下的生成视频。动画直接内嵌于本页。
03 · ARCHITECTURE

多尺度相机编码器负责几何,冻结的时间注意力负责生成

01 输入文本或首帧图像 + \(n\) 帧内外参
02 规范化首帧相对坐标、焦距缩放、同步水平翻转
03 射线场逐像素生成六通道 Plücker embedding
04 编码PixelUnshuffle + 四级 ResNet + 时间自注意力
05 注入按 U-Net 尺度与 latent 逐点相加,经零初始化线性层
06 去噪冻结 AnimateDiffV3 或 SVD 主体预测噪声
07 解码VAE 将最终 latent 转为视频帧

受相机条件控制的扩散目标

\[ \mathcal{L}(\theta)= \mathbb{E}_{z_0^{1:N},\epsilon,c_t,\mathcal{P},t} \left[ \left\lVert \epsilon- \widehat{\epsilon}_{\theta} \left(z_t^{1:N},c_t,\Phi_c(\mathcal{P}),t\right) \right\rVert_2^2 \right] \]

\(z_0^{1:N}\) 是 \(N\) 帧视频 latent,\(z_t^{1:N}\) 是第 \(t\) 个噪声时刻的 latent,\(c_t\) 为文本或图像条件,\(\Phi_c\) 为 CameraCtrl 编码器。训练冻结基础模型参数,只让 \(\Phi_c\) 与融合层吸收梯度。

输入尺寸论文 T2V 使用 16 帧、256 × 384;I2V 使用 14 帧、320 × 576。
四级输出以 Stable Diffusion 1.5 为例,通道为 320、640、1280、1280;空间分辨率依次为原图的 1/8、1/16、1/32、1/64。
时间建模每个 ResNet block 后加入 temporal self-attention、LayerNorm、位置编码与 MLP。
注入位置相机特征与 latent 特征逐点相加,经可学习线性层后送入每个 motion block 的第一个 temporal attention。

实现中的残差融合

\[ \mathbf{h}'= \mathbf{h}+ s\cdot W_{\mathrm{merge}} \left(\mathbf{h}+\mathbf{c}\right) \]

\(\mathbf{h}\) 为 U-Net hidden state,\(\mathbf{c}\) 为同尺度 pose feature,\(s\) 为 pose embedding scale。官方代码将 \(W_{\mathrm{merge}}\) 的权重和偏置初始化为零,使训练开始时 \(\mathbf{h}'=\mathbf{h}\),基础生成器初始行为保持不变。

04 · TRAINING & INFERENCE

训练数据选择同时考虑外观接近程度与轨迹分布宽度

T2V · AnimateDiffV3

  • RealEstate10K 约 65K 片段;LAVIS 为片段生成文本说明。
  • 先训练 RealEstate10K image LoRA,再在增强后的 AnimateDiffV3 上训练 CameraCtrl;完成后可移除 image LoRA。
  • 16 帧,stride 8,256 × 384;图像与相机姿态以 50% 概率同步水平翻转。
  • AdamW,常数学习率 \(1\times10^{-4}\),\(\beta_1=0.9, \beta_2=0.99\),weight decay 0.01。
  • 线性 beta schedule:\(\beta_{\mathrm{start}}=0.00085\)、\(\beta_{\mathrm{end}}=0.012\)、\(T=1000\)。
  • 论文:16 张 80GB A100,每卡 batch 2,总 batch 32,50K steps,约 25 小时。

I2V · Stable Video Diffusion

  • 直接在 SVD 上训练相机编码器与融合线性层。
  • 14 帧,stride 8,320 × 576。
  • AdamW,常数学习率 \(3\times10^{-5}\),\(\beta_1=0.9, \beta_2=0.99\),weight decay 0.01。
  • 沿用 SVD 的 EDM noise scheduler 及其超参数。
  • 论文:32 张 80GB A100,每卡 batch 1,总 batch 32,50K steps,约 40 小时。
Our Interpretation先训练 image LoRA 的目标是缩小 WebVid 域与 RealEstate10K 域的外观差异,让 CameraCtrl 训练更专注于姿态。推理时移除 LoRA 并接回原始或个性化图像模型,考验相机模块是否只保存几何控制。

推理过程

  1. 用户从现有视频经 COLMAP 提取轨迹,或直接构造内外参序列。
  2. 按训练分辨率修正焦距与主点,将第一个相机归一化为参考坐标。
  3. 生成逐像素 Plücker tensor,并由相机编码器获得四级特征。
  4. 用文本条件运行 AnimateDiffV3,或用首帧图像条件运行 SVD;全部实验固定 25 个去噪步,不同生成域使用不同 guidance scale。
  5. 可通过放大相邻帧平移间隔改变运动强度,也可只修改主点 \(c_x,c_y\) 或焦距 \(f_x,f_y\) 实现画面平移与 zoom。
Reproducibility Boundary论文没有汇总公布各生成域的具体 guidance scale。仓库给出 prompt、seed、轨迹文件与命令,但复现实验仍需下载 SD1.5、AnimateDiffV3、CameraCtrl checkpoint,并自行准备 RealEstate10K 数据路径。
05 · RESULTS

主表同时测量视觉质量、物体动态、轨迹误差与用户偏好

FVD 越低越好;CLIPSIM、FC、ODD、用户偏好越高越好;TransErr 与 RotErr 越低越好。MotionCtrlVC 使用 VideoCrafter,MotionCtrlSVD 使用 SVD;两组基础模型差异使跨方法比较同时受到生成器影响。

方法FVD ↓CLIPSIM ↑FC ↑ODD ↑TransErr ↓RotErr ↓偏好率 ↑
AnimateDiff1022.40.2980.93056.4不支持不支持19.4%
MotionCtrlVC1123.20.2860.92242.314.021.5837.0%
CameraCtrlAD1088.90.3010.94149.812.981.2943.6%
SVD371.20.3120.95747.5不支持不支持未测
MotionCtrlSVD386.20.3030.95341.810.211.4126.9%
CameraCtrlSVD360.30.2980.96046.59.021.1873.1%
Paper VerifiedT2V 中 CameraCtrl 相对 MotionCtrl 将 TransErr 从 14.02 降到 12.98,RotErr 从 1.58° 降到 1.29°;I2V 中分别从 10.21 降到 9.02、从 1.41° 降到 1.18°。CameraCtrlSVD 的 CLIPSIM 低于原始 SVD 与 MotionCtrlSVD,语义相似度并未全面领先。

评测协议与噪声来源

用户研究

50 名参与者观看短视频并选择轨迹更符合条件的结果。主表八类基础运动的 T2V 偏好率为 19.4% / 37.0% / 43.6%;复杂 RealEstate10K 轨迹的 MotionCtrl 与 CameraCtrl 二选一偏好为 27.6% / 72.4%;I2V 主表为 26.9% / 73.1%。论文未报告参与者背景分布、每人题量、随机化程序、置信区间与显著性检验。

06 · ABLATIONS

表示、编码器、注入层和训练数据分别影响控制误差与生成域

相机表示

表示FVD ↓TransErr ↓RotErr ↓
Raw values230.113.881.51
Euler angles221.213.711.43
Direction + Origin232.313.211.57
Plücker embedding222.112.981.29

Plücker 的 FVD 只排第二,但两项相机误差最小。消融支持“控制精度更好”,未支持“所有指标都更好”。

相机编码器

结构FVD ↓TransErr ↓RotErr ↓
ControlNet295.813.511.42
ControlNet + Temporal283.413.131.33
T2I-Adaptor223.413.271.38
T2I-Adaptor + Temporal222.112.981.29

ControlNet 风格分支同时输入 noised latent 与相机图,FVD 明显变差;几何专用 T2I-Adaptor 加 temporal attention 获得三个指标最佳值。

注入位置

注意力位置FVD ↓TransErr ↓RotErr ↓
Spatial self241.214.721.42
Spatial cross237.514.311.51
Spatial self + cross240.114.521.60
Temporal222.112.981.29

训练数据

数据集FVD ↓TransErr ↓RotErr ↓
Objaverse1435.4无法评估无法评估
MVImageNet1143.513.871.52
RealEstate10K + ACID1102.413.481.41
RealEstate10K1088.912.991.39

此处相机误差使用 MannequinChallenge 轨迹,因而与主表 RealEstate10K test 协议不同。Objaverse 的白底物体外观与 WebVid 差距过大,生成结果使 COLMAP 难以恢复足够姿态。

Encoder 与 Decoder 同时注入

注入范围FVD ↓TransErr ↓RotErr ↓
U-Net Encoder210.913.911.51
U-Net Encoder + Decoder222.112.981.29

双侧注入提高相机控制,FVD 增加 11.2。该选择明确偏向轨迹准确度。

07 · PAPER VS IMPLEMENTATION

代码揭示了坐标处理与训练配置中的关键复现细节

事项论文官方仓库 main 分支复现含义
Plücker 方向Eq. 3 文字形式含 \(RK^{-1}[u,v,1]^{\mathsf T}+t\)方向经 c2w 旋转,camera origin 单独用于 \(\mathbf{o}\times\mathbf{d}\)应按代码区分点、方向与原点
相对姿态正文说明有限首帧变换为 \(I_4\),配置启用 relative pose 与 zero first translation自定义轨迹需采用同一参考系
水平翻转图像与姿态同步,概率 50%通过反转像素横坐标生成翻转后的射线,再同步翻转图像只翻图像会破坏几何监督
融合初始化可学习线性层qkv_merge 权重与偏置全零初始化训练初始阶段保持基础模型输出
优化步数50K steps发布的 T2V YAML 写 25K steps论文设置与配置文件不一致,复现者需要明确选择
优化器正文写 AdamW;附录一处写 Adam训练脚本调用 torch.optim.AdamW代码支持 AdamW 结论
SVD 训练完整报告 32×A100、50K、40 小时main 分支说明 SVD 实现位于单独 svd 分支需要切换分支核查对应配置
08 · REVIEWER COMMENTARY

方法设计清楚,评测协议仍给控制精度留下较大不确定性

Strengths

  • Plücker 射线把相机参数转换成与图像 latent 同构的空间条件,表示与网络结构匹配。
  • 冻结基础模型、零初始化融合层与几何专用编码器共同降低外观泄漏。
  • 表示、编码器、注入位置、训练数据四组消融覆盖了主要设计选择。
  • T2V、I2V、个性化模型与其他控制器的组合显示较好的系统兼容性。

Weaknesses

  • TransErr 使用 ground-truth 轨迹对 COLMAP 结果做尺度归一化,且手工排除失败视频,指标存在选择偏差。
  • T2V 与 MotionCtrl 的基础生成器不同,FVD 与控制误差同时包含 backbone 差异。
  • 50 人用户研究缺少题量、随机化、置信区间与显著性信息。
  • 大角度旋转训练数据不足;100° 垂直旋转与 150° 水平旋转都明显欠执行。
  • 官方配置的 25K steps 与论文 50K steps 不一致。

Potential Improvements

  • 以多数据集混合和轨迹分布重加权覆盖大旋转、长平移与焦距变化。
  • 使用具备尺度感知的姿态估计或合成 ground truth,减少 COLMAP 过滤与尺度对照。
  • 把 pose guidance scale 设计成随扩散时刻、空间区域或频率自适应的可学习函数。
  • 加入几何一致性、深度重投影与长序列闭环约束,衡量相机控制之外的三维稳定性。
Our InterpretationCameraCtrl 证明了“像素射线场 + 时间注意力注入”是一条有效接口。它没有显式构建三维场景,也没有保证跨帧几何可重建;生成模型仍可能通过二维外观变化模拟部分相机运动。
Research Extension可将 Plücker 条件拆分为低频全局轨迹与高频逐像素光线两路,先在低分辨率控制视点,再用深度、光流或可见性反馈修复局部遮挡。测试阶段可对轨迹执行小规模搜索,以 COLMAP 可恢复率、重投影误差和文本一致性组成评分,挑选符合相机指令的样本。
09 · SOURCES

身份、方法、实验与实现均来自一手资料

  1. ICLR 2025 proceedings 页面:正式标题、作者、会议身份、论文与补充材料入口。
  2. ICLR 2025 官方 32 页 PDF:正文、附录、完整表格、训练设置、用户研究与失败案例。
  3. arXiv:2404.02101v2:2024 年首次提交、2025 年修订记录与原题名。
  4. 官方项目页:视频示例与模型入口。
  5. 官方 GitHub 仓库:数据处理、相机编码器、attention processor、训练配置与推理命令。

核查日期:2026-09-28。论文事实、作者主张、本文解释与研究延伸已分别标记。