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 PSNR | ILR SSIM | ILR LPIPS |
| LightSwitch | 21.22 | 0.868 | 0.105 |
| Neural Gaffer | 28.40 | 0.947 | 0.030 |
| DiffusionRenderer | 26.39 | 0.951 | 0.038 |
| LumiTokens | 30.48 | 0.954 | 0.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 |
| LightSwitch | 16 | 21.61 / 0.86 / 0.13 |
| NVDiffrecMC | 50 | 22.95 / 0.86 / 0.10 |
| TensoIR | 50 | 26.17 / 0.928 / 0.07 |
| LumiTokens | 8 | 27.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 为准更稳。