CVPR2022| Deblur-NeRF: Neural Radiance Fields from Blurry Images

2023-11-22 14:18:35 浏览数 (1)

文章来源:CVPR 2022 作者: Li Ma,Xiaoyu Li,Jing Liao等 内容整理:高弈杰 这篇论文主要是针对NeRF在面对模糊的输入图像时,训练出的模型在新视角的渲染结果较模糊这一现象。论文提出了Deformable Sparse Kernel模块来模拟图像变模糊的过程,并且能训练出一个sharp的NeRF,从而解决了渲染图像模糊的问题。

介绍

尽管NeRF可以渲染出高质量的新视角图像,但前提是有高质量的图像作为输入以及精确的相机参数。而一旦输入的图像有明显缺陷时,原始的NeRF就难以实现高质量的渲染。过去已经有一部分工作在围绕NeRF与有缺陷的输入图像来展开,NeRF-W针对场景亮度的变化和移动的物体;Mip-NeRF针对不同分辨率的输入图像;SCNeRF主要针对输入图像的畸变。

本论文则是针对NeRF的输入图像模糊的情况,提出了DSK模块,使得能够训练出一个sharp NeRF。论文的主要贡献如下:①是第一个提出从模糊的输入图像中构建NeRF进行场景重建。②提出了一个DSK模块,用于模拟图像的模糊过程,并且能够泛化到不同类型的模糊。③通过分析真实的物理模糊,对光线的起始点施加偏移量实现将2D的kernel延伸到3D空间。

方法

图1

Deformable Sparse Kernel

图像的模糊通常是像素点与一个以该点为中心的卷积核做卷积实现的,即

b_p = c_p *h

。记卷积核的尺寸是

k times k

,这就意味着要想计算出一个模糊的像素点的像素值,需要NeRF先渲染出周围

k times k

个像素点的像素值,这就会导致计算成本过高。为了降低时间代价,论文在这里对卷积进行了一个近似,用

ktimes k

的卷积核里面选若干点的像素值加权平均作为目标模糊像素值,即

b_p=Sigma_{qin N(p)}w_qc_q

,其中

Sigma_{qin N(p)}w_q=1

NeRF是使用一个MLP来模拟空间中的一个连续的5D函数,而模糊核同样是会根据图像位置的不同而变化,因此DSK模块同样是采取一个MLP。而由于不同位置的模糊像素点会受到对应模糊核中不同位置

N(p)

个像素点的影响,因此这

N(p)

个像素点在模糊核中位置并不固定,需要通过DSK进行修正回归得到。MLP的前向传播过程为

(Delta q,w_q)=MLP(gamma(p),q^{prime},gamma(d))

。DSK的输入是目标像素点世界坐标的位置编码、模糊核内的点

q^{prime}

的初始位置、目标光线方向向量的位置编码,输出

q^{prime}

的位置偏移量

Delta q

,以及该点的权重

w_q

优化光线的源点

图2

上图是motion blur和defocus blur产生的原理,可以看到对于这两种最常见的模糊,光线并不是由一个源点发出,而是会产生多个源点。因此对于我们的目标光线

r_{op}

,我们首先要计算出经过模糊核内所有邻居点

q

的光线,而这些光线的源点不再是

o

了,而是会产生一个偏移量,这可以同样可以在DSK的前向传播过程中实现,即

(Delta q,w_q,Delta o_q)=MLP(gamma(p),q^{prime},gamma(d))

在之前输出的基础上加了一个

q

对应光纤源点的偏移量,这样一来该光线就可以表示为

q=q^{prime} Delta q,o_q=o Delta o_q,r_q=o_q t(q-o_q)quad(1)

NeRF

对于目标像素点

p

,现在已经获得了该点模糊核内的所有邻居点

q

的光线

r_q

以及对应的权重

w_q

,现在就将所有的

r_q

分别通过NeRF,经过MLP和体渲染两部分得到

q

的sharp颜色

c_q

,再利用前面获得的权重进行加权平均,得到

p

的模糊颜色

b_p

,即

b_p=Sigma_{qin N(p)}w_qc_qquad(2)

损失函数

前面计算得到的

b_p

与输入模糊图像的真实颜色

b_{gt}

计算L2损失,即

L_{reconstruct}=Sigma_{pin R}||b_p-b_{gt}||_2^2quad(3)

另一方面,由于DSK会更新

p

的邻居点

q

的位置,因此更新后的

q

就有可能不落在以

p

为中心的模糊核内了,这样就不符合我们对于模糊过程的假定了。为了约束更新后的

q

落在模糊核内,可以对DSK的输出

(Delta q,w_q,Delta o_q)

乘以一个

0.1

的权重,这样做的另一个好处就是能保证更新的光线源点也与起始的源点接近。接下来对于模糊内一个固定位置的邻居点

q_0

,通过约束其位置与

p

接近,并且其光线源点与

p

的光线源点接近来计算得到align loss,即

L_{align}=||q_0-p||_2 lambda_0||Delta o_{q_0}||_2

lambda_0

在实验中设为

10

。因此最终的损失函数可以表示为

L=L_{reconstruct} lambda L_{align}

lambda

被设为

0.1

实验

训练细节

batchsize设为1024,粗网络和精细网络的采样点分别为64和128,模糊核内的邻居点个数设为5,对每个场景的训练迭代200k轮次,在单张V100 GPU上完成,采用的NeRF网络结构与原始的NeRF完全相同。

实验结果

图3

上图展示的是在合成数据集上针对motion blur和defocus blur两种模糊的实验结果,其中MPR和PVD分别是两种比较先进的图像去模糊算法,可以看到,从指标上来看,本论文的提出的模型是最优的。

图4

上图展示的是在真实场景下motion blur的实验结果,从图像的视觉效果来看,本论文模型的渲染结果也是最优的。

0 人点赞