Bernhard Kerbl*、Georgios Kopanas*、Thomas Leimkühler、George Drettakis(* 表示同等贡献)
|网页|全文 |视频 |其他 GRAPHDECO 出版物 | FUNGRAPH 项目页面 |
| T&T+DB 列图 (650MB) |预训练模型 (14 GB) | Windows 查看器 (60MB) |评估图像 (7 GB) |
该存储库包含与论文“3D Gaussian Splatting for Real-Time Radiance Field Rendering”相关的官方作者实现,可以在此处找到。我们进一步提供了用于创建论文中报告的误差指标的参考图像,以及最近创建的预训练模型。
摘要:辐射场方法最近彻底改变了用多张照片或视频捕获的场景的新颖视图合成。然而,实现高视觉质量仍然需要训练和渲染成本高昂的神经网络,而最近更快的方法不可避免地会牺牲速度来换取质量。对于无界且完整的场景(而不是孤立的物体)和1080p分辨率渲染,当前没有方法可以达到实时显示速率。我们引入了三个关键要素,使我们能够在保持有竞争力的训练时间的同时实现最先进的视觉质量,并且重要的是允许在 1080p 分辨率下进行高质量实时(≥ 30 fps)新颖的视图合成。首先,从相机校准期间产生的稀疏点开始,我们用 3D 高斯表示场景,保留连续体积辐射场的所需属性以进行场景优化,同时避免在空白空间中进行不必要的计算;其次,我们对 3D 高斯进行交错优化/密度控制,特别是优化各向异性协方差以实现场景的准确表示;第三,我们开发了一种快速可见性感知渲染算法,该算法支持各向异性泼溅,既加速训练又允许实时渲染。我们在几个已建立的数据集上展示了最先进的视觉质量和实时渲染。
@Article{kerbl3Dgaussians, author = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{"u}hler, Thomas and Drettakis, George}, title = {3D Gaussian Splatting for Real-Time Radiance Field Rendering}, journal = {ACM Transactions on Graphics}, number = {4}, volume = {42}, month = {July}, year = {2023}, url = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/} }
这项研究由 ERC Advanced 拨款 FUNGRAPH No 788065 资助。作者感谢 Adobe 的慷慨捐赠、蔚蓝海岸大学的 OPAL 基础设施以及 GENCI–IDRIS 的 HPC 资源(拨款 2022-AD011013409)。作者感谢匿名审稿人的宝贵反馈,感谢 P. Hedman 和 A. Tewari 校对早期草稿,感谢 T. Müller、A. Yu 和 S. Fridovich-Keil 帮助进行比较。
我们用于维护和更新代码的资源有限。然而,自最初版本以来,我们添加了一些新功能,这些功能的灵感来自许多其他研究人员在 3DGS 方面所做的一些出色工作。我们将在我们的资源能力范围内添加其他功能。
2024 年 10 月更新:我们集成了训练速度加速,并使其兼容深度正则化、抗锯齿和曝光补偿。我们通过纠正错误并在顶视图中添加允许输入和用户摄像机可视化的功能来增强 SIBR 实时查看器。
2024 年春季更新:Orange Labs 善意地添加了对 VR 观看的 OpenXR 支持。
Jonathan Stephens 制作了一个精彩的分步教程,用于在您的计算机上设置高斯分布,以及从视频创建可用数据集的说明。如果下面的说明对您来说太枯燥,请继续查看此处。
用户camenduru 非常好心地提供了一个使用此存储库源(状态:2023 年 8 月!)的 Colab 模板,以便快速轻松地访问该方法。请在这里查看。
该存储库包含子模块,因此请使用以下命令查看它
# SSHgit 克隆 [email protected]:graphdeco-inria/gaussian-splatting.git --recursive
或者
# HTTPSgit 克隆 https://github.com/graphdeco-inria/gaussian-splatting --recursive
代码库有 4 个主要组件:
基于 PyTorch 的优化器,用于根据 SfM 输入生成 3D 高斯模型
允许连接并可视化优化过程的网络查看器
基于 OpenGL 的实时查看器,用于实时渲染经过训练的模型。
帮助您将自己的图像转换为可优化的 SfM 数据集的脚本
这些组件对硬件和软件都有不同的要求。它们已在 Windows 10 和 Ubuntu Linux 22.04 上进行了测试。以下部分提供了设置和运行它们的说明。
优化器在 Python 环境中使用 PyTorch 和 CUDA 扩展来生成经过训练的模型。
具有计算能力 7.0+ 的 CUDA 就绪 GPU
24 GB VRAM(用于训练论文评估质量)
请参阅常见问题解答以了解较小的 VRAM 配置
Conda(推荐使用,以便于设置)
用于 PyTorch 扩展的 C++ 编译器(我们使用 Visual Studio 2019 for Windows)
用于 PyTorch 扩展的 CUDA SDK 11,在 Visual Studio之后安装(我们使用11.8,11.6 存在已知问题)
C++编译器和CUDA SDK必须兼容
我们默认提供的安装方法基于 Conda 包和环境管理:
SET DISTUTILS_USE_SDK=1 # 仅 Windowsconda env create --fileenvironment.yml conda 激活 gaussian_splatting
请注意,此过程假设您安装了 CUDA SDK 11 ,而不是12 。有关修改,请参见下文。
提示:下载软件包并使用 Conda 创建新环境可能需要大量磁盘空间。默认情况下,Conda 将使用主系统硬盘。您可以通过指定不同的包下载位置和不同驱动器上的环境来避免这种情况:
conda config --add pkgs_dirs <驱动器>/conda env create --fileenvironment.yml --prefix <驱动器>/ /gaussian_splatting conda activate <驱动器>/ /gaussian_splatting
如果您有足够的磁盘空间,我们建议您使用我们的环境文件来设置与我们相同的培训环境。如果您想进行修改,请注意主要版本更改可能会影响我们方法的结果。然而,我们的(有限的)实验表明,代码库在更新的环境(Python 3.8、PyTorch 2.0.0、CUDA 12)中运行得很好。确保创建一个 PyTorch 及其 CUDA 运行时版本匹配的环境,并且安装的 CUDA SDK 与 PyTorch 的 CUDA 版本没有主要版本差异。
一些用户在 Windows 上构建子模块时遇到问题( cl.exe: File not found
或类似问题)。请考虑常见问题解答中解决此问题的方法。
要运行优化器,只需使用
python train.py -s
包含 COLMAP 或 Synthetic NeRF 数据集的源目录的路径。
训练模型的存储路径(默认为output/
)。
COLMAP 图像的替代子目录(默认为images
)。
添加此标志以使用 MipNeRF360 样式的训练/测试分割进行评估。
指定训练前加载图像的分辨率。如果提供1, 2, 4
或8
,则分别使用原始分辨率、1/2、1/4 或 1/8 分辨率。对于所有其他值,将宽度重新调整为给定数字,同时保持图像宽高比。如果未设置并且输入图像宽度超过 1.6K 像素,则输入将自动重新缩放至此目标。
指定放置源图像数据的位置,默认为cuda
,如果在大型/高分辨率数据集上训练,建议使用cpu
,将减少 VRAM 消耗,但会稍微减慢训练速度。感谢 HrsPythonix。
添加此标志以使用白色背景而不是黑色(默认),例如,用于评估 NeRF 合成数据集。
要使用的球谐函数的阶数(不大于 3)。默认为3
。
标记为使用 PyTorch 而不是我们的来使 SH 的管道向前和向后计算。
标记以使用 PyTorch 而不是我们的管道来向前和向后计算 3D 协方差。
如果遇到错误,请启用调试模式。如果光栅化器失败,则会创建一个dump
文件,您可以在问题中将其转发给我们,以便我们查看。
调试速度慢。您可以指定一个迭代(从 0 开始),之后上述调试将变为活动状态。
训练的总迭代次数,默认为30_000
。
启动 GUI 服务器的 IP,默认为127.0.0.1
。
GUI 服务器使用的端口,默认为6009
。
训练脚本计算测试集上的 L1 和 PSNR 的空间分隔迭代,默认情况下为7000 30000
。
训练脚本保存高斯模型的以空格分隔的迭代,默认为7000 30000
。
以空格分隔的迭代,用于存储检查点以便稍后继续,保存在模型目录中。
保存的检查点的路径以继续训练。
标记以省略写入标准输出管道的任何文本。
球谐函数具有学习率,默认为0.0025
。
不透明度学习率,默认0.05
。
缩放学习率,默认为0.005
。
旋转学习率,默认0.001
。
位置学习率从initial
到final
步数(从 0 开始)。默认为30_000
。
初始3D位置学习率,默认为0.00016
。
最终3D位置学习率,默认为0.0000016
。
位置学习率乘数(参见 Plenoxels),默认为0.01
。
致密化开始的迭代,默认为500
。
致密化停止的迭代,默认为15_000
。
决定是否应基于 2D 位置梯度对点进行致密化的限制,默认为0.0002
。
致密化的频率,默认为100
(每 100 次迭代)。
重置不透明度的频率,默认为3_000
。
SSIM对总损失的影响从0到1,默认0.2
。
点必须超过场景范围的百分比 (0--1) 才能强制致密,默认为0.01
。
请注意,与 MipNeRF360 类似,我们的目标图像分辨率在 1-1.6K 像素范围内。为了方便起见,可以传递任意大小的输入,如果输入的宽度超过 1600 像素,则会自动调整大小。我们建议保留此行为,但您可以通过设置-r 1
强制训练使用更高分辨率的图像。
MipNeRF360 场景由此处的论文作者主持。您可以在此处找到我们的 Tanks&Temples 和 Deep Blending 的 SfM 数据集。如果您不提供输出模型目录 ( -m
),训练后的模型将写入output
目录内具有随机唯一名称的文件夹中。此时,可以使用实时查看器查看经过训练的模型(进一步参见下文)。
默认情况下,训练后的模型使用数据集中的所有可用图像。要在保留测试集进行评估的同时训练它们,请使用--eval
标志。这样,您可以渲染训练/测试集并生成错误指标,如下所示:
python train.py -s--eval # 使用训练/测试 split 进行训练 python render.py -m <训练模型的路径> # 生成效果图pythonmetrics.py -m <训练模型的路径> # 计算渲染的误差指标
如果您想评估我们的预训练模型,则必须下载相应的源数据集,并使用附加的--source_path/-s
标志指示它们在render.py
中的位置。注意:预训练模型是使用发布代码库创建的。该代码库已被清理并包含错误修复,因此您从评估它们中获得的指标将与论文中的指标不同。
python render.py -m <预训练模型的路径> -spythonmetrics.py -m <预训练模型的路径>
您要为其创建渲染的训练模型目录的路径。
标记以跳过渲染训练集。
标记以跳过渲染测试集。
标记以省略写入标准输出管道的任何文本。
根据用于训练的参数,将自动从模型路径中读取以下参数。但是,您可以通过在命令行上显式提供它们来覆盖它们。
包含 COLMAP 或 Synthetic NeRF 数据集的源目录的路径。
COLMAP 图像的替代子目录(默认为images
)。
添加此标志以使用 MipNeRF360 样式的训练/测试分割进行评估。
在训练前更改加载图像的分辨率。如果提供1, 2, 4
或8
,则分别使用原始分辨率、1/2、1/4 或 1/8 分辨率。对于所有其他值,将宽度重新调整为给定数字,同时保持图像宽高比。默认为1
。
添加此标志以使用白色背景而不是黑色(默认),例如,用于评估 NeRF 合成数据集。
标记为使用 PyTorch 计算的 SH(而不是我们的 SH)进行管道渲染。
标记以使用 PyTorch(而不是我们的)计算的 3D 协方差进行管道渲染。
应计算指标的模型路径的空格分隔列表。
我们进一步提供full_eval.py
脚本。该脚本指定了我们评估中使用的例程,并演示了一些附加参数的使用,例如, --images (-i)
来定义 COLMAP 数据集中的替代图像目录。如果您已经下载并提取了所有训练数据,您可以像这样运行它:
python full_eval.py -m360-tat <坦克和寺庙文件夹> -db <深度混合文件夹>
在当前版本中,在包含 A6000 的参考机器上,此过程大约需要 7 小时。如果您想对我们的预训练模型进行全面评估,您可以指定其下载位置并跳过训练。
python full_eval.py -o <包含预训练模型的目录> --skip_training -m360-tat -db <深度混合文件夹>
如果您想计算我们论文的评估图像的指标,您也可以跳过渲染。在这种情况下,无需提供源数据集。您可以一次计算多个图像集的指标。
python full_eval.py -m <包含评估图像的目录>/garden ... --skip_training --skip_rendering
我们为我们的方法提供了两种交互式查看器:远程查看器和实时查看器。我们的查看解决方案基于 SIBR 框架,该框架由 GRAPHDECO 小组为多个新颖的视图合成项目开发。
支持 OpenGL 4.5 的 GPU 和驱动程序(或最新的 MESA 软件)
建议使用 4 GB 显存
具有计算能力 7.0+ 的 CUDA 就绪 GPU(仅适用于实时查看器)
Visual Studio 或 g++,而不是 Clang (我们使用 Visual Studio 2019 for Windows)
CUDA SDK 11,在Visual Studio之后安装(我们使用11.8)
CMake(最新版本,我们使用3.24)
7zip(仅在 Windows 上)
我们在这里提供适用于 Windows 的预构建二进制文件。我们建议在 Windows 上使用它们以实现高效的设置,因为 SIBR 的构建涉及多个必须即时下载和编译的外部依赖项。
如果您使用子模块进行克隆(例如,使用--recursive
),则查看器的源代码可在SIBR_viewers
中找到。网络查看器在基于图像的渲染应用程序的 SIBR 框架内运行。
CMake 应该照顾你的依赖关系。
cd SIBR_viewers cmake -Bbuild .cmake --build build --target install --config RelWithDebInfo
您可以指定不同的配置,例如,如果您在开发过程中需要更多控制,则可以Debug
。
在运行项目设置之前,您需要安装一些依赖项。
# 依赖项sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev# 项目 setupcd SIBR_viewers cmake -Bbuild 。 -DCMAKE_BUILD_TYPE=Release # 添加 -G Ninja 构建 fastcmake --build build -j24 --target install
与 Focal Fossa 的向后兼容性尚未经过充分测试,但使用 CMake 构建 SIBR 在调用后应该仍然可以工作
git checkout fossa_compatibility git checkout fossa_compatibility
SIBR 界面提供了多种场景导航方法。默认情况下,您将从 FPS 导航器开始,您可以使用W, A, S, D, Q, E
控制摄像机平移,使用I, K, J, L, U, O
控制旋转。或者,您可能想使用轨迹球式导航器(从浮动菜单中选择)。您还可以使用Snap to
”按钮从数据集中捕捉到摄像机,或者使用Snap to closest
查找最近的摄像机。浮动菜单还允许您更改导航速度。您可以使用Scaling Modifier
来控制显示的高斯的大小,或显示初始点云。
解压或安装查看器后,您可以在
中运行已编译的SIBR_remoteGaussian_app[_config]
应用程序,例如:
.//bin/SIBR_remoteGaussian_app
网络查看器允许您连接到同一台或不同机器上正在运行的训练进程。如果您在同一台机器和操作系统上进行训练,则不需要命令行参数:优化器将训练数据的位置传达给网络查看器。默认情况下,优化器和网络查看器将尝试在端口6009上的localhost上建立连接。您可以通过向优化器和网络查看器提供匹配的--ip
和--port
参数来更改此行为。如果由于某种原因,网络查看器无法访问优化器用于查找训练数据的路径(例如,由于它们在不同的(虚拟)机器上运行),您可以使用-s
为查看器指定覆盖位置-s
.
用于覆盖模型到源数据集的路径的参数。
用于连接正在运行的训练脚本的 IP。
用于连接到正在运行的训练脚本的端口。
采用两个空格分隔的数字来定义网络渲染发生的分辨率,默认情况下宽度为1200
。请注意,要强制执行与输入图像不同的方面,您还需要--force-aspect-ratio
。
用于加载要在每个摄像机的顶视图中显示的源数据集图像的标记。
解压或安装查看器后,您可以在
中运行已编译的SIBR_gaussianViewer_app[_config]
应用程序,例如:
.//bin/SIBR_gaussianViewer_app -m <训练模型的路径>
提供指向经过训练的模型目录的-m
参数就足够了。或者,您可以使用-s
指定训练输入数据的覆盖位置。要使用自动选择的分辨率以外的特定分辨率,请指定--rendering-size
。如果您想要精确的分辨率并且不介意图像失真,请将其与--force-aspect-ratio
结合使用。
要解锁全帧速率,请在您的计算机和应用程序中禁用垂直同步(菜单 → 显示)。在多 GPU 系统(例如笔记本电脑)中,您的 OpenGL/显示 GPU 应与 CUDA GPU 相同(例如,通过在 Windows 上设置应用程序的 GPU 首选项,请参见下文)以获得最佳性能。除了初始点云和图块之外,您还可以选择通过从浮动菜单将高斯函数渲染为椭球体来可视化高斯函数。 SIBR 还有许多其他功能,请参阅文档以了解有关查看器、导航选项等的更多详细信息。还有一个顶视图(可从菜单中获得)显示输入摄像机和原始 SfM 点云的位置;请注意,启用顶视图会减慢渲染速度。实时查看器还使用稍微更激进的快速剔除,可以在浮动菜单中切换。如果您遇到可以通过关闭快速剔除来解决的问题,请告诉我们。
我们的 COLMAP 加载器期望源路径位置具有以下数据集结构:
|---images | |--- | |--- | |---... |---sparse |---0 |---cameras.bin |---images.bin |---points3D.bin
对于光栅化,相机模型必须是 SIMPLE_PINHOLE 或 PINHOLE 相机。我们提供了一个转换器脚本convert.py
,用于从输入图像中提取未失真的图像和SfM信息。或者,您可以使用 ImageMagick 调整未扭曲图像的大小。这种重新缩放与MipNeRF360类似,即它在相应的文件夹中创建原始分辨率的1/2、1/4和1/8的图像。要使用它们,请首先安装最新版本的 COLMAP(最好是由 CUDA 驱动)和 ImageMagick。将要使用的图像放在目录
中。
|---input |--- |--- |---...
如果您的系统路径上有 COLMAP 和 ImageMagick,您只需运行
python Convert.py -s[--resize] #如果不调整大小,则不需要ImageMagick
或者,您可以使用可选参数--colmap_executable
和--magick_executable
指向各自的路径。请注意,在 Windows 上,可执行文件应指向负责设置执行环境的 COLMAP .bat
文件。完成后,
将包含预期的 COLMAP 数据集结构,以及未扭曲、调整大小的输入图像,此外还有原始图像和目录中的一些临时(扭曲)数据distorted
。
如果您有自己的没有不失真的 COLMAP 数据集(例如,使用OPENCV
相机),您可以尝试只运行脚本的最后部分:将图像放入input
中,将 COLMAP 信息放入子目录distorted
中:
|---input | |--- | |--- | |---... |---distorted |---database.db |---sparse |---0 |---...
然后运行
python Convert.py -s--skip_matching [--resize] #如果不调整大小,则不需要ImageMagick
标记以避免在 COLMAP 中使用 GPU。
指示 COLMAP 信息可用于图像的标志。
输入的位置。
早期匹配步骤使用哪种相机模型,默认为OPENCV
。
用于创建输入图像的调整大小版本的标志。
COLMAP 可执行文件的路径(Windows 上为.bat
)。
ImageMagick 可执行文件的路径。
我们将 Taming-3dgs 1中的直接替代品与 fused ssim 集成到原始代码库中,以加快训练时间。安装后,加速光栅器可提供--optimizer_type default
和 a来加速训练时间--optimizer_type sparse_adam
加速训练时间。
为了获得更快的训练时间,您必须首先将加速光栅器安装到您的环境中:
pip uninstall diff-gaussian-rasterization -ycd 子模块/diff-gaussian-rasterization rm -r 构建 git checkout 3dgs_accel 点安装。
然后,您可以在运行train.py
时添加以下参数以使用稀疏 adam 优化器:
--optimizer_type稀疏亚当
请注意,此自定义光栅器的行为与原始版本不同,有关训练时间的更多详细信息,请参阅训练时间统计信息。
1. 马利克和戈埃尔等人。 “驯服 3DGS:利用有限资源实现高质量辐射场”。 SIGGRAPH Asia 2024 会议论文,2024 年,https://doi.org/10.1145/3680528.3687694,github
为了获得更好的重建场景,我们在每个输入图像的优化过程中使用深度图作为先验。它最适用于无纹理的部分,例如道路,并且可以去除漂浮物。有几篇论文使用了类似的想法来改进 3DGS 的各个方面; (例如 DepthRegularizedGS、SparseGS、DNGaussian)。我们集成的深度正则化是在我们的分层 3DGS 论文中使用的,但应用于原始 3DGS;对于某些场景(例如 DeepBlending 场景),它显着提高了质量;对于其他人来说,它要么产生很小的影响,甚至可能更糟。有关显示潜在收益和质量统计数据的示例结果,请参阅此处:深度正则化统计数据。
在合成数据集上进行训练时,可以生成深度图,并且不需要进一步处理即可在我们的方法中使用。
对于现实世界的数据集,应为每个输入图像生成深度图,要生成它们,请执行以下操作:
克隆深度任意 v2:
git clone https://github.com/DepthAnything/Depth-Anything-V2.git
从 Depth-Anything-V2-Large 下载权重并将其放置在Depth-Anything-V2/checkpoints/
下
生成深度图:
python Depth-Anything-V2/run.py --encoder vitl --pred-only --grayscale --img-path--outdir
使用以下命令生成depth_params.json
文件:
python utils/make_depth_scale.py --base_dir--depths_dir
如果要使用深度正则化-d
则应在训练时设置新参数。
为了补偿不同输入图像中的曝光变化,我们优化每个图像的仿射变换,就像分层 3dgs 中一样。
这可以极大地改善“野外”捕捉的重建结果,例如,当相机的曝光设置不固定时使用智能手机。有关显示潜在效益和质量统计数据的示例结果,请参阅此处:曝光补偿统计数据。
添加以下参数以启用它:
--exposure_lr_init 0.001 --exposure_lr_final 0.0001 --exposure_lr_delay_steps 5000 --exposure_lr_delay_mult 0.001 --train_test_exp
同样,其他优秀论文也使用了类似的想法,例如 NeRF-W、URF。
我们在代码库中添加了来自 Mip Splatting 的 EWA 过滤器,以消除混叠。默认情况下它是禁用的,但您可以在使用train.py
对场景进行训练或使用render.py
进行渲染时通过添加--antialiasing
来启用它。可以在 SIBR 查看器中切换抗锯齿功能,默认情况下禁用它,但在查看使用--antialiasing
训练的场景时应启用它。 该场景是使用--antialiasing
进行训练的。
Views > Top view
Top view
使用相应的输入摄像机和Point view
用户摄像机在另一个视图中渲染 SfM 点云。例如,这可以可视化观察者距输入摄像机的距离。
它是一个 3D 视图,因此用户可以像在Point view
中一样在其中导航(可用模式:FPS、轨迹球、轨道)。
可以使用选项来自定义此视图,可以禁用/启用网格,并且可以修改它们的比例。
一个有用的附加功能是移动到输入图像的位置,并逐渐淡出到该位置的 SfM 点视图(例如,验证相机对准)。输入摄像机的视图可以显示在Top view
中(请注意,必须在命令行中设置--images-path
)。通过单击Top view settings > Cameras > Snap to closest
.OpenXR 支持,可以将Top view
摄像机捕捉到点Point view
中距用户摄像机最近的输入摄像机
gaussian_code_release_openxr
分支支持 OpenXR 在该分支中,您可以在此处找到 VR 支持的文档。
我在哪里获取数据集,例如full_eval.py
中引用的数据集? MipNeRF360数据集由项目网站上原始论文的作者提供。请注意,其中两个数据集无法公开共享,需要您直接咨询作者。对于 Tanks&Temples 和 Deep Blending,请使用页面顶部提供的下载链接。或者,您可以从 HuggingFace 访问克隆数据(状态:2023 年 8 月!)
如何将其用于更大的数据集,例如城区?当前的方法不是为这些而设计的,但如果有足够的内存,它应该可行。然而,该方法在多尺度细节场景(极端特写,与远距离镜头混合)中可能会遇到困难。例如,在驾驶数据集(汽车靠近,建筑物远离)中通常就是这种情况。对于此类场景,您可以降低--position_lr_init
、 --position_lr_final
和--scaling_lr
(x0.3, x0.1, ...)。场景越广泛,这些值应该越低。下面,我们使用默认学习率(左)和--position_lr_init 0.000016 --scaling_lr 0.001"
(右)。
我使用的是 Windows,但无法构建子模块,我该怎么办?请考虑按照此处精彩视频教程中的步骤进行操作,希望它们会对您有所帮助。步骤完成的顺序很重要!或者,考虑使用链接的 Colab 模板。
它仍然不起作用。它说了一些关于cl.exe
的事情。我该怎么办?用户 Henry Pearce 找到了一个解决方法。您可以尝试将 Visual Studio 路径添加到环境变量中(您的版本号可能不同); C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.29.30133binHostx64x64
然后确保启动新的 conda 提示符并 cd 到您的存储库位置并尝试此操作;
conda activate gaussian_splatting cd/gaussian-splatting pip install submodulesdiff-gaussian-rasterization pip install submodulessimple-knn
我使用的是 macOS/Puppy Linux/Greenhat,但无法构建,我该怎么办?抱歉,我们无法为本自述文件中列出的平台之外的平台提供支持。考虑使用链接的 Colab 模板。
我没有 24 GB 的 VRAM 用于训练,我该怎么办? VRAM 消耗由正在优化的点的数量决定,该数量随着时间的推移而增加。如果您只想训练 7k 次迭代,则需要的次数会少得多。要执行完整的训练例程并避免内存不足,您可以增加--densify_grad_threshold
、 --densification_interval
或减少--densify_until_iter
的值。但请注意,这会影响结果的质量。还可以尝试将--test_iterations
设置为-1
以避免测试期间出现内存峰值。如果--densify_grad_threshold
非常高,则不应发生致密化,并且如果场景本身加载成功,则训练应完成。
24 GB VRAM 用于参考质量训练仍然很多!难道我们不能用更少的钱做到这一点吗?是的,很有可能。通过我们的ca