LumiTokens把3D重光照做成可叠加的token编辑

LumiTokens: 3D Relighting via Token-Space Lighting Transformation

Yiwen Chen, Matheus Gadelha, Huaizu Jiang

cs.CV

2026-08-19

多视角场景被压成3072个无物理语义的token,用Plücker光线token自注意力改光。新视角重光照PSNR 27.76(仅8张输入),超过用50视角做反渲染的TensoIR(26.17)。

这篇在解决什么

把多视角拍到的物体放到新光照下,现有三条路都不适合「先摆一盏灯、看一眼、再加一盏」这种交互。

反渲染要恢复法线、albedo、粗糙度,再代入渲染方程。多视角一致性好,但依赖稠密拍摄和逐场景优化,选定的 BRDF 写不出次表面散射和复杂互反射。扩散模型不拆材质,外观更自然,每次换灯却要重新生成,场景状态留不住。混合方法(RelitLRM、NeAR 一类)前馈出 3DGS,外观仍走生成分支,换灯还是要再跑一遍。

LVSM、SRT 已经证明:多视角图像可以压成一组没有固定物理语义的 1D token,解码就能做新视角合成。LumiTokens 问的是,这组 token 能不能直接拿来改光。

方法

骨架跟 LVSM 一样:encoder、decoder 各 12 层 Transformer,token 维 768,每场景 3072 个 scene token。中间插入 Scene Token Editor,同样 12 层。输入 4 到 32 张带位姿的图,和一组可学习空 token 做自注意力,空 token 聚合成场景表示。

光照统一编成 Plücker 光线 token。每条光线带方向、矩向量、颜色和辐射功率。

Editor 把 scene token 和 light token 拼成一条序列做自注意力。不用 cross-attention 是故意的:灯光 token 也要看场景,才能学阴影落点和高光位置。改完的 light token 丢掉,留下的 scene token 进 decoder。

Decoder 用目标相机的 Plücker 射线做 query。读出头从 LVSM 的逐 token MLP 换成 DPT,把 token 拼回多尺度特征再卷积成图。同一套 decoder 既能渲原始 token,也能渲改过光的 token。这等于在说:编辑后的向量大概还在原来的 latent 流形上。

训练冻住预训练 decoder,微调 encoder 和 editor。损失是 L2 + LPIPS 的渲染损失,加上光照不变损失:同一物体两套光照下,encoder 输出要接近,逼 encoder 把几何和材质留在 token 里,把光照交给 editor。为了支持逐步加灯,训练时随机抽一串光源,在 token 空间连续编辑,每一步都对着 Blender 真值算渲染损失。

数据来自 Objaverse 筛过的 2 万个物体,Blender Cycles、512²、上半球 80 个视角,16 种光照(4 张 HDR、4 组点光、2 组面光、2 组多光源),约 2000 万张图。测试 900 个未见物体,8 种训练没见过的光照。

结果

多视角重光照用 4 张输入,在原视角改光,并按 LightSwitch 的做法做最小二乘曝光对齐。

方法ILR PSNRILR SSIMILR LPIPS
LightSwitch21.220.8680.105
Neural Gaffer28.400.9470.030
DiffusionRenderer26.390.9510.038
LumiTokens30.480.9540.045

PSNR 比 Neural Gaffer 高 2.1 dB。LPIPS 输给 Neural Gaffer 的 0.030,扩散先验在观感锐度上仍有优势。正文写 ILR 和 SLR 下 SSIM、LPIPS 不变,PSNR 只掉 0.12 dB;表格里 SLR 一行和正文对不齐,这里采 ILR 数字。

新视角重光照用 8 张输入、8 个未见视角。

方法输入视角合成数据 PSNR / SSIM / LPIPS
LightSwitch1621.61 / 0.86 / 0.13
NVDiffrecMC5022.95 / 0.86 / 0.10
TensoIR5026.17 / 0.928 / 0.07
LumiTokens827.76 / 0.917 / 0.069

8 张图、无需逐场景优化,PSNR 超过 50 视角的 TensoIR。SSIM 小输(0.917 vs 0.928),结构精度仍是反渲染的强项。真实数据不稳:Stanford-ORB 上 LightSwitch 的 PSNR 是 32.02,LumiTokens 是 31.01。Objects-with-Lighting 上 LumiTokens 26.76,略高于 TensoIR 的 26.12。

冻 encoder 时新视角 PSNR 25.06,解冻到 26.12,再加不变损失到 27.05。显式预测 albedo 的 PSNR 是 27.09,几乎打平,SSIM / LPIPS 更差(0.934 / 0.057 vs 0.952 / 0.045),还需要 albedo 真值。A100 上端到端 3.79 秒,Neural Gaffer 16.85 秒,LightSwitch 532 秒,TensoIR 3953 秒。

逐步加灯时,token 空间连续编辑在前若干步能保住质量;像素空间解码再编码从第一步就开始漂。训练必须用多步监督,单步训出来的 editor 会在长链上离开流形。

为什么重要

给「latent scene token」补上一种以前没有的操作:可持久、可叠加的光照编辑。产品扫描、电商换环境、AR 里往真实房间塞虚拟物体,都需要换灯而不是重扫。这条路线不承诺物理正确的 BRDF,换来的是稀疏输入、前馈推理,以及加灯不用重跑扩散。

现在能跟进的人,主要是已经在用 LVSM 一类 token 场景表示的团队。训练数据是合成 PBR 物体,还不能当通用室内重光照系统用。

局限与存疑

作者自己写了:真实拍摄、复杂材质、位姿不准,都还没做。RelitLRM 没公开权重,NeAR 代码发晚了,和当前最强混合方法没有对照。Stanford-ORB 上被 LightSwitch 用 16 视角反超 PSNR,真实数据的优势还没站稳。

Editor 输出「还在同一个 latent 空间」是靠渲染质量和多步训练间接证明的,没有直接的流形度量。自注意力改光能做出物体间阴影和反射,但没有渲染方程约束,极端材质和多次弹射可能是在背数据,不是在算光学。表格和正文的 SLR 数字对不齐,引用时以 ILR 为准更稳。

术语

原文与代码

社区讨论

相关论文

全部论文解读