最近学习了一些三维重建相关的内容,目前比较主要的重建流派就是3DGS以及NeRF,NeRF作为2020年发布的文章轰动一时,影响深远,有很多NeRF based的相关工作在这些年涌现。3DGS作为2023年的new talk of the town,其在保证合成质量的情况下能够以数倍乃至数十倍的速度碾压许多NeRF based的方法,因此得到了广泛关注。这篇文章从几个角度比较了NeRF(最初的版本)和3D gaussian splatting的异同,道行尚浅,若有错误,欢迎大家讨论、批评、指正。
(原文中有一些词汇很难找到很恰当的中文翻译,为了不产生歧义在文中就直接使用了)
1.数据输入(INPUT)
NeRF:Nerf的输入是一张图像+该图像对应的相机位姿5D输入(xyz和θ与φ)
3DGS:3DGS的输入是由一张图像+经过SFM方法后生成的稀疏点云
比较:两者的差距在于一个是注重于相机的位姿(观测者的姿态)一个是注重于图像中各点的位置(2D图像转换为3D点云 观测内容的姿态)
需要注意的是,Nerf的5D位姿会进行一个正弦编码才会输入到MLP网络中进行运算,这个编码过程让网络能够学习到更多的高频数据,从而提升了网络对于图像细节的重建能力,如果把这个过程看作input数据的初始化,那么与之对比,3DGS的输入在得到稀疏点云之后同样进行了初始化,将稀疏点云建模为了3D高斯,才进行后续的处理,因此两者在初始化阶段也有一些不同。
但是两者都可以由colmap等sfm方法从视频中恢复对应的位姿和位置,这一点是类似的,所以在3DGS中描述它的INPUT用了“NeRF-liked”
2.数据输出(output)
NeRF:NeRF的输出是经由神经网络之后直接输出对应camera ray上各个采样点的RGB值和体密度(volume density),随后经过体渲染(volume rendering)得到最终的重建图像。
3DGS:3DGS的输出,从下面这一张pipeline能够看出来,作者直接将最终重建得到的图像作为了整个方法的最终输出。
比较:两者的最终输出都是重建图像,但是获得重建图像的过程中存在差异,即两者的渲染方式不同。NeRF的渲染方式是体渲染,神经网络输出camera ray上不同采样点的RGB和体密度后,对该camera ray进行一个accumulate,最终得到2D图像。3DGS在会在过程中将建模好的3D高斯进行光栅化处理,将其投影到2D图像中,这个过程可以理解为向一个平地抛雪球,这个雪球被染上了不同的颜色,雪球落地之后会溅开,产生不同颜色的痕迹,多个雪球(3D高斯)丢到平地上之后,把不同的颜色痕迹按照深度等进行混合,就得到了最终的图像,这个渲染过程就叫做splatting,这里的渲染技术是a-blending,放一段GPT老师的解释:
3.三维信息表达(3D Information Expression)
NeRF:作为神经辐射场,其三维信息藏在MLP网络中,而神经网络具有不可解释性,类似于一个黑匣子,因此神经辐射场常常和隐式等词一起出现,就是因为其重建三维世界的信息是隐式表达。
3DGS:由SFM建立得到的稀疏三维点云,在建模成3D高斯后,3D高斯中明确的包含了三维世界的信息(位置,颜色,不透明)因为3D高斯的前身是三维点云,而三维点云是典型的显示表达数据,因此不难理解3DGS是一种显示表达。
比较:NeRF是隐式表达,三维信息藏在神经网络中,3DGS是显示表达,由3D高斯直接表达三维信息。
4.优化方式
两者的优化方案在思路上都是相同的,都是将渲染出来的图像和真实图像进行对比,求loss,然后不断最小化这个loss来优化过程中的各个参数变量,都采用了经典的梯度下降优化策略。
5.时间与效果
两者的效果实际上相差不是很大,对于一些细节的重建见仁见智,3DGS在文中描述其在一些数据集的效果是优于NeRF的,但是从其github页面来看,实际上效果差别不是很大。但是时间上3DGS有明显的优势,可以从其提供的图中看出来。NeRF对于简单的单一场景(isolated object)的训练时间就需要12个小时,而3D高斯只需要几分钟,在保证时间的过程中不损失质量,实际上就是3DGS一直追寻的目的,在文章能看出:
附上官方给出的时间对比图:
以及效果对比:
最后通过一个表格简单总结一下两者的差异:
NeRF | 3D Gaussian splatting | |
Input | Camera pose(5D) | Image point clouds from SFM |
Output | Image | Image |
Rendering | Volume rendering | α-blending |
Optimization | gradient descend | Gradient descend |
3D Information Expression | Implicit | Explicit |
Time&Effect | 12hour for isolated object | 6min for isolated object |