当前位置:   article > 正文

有关4D Gaussian Splatting论文思想与代码的讨论

有关4D Gaussian Splatting论文思想与代码的讨论

对4D Gaussian Splatting论文思想与代码的讨论

一:介绍

​ 此文是对论文4D Gaussian Splatting for Real-Time Dynamic Scene Rendering[1]中的思想与相关代码的简单讨论,其中一些部分是个人浅薄的理解,欢迎有不同看法的读者在评论区留言。这是来自华中科技大学最近关于3DGS领域的一个工作,具体内容见4dgs,主要贡献在于将3DGS引申到了针对动态场景的重建领域,参考了一些动态NeRF领域中HexPlane、K-Planes[2,3]中的思想,创新性地提出了高斯变形场的模型,在减小模型体积的同时提高了模型渲染速度。下面为4DGS模型的主要结构:
在这里插入图片描述

下面分享一下我个人对于这个模型的一些理解:

​ 先从3DGS开始说起,3DGS的作用是建立了一个显式的模型来表示整个3D空间,有点类似点云模型,但是给每个xyz点加上了3DGS特征来表示其所占据的体积,并且使用了不透明度与SH球谐函数来表示该点位置处的不透明度与光照特征,最后使用传统计算机图形学中的splatting方法渲染得到特定观测位置处的二维图像。在这个模型中,每个点的3DGS特征与不透明度还有SH系数均为待优化的变量,在训练过程中使用pytorch的梯度反向传播框架进行优化。3DGS是一个关于3D图像的纯显式的模型,具有很好的可解释性,与NeRF这种纯隐式模型相比其训练速度和渲染质量均得到大幅度的提高。

​ 3DGS的要求是:成像场景是静止的。如果场景发生运动,那么训练得到的3DGS模型就会出现模糊与伪影。如果我们想对动态场景进行建模的话,必须考虑时间维度上的信息,把3DGS的思想放到对动态空间的建模上面,就产生了4DGS的这样一个概念。

​ 那么如何利用Gaussian Splatting对4D场景进行建模,最简单的思想肯定是在每一个时间点上单独建立一个3DGS模型,将一段时间上所有的3DGS模型组合起来就是一个4DGS模型了,但是这样会带来储存空间爆炸的问题,这显然不是一个很好的办法。这篇论文中创新性地提出了高斯变形场的概念,通俗一点的理解就是,将视频中的动态场景看作是对一个静态场景在时间维度上的变形。在针对静态场景的3DGS模型中,将一个点的xyz坐标以及旋转与缩放系数代入静态场景模型中即可得到该点的不透明度与SH系数,但是在4DGS模型中,将一个点的xyzt坐标先代入一个时空结构编码器(这个编码器的结构我们放在下文讨论),随后将编码器输出的值代入一个多头的高斯变形解码器中进行解码,得到x、y、z、r、s的“变形值”,将x、y、z、r、s的原值与“变形值”相加后,按照3DGS的老方法代入静态场景模型中得到该点的不透明度与SH系数,渲染后即可得到2D观测图像。

​ 这个模型能够大大降低模型体积并提高渲染速度,对此,我的理解是时空结构编码器很好的学习了动态场景运动中的先验知识,并通过多头的解码器分别解码出x、y、z、r、s的“变形值”,这种思想有点类似D-NeRF[4]。这个模型的关键在于时空结构编码器的设计,下面是我对于这个时空结构编码器的理解。

时空结构编码器

​ 该论文的时空结构编码器充分参考了CVPR2023上发表的论文HexPlane与K-Planes中有关时空结构张量分解的思想。空间张量分解的思想最先在3DNeRF领域中的论文TensoRF[5]中出现,在这篇论文中,作者受到张量CP/VM分解公式的启发,率先提出将3D空间张量分解成多个秩1张量,建立了一个显式的模型来表征3D空间,将每个秩1张量作为待优化的变量,通过反向传播进行优化,提高了模型训练速度与推理速度。如果说NeRF这样一种隐式模型叫做神经辐射场的话,那我对于TensoRF的理解就是空间张量辐射场,有关TensoRF模型的详细内容见TensoRF

​ 在这篇文章的基础上,HexPlane这篇文章提出了一个4D空间张量辐射场,简单理解就是把一个xyzt四维张量看作xy、zt、yz、xt、zx、yt这六个二维张量的组合,K-Planes这篇文章在接近同一时间点也提出了类似的思想(我个人感觉这两篇文章的差别点在于xy、zt、yz、xt、zx、yt这六个二维张量的组合形式,HexPlane采用了类似张量VM分解的方式来组合,而K-Planes则采用了Hadamard积来组合),有关HexPlane与K-Planes模型的详细内容见HexPlaneK-Planes

​ HexPlane与K-Planes利用4D空间张量场对时空信息进行编码,随后利用多头解码器解码出不透明度与颜色,随后使用与NeRF中相同的体积射线法渲染图像。在4DGS的这篇论文中,作者使用和K-Plane论文中一致的4D空间张量场与一个小型MLP组合成时空结构编码器(4DGS代码使用的是来自K-Planes的4D空间张量场模型,但论文中将该组件称为HexPlane,这里存在疑问)。

​ 与HexPlane和K-Planes不同的是,4DGS接下来通过一个由多个独立的MLP组成一个多头高斯变形解码器将时空结构编码信息分别解码成x、y、z、r、s的“变形值”,而不是解码成不透明度和RGB颜色,转而使用3DGS的方法进行处理。

​ 经过实验,该论文提出的4DGS方法在动态场景生成任务上取得多个SOTA。

二:代码结构简述

​ 下面是我根据论文代码结构绘制的一个简单流程图:
在这里插入图片描述

三:代码复现流程(基于ubuntu18.04)

​ 4DGS代码中使用的depth-diff-gaussian-rasterization与simple-knn模块分别来自于https://github.com/ingra14m/depth-diff-gaussian-rasterization/tree/e49506654e8e11ed8a62d22bcb693e943fdecacf与https://gitlab.inria.fr/bkerbl/simple-knn,第一个子模块是一个使用CUDA的微分高斯光栅化模块,第二个模块是一个knn模块。

​ 我使用的CUDA 版本为11.6,torch版本为1.13.1+cu116、torchvision 版本为 0.14.1+cu116、torchaudio版本为0.13.1+cu116。使用不同的版本可能导致程序运行出错。按照requirements.txt要求安装其它依赖库。下载https://www.dropbox.com/s/0bf6fl0ye2vz3vr/data.zip?dl=0中提供的场景按照代码README文档中提供的流程进行训练与渲染,训练过程与渲染结果如下:
在这里插入图片描述

参考文献:

[1]:Wu G, Yi T, Fang J, et al. 4d gaussian splatting for real-time dynamic scene rendering[J]. arXiv preprint arXiv:2310.08528, 2023.

[2]:Cao A, Johnson J. Hexplane: A fast representation for dynamic scenes[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 130-141.

[3]:Fridovich-Keil S, Meanti G, Warburg F R, et al. K-planes: Explicit radiance fields in space, time, and appearance[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 12479-12488.

[4]:Pumarola A, Corona E, Pons-Moll G, et al. D-nerf: Neural radiance fields for dynamic scenes[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 10318-10327.

[5]: Chen A, Xu Z, Geiger A, et al. Tensorf: Tensorial radiance fields[C]//European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2022: 333-350.

r Vision. Cham: Springer Nature Switzerland, 2022: 333-350.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/96593
推荐阅读
相关标签
  

闽ICP备14008679号