查看原文
其他

NeRF方法中的相机参数求解

许铮 黄蓥昊 壁仞科技研究院 2023-02-18


摘要

近期基于神经辐射场(NeRF)方法的场景表征与渲染吸引了大量的研究。然而为了训练出神经辐射场,往往需要提前获取相机的内外参数。因此在实际情况中,NeRF的应用将变为两阶段过程,第一阶段需要计算出相机参数,第二阶段才是NeRF的训练。因此通过端到端的方式在训练NeRF的同时直接学习出相机参数就成了热点话题。本文将沿着相机参数的求解问题介绍近期NeRF方法在这一方面的改进。


引言


近期流行的神经渲染方法结合了经典的图形学和深度学习方法,使得产生具有真实感的影像变得更为便捷。其中基于神经辐射场方法(NeRF)的场景表征与渲染无疑是近两年来视觉计算领域的热点工作之一,吸引了大量的相关研究。之前的公众号曾有多篇文章介绍该领域的相关工作。然而在原始的NeRF方法中,相机参数往往需要提前给定。通常,获取相机参数的方法可以分为两类,一类是直接通过物理手段测量出相机参数,另一类方法则是通过特征匹配如SfM(Structure from Motion)方法来进行,但上面两类方法都给NeRF方法增加了额外的限制。例如第一类方法将依赖高精度测量或定位工具,第二类方法则增加了额外的计算过程,并需要配合SfM方法适配输入输出数据流。近期出现了一些新的方法[1,2,3],使得相机参数也可以在训练NeRF的同时进行学习[1]。从某种意义上说,这些新方法说更加符合深度学习“端到端”的学习模式。本文将围绕相机参数求解问题展开,介绍近期出现的NeRF方法的相关改进工作[1,2]。我们将以针孔相机的参数模型开始,并简单要地介绍经典的相机参数求解方法,再介绍联合相机参数的"NeRF--"算法的训练方案[1],最后展示其实验效果。为了使读者对于相机参数学习过程有一个直观的感受,如下动图展示的是从一组多视角的图片组推算出相机运动轨迹的学习效果。其中"NeRF--"算法[1]相比于"iNeRF"算法[2]更进一步,无需提前训练好NeRF模型,相机参数的学习和NeRF模型训练是一同进行的。


图1 由多组图片学习相机轨迹的示意图(引自文献[2])


相机模型

针孔照相模型

这里以一个简易的成像系统——针孔相机模型为例,来简单看一下成像系统的工作原理。针孔照相机将三维的物体投影到二维平面上,并在有限大小的投影平面上形成倒立的像素图片如下:

图2 针孔相机成像示意图(引自文献[4])


根据三角形的相似性原理可以得到坐标变化相对于焦距  的几何关系,从而由物体的坐标  得到在投影面上的坐标  。另外在实际拍摄过程中,相机相对于参考空间的坐标系中还具有平移  与旋转  的几何变换关系,如下图:

图3 照相机的平移与旋转示意图(引自文献[4])


由以上两类关系可以确定相机的参数表征。这里可以将相机参数分为两类,一类是相机和自身特性相关的参数,只要确定了相机,则其参数将保持不变,如相机的焦距,成像中心等。另一类是相机的外部参数,其在运动中将发生变化,如相机的旋转或者平移参数。

更进一步,内参数可以表示为将三维坐标投影到二维坐标的变化矩阵,如下(这里使用了齐次坐标):


  


其内参数即为矩阵K:


  


其中  为相机分别在  上的焦距,  则为成像坐标系与像素坐标系之间的原点偏移。同理,外参数则是作用于相机坐标  与世界坐标   之间的矩阵变换:


  


其中外参数包括上式中的旋转矩阵  和平移向量  。

在实际的相机参数计算过程中,由于多组图片都是同一个相机拍摄得到,所以其内参数由多组图像共有,而外参数随着不同的图像将发生变化。

相机参数求解目前常用的相机参数求解是一种称为SfM (Structure from Motion)的方法,这在前文中已经提及,它是一种对无序图片组进行三维重建的离线方案。例如原始的NeRF论文就是利用SfM算法来进行相机参数的求解。从数据流的输入输出来看,SfM方法输入的是一组部分重叠的从不同视角拍摄同一对象的照片组,其输出是物体的三维重建,以及重建时得到的相机内外参数。可以认为相机参数是三维重建过程中附带计算的产物。其核心的思路是利用特征匹配来计算相机参数,如下图:

图4 SfM算法计算相机参数的示意图(引自文献[5])


由三个相机中的图像可以重建出上图中的立方体。这个过程也得到了相机参数,这是通过追踪投影后的特征  以及其重建后的特征  ,从而计算出相机的外参数  。根据特征匹配过程,SfM通常分为三个阶段:1)特征检测与提取,2)特征匹配与几何验证,3)结构与运动重建。SfM主要分为了增量式、层次式、全局式。目前增量式是最为常见的,其中流行的COLMAP工具很好地融入了SfM算法,并与MVS(多视图立体)组合到了一起。对这一方面感兴趣的读者可以进一步参考COLMAP工具[6]。


相机参数与NeRF模型联合学习


正如前文所述,原始的NeRF方法是需要先得到相机参数之后,才可以进行模型的训练。而事实上,相机参数可以和NeRF网络一同学习,即联合参数学习方法。为了介绍这种联合参数学习方法,这里需要重新回顾一下神经辐射场的计算过程。关于神经辐射场的介绍可以参考之前的公众号文章。为了本篇文章的自洽性,这里对之前的介绍进行部分地引述,并给出相关的符号标记。给定一组从不同视角拍摄的图片组  ,其相机参数组为  :NeRF可以从不同视角拍摄的图片学习出一个三维的表征,并渲染出新视角下的二维图片。从函数拟合角度上来看,神经网络拟合的是函数 其中  即为神经网络的权重参数,  是空间坐标,  为相机角度,  为RGB颜色,  为不透明度。如果从数据流的角度上来看,输入的是不同视角下的图片组 ,以及相机参数组  ,NeRF学习出神经网络参数  ,并通过渲染得到新视角下的图片。NeRF用神经网络得到隐式表征后,沿观察方向对隐式表征进行三维容积采样,投影到观测方向后产生渲染图像,损失函数由投影图像与实际数据的差得到。在构建损失函数时,原始的NeRF方法的训练目标是神经网络参数的最小化,而对于联合相机参数的训练过程来说,还额外增加了相机参数的最小化过程,如下:
  
其中  为投影图像的估计值,  为相机参数估计值。具体的训练过程如下,其中"NeRF--"增加了训练的相机参数为焦距 ,以及旋转矩阵  和平移向量  [1]。

图5 联合相机参数进行训练的NeRF--算法示意图(引自文献[1])


相比于原始的NeRF方法,"NeRF--"算法额外增加了一组相机参数。因此原则上说,优化难度相比于原始的NeRF更大。带来的问题是,增加了训练参数,训练样本需求增大,以及训练的时间会更长,会有很大的不确定性,健壮性也降低。但优势是,更加符合“端到端”的训练流程,训练流程更加简洁,在数据充足时收敛效果也会更好。
实验效果根据文献[1], 这种联合参数的训练过程可以在很好地计算出正确的相机位姿。随着优化过程的,训练结果将不断地靠近COLMAP的计算结果,如下图,粉色为COLMAP离线计算结果,蓝色为联合参数实时优化结果。

图6 相机位姿随优化过程的变化过程(引自文献[1])

另外,联合参数优化也带来了一些新的优势,如下图的场景案例:


图7 相机参数学习案例对比(引自文献[1])


通过绿框内的轨迹线可以看到,"NeRF--"算法的训练得到的蓝色轨迹线相比于COLMAP得到的粉色轨迹线更加流畅,轨迹也更加符合实际情形。


总结与思考

本篇围绕相机参数计算问题,介绍了近期出现的NeRF方法的改进工作。我们从相机参数模型的介绍开始,简要地回顾了经典的SfM方法,之后介绍了结合NeRF方法,可以在训练NeRF的同时学习出相机参数的端对端算法"NeRF--"。这种联合相机参数进行训练的方案,增大了训练参数量,从而延长了训练的时间,也部分地降低训练的健壮性。但优势是,更加符合“端到端”的训练流程,使得NeRF的训练流程更加简洁,在数据充足时收敛效果也会表现得更好。另外结合近期NeRF在训练速度提升的工作进展[7],相信在未来的不久,NeRF方法将变得更加符合实际落地需求——便捷的训练流程以及接近实时的训练速度。
由于水平有限,文中存在不足的地方请各位读者批评指正,也欢迎大家一起参与我们的讨论。


参考文献

[1] Austin Derrow-Pinion, Jennifer She, David Wong, et al. ETA Predictionwith Graph Neural Networks in Google Maps. 2021

[1] Wang, Zirui, et al. "NeRF--: Neural radiance fields without known camera parameters." arXiv preprint arXiv:2102.07064 (2021).

[2] Lin, Yen-Chen, et al. "inerf: Inverting neural radiance fields for pose estimation." (2021).

[3] Meng, Quan, et al. "Gnerf: Gan-based neural radiance field without posed camera." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021.

[4] Angel, Edward, and Dave Shreiner. Interactive Computer Graphics with WebGL. Addison-Wesley Professional, 2014.

[5] Yilmaz, Ozgur, and Fatih Karakus. "Stereo and kinect fusion for continuous 3D reconstruction and visual odometry." (ICECCO). IEEE, 2013.

[6] Schonberger, Johannes L., and Jan-Michael Frahm. "Structure-from-motion revisited."  Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

[7] Müller, Thomas, et al. "Instant Neural Graphics Primitives with a Multiresolution Hash Encoding." arXiv preprint arXiv:2201.05989 (2022).



 往期推荐

1、视觉神经场:NeRF研究的新视角

2、从数据中获取动态信息:动态模式分解 (DMD) 与物理先验的结合

3、众包训练:另类的分布式异构深度模型训练方法



关于壁仞科技研究院


壁仞科技研究院作为壁仞科技的前沿研究部门,旨在研究新型智能计算系统的关键技术,重点关注新型架构,先进编译技术和设计方法学,并将逐渐拓展研究方向,探索未来智能系统的各种可能。壁仞科技研究院秉持开放的原则,将积极投入各类产学研合作并参与开源社区的建设,为相关领域的技术进步做出自己的贡献。

扫码关注我们


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存