关于不良光照下 NeRF 新视角合成的工作Aleth-NeRF(Aleth-NeRF: Illumination Adaptive NeRF with Concealing Field Assumption
),目的在不良光照场景下(如低光照和过曝光)场景,能够从 NeRF 无监督增强并且生成正常光照的连贯 3D scene。我们提出的方法可以对现有NeRF进行简单改进,通过引入一个 Concealing Field 的概念,仅用几行代码就可以使得现有的 NeRF 在低光照或者过曝光的情况下,进行 Novel View Synthesis 重建,并且实现无监督的低光增强和曝光纠正。
- 单位:东京大学,上海AI LAB,日本理化研究所, 牛津大学
- 论文链接:https://arxiv.org/pdf/2312.09093.pdf
- 代码链接:https://github.com/cuiziteng/Aleth-NeRF
- 网页链接:https://cuiziteng.github.io/Aleth_NeRF_web/
方法概述
本文提出了Aleth-NeRF模型来完成无监督低光照增强&过曝纠正和Novel View Synthesis。传统NeRF [1]是以观察者视角出发,通过设定当前位置光通量的多少来定义物体,缺乏对于光照和物体的结构,无法解释光照变换对场景的影响 [2],所以NeRF无法应用于低光照和过度曝光时候的重建。
非常有趣的是古希腊人也秉持着与NeRF非常接近的世界观,古希腊人认为人的眼睛有一道视线,人们看到物体是来源于视线的累积,看不见物体是因为空气中存在遮挡。
受到古希腊视觉观点的启发,我们认为在黑夜看不见物体是因为空气中存在遮挡物隐蔽场(Concealing Field),女神Aletheia象征着真实/不隐蔽,在希腊语里意为“真相”,这也是Aleth-NeRF名字的由来。因此我们通过对NeRF框架做最小改动,在NeRF模型中引入了隐蔽场的概念,可以用来有效的解释光照变换,在实际实现中只需要加入几行代码,不需要复杂的光照解构,就可以使得各种NeRF框架拥有同时处理低光和过曝光的能力,分为两组隐蔽场(voxel-wise的局部隐蔽场,以及global-wise的全局隐蔽场)。
低光场景下的训练如上图(c)所示,训练阶段隐蔽场会加入到NeRF的volume rendering中参与训练低光照场景,在测试阶段隐蔽场将会被拿开rendering出正常光照场景。过曝光场景下的训练如上图(d)所示,训练阶段正常,然而测试阶段隐蔽场将会被加上用来rendering出正常光照场景。
对于以上两种场景,我们都会在训练阶段给NeRF网络以及隐蔽场加入无监督损失函数来控制隐蔽场的生成。
模型架构
模型的大概结构图如下所示:
以最经典的原始NeRF为例,局部隐蔽场通过NeRF的MLP网络产生,与原始NeRF的两个输出color和density相同,属于voxel-wise,全局隐蔽场则是一组可学习的网络参数,在每个场景下固定,属于global-wise,两组隐蔽场共同加入Volume Rendering中来衰退原有NeRF的Volume Rendering,通过Concealing Field的引入,Volume Rendering中的每个粒子受到前面粒子的遮蔽作用加强,我们通过Concealing Field这一假设来模拟黑暗的产生。
与此同时,训练阶段我们也通过添加各种无监督损失函数来约束Concealing Field的生成,帮助我们更好的增强和修复不良光照场景。低光场景的训练阶段会采用引入Concealing Field的Volume Rendering公式,在测试阶段采用去掉Concealing Field的原有Volume Rendering公式,过曝场景则与之相反。
经过我们的实验发现, Concealing Field的生成范围和Volume Rendering中粒子Density的范围呈反比例关系,这意味着训练过程中Concealing Field更倾向于出现在没有物体的地方,与我们对Concealing Field存在空气中的假想一致。
损失函数
为了保障Aleth-NeRF的无监督增强/过曝纠正,我们额外引入了几个损失函数来约束Concealing Fields的生成,首先我们把NeRF原有的MSE损失函数L_mse变换为L_it-mse,即在计算MSE损失之前先把图像过一个反向Tone曲线,因为原始MSE损失中黑暗像素往往权重过小而过曝像素往往权重较大,因此先加一个反向Tone曲线可以某种程度上做一下平衡。
剩余的是三个无监督损失函数,其中包括控制总体亮度范围(Enhance Degree)的损失函数L_de和控制对比度(Contrast Degree)的损失函数L_co,以及一个Color Constancy损失函数L_cc。通过调整控制总体亮度损失函数L_de和控制对比度损失函数L_co的超参数,也可以实现不同程度的增强。
数据集
关于数据集方面,我们提出了一个成对的低光照/过曝光/正常光照的multi-view数据集(LOM数据集),以便大家进行后续研究,低光照和过曝光的图像用于训练模型,正常光照的图像用于Novel View Synthesis的验证,相比于2D图像增强以及视频增强,这一任务更具挑战性,因为需要在图像增强的同时来确保生成图像的multi-view一致性,数据集图片如下,我们通过相机采集了五个真实世界的场景 (buu, chair, sofa, bike, shrub),每个场景都包含有25~65张multi-view图像,每个图像都有三组不同曝光条件(低光照/过曝光/正常光照)。
值得一提的是,此前谷歌的RAW-NeRF [3]也提供了一些真实世界的multi-view低光图片,但是RAW-NeRF关注的更多是将ISP与NeRF渲染结合,利用RAW图像的广阔色域和比特数优势来进行渲染,而并不是RGB图像增强,因此RAW-NeRF也没有对应正常光照RGB的ground truth。
我们提供的LOM数据集可以从网站或Github上下载,概览如下图示:
实验结果
实验方面,我们把原始的NeRF模型作为baseline,除此之外我们再与现有的2D图像/视频增强方法进行了对比,与增强方法进行对比时,我们设计了两种方式,(1). 第一种是用先在低光/过曝图像上训练NeRF然后在novel view synthesis阶段把2D增强方法用作后处理,(2). 第二种是先用2D图像/视频增强方法来预处理数据集,然后在这些增强后的数据上训练NeRF。
通过实验我们发现,方式(1)的缺陷在于低质量图像上训练的NeRF本身不够可靠,导致后处理增强后的结果也往往不尽如人意,容易出现低分辨率和模糊的情况,方式(2)的缺陷在于2D图像/视频增强方法往往不能保证3D multi-view的一致性,因此在不一致图像上训练的NeRF也会存在问题。
总的来说,Aleth-NeRF这种end-to-end的方法能够在最终的平均指标上取得最优效果,在3D的可视化中也能保持多视角的consistency,表格与实验结果图如下。:
缺陷和展望
虽然Aleth-NeRF在低光和过曝场景实现了较好的无监督恢复,但是只是这一任务的初步探索,比如NeRF本身自带的缺陷如训练慢和场景无法泛化等,以及Aleth-NeRF还是无法解决一些非均匀光照场景与阴影场景等,还有在一些场景中,Aleth-NeRF复原的图像色彩存在偏差,有些过曝场景的恢复会丢失色彩等等。
收到古希腊视觉理论,Aleth-NeRF提出了Concealing Fields概念,用一种简单直观的方式来建模黑暗,我们认为也许其他不同的黑暗建模方式也能够取到很好的效果,更有效的低光照建模也许能够克服Aleth-NeRF的不足。