跳转至

Camera Control for Text-to-Image Generation via Learning Viewpoint Tokens

会议: CVPR 2026
论文: CVF Open Access
代码: 项目页
领域: 图像生成 / 可控生成 / 文生图
关键词: 相机视角控制, 视角 token, 文生图, 几何解耦, 数据集设计

一句话总结

本文给文生图模型加了一个把 5 维相机参数编码成 token 的轻量 MLP,并和文本 token 拼在一起联合微调,配合"3D 渲染图(几何监督)+ 真实感增强图(外观多样)"的两段式数据集,让模型能按 azimuth/elevation/距离/俯仰/偏航精确生成指定视角的图,且能泛化到训练时没见过的物体类别。

研究背景与动机

领域现状:扩散类文生图模型(SD、SD3、统一多模态模型如 Harmon)在语义保真和视觉真实感上已经很强,但要它们听懂"后视图""左侧 30°""俯拍 45°"这类几何指令却很困难。

现有痛点:自然语言描述视角天然是离散、模糊的,模型常常幻觉出错误姿态、坍缩到训练数据偏好的"正脸/平视"角度,或者同一 prompt 多次生成几何不一致。作者实测 GPT-5、Nano Banana 这类强模型,给"左 45°/右 30°"这类明确描述,生成结果几乎是同一个朝向,根本分不开。

核心矛盾:现有可控生成要么需要额外的几何输入(depth/edge/参考图,如 ControlNet、novel-view synthesis),牺牲了"纯文本即可用"的灵活性;要么像 View-NeTI 那样需要每个物体的多视图监督;要么像 Compass Control 那样只能控 azimuth 单轴,且它把 viewpoint 的 cross-attention 用 attention mask 限制在物体局部区域,导致丢失全局场景理解、严重过拟合到训练物体外观——换个没见过的物体(圣诞老人、海豚)就把它画成了别的动物。

本文目标:在不引入任何额外几何参考输入的前提下,让文生图模型支持多参数、精确、可泛化的相机视角控制。

切入角度:作者假设——文本-视觉的潜空间里其实可以被注入显式的 3D 相机结构。与其用 attention mask 把视角信息困在物体局部,不如把相机参数编码成一个与物体身份解耦的几何 token,放进文本输入空间里和整张图(前景+背景)一起学。

核心 idea:用一个轻量 MLP 把"物体中心坐标系下的 5 维相机参数"编码成 viewpoint token,拼到文本 token 旁边联合微调;并用两段式数据集(大量 3D 渲染图供几何监督 + 少量真实感增强图防坍缩)保住生成质量和泛化性。

方法详解

整体框架

方法可以套在任何"以文本 embedding 为输入"的文生图骨干上。给定文本 prompt 和一组显式相机参数 \(\theta\),先在物体中心坐标系里把视角参数化为 5 维向量,再经过一个参数编码函数 \(\phi\) 和一个 3 层 MLP,把它映射成一个和文本 token 同维度的 viewpoint token \(\mathbf{e}_\text{view}\);这个 token 被插在物体描述旁边,和文本 token 一起送进骨干(主用 Harmon),联合微调后骨干就能同时按语义内容和相机视角生成图像。训练数据是关键一环:用海量规范对齐的 3D 渲染图提供几何监督,再掺入少量真实感增强图维持外观多样和场景复杂度。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["文本 prompt + 相机参数 θ"] --> B["物体中心 5 参数视角化<br/>θ=(az,el,r,pitch,yaw)"]
    B --> C["视角 token 编码<br/>φ 周期编码 + 3 层 MLP"]
    C --> D["e_view 与文本 token 拼接"]
    D --> E["T2I 骨干联合微调<br/>分层学习率"]
    F["两段式数据集<br/>渲染图+真实感增强图"] --> E
    E --> G["视角条件化生成图像"]

关键设计

1. 物体中心的 5 参数因子化视角表示:给"左右前后"一个跨物体一致的定义

直接用世界坐标或相机矩阵当条件,会让"左""右"这种语言概念依赖具体物体朝向,模型学不出统一规律。作者把物体固定在原点、规定物体正面永远朝世界坐标 \(+x\) 轴,于是所有物体的"左/右、前/后"在语言上是一致的,相机则自由移动。视角被因子化为 $\(\boldsymbol{\theta} = (\theta_\text{az}, \theta_\text{el}, r, \theta_\text{pitch}, \theta_\text{yaw}) \in \mathbb{R}^5\)$ 其中 \((\theta_\text{az}, \theta_\text{el}, r)\) 是相机的球坐标位置(半径 \(r\) 以物体直径为单位),\((\theta_\text{pitch}, \theta_\text{yaw})\) 是相机相对"指向原点方向"的旋转(俯仰下为正、偏航左为正),假设 roll=0、FoV≈55°。这种位置与旋转分离的因子化表示,是后面消融里它远胜 Plücker rays / 12D 矩阵 / 正弦编码的根本原因——单视图 T2I 场景更受益于"语义上可解耦的朝向信号",而不是为多视图密集对应设计的高频表示。

2. 视角 token 编码:用周期感知的轻量 MLP 把相机参数翻译进文本空间

把 5 维参数直接喂网络会有两个坑:azimuth 是周期量(0° 和 360° 应相同),各参数量纲不一。作者先做参数编码 $\(\phi(\boldsymbol{\theta}) = [\sin(\theta_\text{az}), \cos(\theta_\text{az}), \theta_\text{el}, r, \theta_\text{pitch}, \theta_\text{yaw}] \in \mathbb{R}^{6}\)$ azimuth 用 sin/cos 处理周期性,半径归一化到 \([0,1]\),仰角/俯仰/偏航直接用弧度。再过一个 ReLU 激活的 3 层 MLP 映射到 token: $\(\mathbf{e}_\text{view} = \text{MLP}_\text{view}(\phi(\boldsymbol{\theta})) \in \mathbb{R}^{d}\)$ 这个 token 被插在物体描述相邻位置,让几何信息顺着模型自身的 attention 机制和文本一起流动——这点和 Compass Control 用 attention mask 把视角信息圈死在局部区域形成鲜明对比,后者牺牲了全局场景理解,本文则让前景背景一起被视角条件化。

3. 两段式数据集:用大量渲染图喂几何、少量真实感图防坍缩

只用 3D 渲染图训练会让模型"忘记"怎么画复杂场景、跟随细致 prompt(坍缩)。作者把数据集拆成两部分互补:大渲染集从 TexVerse 选 3,111 个物体(动物/车辆/人/家具四类),规范对齐到正面(\(\theta_\text{az}=\theta_\text{el}=0\)),每个物体随机采 120 个视角,约 37.3 万张透明背景图,提供强几何监督;真实感增强集从中选 800 个高质量物体、各渲 20 个视角,用 Nano Banana 在保持原始姿态的前提下编辑出多样背景和外观(如"金身淡鬃的马""白色赛车条纹的跑车"),人工过滤后约 6.6K 张,维持真实感和外观多样性。训练时两部分等比例采样。正是这一掺入,让模型既学到精确几何又没丢掉骨干的文本对齐能力(消融里去掉渲染集 azimuth 误差从 18.11° 暴涨到 22.98°)。

损失函数 / 训练策略

没有引入新损失,直接用骨干自身的标准图像生成损失,把骨干和 viewpoint MLP 联合微调。主骨干是 Harmon(LLM backbone + MAR 解码器)。从预训练 checkpoint 初始化,微调 7,500 步、batch size 192、AdamW。关键是分层学习率:新引入的 ViewpointMLP 用较高的 \(2\times10^{-4}\),预训练的 Harmon LLM 和 MAR 解码器用较低的 \(2\times10^{-5}\);单卡 A100(80GB) 约 28 小时。消融显示冻结骨干会让 azimuth 误差飙到 40.19°,说明骨干文本输入空间原本不具备 3D 几何感知能力,必须微调进去。

实验关键数据

主实验

在 11 个"easy"测试物体 + 26 个"diverse"物体(含 11 个训练未见类别)上评测,共 5,550 个测试样本,用 azimuth/elevation/radius/yaw/pitch 角误差和 CLIP 相似度衡量。

方法 输入类型 Azimuth↓(Mean) Elevation↓ Yaw↓ Pitch↓ CLIP↑
ControlNet 图像+Oracle 深度 25.65 5.77 0.80 0.94 0.3307
SV-Camera 图像+相机 54.89 9.05 2.89 2.29 0.2596
Compass 文本+Azimuth token 31.07 14.49 2.03 2.61 0.3433
Ours (Harmon) 文本+相机 token 18.11 7.62 1.25 1.38 0.3555

在不使用 oracle 几何信息的方法里全面最优;ControlNet 因为有 oracle 深度在个别参数上略好。Azimuth 误差按子集拆分更能看出泛化:Compass 在 easy 集 18.62° 但 diverse 集暴涨到 37.29°,本文 easy 16.22°/diverse 19.06° 几乎不掉。

GenEval 文本对齐(Single Obj. / Colors):本文相对骨干仅降 -5.52 / -16.00,而 Compass 相对 SD2.1 暴降 -14.28 / -33.82,说明本文保住了骨干的 prompt 保真度。

消融实验

配置 Azimuth↓ Elevation↓ Yaw↓ Pitch↓ 说明
Ours (Harmon) 完整 18.11 7.62 1.25 1.38 主模型
Ours (SD3.5) 12.85 8.09 2.75 1.97 换骨干仍可比,证明增益来自方法
Plücker rays 21.61 8.43 1.29 1.51 换视角编码,变差
12D 矩阵 24.44 8.74 4.89 4.66 纠缠表示难学
正弦编码 60.90 9.05 1.69 1.78 高频成分带来训练不稳定
去掉渲染子集 22.98 9.34 4.84 4.93 几何监督缺失
冻结骨干 40.19 8.47 1.83 2.07 骨干本身无 3D 几何表示
更多 token 18.03 7.45 1.80 1.87 无明显收益

关键发现

  • 因子化编码 vs 其它编码:Plücker rays、12D 矩阵、正弦编码全部更差,尤其正弦编码 azimuth 误差到 60.90°。作者解释单视图 T2I 受益于"语义上可解耦的朝向信号",而高频/纠缠表示会引入训练不稳定、难以把相机位置与相机旋转分开。
  • 渲染子集和微调骨干都不可省:去掉渲染集或冻结骨干都让 azimuth 误差翻倍,说明几何监督和"把 3D 感知微调进文本空间"缺一不可。
  • 泛化与防过拟合:在"圣诞老人/海豚/兔子"三个测试物体上,Compass 有 94.2% 的时候把它们过拟合画成狮子、鸵鸟、鞋、沙发、泰迪熊等训练类别;本文无明显过拟合,证明视角 token 和物体身份成功解耦。
  • 极端视角:在后视图和高仰角的额外 2,220 样本上,本文 azimuth 仅 +5.16° 退化,Compass +8.00° 且整体掉得更狠。

亮点与洞察

  • 把 3D 相机结构注入文本潜空间:核心洞见是文本-视觉潜空间可以被赋予显式 3D 相机结构,从而把"几何感知 prompt"变成可能——这条路比 attention mask 局部圈定优雅得多,因为它让视角同时作用在前景和背景上,得到全局一致的构图(仰角变化时地平线会跟着动)。
  • 物体中心坐标系是被低估的设计:固定物体正面朝 \(+x\),让"左/右/前/后"在所有物体上有一致语义,这是 token 能跨类别泛化的隐性前提,比堆数据更根本。
  • 两段式数据"几何 vs 真实感"配比:用合成渲染喂几何、少量真实感增强防坍缩,这个"主菜+调味"的数据配方思路可迁移到任何"想注入精确条件但怕破坏骨干能力"的微调任务。
  • 方法对骨干无关:在 SD2.1/SD3.5/Harmon 上都成立,说明增益来自编码+数据而非某个骨干,复用性强。

局限与展望

  • 作者承认 T2I 骨干对"平视、水平居中"有强先验,尤其对著名地标(如泰姬陵),会拉偏视角控制效果。
  • 偶尔在人脸和精细结构上出现退化生成。
  • Nano Banana 做数据增强时在极端仰角(75°)和 roll(30°)下会失败,限制了增强集能覆盖的视角范围。
  • 自己发现:5 参数假设了 roll=0、固定 FoV,未覆盖滚转和焦距变化;真实感增强集仅 6.6K 张,规模与渲染集(37.3 万)悬殊,外观多样性可能仍是瓶颈。

相关工作与启发

  • vs Compass Control:都做"文本+视角 token"且不需多视图,但 Compass 只控 azimuth 单轴、用 attention mask 圈死物体局部、严重过拟合训练物体(换类别就画错);本文控 5 参数、token 全局参与、与物体身份解耦,泛化显著更好。
  • vs View-NeTI:View-NeTI 学解耦的物体+视角 token,但需要每个物体的多视图监督,没有这种数据就生成不出几何一致的新视角;本文只需相机参数+两段式数据,无需逐物体多视图。
  • vs ControlNet-Depth / Novel-View Synthesis (SV-Camera 等):它们需要 depth/edge/参考图等额外几何输入,本文从纯文本+相机 token 即可控制,无需任何推理期参考。

评分

  • 新颖性: ⭐⭐⭐⭐ 把因子化相机参数编码成 token 注入文本空间、配两段式数据保泛化,角度清晰且有效
  • 实验充分度: ⭐⭐⭐⭐ 多骨干、多编码方式、极端视角、过拟合量化都有覆盖,消融扎实
  • 写作质量: ⭐⭐⭐⭐ 动机和方法叙述清楚,对比表和定性失败案例都给得到位
  • 价值: ⭐⭐⭐⭐ 为文生图提供了实用、可复用、无需额外几何输入的精确视角控制方案