Bilateral Guided Radiance Field Processing
Chinese University of Hong Kong
一句话总结
用可微的双边网格(bilateral grid)作为相机 ISP 处理的通用近似:训练阶段为每张输入图各配一个 3D 双边网格,把不一致的逐视图增强从辐射场里剥离出来,消除 floater;收尾阶段再用一个新颖的低秩 4D 双边网格,把用户在单张视图上的 2D 修图”提升”到整个 3D 场景,实现视角一致的 3D 级润饰。
研究背景
NeRF 依赖多视图一致性假设来重建辐射场,但现代相机(尤其手机)的图像信号处理(ISP)会对每张照片独立做曝光调整、色彩校正、局部色调映射等增强。这些处理提升了单张画质,却破坏了跨视图的一致性——不同视图的天空亮度、地面颜色、背景灯光色调各不相同。NeRF 无法解释这种不一致,只能在重建结果里塞进”floater”(漂浮伪影)来强行拟合,导致新视角合成质量下降。夜景等低光场景尤为明显。
已有做法各有局限:
- 在 raw 图上训练(RawNeRF)能绕开 ISP、在线性空间重建,但很多相机不提供 raw 数据,且 raw 存储成本高。
- GLO 外观嵌入向量(appearance embedding)能近似多视图不一致,但已被证明会损害渲染质量。
- ISP 管线本身高度非线性、局部化,且不同设备差异极大,难以用统一模型精确模拟。
同时,剥离掉逐视图增强后,重建出的场景可能视觉上偏”平”。作者还希望支持 NeRF 收尾(finishing):让用户像在 Lightroom 里修图一样调整整个 3D 场景的色调、亮度、饱和度。但逐视图单独修图会在移动视角时产生闪烁,因此需要真正的”3D ISP”。
本文的核心洞察是:双边网格是一个局部仿射模型,既能近似大多数 ISP 操作(HDRNet 已证明),又天然可微、可与神经网络联合优化。因此它可以同时充当训练阶段的”ISP 代理”和收尾阶段的”3D 增强算子”,用一套统一工具把两件事都做了。
核心方法
方法分两个阶段:训练阶段用 3D 双边网格剥离逐视图 ISP,收尾阶段用低秩 4D 双边网格把 2D 编辑提升到 3D。
flowchart LR
A[多视图 sRGB 图像<br/>含光度不一致] --> B[NeRF 体渲染<br/>得到基础颜色]
B --> C[逐视图 3D 双边网格<br/>Slicing + 仿射变换]
C --> D[拟合输入图<br/>光度损失 + 强 TV 正则]
D --> E[训练后丢弃网格<br/>得到干净辐射场]
E --> F[用户对单张视图做 2D 修图]
F --> G[低秩 4D 双边网格<br/>CP 分解 + 恒等初始化]
G --> H[视角一致的 3D 级润饰]
3D 双边网格:训练阶段剥离 ISP
双边网格是一个四维张量 \(\mathbf{A}\in\mathbb{R}^{W\times H\times M\times 12}\),其中 \(W,H,M\) 是网格分辨率,末维 12 是展平的 \(3\times 4\) 仿射颜色变换。对渲染图的每个像素,通过 slicing 操作三线性插值取出对应的仿射矩阵。对归一化像素坐标 \((u,v)\in[0,1]^2\)、颜色 \(C=[C_r,C_g,C_b]\):
\[\mathbf{A}[u,v,C]=\sum_{i,j,k}\kappa_{i,j,k}\big(u,v,g(C)\big)\,\mathbf{A}_{i,j,k},\qquad \kappa_{i,j,k}(u,v,w)=\Lambda(W\!\cdot\! u-i)\,\Lambda(H\!\cdot\! v-j)\,\Lambda(M\!\cdot\! w-k)\]
其中 \(\Lambda(t)=\max(1-|t|,0)\) 是线性插值的”帽子”核,\(g(\cdot)\) 是把 RGB 映射到 \([0,1]\) 的引导函数(本文取亮度 luminance)。取出的 12 维向量 reshape 成矩阵 \(A\in\mathbb{R}^{3\times 4}\),再作用到像素颜色得到处理后颜色 \(C_e=A[C\,|\,1]^\top\)。
关键在于网格分辨率远小于图像(实验中仅 \(8\times 8\) 到 \(32\times 32\))。这既省算力,又能防止网格把图像高频内容编码进平移分量里——即防止它去”记住”场景细节而非”处理”颜色。
训练时,给 \(L\) 张训练图各分配一个双边网格 \(\{\mathbf{A}_1,\dots,\mathbf{A}_L\}\),每格初始化为恒等仿射变换。第 \(l\) 张视图的像素先由体渲染得到 \(\hat{C}(u,v)\),再经该视图网格处理得到 \(\hat{C}_e(u,v)\) 去拟合输入图。目标函数为光度损失加全变差(TV)正则:
\[\mathcal{L}=\sum_{(u,v)\in S}\big\|\hat{C}_e(u,v)-C(u,v)\big\|_2^2+\lambda_{TV}\mathcal{L}_{TV}\]
\[\mathcal{L}_{TV}=\sum_{i,j,k,l}\frac{1}{|\mathbf{A}_l|}\Big(\|\Delta_x\mathbf{A}^l_{i,j,k}\|_2^2+\|\Delta_y\mathbf{A}^l_{i,j,k}\|_2^2+\|\Delta_z\mathbf{A}^l_{i,j,k}\|_2^2\Big)\]
作者强调大 TV 权重是成功的关键(一律取 \(\lambda_{TV}=10\))。因为仿射模型的平移分量会偷偷编码低频外观(比如墙上的阴影),TV 正则惩罚相邻格之间的差异,逼迫网格只做平滑的全局/局部色调处理。训练结束后直接丢弃所有双边网格,得到一个不含逐视图增强、干净无 floater 的辐射场。
作者特别指出:目标不是反演整条 ISP、也不是回到线性空间;而是让辐射场像以往一样”烘焙”一个平均处理,双边网格只需建模每张图相对平均值的额外逐视图处理,这让优化变得可行。
低秩 4D 双边网格:收尾阶段把 2D 编辑提升到 3D
收尾流程很直观:用户选一张合成视图 → 用 Lightroom 等工具修图(或用 HDRNet 自动润饰)→ 把这次 2D 编辑提升到 3D。相比直接 3D 编辑,其优势是可复用成熟的 2D 增强算法、交互对用户更友好。
为此把 3D 点操作建模成 4D 双边网格 \(\mathbf{H}\in\mathbb{R}^{D\times W\times H\times M\times 12}\)(比 3D 网格多一个深度/空间维 \(z\))。对 3D 点 \((x,y,z)\) 及其颜色 \(c=F_\Theta(\mathbf{x},\mathbf{d})\),slicing 取出仿射矩阵作用到辐射颜色 \(c_e=H[c\,|\,1]^\top\):
\[\kappa'_{h,i,j,k}\big(x,y,z,g(c)\big)=\kappa_{i,j,k}\big(x,y,g(c)\big)\,\Lambda(D\!\cdot\! z-h),\qquad \mathbf{H}[x,y,z,c]=\sum_{h,i,j,k}\kappa'_{h,i,j,k}\big(x,y,z,g(c)\big)\,\mathbf{H}_{h,i,j,k}\]
核心难题:只有单张编辑视图作监督,直接反投影只能填充高维张量 \(\mathbf{H}\) 里极小一部分单元,其余广大未见区域没有值。作者把它建模为矩阵/张量补全问题,在低秩假设下由已知项恢复缺失项。但高维张量秩难以求解,于是改为直接构造低秩近似——用 CP 分解把 5D 张量 \(\mathbf{H}\) 写成 \(R\) 个秩-1 张量之和:
\[\mathbf{H}=\sum_{r=1}^{R}\boldsymbol{\xi}_{1,r}\otimes\boldsymbol{\xi}_{2,r}\otimes\boldsymbol{\xi}_{3,r}\otimes\boldsymbol{\xi}_{4,r}\otimes\boldsymbol{\xi}_{5,r}\]
各 \(\boldsymbol{\xi}\) 分别对应 \(\mathbf{H}\) 的一个维度(\(D,W,H,M,12\))。把秩 \(R\) 设得较小即约束了 \(\mathbf{H}\) 的秩,从而用低秩先验把已知编辑合理”传播”到未见区域。这一低秩表示思路借鉴自 TensoRF。
初始化很关键:先构造全为恒等仿射变换的 4D 网格,加微小噪声使张量满秩,再用 PARAFAC 分解得到初始化因子。这种”恒等初始化”保证了未见区域在只有低秩先验和 TV 正则监督(半监督)下仍保持合理外观;若用随机初始化,编辑会错误地污染背景。
优化时冻结辐射场参数,只在编辑视图上用光度损失和 TV 损失(\(\lambda_{TV}=1\))训练 CP 分解因子,且因分解的线性性,TV 损失可直接在因子上计算。
技术细节
- 引导函数 \(g(\cdot)\) 取亮度,对大多数场景有效。
- 网格分辨率:3D 网格 \(8\times 8\) 到 \(32\times 32\);刻意保持低分辨率以避免记住高频内容。
- 秩的选择:4D 网格通常用 rank=5。rank=1 容量不足、无法提升编辑;rank=3/5/6/7 效果都相近,说明对秩不敏感;rank≥10 会引入色彩失真。
- 骨干网络:naïve NeRF(MLP + 位置编码)与 Instant-NGP(多分辨率哈希编码)都兼容;作者还基于 Instant-NGP 做了交互式 3D 编辑器。
- 基线:ZipNeRF。
实验结果
作者用手机(iPhone 13、OnePlus 9)采集了 7 个含光度变化的真实夜景,并在 RawNeRF、mip-NeRF 360 数据集上验证。评测时按惯例先做逐通道仿射对齐再算指标(Affine-aligned sRGB)。
| 方法 | sRGB PSNR ↑ | Aligned PSNR ↑ | SSIM ↑ | LPIPS ↓ |
|---|---|---|---|---|
| ZipNeRF(基线) | 23.07 | 25.17 | 0.8224 | 0.1823 |
| ZipNeRF w/GLO | 23.15 | 26.54 | 0.8521 | 0.1439 |
| ZipNeRF w/AGLO | 22.16 | 25.39 | 0.8156 | 0.2003 |
| HDRNeRF | 22.56 | 24.03 | 0.6451 | 0.3951 |
| LLNeRF | 18.37 | 21.71 | 0.6602 | 0.4466 |
| 本文 | 23.83 | 27.53 | 0.8696 | 0.1336 |
本文在所有指标上均最优。相比 GLO 系方法,本方法在剥离光度变化的同时不损害渲染质量;相比 HDRNeRF 的逐通道 MLP(只能建模全局色调曲线),双边网格还能建模局部操作;LLNeRF 的增亮模块在暗景变曝光下失败。即便在光照良好、仅有轻微不一致的 mip-NeRF 360 室内场景,ZipNeRF 也会产生 floater,而本方法能干净剥离。与 RawNeRF 对比,本方法只用处理过的 sRGB 图就能达到无 floater 的相近质量,无需 raw 数据访问。
消融:
- TV 损失:去掉会留下”鬼影”伪影(平移分量编码了低频外观如墙面阴影);\(\lambda_{TV}=0.1\) 太弱仍无法解决;\(\lambda_{TV}=10\) 才干净。
- 低秩近似:直接用满 5D 张量或高秩(rank=16)会在未见区域产生色彩失真;低秩(rank=5)能填出协调外观,验证低秩先验对未见空间的正则作用。
- 初始化:PARAFAC 恒等初始化能让编辑一致传播;随机初始化会导致传播退化、污染背景。
应用:360° 场景润饰、夜景风格化、HDR 融合(把不同曝光的多视图融成同时保留高光与阴影细节的辐射场)、物体级重上色(因是局部算子,可只改推土机颜色)、以及变化光照的解耦(光源颜色随时间变化时基线出现”disco”伪影,本方法虽不显式建模光源却能吸收其变化)。
贡献与局限
贡献:
- 提出用双边网格作为 ISP 的通用可微代理,统一了 NeRF 训练阶段的光度不一致剥离与收尾阶段的 3D 级增强两件事。
- 训练阶段的逐视图 3D 双边网格 + 强 TV 正则能有效消除因相机处理不一致导致的 floater,达到 SOTA 新视角合成质量。
- 收尾阶段的低秩 4D 双边网格 + CP 分解 + 恒等初始化,把单张视图的 2D 修图一致地提升到整个 3D 场景,且证明低秩先验是填补未见区域的关键。
局限:
- 与 GLO 不同,双边网格难以建模瞬态物体(如移动的云),也不支持”in-the-wild”重建(GLO 的本行);作者展示了两者结合可略微改善,并指出让双边网格专管光度变化、GLO 专管其他干扰物是未来方向。
- 收尾阶段的 4D 双边网格是点算子,无法提升模糊、锐化等空间操作到 3D。
- 单个低分辨率 4D 网格难以表达复杂局部编辑(如建筑上具挑战性的局部改色),增大分辨率和秩都无济于事;可能的解法是多尺度双边网格(如 HDRNet),或探索比低秩更”有表达力”的先验来填补未见单元。
延伸思考
这篇工作把经典图像处理里的双边网格巧妙嫁接到 NeRF 上,本质是找到了一个”既能拟合又不会过拟合”的甜点表示——低分辨率 + 局部仿射 + 强 TV 正则,恰好把逐视图的相机处理与场景本身的辐射解耦开。它对 3DGS 等其他辐射场表示同样适用,事实上”每张训练图配一个双边网格”已被后续不少 Gaussian Splatting 工作直接采纳,成为处理真实手机采集数据光度不一致的常用组件。而把 2D 编辑经低秩张量补全”提升”到 3D 的思路,也为交互式 3D 外观编辑提供了一条无需重训、复用成熟 2D 工具链的实用路径;其对空间操作与复杂局部编辑的局限,则指向多尺度网格与更强先验的后续空间。