快速了解NoPoSplat

核心思想

  • 在没有相机位姿的情况下,仅凭几张稀疏图像重建三维场景
  • 不估计相机位姿,而是在规范空间(Canonical Space)中预测3D高斯

动机

当前FF-GS方法依赖输入图像的精确相机位姿,在实际应用和稀疏视图场景下非常不便
部分方法将位姿估计和三维重建整合在一个pipeline,交替优化,然而由于位姿估计的不准确,导致误差累积问题,不够准确的位姿估计导致不够好的三维重建,从而进一步影响位姿估计的质量

方法

NoPoSplat 的方法可以分解为几个关键部分:网络架构、核心的规范空间预测、相机内参嵌入以及训练方式。

规范空间高斯预测

这也是最核心创新点。
传统方法首先为每张输入图像在其各自的局部相机坐标系中预测一组3D高斯,然后,利用已知的相机位姿(旋转矩阵 R 和平移向量 t)将这些局部的3D高斯变换到一个统一的世界坐标系中,最后将它们融合在一起形成最终场景。也就是局部空间->全局空间的思想,这种方式不仅依赖精确的位姿估计,而且容易在边界产生伪影。

NoPoSplat 彻底抛弃了上述流程。它设定了一个规范空间(Canonical Space),具体来说,就是以第一张输入图像的相机坐标系作为全局参考坐标系 。
思考:重建质量是否会受所选全局参考坐标系影响?
网络被训练来直接为所有输入视图预测在这个统一的规范空间下的3D高斯分布 。这意味着,无论输入的是第几张图,网络输出的3D高斯中心点坐标 (μ) 都是相对于第一张图的相机来定义的 。
这种方式避免了位姿变换以及带来的误差。

模型架构

方法采用一个简单的ViT编解码器架构,解码器中各个视图的特征会通过交叉注意力与其他视图的特征交互,实现多视图信息融合。
该架构采用两个输出头,分别预测高斯中心和高斯参数,其中高斯参数头还接收RGB图像的快捷连接以保留图像纹理信息。

该架构没有采用任何几何先验如对积极和或者代价体。
此外,还把相机内参用线性层转换成特征向量后与图像的tokens拼接,作为编码器的输入。

(noposplat) [guoshangwei5@localhost diff-gaussian-rasterization]$ python setup.py install running install /data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/cmd.py:90: SetuptoolsDeprecationWarning: setup.py install is deprecated. !! ******************************************************************************** Please avoid running ``setup.py`` directly. Instead, use pypa/build, pypa/installer or other standards-based tools. See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details. ******************************************************************************** !! self.initialize_options() /data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/cmd.py:90: EasyInstallDeprecationWarning: easy_install command is deprecated. !! ******************************************************************************** Please avoid running ``setup.py`` and ``easy_install``. Instead, use pypa/build, pypa/installer or other standards-based tools. See https://github.com/pypa/setuptools/issues/917 for details. ******************************************************************************** !! self.initialize_options() running bdist_egg running egg_info writing diff_gaussian_rasterization.egg-info/PKG-INFO writing dependency_links to diff_gaussian_rasterization.egg-info/dependency_links.txt writing top-level names to diff_gaussian_rasterization.egg-info/top_level.txt /data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/torch/utils/cpp_extension.py:502: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend. warnings.warn(msg.format('we could not find ninja.')) reading manifest file 'diff_gaussian_rasterization.egg-info/SOURCES.txt' adding license file 'LICENSE.md' writing manifest file 'diff_gaussian_rasterization.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py copying diff_gaussian_rasterization/__init__.py -> build/lib.linux-x86_64-cpython-310/diff_gaussian_rasterization running build_ext Traceback (most recent call last): File "/data/data1/work_folder/guoshangwei5/software/NoPoSplat/diff-gaussian-rasterization/setup.py", line 17, in <module> setup( File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/__init__.py", line 117, in setup return distutils.core.setup(**attrs) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 186, in setup return run_commands(dist) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 202, in run_commands dist.run_commands() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1002, in run_commands self.run_command(cmd) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/dist.py", line 1104, in run_command super().run_command(command) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command cmd_obj.run() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/command/install.py", line 109, in run self.do_egg_install() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/command/install.py", line 167, in do_egg_install self.run_command('bdist_egg') File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 357, in run_command self.distribution.run_command(command) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/dist.py", line 1104, in run_command super().run_command(command) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command cmd_obj.run() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/command/bdist_egg.py", line 177, in run cmd = self.call_command('install_lib', warn_dir=False) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/command/bdist_egg.py", line 163, in call_command self.run_command(cmdname) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 357, in run_command self.distribution.run_command(command) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/dist.py", line 1104, in run_command super().run_command(command) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command cmd_obj.run() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/command/install_lib.py", line 19, in run self.build() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py", line 113, in build self.run_command('build_ext') File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 357, in run_command self.distribution.run_command(command) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/dist.py", line 1104, in run_command super().run_command(command) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command cmd_obj.run() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/command/build_ext.py", line 99, in run _build_ext.run(self) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py", line 368, in run self.build_extensions() File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 525, in build_extensions _check_cuda_version(compiler_name, compiler_version) File "/data/data1/work_folder/guoshangwei5/miniconda3/envs/noposplat/lib/python3.10/site-packages/torch/utils/cpp_extension.py", line 413, in _check_cuda_version raise RuntimeError(CUDA_MISMATCH_MESSAGE.format(cuda_str_version, torch.version.cuda)) RuntimeError: The detected CUDA version (12.3) mismatches the version that was used to compile PyTorch (11.8). Please make sure to use the same CUDA versions.
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值