Procedural Material Generation with Reinforcement Learning
这篇论文没有用 RL 从零生成程序化材质图拓扑。它先检索或给定一个图结构,再把参数序列生成改写为长时序决策,用可执行渲染器给出的图像相似度奖励微调 MatFormer 参数生成器。
结论先行
论文最关键的技术贡献,是把不可微的材质程序执行与渲染过程放进 RL 环境,而不是把 renderer 本身做成可微模块。
它证明了 renderer feedback 可以显著修正“参数 token 正确但视觉结果不对”的目标错位,却没有解决“选错程序化材质图”这一更上游的问题。
最强证据
论文结论在相同 5 个参数样本预算下,RL 在合成与真实图像上均优于重新训练的 Hu et al. 2023 监督基线。合成集提升远大于真实集。
最重要边界
分析判断环境的 action 只是选择下一个离散参数 token,节点与边不是策略动作。图结构检索失败时,参数优化无法补回缺失的结构表达能力。
复现警告。官方仓库明确说明,论文数据集与论文预训练模型不能公开。仓库承诺提供基于公开 DiffMat 材质训练的示例权重,但 README 仍写着“敬请期待”。因此,代码可审计不等于论文结果可端到端复现。官方代码仓库
论文身份与范围
已核实正式题名与用户给出的题名一致。出版记录为 ACM Transactions on Graphics,Volume 43,Issue 6,Article 280,2024 年 12 月,同时属于 SIGGRAPH Asia 2024 proceedings。ACM DOI,作者主页,MIT 开放存档
| 维度 | 论文实际处理 | 论文没有处理 |
|---|---|---|
| 输入 | 合成材质渲染或正面闪光灯真实材质照片 | 自然场景中任意透视、遮挡和复杂光照的材质区域 |
| 结构 | 合成数据使用已知图,真实照片从图库检索 5 个最近邻图 | 端到端 RL 生成节点和边 |
| 策略输出 | 固定结构上的量化参数 token 序列 | 完整 Substance Designer 文件的自由程序合成 |
| 反馈 | 程序执行后固定 renderer 的图像空间奖励 | 人工偏好、可编辑性、物理正确性或多视角一致性奖励 |
| 后处理 | 可选 MATch v2 连续参数优化 | 对不可微离散生成器参数的事后修复 |
问题定义与 significance
监督学习优化参数空间的 token 交叉熵,但真正关心的是执行程序后的外观空间误差。两者并不等价。
程序化材质图记为 \(g=(\mathcal N,\mathcal E)\)。\(S_n\)、\(S_e\)、\(S_p\) 分别是节点、边与参数的线性化序列。本文只优化参数生成器 \(p_{\psi}\),并假设 \(S_n,S_e\) 已知或先检索得到。参数序列的自回归分解为:
必要推导teacher forcing 最小化的是每个 token 的负对数似然。若两个离散参数值在视觉上几乎等价,它仍会惩罚“非 ground truth”参数。反过来,参数值只差一个量化 bin,也可能让非连续 pattern generator 产生完全不同的纹理。这就是参数误差与 appearance error 弱相关的根源。
Significance。RL 允许奖励包含不可微程序执行、专有 Substance Automation Toolkit 渲染和感知特征统计,因此绕开了端到端求导要求,也允许没有配对程序图的真实照片进入训练。
MDP 定义:论文写了什么,应该怎样理解
论文没有用一个单独的五元组显式列出 MDP,但从公式 3 至 15、Figure 2 与代码可以完整恢复。
| 元素 | 本文实例化 | 严格核查 |
|---|---|---|
| 状态 \(x_i\) | 目标图像的 CLIP embedding \(y\),固定图结构 \(S_n,S_e\),以及参数前缀 \(s_{\lt i}\) | 状态随前缀增长。图像和图结构在一条 trajectory 内不变 |
| 动作 \(a_i\) | 从 \(p_{\psi}(s_i\mid s_{\lt i},S_e,S_n,y)\) 采样下一个参数 token \(s_i\) | 论文一句话称 action 是“generator 的 evaluation”,表述不够精确。代码实际 action 是采样出的 token |
| 转移 | 确定性地把 \(s_i\) 追加到前缀,得到下一状态 | 环境随机性主要来自策略采样、生成器内部随机化和真实图像对应的随机检索图 |
| 终止 | 完整参数序列生成完毕,最长可超过 1000 steps | 公开配置的 max_full_seq_len 为 1250 |
| 奖励 | 每步 KL 正则,最后一步再加入渲染外观奖励 | 典型 sparse terminal reward,通过 value network 与 GAE 回传信用 |
| 策略 | 图像条件 MatFormer 参数 transformer \(p_{\psi}\) | 节点与边生成器不参与默认 RL 更新 |
| 价值函数 | 与参数生成器同构的 transformer,替换为线性回归 head | 除 head 外从监督预训练权重初始化 |
| 折扣 | 论文定义 \(\gamma\in(0,1)\),代码 starter config 为 0.999 | 越早 token 的回报被折扣更多,正文“emphasizes earlier tokens”这一文字与常规折扣含义存在措辞张力 |
Reviewer 核查若按公式的 \(\gamma^i\) 且 \(0\lt\gamma\lt1\),后面的 token 权重更小,所以“emphasizes earlier parameter tokens”是成立的。但代码的 GAE 从终点向前递推,terminal appearance reward 对更早状态会乘更多次 \(\gamma\),因而更早状态获得的终点信用反而更弱。论文的索引表述与实现视角没有完全对齐,复现时应以代码递推为准。
策略学习与价值学习
优势的单步形式为 \(A_i=R_i+\gamma V_{i+1}-V_i\)。实际实现使用 GAE:
PPO clipped objective 限制新旧策略的概率比 \(r_i(\psi)\),同时拟合 value target 并加 entropy bonus:
代码核查公开实现对 advantage 做 minibatch normalization,value update 也进行 0.2 范围裁剪,策略与价值网络用同一个 AdamW optimizer 联合更新。当 approximate KL 超过 target KL 的 1.5 倍时,提前停止当前 buffer 的 replay。
Renderer feedback 与奖励设计
完整程序只在序列结束后执行一次。Substance Automation Toolkit 生成 SVBRDF maps,再由固定渲染设置合成外观图,最终计算 VGG 纹理统计与下采样 L*a*b* 颜色差异。
Texture statistics
VGG feature Gram matrices 捕捉多尺度纹理统计。公开配置使用 vgg_coeff=2.0,vgg_td_level=0。
Color structure
图像先下采样 4 个 mip level,再在 L*a*b* 空间计算 L1。配置中 ds_lab_l1_coeff=0.05,通道权重为 0.2、1、1。
Policy anchor
每步加入相对监督预训练策略的负 KL 奖励,配置中 \(\beta=0.001\),防止策略离开有效参数语法区域。
奖励不是物理正确性。高 reward 表示在特定固定渲染与感知统计下相似,并不保证 SVBRDF maps 可解释、材质响应真实、节点参数语义合理,或换光照后仍匹配。
代码中的 renderer feedback 路径
- 把量化 token 反量化为节点参数。
- 写出临时 SBS graph,并调用
sbscooker/sbsrender。 - 输出 basecolor、normal、roughness、metallic 等通道。
- 用固定相机和灯光做 physics-based rendering。
- 统一缩放至 224 × 224,计算 reward。
- 若渲染失败,代码用全零图替代,这会产生低奖励但不会丢弃 trajectory。
两阶段训练与推理
teacher forcing
生成参数 token
terminal reward
GAE + KL
可选 MATch
监督预训练
| 项目 | 论文正文 | 公开 starter config |
|---|---|---|
| 模型 | node encoder 48/4/4,parameter decoder 96/4/4 | hidden dim [48,96],layers [4,4],heads [4,4] |
| conditioning | CLIP image embedding 通过 cross-attention 条件化 | CLIP ViT-L/14,normalize=true |
| 优化 | Adam,learning rate 1e-4,gradient clip 1.0,cosine schedule + warm-up | AdamW 路径,weight decay 1e-4,warm-up 1200 steps |
| 训练量 | 8 张 A10g,10 epochs | batch 56,annealing 780000 steps |
| 结果 | validation CE/token 从 0.803 降至 0.770 | 配置本身不含结果 |
RL fine-tuning
| 项目 | 论文报告 | 公开配置可见值 |
|---|---|---|
| 硬件 | 8 GPU 采样,96 CPU core 计算 reward;A100 40GB node | devices 需用户填写,render processes 12 |
| 训练时长 | 800 epochs,约 1 天 | 50 epochs,与论文训练不一致 |
| trajectory | 正文未逐项报告 | buffer 96,generation batch 48,epoch data size 1536 |
| PPO | PPO + GAE + value network | \(\gamma=0.999\),\(\lambda=0.98\),clip 0.2,10 buffer epochs |
| loss weights | 正文只给备选 reward 权重 | value 0.1,entropy 0.05,KL reward 0.001 |
| sampling | 随机采样完整参数序列 | temperature 1.0,top-p 0.9,top-k disabled |
| optimizer | 公开正文未完整列出 | AdamW,lr 1e-5,grad clip 0.5 |
代码与论文差异论文说 800 epochs,当前仓库两个 RL 配置均为 50 epochs。由于论文数据与 checkpoint 未公开,不能确认 starter config 是否缩小了训练预算,还是后续整理代码时改变了定义。网页不把两者强行等同。
推理协议
合成数据给定 ground-truth graph structure,采 5 个参数序列取 reward 最佳者。真实照片先按 CLIP cosine similarity 检索 5 个 graph structure,每个图采 5 组参数,共 25 个候选。可对排名最高结果运行 MATch v2 differentiable post-optimization。官方评估脚本把 prediction、SAT rendering、metrics、MATch 与结果拼图串为一个流水线。评估脚本
数据构造与参数搜索空间
Synthetic
从 Hu et al. 与 MatFormer 的 4,667 个程序化材质图出发,对每个图穷举式采样更多参数组合,形成 10 million image-to-graph pairs。按 graph structure 做 90/5/5 split,避免同结构跨集合泄漏。
Real PhotoMat
超过 10,000 张手机拍摄的正面、闪光灯照明材质表面照片。按 90/5/5 划分。真实图像只用于 RL,不需要配对 ground-truth graph。
RL mixed dataset 以 50% 概率从 synthetic 或 real 取样。真实图像训练时检索 \(K=5\) 个最近邻图,并随机选择一个作为固定 \(S_n,S_e\)。这既提供图结构条件,也引入有限的结构随机化。
搜索空间到底多大
规模解释若粗略把每步视为 128 个可选 token,长度 1000 的无约束空间是 (128^{1000})。真实空间受节点类型、参数签名、mask 与语法约束大幅缩小,但仍远超从 terminal reward 冷启动探索的能力。因此监督预训练不是普通加速技巧,而是把策略放进“可执行程序流形”的必要先验。
数据不可得。官方 README 写明论文使用的数据和预训练模型受 Adobe 政策限制不能发布。公开代码依赖自定义图数据目录、node type list、SBS source 与 real nearest-neighbor JSON。没有这些资产,无法直接运行论文配置。仓库说明
实验协议、baseline 与指标
| 维度 | 合成测试 | 真实照片测试 |
|---|---|---|
| 样本数 | 2,330 images,来自未见图结构,每图结构 10 个随机 appearance variations | PhotoMat test split 全部 582 images |
| 图结构 | ground truth \(S_n,S_e\) | CLIP 最近邻检索 5 个图 |
| 参数预算 | 每图 5 samples,取 top 1 | 每个检索图 5 samples,共 25 candidates,取 top 1 |
| Baseline | Hu et al. 2023,使用本文扩大后的 synthetic dataset 和更新架构重新训练,确保比较主要反映 RL fine-tuning | |
| Post optimization | 比较 without MATch 与 with MATch v2 | |
| Metrics | Reward:本文 Eq. 5,越高越好;LPIPS:独立感知距离,越低越好 | |
公平性优点作者没有直接拿旧 checkpoint 作 baseline,而是用扩大后的 10M synthetic dataset 重新训练监督模型,并让两者在同一个已知或检索图结构上预测参数。
公平性疑点主指标 Reward 与 RL 训练目标相同,存在 training metric advantage。LPIPS 是较独立的第二指标,但真实图像上的优势很小。论文没有用户研究、跨光照测试、SVBRDF map ground truth、图编辑质量或多样性指标。
样本效率的定义
这里的 sample efficiency 指推理时要抽取多少条参数序列才能得到好结果,不是 RL 训练的 renderer call efficiency。论文 Figure 10 与 11 对预算 5、20、50、150 比较,并在预算 5、20、50、150 时分别选 top 1、3、5、5 个候选进入 MATch。
论文结论是监督方法要花超过 20 倍时间,或进入分钟级 MATch,才能达到接近 RL 的 reward。这个结论在 RTX 3090 peak throughput 上测得,未报告不同 SAT 版本、CPU 数量和磁盘 I/O 对时间的敏感性。
定量结果与消融
主结果
| 测试集 | 方法 | Reward,无 MATch ↑ | LPIPS,无 MATch ↓ | Reward,有 MATch ↑ | LPIPS,有 MATch ↓ |
|---|---|---|---|---|---|
| 合成 | Hu et al. 2023 | 0.649 | 0.503 | 0.895 | 0.490 |
| 合成 | Ours | 0.904 | 0.242 | 0.928 | 0.347 |
| 真实 | Hu et al. 2023 | 0.827 | 0.620 | 0.901 | 0.574 |
| 真实 | Ours | 0.847 | 0.571 | 0.912 | 0.555 |
论文观察合成集上 Ours 的 LPIPS 在 MATch 后从 0.242 变差到 0.347,因为 MATch 优化的 reward landscape 与 LPIPS 不同。尽管如此仍优于监督基线的 0.490。这是多目标错位的直接证据。
Graph retrieval 与 graph generation
| 方法 | Reward,无 MATch ↑ | LPIPS,无 MATch ↓ | Reward,有 MATch ↑ | LPIPS,有 MATch ↓ |
|---|---|---|---|---|
| Ours with graph generation | 0.852 | 0.601 | 0.893 | 0.578 |
| Ours,retrieval | 0.847 | 0.571 | 0.912 | 0.555 |
生成图在无 MATch reward 上仅领先 0.005,但其余三项更差,特别是经过 MATch 后差距扩大。作者据此保留检索方案。
训练数据组成消融
| 测试集 | 方法 | Reward ↑ | LPIPS ↓ |
|---|---|---|---|
| 合成 | Hu et al. 2023 | 0.649 | 0.503 |
| 合成 | RL synthetic only | 0.897 | 0.249 |
| 合成 | RL real only | 0.854 | 0.311 |
| 合成 | RL mixed | 0.904 | 0.242 |
| 真实 | Hu et al. 2023 | 0.827 | 0.620 |
| 真实 | RL synthetic only | 0.819 | 0.581 |
| 真实 | RL real only | 0.850 | 0.574 |
| 真实 | RL mixed | 0.847 | 0.571 |
mixed 并非在真实集 reward 上最佳,real only 高 0.003。作者选择 mixed 是因为跨 synthetic 与 real 的综合稳定性,而不是每项绝对最优。
预训练与 L*a*b* 奖励消融
| 方法 | Reward ↑ | LPIPS ↓ |
|---|---|---|
| Hu et al. 2023 | 0.827 | 0.620 |
| Ours without pre-training | 0.828 | 0.580 |
| Ours without L*a*b* loss | 0.837 | 0.581 |
| Ours | 0.847 | 0.571 |
审稿式解读无预训练版本仍略优于监督 baseline 的 LPIPS,说明 RL 信号确实能学到外观改进。但差距并不大,且论文没有报告从零训练的收敛率、无效程序比例或 renderer calls 数量,所以不能据此认定冷启动 RL 已具有良好样本效率。
关键 Figure 的结构化解读
| 编号 | 在回答什么 | 应怎样读 |
|---|---|---|
| Fig. 1 | 为什么需要两阶段训练 | supervised 参数差异与 RL appearance similarity 的目标对比 |
| Fig. 2 | PPO 如何接入程序执行 | 旧策略采样,buffer 固化,当前策略多轮 replay,value network 参与 |
| Fig. 3 | 合成图像的结构参数是否更准 | MATch 也无法修复不可微 generator parameter 带来的结构错配 |
| Fig. 4, 5 | 真实照片 top 1 与 top 5 稳定性 | RL 降低样本间方差,监督模型后排样本质量快速下降 |
| Fig. 6 | 检索图还是生成图 | 生成结构偶有更好,但整体不稳定,MATch 会放大结构错误 |
| Fig. 7, 8 | 数据、预训练、颜色项是否必要 | synthetic only 对真实域失效,移除颜色项会错色 |
| Fig. 9 | GAE 与 reward 组合的选择 | reward 替代 advantage、VGG 换 SWD、单项占优都会产生结构或颜色副作用 |
| Fig. 10, 11 | 样本预算与时间 | RL 在 5 samples 已稳定,监督法需要更多采样或 MATch |
| Fig. 12 | 方法在哪里失败 | 图结构表达能力不足时,检索、生成与参数优化都失败 |
局限、失败模式与 reviewer 式锐评
已由论文承认
- 检索图或生成图无法表达目标结构时,参数预测必然失败。
- 对节点与边做 RL 更难,因为有效图空间更大、局部最优更多,需要强结构正则。
- 真实照片含更丰富材质、照明和相机效应,而 renderer 是固定设置。
- 未来可以利用已训练 value network 做 test-time search,但本文没有实现。
从代码与实验进一步看到
奖励劫持风险
MDP 的动作语义被弱化
训练样本效率没有被直接测量
闭源依赖与数据不可得
与完整 PMG 的命名距离
总体锐评。这是一个目标函数对齐做得很漂亮、上游结构问题被刻意冻结的工作。它对“renderer 能否做 RL feedback”给出肯定答案,却没有证明 RL 能在开放的材质程序空间中完成完整图搜索。
与三条研究线的关系
Procedural Material Generation
直接相关,但仅覆盖固定或检索图结构的参数生成。它补强了 Hu et al. 2023 的 parameter generator,不替代 node/edge generator。
Context Optimization
论文没有提出 context optimizer。target image 的 CLIP embedding、检索到的 \(S_n,S_e\) 共同构成静态 context,但 context 本身没有按 reward 被优化。
Agent
策略逐 token 决策并接受环境终点奖励,形式上是 RL agent。行为上没有迭代观察 renderer、诊断错误、选择工具和修改图结构,因此 agentic 程度有限。
研究框架,不是本文贡献
映射在这一框架里,ProcMatRL 实际更接近 \(C=(y,S_n,S_e)\),Agent 输出的是 \(S_p\) 而非完整 \(G\)。它优化 \(p_{\psi}(S_p\mid C)\),没有搜索 \(C\),也没有让 Agent 在多轮 renderer feedback 后更新自己的 context representation。
对 context-optimized agentic PMG 的具体启示
最值得延伸的不是简单把 PPO 套到更大的图生成器上,而是把“图像如何被拆成可行动上下文”与“agent 如何在 renderer 回路中修正图”分开建模。
| 本文限制 | 你的可研究变量 | 最小可证伪实验 | 关键指标 |
|---|---|---|---|
| CLIP 单向量弱化结构分解 | \(C\) 是否包含 macro structure、micro texture、color、roughness、spatial relations | 同一 agent、同一图搜索预算,仅替换 context representation | reward、LPIPS、结构指标、token/renderer calls |
| 图结构先验由 retrieval 固定 | context-guided graph skeleton proposal | retrieval top 5 对比 context optimizer 生成 top 5 skeleton | oracle best-of-K、有效图率、节点语义覆盖 |
| 只在终点看一次 renderer | 多轮 process trace 与 error localization | single-shot 参数生成对比 render、diagnose、edit 三轮循环 | 每轮增益、总渲染预算、回退率 |
| reward 只看固定外观 | 多视角、多光照、editability、complexity reward | 固定 reward 对比 multi-view constrained reward | 跨光照 LPIPS、map consistency、节点数 |
| value network 未用于推理搜索 | value-guided tree search 或 beam search | 相同 20 个候选预算,随机采样对比 value-guided expansion | best reward、median reward、wall time |
建议的分层中间表示 \(C^{\ast}\)
Perceptual plan
材质类别、尺度层级、主色与粗糙度、规则性、方向性、重复周期、缺陷分布。输出可读 JSON,作为可消融 context。
Graph plan
候选 generator、mask hierarchy、blend logic、依赖关系、每个节点负责的视觉证据,以及尚未解释的 residual。
真正的 agentic loop
研究建议先让 agent 在一个受限 graph grammar 上操作,动作定义为 add node、connect edge、replace node、edit parameter group、rollback。每个动作后不必完整高质量渲染,可用低分辨率 proxy reward,再在 episode 末用 SAT 高保真 renderer 做终点校验。
优先级第一篇工作建议把创新集中在 context representation + renderer-in-the-loop editing,不要同时承担开放式全图生成、RL 从零训练和多目标物理 reward。ProcMatRL 已经说明 terminal reward 对长序列的信用分配很难,扩大动作空间会迅速放大样本成本。
复现清单与风险
| 组件 | 状态 | 说明 |
|---|---|---|
| 论文 PDF | 可得 | MIT DSpace 开放存档 |
| 训练与评估代码 | 可得 | Adobe Research License,非商业研究许可 |
| DiffMat | 可得 | 需另行安装,复杂材质建议至少 16GB VRAM |
| SAT / Substance Designer | 专有 | 需要 sbscooker 与 sbsrender |
| 论文数据集 | 不可得 | Adobe policy 限制 |
| 论文 checkpoint | 不可得 | README 仅承诺将来发布示例模型 |
| PhotoMat | 论文引用可查 | 实际使用版本、split 文件与 NN index 需自行重建 |
| Supplementary | 本页未取得稳定公开直链 | 仓库配置可补充部分超参数,但不可假定完全等同论文设置 |
最低可运行路径
- 准备可由 SAT 执行的 SBS 图集合,生成统一的 node type list 与 train/val/test split。
- 对每个图采样参数并渲染,构建 image、nodes、node depths、parameter sequence 数据。
- 按公开配置预训练 conditional parameter generator。
- 准备 PhotoMat 或同协议真实照片,并用 CLIP 建立 top 5 graph nearest-neighbor JSON。
- 运行 synthetic only PPO 验证 renderer、reward 与 buffer,再切换 50/50 mixed data。
- 固定 5 samples 协议复现 Table 1、2,随后加入 MATch。
务实建议。若目标是验证研究想法,不必先复现 10M pairs 与 800 epochs。可以选 30 至 100 个公开图,把动作空间限制为 10 至 30 个语义参数,先比较不同 context decomposition 是否减少达到同一 reward 所需的 renderer calls。
References
- Li, B. et al. Procedural Material Generation with Reinforcement Learning. ACM Transactions on Graphics 43(6), Article 280, 2024. 开放版本:MIT DSpace.
- Adobe Research. ProcMatRL official code repository. 代码、starter configs、数据与模型可得性声明。
- Li, B. Author publication page. 论文身份、作者、venue 与 abstract 交叉核对。
- Hu, Y. et al. Generating Procedural Materials from Text or Image Prompts. SIGGRAPH 2023. 本文监督 baseline 与图生成来源。
- Guerrero, P. et al. MatFormer: A Generative Model for Procedural Materials. 2022. 三生成器分解与线性化程序表示。
- Li, B., Shi, L., Matusik, W. End-to-End Procedural Material Capture with Proxy-Free Mixed-Integer Optimization. ACM TOG 42(4), 2023. MATch v2 后优化来源。
- MIT Graphics. DiffMat. 可微材质图、SAT 依赖与 VRAM 限制。
- Schulman, J. et al. Proximal Policy Optimization Algorithms. 2017.
- Schulman, J. et al. High-Dimensional Continuous Control Using Generalized Advantage Estimation. 2015.
- Ramamurthy, R. et al. Is Reinforcement Learning Not for Natural Language Processing? 2022. RL4LMs 框架来源。
- Radford, A. et al. Learning Transferable Visual Models From Natural Language Supervision. 2021. CLIP embedding 与 retrieval。
- Zhang, R. et al. The Unreasonable Effectiveness of Deep Features as a Perceptual Metric. 2018. LPIPS 指标。
证据标记说明:“论文结论”仅复述原文或表格;“代码核查”来自官方仓库当前版本;“分析判断”是基于前两者的解释;“研究建议”是面向后续课题的外推,不属于原论文贡献。页面内关键数值来自论文 Tables 1 至 5。