蓝色
紫色
红色
Deblur-NeRF: Neural Radiance Fields from Blurry Images
Author From:
Abstract
神经辐射场(NeRF)由于其显著的合成质量,在三维场景重建和新视图合成方面获备受关注。然而,在野外捕捉场景时经常发生由 散焦或运动 引起的图像模糊,大大降低了其重建质量。为了解决这个问题,本文提出了Deblur-NeRF,这是第一个可以从模糊的输入中恢复清晰的NeRF的方法。本文可对模糊成像的过程进行建模,通过对 模型合成的模糊结果进行分析 从而进行去模糊。这种模拟的核心是一个新颖的 可变形稀疏核(Deformable Sparse Kernel, DSK) 模块,它通过在每个空间位置变形一个典型的稀疏核来模拟空间变化的模糊内核。每个 核点的光线起始点 被联合优化,其灵感来自物理模糊过程。这个模块被参数化为一个MLP,它有能力被推广到各种模糊类型。联合优化NeRF和DSK模块 使我们能够恢复一个清晰的NeRF。本文方法可以用于 相机运动模糊和散焦模糊:这是真实场景中最常见的两种模糊类型。对合成和真实世界数据的评估结果表明,本文方法优于部分baseline。合成数据、真实数据及源码均已经开源。
关于图像模糊的参考学习链接:图像运动模糊及其去除,运动模糊-维基百科,散焦模糊的实现,图像模糊原理
焦距:是指镜头距底片的距离。如果焦距合适,景物反射的光通过镜头能够 聚集在成像平面上,成为一个点, 如果焦距不合适,则成为一个圆,从而导致照片 失焦模糊 。
维基百科:照相机
0. 作者讲解
0.1 模糊成因
1. Introduction
在过去的几年里,在新的视图合成方面取得了巨大的进展,从稀疏的输入视图中重建一个 中间的三维表示 ,以插值或推断出任意的新视图。最近,NeRF作为一种有效的 场景表示 出现,实现了逼真的渲染效果。它将静态场景建模为一个连续的体积函数,将 三维位置 (x,y,z) 和二维视图方向 (θ,Φ) 映射为颜色 (rgb) 和密度 (σ)。这个函数被参数化为一个多层感知器(MLP),它的输出可以通过体积渲染技术以可区分的方式进行渲染。
为了重建一个NeRF,需要从不同的角度拍摄几张图像。虽然当这些图像被很好地捕捉和校准时,训练NeRF的原始方法效果很好,但当出现模糊时,它将产生明显的伪影。例如,当使用 长曝光设置 来捕捉低光照场景时,图像对相机抖动更加敏感,导致相机 运动模糊 (motion blur) 。此外,当使用 大光圈(大尺寸的镜头) 拍摄深度变化较大的场景时,难免会出现散焦模糊 (defocus blur) 。这些模糊将大大降低降低重建的NeRF的质量,导致在渲染的新视图中出现伪影。
最近有许多工作被提出来解决训练NeRF时的非理想输入:
- NeRF-W 专注于有光照变化和移动物体的图像
- Mip-NeRF 改善了输入跨越不同尺度时的NeRF
- SCNeRF 输入的失真被考虑并同时进行校准
据我们所知,还没有人考虑解决从模糊的输入图像中训练NeRF的问题。
- The image-space baseline: 首先在图像空间对输入进行去模糊处理,然后用去模糊的图像训练NeRF。
优点: 这种baseline通过利用单幅图像或视频去模糊的方法,在一定程度上提高了NeRF的新视图合成质量。
缺点: 单幅图像的去模糊方法不能结合相邻视图的信息,不能保证多视图一致结果(multi-view consistent)。 - Video-based methods: 设法将多帧考虑在内,通常依赖于图像空间操作,如光流和特征关系体(feature correlation volumes)。
缺点: 这些方法未能利用场景的三维几何,导致跨视图的不准确对应关系,特别是当他们有一个大基线时。
相反,本文方法通过结合所有充分感知三维场景的观测点信息实现去模糊。
本文提出了Deblur-NeRF,这是一个有效的框架,在网络中显式模拟了模糊过程,并能够从模糊的输入中恢复清晰的NeRF。本文通过使用类似于盲反卷积方法的模糊核对 清晰的图像进行卷积 来模拟模糊的过程。本文根据以下观察提出了一个新的可变形稀疏核(DSK)模块来模拟模糊核:
- 用密集核进行卷积对于NeRF这样的场景表示是不可行的(因为渲染过程中计算量和内存使用量会急剧增加)。为了解决这个问题,DSK使用稀疏射线来近似密集核。
- 实际的模糊过程涉及到结合来自不同起点的光线,这也激励了本文联合优化光线发出点。
- 为了模拟变化空间的模糊核,本文在每个2D空间位置对一个典型的稀疏核 (canonical sparse kernel) 进行变形。这个变形被参数化为一个多层感知器,可以泛化到不同的模糊类型。
在训练过程中,只使用模糊的输入作为监督,联合优化DSK和清晰的NeRF,而在推理阶段,通过 去除DSK 可以呈现清晰的新视图。本文在有两种模糊类型(运动模糊和散焦模糊)的合成和真实数据集上进行了广泛的实验。结果表明所提出的方法优于原始的NeRF和image-space baseline(即结合NeRF和最先进的图像或视频去模糊方法)。
Contribution
- 提出了第一个能够从模糊的输入中重建清晰NeRF的框架。
- 提出了一个可变形的稀疏内核模块,使我们能够有效地对模糊过程进行建模,并可用于不同类型的模糊。
- 分析了物理模糊过程,并通过考虑每个核点的光线起点的平移 (translation) 将二维核扩展到三维空间。
2. Related Work
2.1 Neural radiance field
NeRF的成功激发了许多扩展NeRF的后续工作。有几项工作已经探索了用非理想输入来训练NeRF。例如,BRAF、NeRF–和GNeRF试图在没有相机位姿的情况下训练NeRF。SCNeRF专注于联合校准一个更复杂的非线性相机模型。为了解决不受控制的野外照片的NeRF训练问题,NeRF-W引入了NeRF的几个扩展,成功地建模了不一致的外观变化和跨视图的瞬时物体。PixelNeRF只用一张或几张图片就能重建一个neural volume。此外,Jonathan等人提出了Mip-NeRF,它改进了不同尺度输入下的NeRF,产生了抗混叠的结果。然而,用模糊的图像训练NeRF仍然是一个未开发的领域,因为上述的工作似乎都没有明确考虑到这种退化。
2.2 Single image deblurring
图像去模糊化旨在从模糊的输入中恢复出清晰的图像。
- 通常,模糊图像被建模为 使用模糊核卷积清晰图像 ,去模糊过程被表述为 联合求解清晰图像和给定模糊观察的kernel。这项任务是ill-posed的,因为有许多 图像-模糊对(image-blur pairs) 集合可以生成所观察的模糊图像。经典的盲去模糊算法 通过引入人工给定或学习到的图像先验,同时优化清晰的图像和核来解决这个不确定(ill-posed)问题,例如total variation[4, 35], normalized gradient sparsity[13] and unnatural l0[49]。由于现实世界照片中的模糊通常是空间变化的,许多工作试图将模糊核重新参数化,使之成为一个较小的解空间。早期的工作使用投影运动模糊 (projective motion blur),它使用多个Homography拟合空间变化的模糊核,而基于区域的方法则假定piece-wise constant [16] or piece-wise projective [28]。此外,基于深度的模型被用来联合优化深度图和摄像机位置[29, 33]。
- 另一种对模糊核建模的方法是使用光流 [9]。这些方法要么对模糊模式做了强有力的假设,要么只能对一种特定类型的模糊进行建模。相比之下,本文方法使用MLP对spatially-varying kernel进行建模,它可以通用于不同的模糊类型。最近图像去模糊的趋势是引入深度神经网络,直接将模糊的图像映射到潜在的清晰图像[3, 14, 15, 23, 26, 39, 44, 48, 52, 53]。这些方法的表现优于传统方法。然而,这类工作高度依赖于训练数据,而且这些方法往往难以推广到现实世界中未见的模糊类型[45]。
2.3 Multi-image deblurring
多图像设置的去模糊化对 结合跨帧信息和保存时间一致性 提出了新的挑战。
- 光流是一个有用的工具,用于将相邻帧对齐到参考帧上[9, 27]。然而,估计准确的光流是很困难的并且ill-posed,特别是当输入模糊时。随着深度学习的发展,人们可以通过串联多个帧并直接使用CNN恢复清晰的帧来设计无流方法[41]。
- 另一个选择是使用递归结构,在各帧之间传播特征[10, 24, 40, 56]。Li等人[17]将光流扩展到特征相关体 (feature correlation volume) ,这极大地提高了性能。同样地,Son等人[40]提出像素体 (pixel volume),放松了对精确流的要求。然而,这些建立在图像空间操作上的多图像去模糊方法,未能利用场景的三维几何,并且难以解决具有大基线的多视图输入。
3. Preliminary
关于初版NeRF的输入输出表达、高频编码和渲染最终颜色的公式等。
可参考:NeRF 神经辐射场
4. Method
使用模糊输入来训练NeRF的 核心思想 是 显式地对模糊过程进行建模,并对清晰的NeRF和模糊参数进行联合优化,从而使合成的模糊图像与输入相匹配。
具体来说,为了在训练期间渲染一个模糊的像素,本文首先使用新提出的可变形稀疏内核(DSK)模块生成多个优化的光线,来模拟模糊过程。本文使用NeRF渲染这些光线,并将结果进行混合,得到最终的模糊颜色,然后由 模糊的输入 进行监督。注意:在推理阶段,直接渲染NeRF而不使用DSK,以获得清晰的新视图。
4.1 Deformable Sparse Kernel
对输入
p
(
p
→
γ
(
p
)
)
p (p → γ(p))
p(p→γ(p))进行位置编码可能提升效率,但是无法提升质量。一个可能的原因是spatially-varying kernel随着位置逐渐变化,而没有高频变化。
4.2 Convolution with Irradiance 入射卷积
模糊卷积模型应该使用scene irradiance而不是image intensity。在物理上的更准确模型是 b p = f ( c p ′ ∗ h ) b_p=f( c_p' * h) bp=f(cp′∗h) , c ′ c' c′表示scene irradiance, f ( ⋅ ) f(·) f(⋅) 表示将scene irradiance映射到image intensity的CRF。
相机响应函数(camera response function, CRF):从相机感光元件感受到的亮度值到图像实际像素值之间的非线性变换函数。
一个非线性的CRF可能会增加模糊核的复杂性,并让DSK的学习变得困难(如果使用了(4)中的线性模型),尤其在高对比度区域。为了补偿非线性CRF,本文假设sharp NeRF在线性空间中预测颜色,并且在最终输出中采用一种简单的伽马校正函数。
b
p
=
g
(
∑
q
∈
N
(
p
)
w
q
c
q
′
)
(
7
)
,
g
(
c
′
)
=
c
′
1
2.2
b_p=g( \sum\limits_{q \in N(p)} w_qc_q') \ \ \ \ \ \ \ \ (7) \ \ \ \ , \ \ \ \ g(c')=c'^{ \frac{1}{2.2} }
bp=g(q∈N(p)∑wqcq′) (7) , g(c′)=c′2.21
4.3 Optimizing the Ray Origin
卷积模型是真实模糊模型的2D近似,在卷积模型中,模糊结果是相邻像素的结合,而这些像素又是 具有相同相机光心发出的相邻光线的渲染结果。然而真实的模糊过程通常融合从不同起点投射的光线。考虑两种不同的模糊过程,如上图。
- 当采集运动模糊时,相机中心在一次拍摄中移动,会导致光线起点的改变。
- 对于散焦模糊,光线被散射到不同方向,这相当于来自不同起点的光线混合。
如果场景几乎是平面的,这个光线起点的平移就能够很好的用像素位置的2D平移来近似。然而由于视差影响和遮挡问题,这通常在深度不连续的情况下无法实现。本文根据三维场景表示开发了能够考虑不同起点光线变化的kernels。因此,本文联合优化了每个稀疏核点(sparse kernel location)的光线起点的平移。特别的,本文像(6)式一样 联合预测了每个核点的起点平移。
( △ q , w q ) = G Φ ( p , q ′ , l ) , q ′ ∈ N ′ ( p ) ( 6 ) (△q,w_q)=G_Φ(p,q',l), \ q'∈N'( p) \ \ \ \ \ \ \ (6) (△q,wq)=GΦ(p,q′,l), q′∈N′(p) (6)
( △ o q , △ q , w q ) = G Φ ( p , q ′ , l ) , q ′ ∈ N ′ ( p ) ( 8 ) (△o_q,△q,w_q)=G_Φ(p,q',l), \ q'∈N'( p) \ \ \ \ \ \ \ (8) (△oq,△q,wq)=GΦ(p,q′,l), q′∈N′(p) (8)
r q = ( o + △ o q ) + t d q , q = q ′ + △ q ( 9 ) r_q=(o+△o_q)+td_q,\ q=q'+△q \ \ \ \ \ \ \ (9) rq=(o+△oq)+tdq, q=q′+△q (9)
这些优化的光线会被渲染并且结合到最终的模糊像素上。
整个训练过程如下:
- 使用(8)式 预测 { △ o q , △ q , w q } q ∈ N ( p ) \{△o_q,△q,w_q\}_{q∈N( p)} {△oq,△q,wq}q∈N(p)
- 通过(9)式 由变形经典采样位置并优化光线起点生成多个优化后的光线 { r q } q ∈ N ( p ) \{r_q\}_{q∈N( p)} {rq}q∈N(p)c
- 使用(3)式 渲染这些光线得到 c q ′ c_q' cq′,使用(7)式 融合得到一个混合像素 b p b_p bp
- 合成的模糊像素由相应的gt像素颜色
b
g
t
b_{gt}
bgt 监督:
L r e c o n s t r u c t = ∑ p ∈ R ∣ ∣ b p − b g t ∣ ∣ 2 2 L{reconstruct}=\sum_{p∈R}||b_p-b_{gt}||_2^2 Lreconstruct=p∈R∑∣∣bp−bgt∣∣22
R是每个batch的像素集合
注意:测试时,直接使用存储的结合了gamma correction的sharp NeRF渲染清晰的结果。
4.4 Aligning the NeRF
如果自由地优化所有组件,例如NeRF和DSK、reconstructed NeRF可能会遭遇非刚性形变。这是可预料的,因为NeRF的场景表示和学习到的Kernel会一起变形而不影响重建的模糊结果。然而这通常是不被期待的。为了将NeRF模型限制对齐到观察上,本文首先初始化DSK,使得所有优化的光线 r q r_q rq 非常接近输入光线 r p r_p rp ,可以通过给 ( △ o q , △ q , w q ) (△o_q,△q,w_q) (△oq,△q,wq) 中每个元素乘以 ∈ = 0.1 ∈=0.1 ∈=0.1 来实现。作为结果,光线发出点 o q o_q oq 和 kernel points q q q 被初始化到很接近相机中心和像素位置,并且在最开始所有 kernel points 都拥有大致一样的权重。本文还另外引入了一个对齐loss来强制其中一个优化光线 r q r_q rq 与输入的光线 r p r_p rp 相似。
L a l i g n = ∣ ∣ q 0 − p ∣ ∣ 2 + λ 0 ∣ ∣ △ o q 0 ∣ ∣ 2 ( 11 ) L_{align}=||q_0-p||_2+λ_0||△o_{q_0}||_2 \ \ \ \ \ \ \ (11) Lalign=∣∣q0−p∣∣2+λ0∣∣△oq0∣∣2 (11)
其中 q 0 q_0 q0 是 N ( q ) N(q) N(q) 中一个固定的元素:kernel的中心, λ 0 = 10 ( 12 ) λ_0=10 \ \ \ \ \ \ \ (12) λ0=10 (12)
总的Loss:
L = L r e c o n s t r u c t + λ a L a l i g n , λ a = 0.1 L=L_{reconstruct}+λ_aL_{align},\ λ_a=0.1 L=Lreconstruct+λaLalign, λa=0.1
5. Experiments
5.1 Implementation Details
Training:
- batch size = 1024 rays, 【coarse volume】each sample at 64 coordinates 【fine volumn】128
- number of sparse locations N=5
- Adam optimizer with default parameters
- learning rate = 5 ∗ 1 0 − 4 5*10^{-4} 5∗10−4
- decay exponentially to 8 ∗ 1 0 − 5 8*10^{-5} 8∗10−5 over the coarse of the optimization 【指数级衰减】
- train 200k Nvidia V100 GPU
- F Θ F_Θ FΘ: original NeRF 8 layers
- G Φ G_Φ GΦ: 4 FC hidden layers, 64 channels/layer & RELU
- shortcut connects first layer to last layer
5.2 Ablation Study
5.3 Comparisons
6. Discussion and Conclusion
6.1 Why the framework works
模糊输入视图不一致时,本文框架使用DSK来补偿不一致,导致一致的清晰场景和不一致模糊模式的分解。
6.2 Limitations
- 视图一致时可能会失败:相机在所有视图中大致在相同的方向上晃动 或者 相机具有固定的焦点(聚焦在单个目标上)
- 模糊非常严重时,COLMAP无法重建相机位姿