Paper Deep Read · Eurographics 2021

Adversarial Single-Image SVBRDF Estimation with Hybrid Training

一张近正视、带闪光灯的平面材质照片,恢复法线、漫反射、粗糙度与镜面反射四张空间变化贴图。论文的关键不是“用了 GAN”这么简单,而是用真实物体的异光照图像对,把没有 SVBRDF 真值的真实照片变成可监督训练信号。

Xilong Zhou · Nima Khademi KalantariComputer Graphics Forum 40(2), 315–325DOI 10.1111/cgf.14263511 页正式论文官方代码 commit 9c565c2

先给结论

这项工作把“唯一像素真值”改造成“真实感分布 + 可重渲染一致性”的训练目标。它在 perceptual quality 上有效,特别是 real test 的 LPIPS;但它不会消除单图逆渲染的不可辨识性,也会因 adversarial prior 产生看似合理却并不存在的细节。

Paper Verified

真实图像泛化确实改善

36 个真实场景上,hybrid 模型从 synthetic-only 的 LPIPS 0.306 降至 0.279;加入测试时 refinement 后从 0.275 降至 0.256。论文同时报告对应 RMSE 从 0.148 降至 0.138,refinement 后从 0.121 降至 0.119。

Author Claim

对抗训练给网络更多“可接受解”

作者认为逐像素 L1 把网络强迫到单一 ground truth,压缩了病态逆问题的合理解空间。实验支持“结果更锐利、LPIPS 更好”,但没有建立一个可测量的解空间覆盖率,也没有证明 adversarial loss 恢复了真实物理参数。

Our Interpretation

真正核心是跨光照重投影

真实图像对监督可理解为 appearance-cycle:从 \(I_a\) 估计材质,从 \(I_b\) 估计光源,再要求重渲染 (R\(\hat F_a,\hat b\)) 与 \(I_b\) 一致。它把未标注 real data 接入训练,却仍依赖平面、固定视角、点光源与已知渲染模型。

Research Extension

更适合现代方法的改造方向

把确定性四贴图输出升级为 posterior / diffusion distribution;用 multi-hypothesis rendering consistency、uncertainty calibration 与真实多光照验证器分开处理“外观可解释”和“参数可辨识”。

论文 Figure 1:单图 SVBRDF 输出与重渲染总览
Figure 1(原论文):输入照片 → normal / diffuse / roughness / specular → novel-light rendering。上为 synthetic,底部对照 synthetic-only 与 hybrid 训练在真实石材划痕高光上的差异。

问题定义:输入一张图,输出四张物理贴图

变量与可观测量

输入 \(I_q\in[0,1]^{H\times W\times3}\) 是平面材质在位置 \(q=(x,y,z)\) 的近点光源下拍摄的 RGB 图像。目标是空间变化材质集合:

\[ \mathbf{F}=\{F_i\}_{i=1}^{4}=\{N,\rho_d,\alpha,\rho_s\}, \qquad \hat F_i=G_i(I_q) \]

\(N\) 是三通道 surface normal;​\(\rho_d\) 是三通道 diffuse albedo;​\(\alpha\) 是一通道 roughness;​\(\rho_s\) 是三通道 specular albedo。网络还从共享 encoder 特征估计光源 \(\hat q=G_l(I_q)\)。最终的 renderer \(R(\mathbf F,p)\) 使用 Cook–Torrance 模型,在新光源 \(p\) 下合成外观。

为什么不可辨识

单张照片只有颜色观测,却同时混合材质、法线、光照与曝光。明亮像素可能来自较高 diffuse、较强 specular、更小 roughness,或法线朝向光源。因而多个 ​\(\mathbf F\) 可产生相似的 \(I_q\)。

论文的约束

输入默认是正交视图下的平面材质;训练 renderer 使用点光源和固定相机;输出遵循 Cook–Torrance 参数化。它不是任意几何、环境光或复杂镜头成像条件下的通用 inverse rendering。

方法:synthetic 侧五个判别器 + real 侧一个判别器

论文 Figure 2:synthetic 与 real hybrid training 流程
Figure 2(原论文):左侧 synthetic 支路有四个参数判别器 \(D_1,\ldots,D_4\) 与 rendering 判别器 \(D_{\mathrm{ren-s}}\);右侧 real 支路另有一个 rendering 判别器 \(D_{\mathrm{ren-r}}\),总计六个判别器实例。real 支路从 \(I_a\) 取材质、从 \(I_b\) 取光源。
单张输入
\(I_q\)
→
共享 Encoder
1×1×512
→
四个 Decoder
3 / 3 / 1 / 3 通道
→
SVBRDF + 光源
\(\hat{\mathbf F},\hat q\)

Synthetic 总目标

\[ E_{\mathrm{syn}}=\sum_{i=1}^{4}E_i+\lambda_rE_{\mathrm{ren}}+\lambda_lE_l, \qquad \lambda_r=5,\;\lambda_l=10 \]

四个 \(E_i\) 分别约束四张参数图;​\(E_{\mathrm{ren}}\) 约束这些图作为一个整体能否解释 novel-light appearance;​\(E_l\) 训练光源回归头。

1. 参数损失

\[ E_i=L_{\mathrm{adv}}(G_i,D_i)+\lambda_{1,p}L_{\mathrm{feat}}(G_i,D_i)+\lambda_{2,p}\lVert G_i(I_q)-F_i\rVert_1 \]

\(L_{\mathrm{adv}}\) 是 conditional LSGAN;判别器同时看到 input 与真/假参数图。feature matching 对齐判别器多层特征,稳定训练;L1 保留与 synthetic truth 的对应关系。论文取 ​\(\lambda_{1,p}=10,\lambda_{2,p}=10\)。

2. Rendering loss

\[ \begin{aligned} E_{\mathrm{ren}}={}&L_{\mathrm{adv}}(G,D_{\mathrm{ren-s}})+\lambda_{1,r}L_{\mathrm{feat}}(G,D_{\mathrm{ren-s}})\\ &+\lambda_{2,r}\lVert R(\hat{\mathbf F},p)-I_p\rVert_1+\lambda_{3,r}L_{\mathrm{VGG}}(R(\hat{\mathbf F},p),I_p) \end{aligned} \]

随机新光源 \(p\) 下,四张预测贴图必须共同产生正确外观。权重为 ​\(10,50,10\)。它约束跨通道一致性,弥补四个独立参数判别器“各自真实、组合错误”的风险。

3. Light loss

\[ E_l=\lVert G_l(I_q)-q\rVert_1 \]

synthetic data 知道真实光源坐标,因此可监督六层 MLP。光源头不是最终材质输出,却是 real-pair training 把另一张图变成监督信号的必要桥梁。

4. Real-pair loss

\[ \begin{aligned} \hat{\mathbf F}_a&=G(I_a),\qquad \hat b=G_l(I_b),\\ E_{\mathrm{real}}={}&L_{\mathrm{adv}}(G,D_{\mathrm{ren-r}})+10L_{\mathrm{feat}}(G,D_{\mathrm{ren-r}})\\ &+50\lVert R(\hat{\mathbf F}_a,\hat b)-I_b\rVert_1 \end{aligned} \]

论文最终写为 \(E=E_{\mathrm{syn}}+\lambda E_{\mathrm{real}}\),实现取 ​\(\lambda=5\)。这并不是 real SVBRDF truth:它只要求一个预测材质在估计光照下解释另一张照片。

因果链

对抗参数先验使单张贴图看起来“像真实材质” → rendering discriminator 使四张贴图能协同重现外观 → real-pair branch 缩小 synthetic-to-real appearance gap。三者分别处理 distribution realism、cross-map consistency 与 domain gap,职责不同。

数据、网络与训练:足够复现到“配置级”,还不到一键复现

Architecture

Generator

仅保留 Deschaintre 2018 的 local encoder-decoder branch,使用 skip connections;共享 encoder,四个 decoder 输出 3 / 3 / 1 / 3 通道。256×256 输入的 bottleneck 是 1×1×512。

Light head

六层全连接

512 → 256 → 128 → 64 → 32 → 16 → 3;除最后线性层外使用 leaky ReLU。输出 Cartesian 点光源坐标。

Discriminators

pix2pixHD 风格

论文采用 Wang et al. 2018 的 conditional discriminator。公开代码默认单尺度、3 层 PatchGAN、首层 64 filters、instance normalization、LSGAN。

Synthetic data

复用 Deschaintre et al. 2018 的 SVBRDF dataset。正交相机;上半球用 cosine-weighted distribution 采样点光源方向;距离为 ​\(\exp(d)\),​\(d\sim\mathcal N(1.0,0.75^2)\)。Cook–Torrance 渲染后 clamp 到 1、gamma correction,再映射到 ​([-1,1])。论文没有给出训练材质实例总数或明确 train/validation split。

Real data

三脚架固定相机,移动闪光灯拍摄平面表面:约 500 段视频;每段选 1–3 个光照合理 crop,形成约 1,000 个视频片段;每个片段抽 5–10 帧并 resize 到 256×256。训练时在同一场景随机抽两帧。公开数据页面提供下载,但论文未说明相机型号、曝光锁定、色彩标定、对象清单与正式 split。

阶段数据主要目标预算Batch
Stage 1Synthetic4 个参数判别器;不含 \(E_{\mathrm{ren}}\)250,000 iterations4
Stage 2Synthetic加入 rendering discriminator / \(E_{\mathrm{ren}}\)200,000 iterations4
Stage 3HybridSynthetic + real-pair supervision100,000 iterations4 synthetic + 1 real

统一配置:PyTorch;Adam,learning rate \(2\times10^{-5}\),​\(\beta_1=0.5\),其余 Adam 参数默认(代码明确 ​\(\beta_2=0.999\),weight decay 0);单张 GeForce RTX 2080 Ti 约 3 天。论文未报告随机种子、训练集精确大小、验证协议、checkpoint 选择与显存占用。

Inference

测试时单张 RGB resize 到 256×256,经一次 encoder / four-decoder forward 输出四贴图;如果选择 `ALL_5D`,还可用预测光源重渲染。论文的 “+” 结果另做测试时 refinement:先用全图平均梯度只优化 roughness 与 specular,再逐像素优化全部参数,使渲染更接近输入;论文没有公开 refinement 的迭代数、优化器和步长,所以“+” 结果不能凭正文完整复现。

python test.py --name <exp> --dataroot <data> --resize_or_crop resize \ --MyTest ALL_4D --netG NewVA_Net_Light --which_epoch final \ --mode Real --savename <name>

实验结果:LPIPS 的胜利,比参数 RMSE 更明确

Table 1 · 132 个 synthetic test images

N / D / R / S 为四张参数图 RMSE;Ren RMSE 与 Ren LPIPS 在每个 scene 的 20 个新光照 rendering 上计算。所有指标越低越好。粗体为原表 best,次优以棕色标记。

方法N RMSED RMSER RMSES RMSERen RMSERen LPIPS
Des180.0650.0580.1750.1290.0860.278
Des190.0920.0620.1290.0660.1000.223
Gao190.0680.0650.1230.0650.0720.274
Ourssyn0.0540.0620.1000.0650.0780.193
Ourshyb0.0560.0620.1040.0660.0740.187
Gao19+0.0690.0650.1230.0700.0680.177
Ourssyn+0.0530.0630.1150.0790.0580.153
Ourshyb+0.0540.0630.1240.0900.0590.155
读数

无 refinement 时 Ourshyb 的 Ren LPIPS 0.187,比最佳 baseline Des19 的 0.223 低 16.1%;但 diffuse RMSE 0.062 不如 Des18 的 0.058,specular RMSE 0.066 也略逊 Gao19 / Ourssyn 的 0.065。

解释

对抗目标更偏好感知锐度:它改善 rendering LPIPS,却不保证每张物理参数图的 L2 准确性。refinement 使 rendering RMSE 大幅下降,但 roughness / specular 参数 RMSE 反而变差,说明“重渲染相似”与“分解正确”不是同一目标。

Table 2 · 36 个 real scenes(Guo et al. 2020)

每个 scene 用 1 张输入,其余 8 张异光照图作为 ground truth;因此比较的是 novel-light rendering,而不是 real SVBRDF 参数真值。

方法LPIPS ↓RMSE ↓
Des180.3490.131
Des190.3350.168
Gao190.4190.132
Ourssyn0.3060.148
Ourshyb0.2790.138
Gao19+0.3070.133
Ourssyn+0.2750.121
Ourshyb+0.2560.119
论文 Figure 8:有 ground truth 的真实场景 novel-light rendering 比较
Figure 8(原论文):真实输入下,与 Deschaintre 2018/2019、Gao 2019+ 的 rendering 对照。论文的视觉结论是本方法更锐利、artifact 更少、高光位置更接近 ground truth;这仍是 appearance evidence。

Ablation

论文 Figures 10–12:L1、rendering loss 与光源位置消融
Figures 10–12(原论文):左上为 L1-only 与 full adversarial loss;左下为去掉 rendering loss;右侧为输入光源角度鲁棒性。

Adversarial vs. L1

132 synthetic scenes:L1-only 的 LPIPS / RMSE 为 0.236 / 0.073;full adversarial 为 0.193 / 0.078。感知指标提升 18.2%,代价是 RMSE 增加 6.8%。这直接支持“更锐利”,也直接否定“所有数值指标都更好”。

Rendering loss

去掉 \(E_{\mathrm{ren}}\) 时,单独的四个参数判别器仍能生成清晰贴图,但组合后的 rendering 与 GT 不一致。论文只给定性 Figure 11,没有报告数值差值。

Hybrid training

Figure 9 展示划痕粗糙度、高光处 diffuse artifact 与锈蚀金属 roughness 的改善;Table 2 则给出真实场景 quantitative support。没有 real-training dataset size / category-wise breakdown,泛化范围仍不透明。

Light position

输入闪光灯偏离中心不超过约 35° 时,论文称参数 RMSE 与 rendering LPIPS / RMSE “fairly robust”;50° 明显恶化。图中有曲线但正文未给逐点数值表。

Paper vs. Implementation:公开代码能说明什么

核查点论文描述公开代码快照 9c565c2影响
真实分支 lossEq. 4:GAN + feature + L1默认还计算 real rendering 的 VGG loss;可用 flag 关闭论文公式与默认实现并不完全一致,复现实验应记录 flag
光源梯度从 \(I_b\) 估计 ​\(\hat b\) 后重渲染renderer 调用使用 `fakeLightB.detach()`real-pair rendering loss 不反传到 light head;light head 主要由 synthetic \(E_l\) 学习
Real pair 对称性\(I_a\rightarrow I_b\)默认只用 A 材质 + B 光源;额外 A self-render 分支由 `gan_realA/L1_realA/vg_realA` flags 开启README 命令未开启这些 flags,默认是单向交叉重渲染
训练预算250k / 200k / 100k iterationsCLI 的 `--niter` 实际是 epoch loop;README 用 `$epoch`必须知道 dataset length 才能把 paper iterations 换算成 CLI epochs
Randomness未报告 seed`train.py` 每次随机生成 seed 并写到 options log若未保存 `opt.txt`,难以精确重放;结果方差未报告
输入预处理clamp、gamma、归一化Synthetic loader 对 input 做 (1/2.2) gamma;real loader 使用独立 linear-to-gamma 路径;默认 256 resize/crop准备自有 real 输入时必须匹配 code path,不能只按论文一句话处理
版本环境PyTorchPython 3.6.12、PyTorch 1.6.0、CUDA 10.1、torchvision 0.7、LPIPS 0.1.3环境较旧;现代 PyTorch 需处理 API / checkpoint 兼容性
公开性方法可实现代码、real dataset link、pretrained checkpoint link 均在 README;无正式 release/tag,仅 2 commits可运行性比只有伪代码强,但实验配置不是完整封装
复现边界

本页没有声称重新训练或独立复现实验。论文没有公开完整 refinement recipe、validation / checkpoint-selection protocol、真实拍摄标定和统计显著性;本次审计也没有下载大体量训练数据与 checkpoint。代码中的默认值能说明实现路径,不能自动证明它们就是所有论文表格的最终运行参数。

Reviewer commentary

Strengths

监督设计聪明而且务实

  • real-pair 训练无需 real SVBRDF truth,采集门槛低;
  • 把 parameter realism 与 rendering consistency 分开建模;
  • synthetic 与 real 两套 test 给出一致的 LPIPS 趋势;
  • 论文主动展示 hallucinated detail 与远离高光处信息不足的 failure case。
Weaknesses

物理正确性证据有限

  • real test 只验证 novel-light appearance,没有 real parameter ground truth;
  • 没有用户研究或统计显著性;
  • 多个判别器和 refinement 增加训练复杂度,却缺少成本拆分;
  • 基线单图设置对原本支持多图的 Des19 / Gao19 是受限模式,虽对任务公平,却不能代表这些系统的最佳能力;
  • 真实数据采集和 split 不够透明。
What the ablation proves

支持“锐利”,不支持“更真实的参数”

L1→adversarial 的 ablation 清楚展示 LPIPS / RMSE trade-off;\(E_{\mathrm{ren}}\) 展示组合一致性;hybrid 展示 real-domain appearance improvement。它们没有证明恢复的 normal / roughness / specular 是唯一或真实的材料属性。

Potential Improvements

下一步应直接建模不确定性

  • 输出多个 posterior hypotheses,并用多光照观测做 reranking;
  • 引入曝光、白平衡、flash profile 与 camera response 的可学习 nuisance variables;
  • 对 normal integrability、energy conservation 与 roughness prior 加物理约束;
  • 使用执行期 renderer feedback 做 test-time search / graph repair,而非只做单一像素 refinement;
  • 把 confidence map 与不可见区域显式呈现给材质艺术家。
论文 Figure 13:失败案例
Figure 13(原论文):上例 adversarial model 生成 ground truth 中不存在的细结构;下例因单图信息不足,远离高光的区域无法恢复全部材质细节。这是论文最重要的证据边界。

对 procedural material 研究的启发

本文直接输出 raster SVBRDF maps,不生成 SBS/SBSAR、shader graph、node topology 或可编辑程序,也没有 constrained decoding、graph execution 或 topology search。可借用的不是表示形式,而是监督机制:对 procedural graph 生成,可把 \(R(\mathbf F,p)\) 替换成真实 graph executor,在多光照、多尺度和多视角下验证外观;再把 adversarial prior 用于判别 node-level preview / rendered material distribution,同时保持 graph validity、可编辑性与参数语义。这属于研究延伸,论文没有验证。

来源与可追溯性

  1. 正式出版记录与 DOI — Computer Graphics Forum 40(2), 2021, pp. 315–325。
  2. 作者项目页 — paper、supplement、code、dataset 入口。
  3. 正式论文 PDF — 本页方法、公式、配置、表格与图像的主要一手来源。
  4. 官方 supplementary results — synthetic / real 的大规模可视化对照网页;不是额外附录 PDF。
  5. 官方代码仓库 — 核查 commit 9c565c22d6431ec4fc98cc23032dbec01f6ed921。
  6. Deschaintre et al. 2018, Single-Image SVBRDF Capture with a Rendering-Aware Deep Network — synthetic dataset 与 generator 基础架构。
  7. Wang et al. 2018, High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs — discriminator 与 feature matching 设计来源。

核查日期:2026-09-26。正文事实来自 11 页正式 PDF、官方项目 / supplement 与官方代码;未用搜索摘要替代论文阅读。图像均为原论文 Figure 的页面裁切并以 base64 内嵌。数值表由原 Table 1–2 重建。本文主页面无外部运行依赖,MathJax 3.2.2 离线内嵌。