Paper Reading · VLMaterial
Deep Paper Reading · ICLR 2025 Spotlight

VLMaterial

Procedural Material Generation with Large Vision-Language Models

Beichen Li 等arXiv:2501.18623v2ICLR 2025 Spotlight代码发布于 2025-02-18
身份核验

本文对应 Beichen Li 等人的视觉程序合成论文,正式收录于 The Thirteenth International Conference on Learning Representations,并获 Spotlight。2026 年另有一篇同名缩写 VLMaterial 的雷达材质识别论文,与本页无关。论文题名、作者、venue 与代码仓库信息可由 arXivOpenReview官方仓库 相互核对。

VLMaterial 论文概览,展示参考图像、生成的程序化材质、场景应用与节点编辑
论文 Figure 1 对应的官方 teaser。输入单张材质图像,输出可执行的 Blender Python 程序与可编辑节点图,再将材质应用于三维场景。来源:论文与官方仓库 misc/teaser.jpg

一句话结论与真正贡献

VLMaterial 的关键不是提出新的程序化材质图语法,而是把 Blender 节点图转译成普通 Python 程序,以 LLaVA-NeXT 8B 进行 image-to-code 微调,并用“多次采样、执行过滤、渲染排序、参数后优化”把不可靠的自回归代码生成转化为可用系统。

1.64K3,663 个原始材质经清理与验证后的艺术家程序
50.4KGPT-4o-mini 程序交叉后得到的不同结构
>550K继续执行 10 倍参数增强后的图像程序对
8BLLaMA 3 language decoder 规模
40MMLP projector 与 LoRA 的可训练参数总量
91.1%Blender 测试集程序正确率,标准采样预算下

最值得记住的系统观点

论文的最终预测并非一次前向生成。每个输入最多生成 \(N=50\) 个候选,直到收集 \(K=20\) 个有效程序,再以渲染图与输入图之间的 style loss 选择最优结果。表 1 的性能因此同时来自模型、随机解码、执行验证和 reranking,而不是单个 VLM checkpoint 的一次生成能力。

事实来源:论文 Section 4Section 5官方 README

问题定义与 image-to-program 表示

程序化材质 \(M\) 被视为有向无环计算图 \(G=(\mathcal{V},\mathcal{E})\)。节点 \(v\in\mathcal{V}\) 是纹理生成器、滤波器、转换器或着色器,边 \(e\in\mathcal{E}\) 描述输出 socket 到输入 socket 的数据流。每个节点还带有异构参数集合 \(\phi=(p_{1},p_{2},\ldots)\),参数既可能连续,也可能是整数、类别或布尔值。

\[x^{+}_{\mathrm{out}}=f\!\left(x^{\ast}_{\mathrm{in}},\phi\right)\]

作者没有直接让模型生成抽象图 token。它把清理后的 Blender 节点图确定性转译成 `shader_material(material)` Python 函数,函数依次创建节点、连接边并赋值参数。执行程序后,Blender API 重建可编辑节点图。因而模型学习的目标是:

\[P_{\theta}(y\mid I,q)=\prod_{t=1}^{T}P_{\theta}\!\left(y_{t}\mid y_{\lt t},I,q\right)\]

其中 \(I\) 为参考图像,\(q\) 为固定简短指令,\(y=(y_{1},\ldots,y_{T})\) 为 Python 程序 token。训练使用标准 causal language modeling,输入图像与 user prompt 部分的 label 被置为 ignore index,仅对 assistant 程序 token 计算损失。该实现可由 dataset.py 核对。

表示优势Python 与 Blender API 已有工业生态,程序可执行、可检查、可编辑;可以利用预训练语言模型的代码先验。
表示代价Python 冗长且语法自由度过高;相同节点图存在多种等价代码;无 grammar constraint;2,048 token 成为结构复杂度硬上限。
分析判断

它仍然是 image-to-program,但中间表示并不是真正“学习到的视觉分解”。图结构、节点语义与参数都被压入同一条 Python token 序列,模型没有显式分别建模宏观布局、微观纹理、材质通道或生成过程。这正是后续 context representation 研究可以插入的位置。

模型与完整算法流程

VLM 结构

基础模型是 Hugging Face 的 `llava-hf/llama3-llava-next-8b-hf`。视觉编码器为 CLIP ViT/L-14,视觉投影器为 MLP,语言解码器为 LLaMA 3 8B。视觉编码器保持冻结,MLP projector 参与训练,LoRA 被应用于 language model 内除 vision tower、projector 与 LM head 以外的线性层。论文概括为“all attention-related linear layers”,代码的匹配规则实际覆盖语言模型内符合条件的 linear module 名称,见 model.py

参数后优化

VLM 先给出拓扑与初始参数 \(\tilde M(\Phi)\)。作者随后仅修改参数,不改节点图结构。每轮随机扰动一部分参数并渲染,若新损失更小则接受,否则以固定概率 \(p_{\mathrm{acc}}=0.05\) 接受。保留全程最优解:

\[M^{\ast}=\arg\min_{M\in\mathcal{N}(\tilde M)}L\!\left(I,R(M)\right)\]

默认进行 200 次迭代,每轮仅抽取 10% 可优化参数。连续参数相对区间收窄至初值附近 \(\pm 20\%\),类别参数的修改概率为 0.2。这里被称为 MCMC,但接受差解的概率与损失差和温度无关,更接近带随机逃逸的 hill climbing,而非标准 Metropolis-Hastings。

数据构造与验证链

原始数据来源

来源数量性质备注
BlenderKit2,411免费 Blender 材质在线资产库
Infinigen60基础程序化材质开源程序化场景框架
公开材质包1,192独立作者发布包来自两组 Gumroad 资源
总计3,663清理前最终仅保留 1,640

清理与过滤

  1. 从 material output node 反向执行 DFS,仅保留真正参与输出外观计算的节点和边。
  2. 无有效 output node 或节点数超过 30 的材质直接删除。
  3. node group 先被视作按功能签名区分的自定义节点类型,再从较小 group 开始逐步展开,直到接近 30 节点上限,以减少自定义类型数量。
  4. 节点图转译为 Python 并执行渲染。LLaMA 3 tokenizer 长度超过 2,048 的程序删除。
  5. 过滤空图、纯色和缺乏空间变化的结果。具体启发式是 512 像素 JPEG 文件小于 12 KB 即删除。
方法学风险

JPEG 文件大小是廉价而可执行的 complexity proxy,但它把纹理高频、编码噪声和语义质量混在一起。平滑但真实的金属、陶瓷或塑料可能被误删,高频但无意义的噪声可能被保留。该阈值同时参与训练数据过滤与推理有效性判定,造成评估标准与数据构造规则耦合。

结构增强:LLM genetic crossover

作者从 1,640 个清理后材质中人工选出 870 个细节丰富的复杂材质作为 sample pool。每次随机抽取两个程序,要求 GPT-4o-mini 只使用两者已有的节点类型与参数字段,写一个最多 30 节点的新程序。每对程序最多尝试 20 次,收集前 4 个有效程序,执行与渲染通过后再放回 pool。迭代后获得 50.4K 个不同结构。

查看结构增强 prompt 的关键约束
  • 目标函数固定名为 `shader_material`。
  • 仅能使用两个示例已有的 node types 和 parameter fields。
  • 最多创建 30 个节点,目标 Blender 3.3。
  • 要求复杂且具有语义意义,避免缺乏结构或过于相似。
  • 严格沿用示例格式与编码风格,只返回代码。

完整原文见论文 Appendix A.1,并可在 gen_programs_llm_async.py 的 `SYSTEM_PROMPT_V2` 中核对。

参数增强

每个结构继续生成约 10 倍外观变体。连续参数默认在可行域与初值 \(\pm 25\%\) 的交集内采样,最小绝对扰动范围为 \(\pm 0.05\)。颜色在 HSV 空间采样,hue 覆盖完整 \([0,1]\),saturation 与 value 在 \(\pm 0.5\) 邻域。类别与布尔参数以 0.25 概率重新均匀取值。默认值参数仅以 0.2 概率显式扰动,以控制程序长度。

代码补充事实

代码并非总是按论文文字所概括的局部均匀分布采样。若某参数在数据集中有足够统计量且标准差低,`sample_params.py` 可从经验均值与标准差定义的正态分布采样。Math 节点与 Vector Math 节点的 operation 参数被明确禁止修改。这些属于论文未充分展开、但复现会受影响的实现细节。

来源:论文 Section 4.1、4.2、Appendix A.1;官方代码 sample_params.pypackage_data.py

训练细节与解码策略

项目论文或代码值核查说明
基础模型LLaVA-NeXT, LLaMA 3 8B`llava-hf/llama3-llava-next-8b-hf`
训练模块MLP projector + LoRA约 40M trainable parameters
LoRA\(r=8,\alpha=32\), dropout 0.05语言模型线性层
优化器AdamWlearning rate \(10^{-4}\), weight decay 0
调度cosine3% linear warmup
精度与注意力BF16, TF32, FlashAttention-2gradient checkpointing 开启
并行DeepSpeed ZeRO-38 × H100 80GB
batch每 GPU 4,总 batch 32gradient accumulation 1
训练长度5 epochs,约 3 天每 epoch 验证与保存
序列配置训练脚本 max length 5,120单个材质程序在构造阶段限制为 2,048 token,5,120 还容纳图像 token 与对话模板

训练 prompt

<image>
Write a Python function with Blender API to create a material
node graph for this image.

训练 prompt 很短。复杂 API 约束主要已经固化在 target program 与数据分布内,并未作为长 context 提供给微调模型。零样本 GPT-4o-mini baseline 则使用更长 prompt,其中给出函数模板、30 节点限制、Blender 3.3 兼容要求和只回复代码的规则。

推理解码

官方脚本使用 sampling,temperature 0.6、top-k 50、top-p 0.9,`max_new_tokens=2048`。程序批量生成后先写入 response 文本,再由独立 rendering 脚本逐个验证。默认 `inference.py` 参数是 temperature 1.0、top-k 10、top-p 0.9,但论文对应 shell script 覆盖了前两项。

\[\hat y=\arg\min_{y\in\mathcal{Y}_{\mathrm{valid}}}L_{\mathrm{style}}\!\left(I,R(y)\right)\]

候选集 \(\mathcal{Y}_{\mathrm{valid}}\) 来自最多 \(N\) 次随机解码中通过执行与 12 KB 过滤的前 \(K\) 个程序。标准实验使用 \(N=50,K=20\),受限预算实验使用 \(N=20,K=4\)。因此这里的“解码策略”实质是 stochastic best-of-K execution-guided decoding。

执行、渲染与 correctness

程序先从模型回复中的三反引号代码块抽取,写入临时 Python 文件,再以 Blender batch mode 调用 `render.py`。执行超时为 120 秒。若 stdout 出现 Python error、未生成输出文件,或渲染 JPEG 小于 12 KB,则判为无效。

渲染场景2 × 2 平面,camera 位于 z=2.78,point light 与 camera 同位置,能量 500;world background 为 0.1 灰。
渲染配置Blender 3.3,EEVEE,512 × 512,JPEG RGB;依赖 X11/OpenGL context。

程序正确率定义为有效样本比例。若某输入共尝试 \(n\le N\) 次,得到 \(k\le K\) 个有效程序:

\[\mathrm{Correctness}=\frac{k}{n}\]
指标解释

这不是语义正确率,也不是程序与 ground-truth 图结构的匹配率。它只回答“代码是否能执行且渲染图文件足够复杂”。一个执行正确但完全不匹配输入的材质仍计为正确,一个视觉合理但 JPEG 小于阈值的材质会被计为错误。

感知排序损失

style loss 使用 VGG texture descriptor 的 Gram representation 做 L1 距离,再加入权重 0.1 的 16 × 16 下采样图像 L1 项。代码通过 32 × 32 average pooling 将 512 图像得到 16 × 16 表示:

\[L_{\mathrm{style}}=\left\lVert D_{\mathrm{VGG}}(I)-D_{\mathrm{VGG}}(\hat I)\right\rVert_{1}+0.1\left\lVert \mathrm{Down}_{16}(I)-\mathrm{Down}_{16}(\hat I)\right\rVert_{1}\]

实验设计与主要结果

测试包含 44 个 Blender 合成材质,64 个 Substance 合成材质和 64 张手机拍摄真实图像。Blender 是 in-distribution,Substance 与真实图像是 out-of-distribution。Substance 的节点系统表达能力更强,因此其合成外观也被作者视为更困难的分布外测试。

Table 1:标准预算,未使用 post-optimization

数据方法Style ↓SWD ↓CLIP ↑Correct ↑
BlenderGPT-4o-mini0.0413.4780.7280.294
Cond. MatFormer0.0342.8280.686未适用
BlenderAlchemy0.0272.3810.777未报告
Nearest Neighbor0.0262.1230.778未报告
VLMaterial0.0191.7600.8560.911
SubstanceGPT-4o-mini0.0393.7220.6800.227
Cond. MatFormer0.0332.3660.736未适用
BlenderAlchemy0.0292.7270.690未报告
Nearest Neighbor0.0272.5460.720未报告
VLMaterial0.0262.2830.7620.890
RealGPT-4o-mini0.0354.2520.6420.248
Cond. MatFormer0.0282.8720.684未适用
BlenderAlchemy0.0252.6820.700未报告
Nearest Neighbor0.0212.4870.700未报告
VLMaterial0.0252.4170.7220.870

说明:论文文字称方法在全部三个数据集上优于 baselines,但按 Table 1 的单项数值,真实图像 style loss 为 0.025,Nearest Neighbor 为更低的 0.021。更准确的表述是 VLMaterial 在真实集的 SWD 与 CLIP 最优,但 style loss 不是最优。

Table 2:消融

数据配置Style ↓SWD ↓CLIP ↑Correct ↑
Blender无结构增强0.0322.7570.7500.603
无参数增强0.0221.9650.8390.897
完整模型0.0191.7600.8560.911
加后优化0.0151.7010.851未适用
Substance无结构增强0.0333.0840.7270.487
无参数增强0.0302.4820.7440.767
完整模型0.0262.2830.7620.890
加后优化0.0202.1840.748未适用
Real无结构增强0.0303.3080.6880.342
无参数增强0.0282.6820.7070.713
完整模型0.0252.4170.7220.870
加后优化0.0182.3090.732未适用

结构增强贡献最大,尤其显著提高分布外 correctness。参数增强继续改善颜色与局部外观。MCMC 后优化强烈降低 style loss 与 SWD,但 CLIP 并非总是提高,Blender 从 0.856 降至 0.851,Substance 从 0.762 降至 0.748。这说明优化目标与语义指标并不完全一致。

受限采样预算 Table 3 的核心结论

在 (N=20,K=4) 时,VLMaterial 的 Blender 指标为 style 0.025、SWD 1.978、CLIP 0.833、correctness 0.926;Substance 为 0.031、2.431、0.750、0.926;真实图像为 0.030、2.566、0.716、0.880。它的 SWD 与 CLIP 仍有竞争力,但真实图像 style loss 明显落后 Nearest Neighbor 的 0.021。

速度与人类评价

方法平均总时长样本数每样本
GPT-4o-mini7.5 s200.38 s
Conditional MatFormer4.1 s200.21 s
BlenderAlchemy252.4 s327.89 s
VLMaterial47.9 s202.40 s

用户研究有 8 名专业艺术家与 8 名领域研究者,共 16 人,比较 12 个案例。VLMaterial 相对 BlenderAlchemy 的视觉质量平均偏好为 91%,节点图质量偏好为 94%。可用性评分为 \(6.8\pm1.3\),BlenderAlchemy 为 \(4.2\pm1.7\)。但研究没有给出 inter-rater reliability、显著性检验,也没有比较人工从零创作时间。

关键 Figure 与 Table 的结构化解读

Figure 1 与 Figure 2:论文真正展示了什么

Figure 1 建立“图像输入、材质程序、场景应用、参数编辑”的价值链,证明结果不是静态贴图。Figure 2 展示 Python code 是核心生成对象,执行后再得到 shader node graph 和 output rendering。两图均未出现独立视觉分解器、显式 context optimizer 或闭环 agent。

Figure 3 与 Figure 5:定性对比如何阅读

列从左至右为输入、VLMaterial、GPT-4o-mini、Conditional MatFormer、BlenderAlchemy 与 Nearest Neighbor。VLMaterial 在规则结构、颜色分区与颗粒统计上通常更贴近输入。视觉对比也暴露固定 point light 造成的中央高光,这意味着模型可能学习了材质外观与固定照明共同形成的图像分布。

Figure 4 与 Figure 6:增强和后优化各解决什么

无结构增强时,主要模式和空间组织容易错误。加入结构增强后,节点组合更接近目标纹理家族。参数增强进一步修正颜色与尺度。post-optimization 只在固定拓扑内调整参数,因此能修正整体色调、频率与尺度,却不能补回缺失的节点或连接。

Figure 7:失败案例

两例来自 Substance,一例来自真实图像。复杂纹理超出 Blender 内置节点与已收集 node groups 在 30 节点预算内的表达能力时,模型无法找到合适结构。失败既可能来自表示容量,也可能来自 2,048 token 截断、训练结构覆盖不足与随机采样预算不足。

Figure 8:复杂度不是单调关系

少于 4 个节点的简单材质也可能表现较差,作者归因于错误或次优 custom node group 选择。超过 22 节点或接近 2,000 token 后 correctness 再次下降,说明序列长度和依赖复杂度开始主导错误。性能呈现中间复杂度更稳定的形态。

官方仓库可复现性核查

仓库包含数据清理、转译、GPT 程序增强、参数增强、划分打包、LLaVA 微调、候选生成、Blender 渲染验证和 MCMC 后优化。数据归档与预训练权重均提供 Google Drive 链接。代码与权重为 MIT License,数据为 CC BY-NC 4.0。

  • 已公开 完整训练与推理代码,固定基础模型名,环境版本,LoRA、DeepSpeed 与解码参数。
  • 已公开 数据与 checkpoint 下载链接,原始材质到训练 JSON 的构造脚本。
  • 已公开 Blender 3.3、EEVEE、512 渲染、相机与灯光参数、12 KB 有效性阈值。
  • 部分公开 原始在线材质来源可追溯,但具体抓取清单、下载日期、源许可证逐项记录未见统一 manifest。
  • 部分公开 GPT-4o-mini prompt 与默认模型 ID 已公开,但 API snapshot、服务端 seed、采样参数未固定,结构增强无法逐字节重现。
  • 未报告 训练总 step 数、validation loss、checkpoint 选择规则、完整随机种子链、训练实际峰值显存与总算力成本。
  • 存在问题 README 生成 `llava_sllm_p10_{train|val|test}.json`,训练和推理 shell 脚本却引用 `llava_noaug_{train|val|test}.json`。使用者需手动核对并修正文件名。

实际复现资源

论文训练使用 8 张 H100 80GB,batch 32,5 epochs,约三天。README 建议微调时每张 GPU 至少 48GB VRAM,并说明默认脚本针对 8 张 H100。数据构造与渲染阶段论文使用 8 张 L4 24GB,仓库特别提示 EEVEE/OpenGL 渲染在 RTX 3090、RTX A6000、L4 等图形架构 GPU 上可能快于 A100 或 H100。

conda env create -f environment.yml
conda activate vlmaterial
bash llava_hf/scripts/peft_sllm_p10.sh
bash llava_hf/scripts/eval_sllm_p10.sh
bash llava_hf/scripts/render_sllm_p10.sh
python llava_hf/param_search.py RESULTS --max_iter 200
复现前必须修正

将训练、生成与渲染脚本中的 `llava_noaug_*` 改为 README 实际创建的 `llava_sllm_p10_*`,或先检查已下载 dataset archive 内是否同时提供两套 JSON。仓库名称 `sllm_p10` 暗示使用结构增强与参数增强,但仅凭命名不足以断言作者训练时的内部路径。

仓库快照:commit 5193dad,2025-02-18,Initial commit。README 明确称仓库是 archival reference,贡献不会被积极 review 或 merge。

局限、失败模式与 reviewer 式锐评

值得肯定

  • 把开放 Blender API 与 VLM code prior 结合,绕开 proprietary Substance training data 的发布限制。
  • 结构增强不是简单参数抖动,对 correctness 与外观匹配均有清晰消融支持。
  • 评估同时覆盖 in-distribution、跨系统合成图与真实照片,并报告程序执行率和艺术家偏好。
  • 释放端到端数据构造工具,复现信息显著优于只开放 inference demo 的工作。

关键质疑

  1. 结果依赖大采样预算。 主表每张图最多生成 50 次,并取前 20 个有效程序中的最优者。一次生成的期望质量没有单独报告,方法的模型能力与 search compute 难以分离。
  2. 有效性定义偏弱。 correctness 只要求可执行且 JPEG 足够大,不验证是否有可编辑意义、是否 tileable、是否正确输出 PBR 通道,也不比较拓扑语义。
  3. 渲染域过窄。 固定平面、固定点光与固定相机易让模型学习 baked illumination。真实输入中的几何、光照与材质属性没有解耦。
  4. 表示不够紧凑。 论文自己承认 Python 冗长。没有 grammar constraint,使超过 22 节点或 2,000 token 的程序正确率下降。
  5. 数据增强的独立创新不纯。 结构数据由 GPT-4o-mini 合成,质量过滤又依赖同一套执行与 JPEG 规则。缺乏结构新颖性、重复率和 human quality audit 的系统统计。
  6. 比较公平性有限。 Conditional MatFormer 来自不同程序系统,且由原作者代跑;BlenderAlchemy 以 nearest neighbor 为起点且使用 GPT-4o-mini。节点词表、训练数据和计算预算并不等价。
  7. 后优化不是结构闭环。 MCMC 只能调参数,初始拓扑错了就无法增加或重连节点。style loss 提升也不保证 CLIP 或语义提升。
  8. 论文文字略有过度概括。 “全部数据集优于 baselines”不符合真实图像 style loss 单项,Nearest Neighbor 的 0.021 优于 0.025。
总评

这是一个强工程型基线与重要开放数据贡献。它证明 VLM 可以成为程序化材质图生成器,但还没有解决“从视觉证据推导可解释生成过程”的核心问题。其最佳价值是提供可执行环境、数据与 baseline,让后续工作研究更好的 context representation、约束解码与 renderer-in-the-loop agent。

与三条研究线的关系

研究线VLMaterial 已经做了什么仍缺什么
Procedural Material Generation从单张参考图像生成 Blender Python material program,执行后得到可编辑节点图。更丰富的 Substance node space,多通道 PBR 输出,tileability,结构与参数分层建模。
Context Optimization训练前通过图清理、node group 展开、程序规范化和数据增强,间接优化了模型看到的训练 context。推理时没有显式 \(C^{\ast}\),没有图像分解、候选检索、节点库选择或预算自适应的 context optimizer。
Agent系统执行多次生成、代码验证、渲染和排序,具备工具链形态。没有维护状态的策略体,也不读取错误和渲染反馈后主动修改结构。MCMC 只是固定规则参数搜索。
论文贡献边界

VLMaterial 原始贡献应写成 \(I\rightarrow\mathrm{VLM}\rightarrow P\rightarrow G\rightarrow\hat I\),外加 best-of-K 过滤与 MCMC 参数优化。下面的 context optimizer 与 agent 公式是当前研究框架,不属于论文。

当前研究框架
\[I \xrightarrow{\mathrm{Context\ Optimizer}} C^{\ast} \xrightarrow{\mathrm{Agent}} G \xrightarrow{\mathrm{Renderer}} \hat I\]
\[C^{\ast}=\arg\max_{C}R\!\left(\mathrm{Render}(\mathrm{Agent}(C)),I\right)\]

对照关系非常清楚:VLMaterial 将图像直接编码成视觉 token,靠模型参数隐式决定该看什么;拟研究系统先构造可审计的 \(C^{\ast}\),再让 agent 基于 renderer feedback 迭代选择结构与参数。前者是 amortized generation 加后验筛选,后者应是 context-conditioned sequential decision making。

对 context-optimized agentic PMG 的具体启示

建议的 context representation

不要只生成自然语言描述。让 context optimizer 输出与材质程序可对齐的层级对象,使每个视觉判断都能映射到 agent action:

material_context:
  global: {periodicity, dominant_scale, palette, reflectance_family}
  macro_structure: [{region, primitive, orientation, spacing, hierarchy}]
  meso_pattern: [{generator_family, warp, blend_logic, mask_relation}]
  micro_surface: [{noise_family, frequency_band, roughness_effect, normal_effect}]
  channel_hypotheses: {base_color, roughness, normal, height, metallic}
  node_candidates: [{node_type, role, confidence, evidence}]
  constraints: {node_budget, token_budget, tileable, allowed_node_library}
  uncertainty: [{claim, alternatives, confidence}]

这比单纯“先观察大结构,再观察小纹理”的 prompt 更适合作为学术中间表示,因为可以做标注、消融、结构准确率评价、token budget 控制和 agent 行为归因。

建议的 agent loop

  1. Context Optimizer 解析参考图像,输出结构化 (C_{0})。
  2. Retriever 根据 (C_{0}) 从节点库、程序片段库和相似材质库选择有限候选。
  3. Agent 先生成粗结构 (G_{0}),执行静态类型检查与 Blender sandbox。
  4. Renderer 输出多种光照下的 base color、roughness、normal 与 shaded render,而非仅固定 point light 图像。
  5. Critic 将误差分解为 topology error、parameter error、lighting ambiguity 与 representation insufficiency。
  6. Agent 根据 error type 选择改结构、调参数、补 context 或停止,并保存完整 process trace。
首个可发表实验

以 VLMaterial checkpoint 和执行环境作为 frozen generator baseline,保持模型权重不变,只改变推理 context。比较 raw image、free-form visual analysis、固定人工 decomposition、learned structured context 四种条件。在相同生成 token、Blender render 和 wall-clock budget 下报告 best-of-1、best-of-4、best-of-20、program validity、style、SWD、CLIP、graph edit distance 与人工可编辑性。这样能隔离 context optimization 的独立贡献。

推荐消融矩阵

实验变量对照目标问题
Context granularity无分解 / macro / macro+meso / 全层级哪一级信息真正提高图结构
Representation自然语言 / JSON schema / graph sketch / retrieved subprograms优化来自信息还是格式
Feedback无反馈 / 单一 shaded render / multi-channel / 多光照renderer feedback 的边际价值
Action space仅参数 / 结构编辑 / 结构与参数联合agent 是否真正超越 MCMC
Budget固定生成次数 / 固定 token / 固定时间公平比较 search compute
Optimizer人工规则 / 闭源 VLM / 小型微调模型是否需要训练 context optimizer

Reward 设计

\[R=w_{a}R_{\mathrm{appearance}}+w_{v}R_{\mathrm{valid}}+w_{g}R_{\mathrm{graph}}+w_{e}R_{\mathrm{edit}}-w_{c}C_{\mathrm{compute}}\]

appearance 可组合 style、SWD、CLIP 与多通道误差;valid 奖励编译、执行、非退化和 tileability;graph 奖励结构合理性与节点复用;edit 衡量专业用户修改成本;compute 惩罚 token、生成次数、渲染次数与耗时。只用图像相似度会鼓励复杂但不可编辑的程序,也会继承 VLMaterial 固定渲染域的偏差。

最关键的研究定位

创新点不应写成“让模型先看大结构再看细节”。更有说服力的命题是:在固定 foundation model 与固定工具环境下,学习或搜索一个预算受限、结构化、可执行对齐的 context representation,能否提高 agent 的图结构决策效率、外观匹配与可编辑性,并减少 best-of-K brute-force sampling。

References

  1. Li, B. et al. VLMaterial: Procedural Material Generation with Large Vision-Language Models. arXiv:2501.18623v2, 2025. PDF · HTML.
  2. Li, B. et al. ICLR 2025 OpenReview record. The Thirteenth International Conference on Learning Representations, Spotlight.
  3. MIT GFX. VLMaterial official code repository. Commit 5193dad, 2025-02-18.
  4. MIT GFX. README and reproduction instructions. Includes data and checkpoint links, installation, training, inference and dataset construction.
  5. MIT GFX. model.py, dataset.py, inference.py. Model construction, causal labels, decoding and execution verification.
  6. MIT GFX. gen_programs_llm_async.py, sample_params.py, render.py. Augmentation, parameter sampling and rendering implementation.
  7. Guerrero, P. et al. MatFormer: A Generative Model for Procedural Materials. 2022.
  8. Hu, Y. et al. Generating Procedural Materials from Text or Image Prompts. SIGGRAPH 2023.
  9. Huang, I. et al. BlenderAlchemy: Editing 3D Graphics with Vision-Language Models. 2024.
  10. Li, B. et al. Procedural Material Generation with Reinforcement Learning. ACM TOG, SIGGRAPH Asia 2024.

资料状态:论文 v2、Appendix、官方代码仓库与 README 已核对。OpenReview 页面可能触发浏览器验证,因此本页只使用其 venue 记录,不引用不可直接核验的 review 文本。所有未在论文或公开代码中找到的数值均明确标为未报告。