A review on RawNeRF
Google Research
是我组会PPT改来的,可能有一些简略,有任何疑问可以和我讨论🎶
Motivation
-
NeRF使用LDR图片作为输入,对于拍摄光照不足或者过亮的场景,如果继续使用LDR,那么效果会很差。
- 对于过亮的场景,LDR是被裁剪过的图像,将亮度范围限制在[0,1]中,因此恢复过程中会失去高光(被裁剪)。
- 对于过暗的场景,相机对原始图像的处理会破坏掉原有的噪声分布,虽然噪声下降了,但是却引入了明显的偏差。将这种图像进行重建时会产生明显的误差,使颜色变得错误。(噪声大)
-
使用Raw格式图像进行训练,不仅能对噪声有很好的鲁棒性,还能渲染成为HDR的图像,即可以引入HDR的各种合成技术(改变焦距、曝光时间等等)。
Contribution
- 提出一种新颖的训练方式,使用原始Raw格式图像进行训练,称之为RawNeRF。
- RawNeRF在具有噪声的数据集上表现优于NeRF,可以作为一种多图形去噪器。
- 在这种训练方式重建的图像基础上,改变焦点、曝光等参数获得多样的图片。
Method
Raw camera measurements
- 生成图像时的噪声主要来自于接收光子和
- 假设减去黑电平后的测量值为y,可以建模为:
其中,x即为真实的到达光子数量(真实值),后两项可以建模为均值为0,方差为1的高斯分布。
- 当设备接收的光子越多,信噪比也就越大,y越准。将公式移项后,得到y-x为一个零均值的,即误差为零均值的:
Color filter demosaicking
- 相机的感光元件仅能检测到达的光子数,并不能感受颜色。
- 因此需要增加一个滤光片(Bayer****阵列),只允许其中某一种光经过,达到分辨颜色的目的。
- 经过去马赛克化的处理后,得到正常的图像。
Color correction and White balance
- 一般来讲,相机还会对原始图像进行白平衡与色彩校正。
- 相机的感光元件与人眼对三原色的感觉不同,需要对颜色进行校正。
- 相机试图通过估计的白平衡系数缩放每个颜色通道来解释这种色彩。即,使白色表面看起来像RGB中性白色 (code #FCFAF6)。
- 这两个步骤通常结合成一个线性3 × 3矩阵变换。
Gamma compression and Tonemapping
- 人眼的感光(非线性)与相机的感光(线性)不同,人眼对暗光有更强的分辨能力。
- 伽马压缩利用这一特点,对信号应用非线性建模,以压缩亮区域为代价,将更多的比特用于暗部区域,使得暗区域更加明亮。
- Tonemapping(色调映射),将HDR映射到8bit的LDR上。
Pipeline
- RawNeRF的pipeline,使用了原始的马赛克图像来进行训练。
- 将渲染后的图像进行postprocess操作以可视化。
Train
Loss function
- 由于HDR每个像素表示为10~14位,亮度大的地方数值较大,如果直接使用L2 loss,会使得损失函数主要受亮度大的区域影响,导致较暗的地方重建效果差。
- 同时也不能使用映射后的值,因为经过非线性映射后对噪声影响很大,导致其均值不为0。因此提出使用权重来均衡,如下公式的形式:
- 使用映射函数的近似来计算损失,对在处进行泰勒展开:
- 将上式移项、平方、相加后得到:
-
sg()表示stop-gradient(梯度停止),防止的导数影响梯度。
-
原文说明使用如下映射函数:
- 求一阶导数带入原损失函数内可得:
Variable exposure training
- 一次曝光有时不足以获得全部明亮与暗的区域,因此可以通过不同曝光来捕捉明亮与暗的区域。
- 在RawNeFR中,可以通过按记录的快门速度对其进行缩放来“曝光”RawNeRF 的、颜色输出。但是RGB三通道的曝光时间的标定不准确,即下式子的乘积不为1:
- 因此引入一个可学习的参数来限制快门时间,修正后的输出:
- 是快门速度与通道的缩放因子,我们将最大限制为1,表示最长的曝光。整个值被限定为1,说明像素在过度曝光区域中饱和的事实。
Details
- 沿用了mip-NeRF的代码,修改其颜色输出的激活函数为指数函数。
- 在体积渲染过程中,对用于沿射线累积颜色值的权重分布的方差进行了损失,以缓解“浮影”的效果。
- 使用全分辨率的JPEG后处理图像来计算摄像机的位置(COLMAP)。
- 训练数据使用12bit的图像,首先将其转化为32bit的浮点数,然后重新缩放,使黑电平为0,白电平为1。
- 当进行可视化时,还要进行后处理,包括:去马赛克、颜色校正、白平衡等操作。
Result
- 看原文啦😎😎
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CoorDi's Blog!