DiffTex: Differentiable Texturing for Architectural Proxy Models
Shenzhen University
一句话总结
DiffTex 把”给建筑代理模型贴纹理”重新表述为一个可微优化问题:UV 图上每个 texel 的颜色是若干输入照片对应像素的加权混合,通过可微渲染优化这组混合权重,从无序标定照片中自动生成兼具光度一致性与透视一致性的高质量纹理图。
研究背景
建筑数字化重建中,稠密高精模型虽然几何与光度都很精细,但在存储、传输和实时渲染上代价高昂。为此人们用代理模型(proxy model)——通过几何简化、程序化建模或基元装配得到的平面多边形集合——来替代稠密网格。代理模型丢失了细节几何,只能靠纹理来补偿外观损失。
难点在于:如何从当初用来重建稠密模型的那批无序、已标定的 RGB 照片里,为几何已被大幅简化的代理模型生成逼真纹理。已有方法各有短板:
- 基于图像的传统纹理映射(视图混合、选择式贴图)在代理模型上常出现线性特征扭曲、透视不一致、可见接缝。
- 基于块的优化方法(patch-based)为解决光度问题,往往产生模糊或残缺区域。
- TwinTex(作者前作)专门面向建筑代理、兼顾光度与透视一致性,但流程冗长复杂,严重依赖手工调参。
- 神经场 / 高斯泼溅 面向生成任务,合成纹理缺乏真实感,且高分辨率照片级纹理对显存要求过高,不适用于该场景。
代理模型与稠密真值模型之间存在显著的几何差异,使得上述方法无法直接照搬。
方法
输入是一组平面代理多边形 \(\{P_i\}\) 和一组无序但已知相机参数的照片 \(\{I_k\}\),目标是为每个多边形蒸馏出一张高质量纹理图 \(U_i\)。
核心思路:不直接优化 RGB 值,而是优化中间的混合权重参数,从而缩小搜索空间并借助可微渲染高效求解。
参数化:texel 与像素的对应
每个平面代理多边形被分配一张 2D UV 图。由于 \(P_i\) 是平面多边形,作者不做通用网格参数化,而是用一台正对 \(P_i\) 的虚拟相机渲染它来定义 UV 图。UV texel 坐标 \(t_o\) 与照片 \(I_k\) 中像素坐标 \(p_m\) 之间存在一一映射:
\[p_m = f^i_k(t_o) = K_k \tilde{K}^{-1}_i t_o\]
其中 \(\tilde{K}_i\) 是多边形平面参数化的虚拟相机参数,\(K_k\) 是拍摄照片 \(I_k\) 的真实相机参数,二者初始化后固定。
texel \(t_o\) 的颜色是其对应像素值的加权和:
\[U_i(t_o) = \sum_{k=1}^{N_I} w_k I_k(p_m)\]
其中 \(p_m = f^i_k(t_o)\),权重 \(w_k \in [0,1]\)。于是纹理重建被归结为对每个 texel 优化一组归一化权重向量。
优化目标
每个多边形从空纹理图 \(U^0_i\) 出发,维护一组二值激活掩膜 \(\{a^i_k\}\) 标记 \(I_k\) 中被选用的区域,初始为 \(P_i\) 在该照片中的可见区域。权重初值为 \(Q(t_o) = Q_a Q_c\):\(Q_a\) 度量照片相对 \(P_i\) 的正视程度,\(Q_c\) 度量像素颜色与所有对应像素主色的相近程度,取 \(Q_c = Gaussian(I_k(p_m), \mu, \sigma)\)。
每轮迭代由三项损失组合而成:
\[L_i = \alpha L_{Render} + \beta L_{Persp} + \omega L_{Para}\]
默认系数 \(\alpha=1, \beta=2, \omega=10\)。
渲染损失 衡量渲染视图与真实照片在选中像素上的逐像素平方差,并对每个 texel 的权重加稀疏正则:
\[L_{Render} = \sum_k \left( \|a^i_k \odot Q_i \odot (R_k - I_k)\|^2_2 + \sum_o |W^i_k(t_o)| \right)\]
其中 \(\odot\) 为逐元素乘,\(Q_i\) 为质量矩阵,强调高质量像素、抑制低质量像素。整个计算可微,可反传梯度。
透视损失 处理照片视角差异带来的鬼影与拉伸(对凹凸立面元素、玻璃反射面尤为严重)。作者引入一个既考虑视角一致性又考虑立面法向的引导视向:
\[e_{v_i} = 0.5 \ast \sum v_k / |\sum v_k| - 0.5 \ast n_i\]
即可见照片平均视向与立面反法向的均值。透视损失惩罚与引导视向偏差大的映射像素:
\[L_{Persp} = \sum_k \|W^i_k \odot V^i_k \odot V^i_k\|_1\]
\[V^i_k = \hat{a}^i_k \odot (\hat{V}_k - \tilde{V}_i)\]
其中 \(\hat{a}^i_k\) 是 \(a^i_k\) 映射到 \(P_i\) 上的激活掩膜,\(\hat{V}_k\) 是 \(I_k\) 的视向场。
参数损失 鼓励相邻 texel 的参数平滑、内容一致,同时避免接缝。它在重叠区域惩罚颜色与梯度差异大的相邻 texel:
\[L_{Para} = \sum_o \sum_{q \in N(o)} C(t_o, t_q) |\hat{a}^i_k(t_o) W^i_k(t_o) - \hat{a}^i_k(t_q) W^i_k(t_q)|\]
\[C(t_o, t_q) = m^i_k(t_o) D(t_o, t_q) + \lambda_s\]
\[D(t_o, t_q) = S(\|(U_i(t_o) - U_i(t_q))\|_2)(1 + G(t_o))\]
其中 \(N(o)\) 是 texel 的上邻与左邻,\(m^i_k\) 标记映射照片间的重叠,\(S(x)\) 是 sigmoid,\(G(t_o)\) 是所有映射照片在该 texel 处的平均梯度幅值,实验取 \(\lambda_s = 0.5\)。
数据质量优化
- 数据剔除:直接平均所有对应像素会引入严重鬼影模糊,因此渐进地剔除劣质数据——若某照片零权重像素占比超过阈值 \(\tau_w\) 则整张剔除;对单个 texel,计算其映射像素颜色的均值与标准差,去掉落在三倍标准差外的像素。作者指出误删会造成不可逆的颜色缺失(优化无法凭空补全),并做了压力测试验证鲁棒性。
- 由粗到细分辨率:UV 图从 256 起步,收敛后用双线性插值把参数场翻倍,反复直至目标分辨率 2048,以降低计算开销。
- 亮度调整:由于 texel 来自不同视向的像素,邻域亮度可能不一致,作者在 HSV 空间对所有照片做直方图匹配以改善光照一致性。
实现基于 Nvdiffrast,用 Adam 优化器(学习率 0.005),在 RTX 3090Ti 上运行,\(\tau_w = 0.95\)。
实验结果
数据集包含 5 个合成虚拟模型(Hall、Mall、Resident、Archive、Hyundai,每个渲染 200 视图、相机参数精确无畸变)和真实建筑(14 栋室外建筑、两个室外场景、一个室内场景),真实模型用 RealityCapture 从照片重建稠密模型,代理模型为 2.5D 或由建模师制作。评估指标为 Error 分位数、SSIM、LPIPS,以及透视质量的正视度 \(Q_{front}\) 和视角一致性 \(Q_{vc}\)。
消融(HighRise 实例):初始纹理模糊有鬼影;只加 \(L_{Render}\) 可剔除大相机误差与光度差异的像素、变清晰但仍模糊;只加 \(L_{Persp}\) 提升锐度但出现噪声 texel、内容不连续;只加 \(L_{Para}\) 得到平滑参数场、更锐利但仍有鬼影;三项齐全才同时获得高光度与高透视质量。
合成场景定量对比(对比 LTBC、2DGS、PBO、TwinTex):
| 场景 | 方法 | Error(90%)↓ | Error(95%)↓ | SSIM↑ | LPIPS↓ | Time(min) |
|---|---|---|---|---|---|---|
| Hyundai | LTBC | 0.311 | 0.439 | 0.831 | 0.124 | 0.4 |
| Hyundai | 2DGS | 0.449 | 0.604 | 0.689 | 0.323 | 20.4 |
| Hyundai | PBO | 0.292 | 0.425 | 0.761 | 0.199 | 32.7 |
| Hyundai | TwinTex | 0.276 | 0.388 | 0.779 | 0.178 | 1.3 |
| Hyundai | Ours | 0.128 | 0.277 | 0.881 | 0.130 | 1.2 |
| Resident | LTBC | 0.198 | 0.284 | 0.807 | 0.067 | 0.4 |
| Resident | 2DGS | 0.588 | 0.717 | 0.350 | 0.535 | 19.4 |
| Resident | PBO | 0.227 | 0.367 | 0.675 | 0.183 | 13.9 |
| Resident | TwinTex | 0.281 | 0.409 | 0.669 | 0.173 | 10.9 |
| Resident | Ours | 0.066 | 0.092 | 0.920 | 0.074 | 1.2 |
DiffTex 的 Error 显著低于其他方法,SSIM/LPIPS 也更优。作者指出 2DGS 在接近输入视点时质量尚可,但移近立面到未见角度时会出现”棉絮状/针状”结构;PBO 不稳定且常留空区。由于表征与任务不同,后续真实场景对比只与同表征的贴图方法比较(排除 2DGS)。
真实场景对比:LTBC 因缺乏透视一致性约束,选到视向差异大的照片,产生明显接缝、透视不一致和拉伸伪影;TwinTex 为追求最少源照片数会引入边界错位(一个立面仅用 3 张照片,DiffTex 用更多张以获得更好的透视对齐与光度质量)。透视质量上 DiffTex 取得最佳视角一致性,正视度与 TwinTex 相当。速度上 TwinTex 通常慢 DiffTex 两倍多,PBO 约为 TwinTex 三倍、DiffTex 八倍;LTBC 最快。
挑战案例:在含曲面和反射玻璃的 CSSE 建筑、有细柱与复杂结构的 Temple、以及多建筑大场景上,DiffTex 仍能生成高透视一致性、光照和谐的纹理。
亮点与局限
亮点:
- 把纹理生成参数化为可微优化:优化中间混合权重而非直接优化 RGB,缩小搜索空间,让可微渲染高效求解。
- texel 级混合而非按面选单图:相比 TwinTex 用极少数照片覆盖大平面,texel 级混合在整个立面上获得更均匀的透视质量与光度一致性。
- 三项损失协同:渲染损失保真、透视损失抗鬼影拉伸、参数损失保接缝平滑与内容连续。
- 更快更准:合成场景 Error 明显更低,速度约为 TwinTex 的一半、PBO 的八分之一。
局限:
- 逐平面独立处理,不考虑相邻平面间的关系,可能出现相邻立面线性特征的跨平面错位。
- 无法补全空洞:对任何输入照片都未覆盖的区域,优化方法无法推断或生成内容。
- 依赖相机外参与遮挡处理:显著遮挡和不准确的相机参数会影响结果。作者设想未来加入预处理去除环境遮挡,或借鉴 DUSt3R 去除对外参的依赖、联合优化相机参数。
延伸思考
- 逐平面独立优化虽便于并行,却牺牲了全局一致性;把相邻立面的边界特征作为跨平面约束联合优化,可能是消除跨面错位的自然方向。
- “优化中间混合参数而非终值”这一思路本质上是把病态的外观重建约束到一个更小、更可导的参数子空间,这种降维参数化思想或可迁移到其他从多视图恢复表面属性的任务。
- 方法强依赖已知相机外参;若能像 DUSt3R 那样在纹理优化中联合估计/修正相机,DiffTex 有望摆脱对精确标定的前提,扩大适用范围。