CustomTex: High-fidelity Indoor Scene Texturing via Multi-Reference Customization¶
会议: CVPR 2026
arXiv: 2603.19121
代码: https://chenweilinx.github.io/CustomTex/
领域: 3D视觉
关键词: 室内场景纹理, 多参考图像定制, 双蒸馏, VSD优化, 实例级控制
一句话总结¶
提出CustomTex框架,通过实例级的多参考图像驱动和双蒸馏训练策略(语义级VSD蒸馏+像素级超分蒸馏),实现3D室内场景的高保真、实例可控纹理生成,在语义一致性、纹理清晰度和减少"烘焙阴影"方面全面超越现有方法。
研究背景与动机¶
创建逼真的3D室内场景纹理是VR/AR、建筑可视化和电影制作的基石。现有方法的痛点:(1)文字驱动方法(SceneTex、TEXture等)语义模糊,无法传达精确视觉特征(如布料纹理、木纹、壁纸图案);(2)即使用单张参考图做驱动也只能提供全局粗粒度控制;(3)纹理质量不足——模糊、伪影多,且扩散模型会学习训练数据的光照信息产生"烘焙阴影(baked-in shading)",不适合不同光照渲染。
核心矛盾:扩散过程中语义控制和像素质量耦合——InstanceTex虽支持多文本实例级控制,但仍受文本精度和质量限制。本文切入角度:用多张参考图像(每个实例一张)替代文本,将"语义生成"和"像素增强"分离为两个独立蒸馏过程,在VSD框架下统一优化。
方法详解¶
整体框架¶
CustomTex 要解决的是"给定一个未纹理化的室内场景,怎么让每件家具都长成用户指定参考图那样、还干净清晰且不带烘焙阴影"。它不直接预测纹理像素,而是把一个隐式纹理场放进 VSD(Variational Score Distillation)优化循环里慢慢"雕"出来。输入是带 UV 展开的场景 mesh,加上每个实例各一张参考图。每轮迭代先从一个随机球面视点把当前纹理场渲成 RGB 图、深度图和实例 mask;接着两路蒸馏分别算梯度——语义这一路用 depth-to-image 扩散模型配合 Instance Cross-Attention 和 LoRA 给出 VSD 梯度,管"画的是不是参考图那个东西";像素这一路用一个预训练超分模型给出 SR 梯度,管"画得够不够清晰";最后两路梯度加权合并,反传更新隐式纹理场。整个过程把"生成什么"和"生成得多好"拆成两个互不干扰的信号源。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入:场景 mesh(含 UV)<br/>+ 每实例一张参考图"] --> B["多分辨率哈希网格纹理场<br/>隐式表示,可任意分辨率"]
B --> C["随机球面视点渲染<br/>→ RGB / 深度图 / 实例 mask"]
C -->|语义路| D["Instance Cross-Attention + InsVSD<br/>mask 调制注意力,参考图各管一块 → VSD 梯度"]
C -->|像素路| E["像素级蒸馏<br/>预训练超分模型 → SR 梯度"]
D --> F["梯度加权合并<br/>前 5000 轮 λ_SR=0 先定内容,后加细节"]
E --> F
F -->|反传更新纹理场| B
F --> G["输出:实例可控高保真纹理<br/>4K~12K"]
关键设计¶
1. Instance Cross-Attention + InsVSD:让每个实例只对齐自己那张参考图
文本驱动的老办法(SceneTex、TEXture)描述不出布料、木纹、壁纸这种精细视觉特征,单张全局参考图又只能粗粒度地影响整场。CustomTex 改用每实例一张参考图,并在注意力层面把它们"各管一块"。具体做法是用 IP-Adapter 抽出第 \(i\) 个参考图的特征 \(f^{ref}_i\),再用该实例的渲染 mask \(m_i\) 在 feature 级别调制 cross-attention,把不同参考的贡献按区域加权汇总:
这样第 \(i\) 张参考图的信息只会流向画面上属于第 \(i\) 个实例的像素,避免多张参考"串味"。纹理场的更新沿用 VSD 的交替优化:先冻结 LoRA、用 VSD 梯度 \(\nabla_\theta\mathcal{L}_{\text{VSD}} = \mathbb{E}[\omega(t)(\epsilon_{\phi_d} - \epsilon_{\phi_{\text{LoRA}}})\frac{\partial\mathcal{T}}{\partial\theta}]\) 更新纹理参数 \(\theta\),再冻结 \(\theta\) 更新 LoRA \(\phi\) 去拟合当前渲染分布。这里关键的取舍是 mask 加在哪一层——作者把它放在 feature 级而不是 noise 级,消融显示前者在物体边界处的光照明显更稳定,因为 feature 级调制能精确地把每张参考特征锚到对应实例区域,而不是事后在噪声上硬切。
2. 像素级蒸馏:把超分做成梯度信号,而不是事后修一遍
光有语义对齐还不够清晰——VSD 出来的纹理往往偏模糊、高频细节缺失。一个直觉做法是优化完再跑一遍超分(post-SR),但 UV 纹理是按 UV 展开排布的,没有自然图像那种语义结构,SR 模型直接对着 UV 图超分会失效。CustomTex 的解法是把预训练 SR 模型 \(\phi_{SR}\) 也接进蒸馏循环,在每轮渲染出的自然视图上算一个 SR 梯度:
它和语义梯度合成最终更新 \(\nabla_\theta\mathcal{L} = \nabla_\theta\mathcal{L}_{\text{VSD}} + \lambda_{SR}\nabla_\theta\mathcal{L}_{\text{SR}}\)。为了不让清晰度信号干扰早期的内容塑形,训练分两段:前 5000 次迭代 \(\lambda_{SR}=0\) 只做语义蒸馏把"画什么"先定下来,之后 \(\lambda_{SR}=1.2\) 才加入像素增强补细节。因为 SR 梯度始终作用在自然渲染视图上、再经渲染反传回纹理场,它绕开了"直接超分 UV 图"的难题,消融里集成式 SR 的 IQA(4.469)远高于 post-SR(2.959)。
3. 多分辨率哈希网格纹理表示:用隐式场换任意分辨率与优化效率
如果用固定分辨率的纹理贴图当被优化对象,分辨率写死、优化也慢。CustomTex 借 Instant-NGP 的多分辨率哈希网格做隐式纹理表示:UV 坐标先查多个尺度的网格、经 hash 映射取出各尺度特征并拼接,再过一个 Cross-Attention 解码器输出该点 RGB。因为是连续场,输出分辨率可在推理时任意指定,4K 纹理约 2.4 秒、12K 约 22 秒,比固定贴图既灵活又优化得更快。
损失函数 / 训练策略¶
最终更新由语义 VSD 梯度与像素 SR 梯度加权合成,交替优化纹理场 \(\theta\) 和 LoRA \(\phi\)。时间步采用退火:前 5000 次 \(t\sim U(0.02,0.98)\) 覆盖大噪声塑形整体,之后收窄到 \(t\sim U(0.02,0.5)\) 精修细节。共 30000 次迭代、5000 个球面分布视点,纹理场学习率 0.001、LoRA 0.0001,单张 RTX A800 上约 48 小时。
实验关键数据¶
主实验¶
图像到纹理(10个3D-FRONT场景):
| 方法 | CLIP-I↑ | CLIP-FID↓ | Q-Align IQA↑ | Q-Align IAA↑ |
|---|---|---|---|---|
| CustomTex | 0.797 | 106.229 | 4.469 | 3.629 |
| SceneTex-IPA | 0.741 | 121.118 | 4.009 | 3.594 |
| Paint3D | 0.694 | 130.138 | 2.896 | 2.401 |
| HY3D-2.1 | 0.682 | 134.680 | 2.187 | 1.838 |
文本到纹理:
| 方法 | CLIP-T↑ | IS↑ | Q-Align IQA↑ |
|---|---|---|---|
| CustomTex | 0.766 | 3.311 | 4.252 |
| SceneTex | 0.639 | 3.009 | 3.824 |
| HY3D-2.1 | 0.734 | 2.381 | 2.774 |
消融实验¶
| 配置 | CLIP-I↑ | CLIP-FID↓ | Q-Align IQA↑ | 说明 |
|---|---|---|---|---|
| post-SR | 0.746 | 114.612 | 2.959 | 后处理SR质量差 |
| w/o \(\mathcal{L}_{SR}\) | 0.736 | 118.247 | 3.330 | 缺乏高频细节 |
| w/o multi-ref | 0.757 | 109.243 | 4.053 | 实例一致性下降+烘焙阴影 |
| w/o f-mask | 0.743 | 111.205 | 3.689 | 物体边界处光照不稳定 |
| Full model | 0.797 | 106.229 | 4.469 | 最优 |
关键发现¶
- 集成SR蒸馏 >> 后处理SR:post-SR的IQA仅2.959 vs 完整模型4.469
- Feature-level mask比noise-level mask光照更稳定
- Multi-reference输入至关重要:拼接参考图导致无法区分实例
- 实例mask分解全局→局部生成是减少烘焙阴影的关键
- 用户研究(60人)中视觉质量和一致性评分均最高
亮点与洞察¶
- "双蒸馏"解耦范式:语义蒸馏负责"生成什么",像素蒸馏负责"生成得多好"
- Instance Cross-Attention精确对齐:mask调制注意力实现参考图→实例区域的精准映射
- 减少烘焙阴影的洞察深刻:实例mask分解全局为局部生成,阻止扩散模型跨图像形成统一光影
- 支持写实和艺术风格(Van Gogh、Cyberpunk)
- 推理高效:4K纹理仅2.4秒
局限与展望¶
- 训练耗时48小时(单GPU)
- 仅生成diffuse albedo纹理,不生成PBR材质(normal/roughness/metallic map)
- 依赖高质量UV展开
- 未来方向:加速训练、扩展到完整PBR材质生成
相关工作与启发¶
- 双蒸馏范式可推广到其他需同时保持语义正确和视觉质量的3D生成任务
- Instance Cross-Attention的设计可用于其他多实例/多区域条件化生成
- "SR集成到蒸馏vs后处理"的结论对SDS/VSD社区有参考价值
- GPT-4v生成参考图的text→image→texture管线提供新交互范式
评分¶
- 新颖性: ⭐⭐⭐⭐ 双蒸馏+Instance Cross-Attention组合方案有创新
- 实验充分度: ⭐⭐⭐⭐⭐ 定量+定性+用户研究+5组消融+闭源方法对比
- 写作质量: ⭐⭐⭐⭐ 结构清晰,消融分析深入,图表丰富
- 价值: ⭐⭐⭐⭐ 建立了实例级场景纹理定制新标杆,实用性强