考虑到仅从一组2D图像集合中进行新的视图合成(novel view synthesis, NVS)的问题,我们通过消除相机参数(包括内参和6自由度位姿)的要求,简化了前向场景forward-facing scenes上神经辐射场(NeRF)的训练过程。为此,我们提出了NeRF−−, 有三个贡献:首先,我们证明了通过光度重建photometric reconstruction,摄像机参数可以作为可学习参数与NeRF训练进行联合优化;其次,为了对摄像机参数估计和新视图渲染的质量进行基准测试,我们引入了一个新的路径跟踪合成场景数据集a new dataset of path-traced synthetic scenes,称为Blender前向数据集(BLEFF);第三,我们进行了广泛的分析,以了解各种摄像机运动下的训练行为,并表明在大多数情况下,联合优化管道可以恢复准确的摄像机参数,并实现与使用COLMAP预先计算的摄像机参数训练的视图合成质量相当的新视图合成质量。我们的代码和数据链接。
从任意视点生成照片般逼真的图像不仅需要了解3D场景几何,还需要知道复杂的光传输现象及视图生成的过程。Generating photo-realistic images from arbitrary viewpoints not only requires to understand the 3D scene geometry but also complex viewpoint-dependent appearance resulted from sophisticated light transport phenomena. 实现该方法是构建一个5D全光函数[1](简化处理为4D光场[2,3])。不幸的是,实际测量这种全光函数通常是不可行的Unfortunately, physically measuring such a plenoptic function is usually not feasible in practice。作为替代方案,Novel View Synthesis (NVS) 旨在从不同视点diverse viewpoint采集的一小组图像集合中生成看不见的视图unseen views。
最近,神经辐射场(NeRF)[4,5,6,7]和多平面图像(MPI)[8,9,10,11,12,13]已经证明,通过优化体积场景volumetric scene表示在一组稀疏的图像中,可以重新渲染新视点的场景视图,包括复杂的视图相关结果,如镜面反射和透明度specularity and transparency。
这些方法的限制是在训练时需要已知图像的相机参数。在实践中,通常通过传统技术预先计算相机参数。例如,NeRF及其变体[4,5,6,7]采用COLMAP[14]来估计输入图像的相机参数(内参和外参)。对于同质区域homogeneous regions、快速变化的视图相关外观或来自高度模糊的相机轨迹方程组的退化解,这个预处理步骤除了引入额外的复杂性之外,其结果相对不理想[15,16,17]。
本文的目标是研究具有未知相机参数的前向场景的新颖视图合成,因此引入了NeRF−−:一个将相机位姿和内参视为可学习参数的框架,通过3D场景表示进行联合优化它们(如图1所示)。
图1:我们提出了NeRF−−,一个基于NeRF的框架,用于在没有位姿监督的情况下进行新的视图合成。具体来说,我们的方法在训练NeRF模型时联合优化了一组前向输入图像的相机位姿和内参的特性。
仅给定一组稀疏图像集合,系统就可以被训练:
1)估计每个图像的相机参数;
2)通过光度重建损失学习体积场景表示,实现高保真NVS结果。
为了对该方法进行全面评估,我们做出了两项额外贡献:1)我们引入了Blender Forward Facing (BLEFF) 的高质量路径跟踪合成数据集,用于对相机参数估计和新颖的视图合成质量进行基准测试,可供未来研究公开访问;2)对我们的方法和COLMAP-NeRF在各种相机运动下进行了彻底的分析,表明两个系统都可以容忍高达±20°的旋转和±20%的平移扰动,并且联合优化在平移方面比COLMAP更有利扰动,但在旋转扰动rotational perturbations方面竞争力较弱。
我们将相关工作大致分为两类,一类假设相机参数输入到NVS表示中,另一类是使用未校准图像的NVS表示联合估计相机参数。
图像及其相机参数通常是许多视图合成系统所需要的。在这一系列工作中,经典方法Light Field Rendering [3]和Lumigraph[2]对简化的全光函数进行建模(本人注:光场相关)。[18]将复杂的手工材料BRDF模型集成到有符号距离函数(SDF)中。FVS[19]和SVS[20]结合了图像中的网格和深度特征。最近,已经提出了密集的体积表示来实现基于光度学的优化的平滑梯度,并且已经证明对于高度复杂的形状和与视图相关的外观的逼真的新视图合成很有希望。这些表示包括Soft3D[21]、多平面图像(MPI)[8、9、10、11、12、13]、场景表示网络 (SRN)[22]、隐式表面[23、24]和神经辐射场(NeRF)[4, 6, 7, 5]。尽管这些方法在场景表示的方式上有所不同,但它们都要求输入图像与已知的相机参数相关联。
第二项工作,主要由SLAM和SfM系统组成,旨在通过联合估计相机参数和3D几何图形,直接从RGB图像重建场景。例如,MonoSLAM[25]和ORB-SLAM[26]通过关联特征对应关系实时重建点云并估计相机位姿,类似地,DTAM[27]、SVO[28]和LSD-SLAM[29]通过最小化光度损失来处理SLAM任务。SfM系统Bundler[30]和COLMAP[14]可以重建全局一致的地图并估计大型图像集的相机参数,但对初始图像对initial image pairs很敏感。尽管这些方法只需要RGB图像作为输入,但它们通常假设漫反射表面diffuse surface外观以建立对应关系,并且无法恢复与视图相关的外观,因此不能进行的新颖视图的渲染。
在我们的工作的同时,几种方法[31,32,33]在使用NeRF模型估计相机参数方面开发了类似的想法。这些方法要么需要内参函数作为输入[32, 33],要么假设预训练的NeRF可用[31],相比之下,我们建议以端到端的方式联合优化相机位姿、内参和NeRF面向前方的场景forward-facing scense。因此,我们展示了所提出的框架能够产生与两级NVS系统相当的照片级逼真视图合成。
从场景的N个稀疏视点采集一组图像集合 I = I 1 , I 2 , ⋯ , I N I={I_1,I_2,⋯,I_N} I=I1,I2,⋯,IN,其相关的相机参数 Π = π 1 , π 2 , ⋯ , π N Π={π_1,π_2,⋯,π_N} Π=π1,π2,⋯,πN,包括内参和6DoF位姿,新颖视图合成的目标是提出一种场景表示,该表示能够从新颖和看不见的视点生成逼真的图像。
在本文中,我们遵循NeRF[4]中提出的方法。具体来说,NeRF采用神经表示从稀疏输入视图构建辐射场,其中与视图相关的外观由连续函数 F Θ : ( x , d ) → ( c , σ ) F_Θ:(x,d)→(c,σ) FΘ:(x,d)→(c,σ)建模,由3D位置 x = ( x , y , z ) x=(x,y,z) x=(x,y,z)和观察方向 d = ( θ , φ ) d=(θ,φ) d=(θ,φ)映射到辐射颜色 c = ( r , g , b ) c=(r,g,b) c=(r,g,b)和密度 σ σ σ。
为了从NeRF模型渲染图像,图像平面 I ^ i \hat{I}_i I^i上每个像素 p = ( u , v ) p=(u,v) p=(u,v)的颜色由渲染函数 R R R获得,聚合从相机位置 o i o_i oi拍摄的射线的辐射度,穿过像素 p p p进入体积[34, 2]: I ^ i ( p ) = R ( p , π i ∣ Θ ) = ∫ h n h h T ( h ) σ ( r ( h ) ) c ( r ( h ) , d ) d h (1) \hat{I}_{i}(\mathbf{p}) = \mathcal{R}\left(\mathbf{p}, \pi_{i} \mid \Theta\right) = \int_{h_{n}}^{h_{h}} T(h) \sigma(\mathbf{r}(h)) \mathbf{c}(\mathbf{r}(h), \mathbf{d}) d h \tag{1} I^i(p)=R(p,πi∣Θ)=∫hnhhT(h)σ(r(h))c(r(h),d)dh(1) 其中 T ( h ) = e x p ( − ∫ h n h σ ( r ( s ) ) d s ) T(h)=exp(-∫_{h_n}^hσ(r(s))ds) T(h)=exp(−∫hnhσ(r(s))ds)表示沿光线的累积透射率,即光线从 h n h_n hn传播到 h h h而不撞击任何其他粒子的概率, r ( h ) = o + h d r(h)=o+hd r(h)=o+hd表示从相机原点 o o o开始并通过 p p p的相机光线,由摄像机参数 π i π_i πi控制,具有近界和远界 h n h_n hn和 h f h_f hf。在实践中,公式(1)中的积分通过沿射线累积一组采样点的辐射度和密度来近似。这种隐式场景表征 F Θ ( x , d ) F_Θ (x,d) FΘ(x,d)和可微渲染器 R R R,可以通过最小化在已知相机参数的观察视图 I = I 1 , I 2 , ⋯ , I N I={I_1,I_2,⋯,I_N} I=I1,I2,⋯,IN和合成视图 I ^ = I ^ 1 , I ^ 2 , ⋯ , I ^ N \hat I={\hat I_1,\hat I_2,⋯,\hat I_N} I^=I^1,I^2,⋯,I^N之间光度误差 L = ∑ i N ∣ ∣ I i − I ^ i ∥ 2 2 L=∑_i ^N ||I_i-\hat I_i \|_2^2 L=∑iN∣∣Ii−I^i∥22来训练NeRF: Θ ∗ = arg min L ( I ∣ I , Π ) (2) \Theta^{*}=\arg \min \mathcal{L}(\mathcal{I} \mid \mathcal{I}, \Pi) \tag{2} Θ∗=argminL(I∣I,Π)(2) 总而言之,NeRF将3D场景表示为由MLP参数化的辐射场,通过最小化观察图像和渲染图像之间的差异进行训练。请注意,这些给定图像的相机参数π_i是训练所必需的,通常由SfM来估计,例如COLMAP[14]。有关NeRF的更多详细信息,我们请读者参考[4]。
本文研究在未知相机参数的情况下用于新视图合成的训练框架。我们的框架从一组输入RGB图像集合I中联合优化相机参数和场景表示。我们做出两个假设:首先,所有图像都是具有一定旋转和平移的前向步骤 forward-facing setup(正投影)中采集的,如LLFF中所述[10]和原始的NeRF[4]。其次,所有图像具有相同的内参采集的。在数学上,我们提出的框架 NeRF−− 可以表述为: Θ ∗ , Π ∗ = arg min Θ , Π L ( I , Π ^ ∣ I ) (3) \Theta^{*}, \Pi^{*}=\arg \min _{\Theta, \Pi} \mathcal{L}(\mathcal{I}, \hat{\Pi} \mid \mathcal{I}) \tag{3} Θ∗,Π∗=argΘ,ΠminL(I,Π^∣I)(3) 其中 Π Π Π指的是相机参数,包括内参和6DoF位姿。除了简化原始的两阶段方法之外,这种联合优化方法还可以实现全局一致的重建结果,类似于传统SfM管道[35]和SLAM系统[25, 27, 29]中使用的捆绑调整。(是否存在误差累积,场景漂移)在接下来的部分中,我们首先介绍相机参数的表示,然后描述联合优化的过程。
4.1 Camera Parameters
Camera Intrinsics可以表示为针孔相机模型:焦距f和主点坐标 c x c_x cx和 c y c_y cy。不失一般性,将sensor的中心作为相机的主点,即 c x ≈ W / 2 c_x≈W/2 cx≈W/2和 c y ≈ H / 2 c_y≈H/2 cy≈H/2,其中 H H H和 W W W分别表示图像的高度和宽度,所有输入图像都被拍摄用同一台相机。因此,在这种情况下,估计相机内参仅指找到焦距 f f f。(大量简化了,不考虑畸变等参数,非常不准确)。
Camera Poses可以表示为 S E ( 3 ) SE(3) SE(3)中的相机到世界变换矩阵 T w c = [ R ∣ t ] T_{wc}=[R|t] Twc=[R∣t],其中 R ∈ S O ( 3 ) R∈SO(3) R∈SO(3)和 t ∈ R 3 t∈R^3 t∈R3分别表示相机旋转和平移。具体来说,优化平移向量t可以像将其设置为欧几里得空间中定义的可训练参数一样简单。而对于在 S O ( 3 ) SO(3) SO(3)空间中的相机旋转,我们采用轴角表示: ∅ : = α ω ,∅ ∈ R 3 ∅:=αω,∅∈R^3 ∅:=αω,∅∈R3,其中 ω ω ω和 α α α分别表示归一化旋转轴和旋转角。旋转矩阵R可以从Rodrigues 公式 R = I + s i n ( α ) α ∅ ∧ + ( 1 − c o s ( α ) ) α 2 ( φ ∧ ) 2 R=I+\frac{sin(α)}{α}∅∧+\frac{(1-cos(α))}{α^2} (φ∧)^2 R=I+αsin(α)∅∧+α2(1−cos(α))(φ∧)2中恢复,其中 ( ⋅ ) ∧ (·)∧ (⋅)∧是倾斜算子skew operator转换向量 ∅ ∅ ∅到一个倾斜矩阵skew matrix。至此,我们可以使用可训练的参数 ∅ i ∅_i ∅i和 t i t_i ti优化每个输入图像 I i I_i Ii的相机位姿。
4.2 Joint Optimisation of Camera Parameters and Scene Representation
现在我们介绍训练NeRF−−的细节,它是在一组稀疏的前向视图上联合优化相机参数和NeRF模型。具体来说,为了在给定图像 I i I_i Ii上渲染像素,我们从相机位置射出一条射线 r ^ i , p ( h ) = o ^ i + h d ^ i , p \hat r_{i,p} (h)=\hat o_i+h\hat d_{i,p} r^i,p(h)=o^i+hd^i,p,通过像素 p p p进入辐射场,相机参数的当前估计值 π ^ i = ( f ^ , ∅ ^ i , t ^ i ) \hat π_i=(\hat f ,\hat ∅ _i,\hat t _i) π^i=(f^,∅^i,t^i)和光线方向
d ^ i , p = R i ( ( u − W / 2 ) / f ^ − ( v − H / 2 ) / f ^ − 1 ) (4) \hat{\mathbf{d}}_{i, p}=\mathbf{R}_{i}\left(\begin{array}{c} (u-W / 2) / \hat{f} \\ -(v-H / 2) / \hat{f} \\ -1 \end{array}\right) \tag{4} d^i,p=Ri⎝ ⎛(u−W/2)/f^−(v−H/2)/f^−1⎠ ⎞(4)
其中 o ^ i = t ^ i \hat o_i=\hat t_i o^i=t^i 和 R i R_i Ri是使用Rodrigues公式从 ∅ ^ i \hat ∅_i ∅^i中得到的。沿着射线,我们对多个3D点 x j {x_j} xj进行采样,并从NeRF模型 F Θ F_Θ FΘ评估这些点的辐射颜色 c j {c_j} cj和密度值 σ j {σ_j} σj。要获得该像素的颜色,渲染函数Eq.(1)用于聚合沿射线的预测辐射度和密度。
在训练期间,我们为每个输入图像随机渲染M个像素,并最小化渲染颜色与真实颜色之间的重建损失。请注意,整个管道是完全可微的,这使得通过最小化重建损失可以联合优化NeRF和相机参数 π i {π_i} πi。
[31] Lin Yen-Chen, et, al. iNeRF: Inverting neural radiance fields for pose estimation. 2020
[32] Quan Meng, et, al. GNeRF: Gan-based neural radiance field without posed camera. 2021
[33] Chen-Hsuan Lin, et, al. Barf: Bundle-adjusting neural radiance fields. 2021