SuGaR

GitHub
3.3k 292 较难 1 次阅读 昨天NOASSERTION图像其他
AI 解读 由 AI 自动生成,仅供参考

SuGaR 是一款专为 3D 内容创作打造的高效工具,旨在解决从"3D 高斯泼溅(3D Gaussian Splatting)”技术中难以提取高质量网格模型的难题。虽然 3D 高斯泼溅能以极快速度生成逼真的场景渲染,但其生成的数百万个微小高斯球通常杂乱无章,无法直接用于传统的建模、动画或游戏引擎中。

SuGaR 通过引入一种创新的正则化项,引导这些高斯球紧密贴合物体表面排列,从而能够利用泊松重建算法快速提取出细节丰富且拓扑结构完整的 3D 网格。更独特的是,它支持构建“网格 + 表面高斯”的混合表示,将高斯球绑定在网格表面。这意味着用户可以在 Blender、Unity 或 Unreal Engine 等主流软件中,像操作普通模型一样对场景进行编辑、雕刻、绑定骨骼、制作动画或重新打光,而无需直接处理复杂的高斯数据。

相比传统方法需要数小时的处理时间,SuGaR 能在几分钟内完成这一过程,同时在渲染质量上实现了更优的表现。这款工具非常适合计算机视觉研究人员、3D 开发者以及数字艺术家使用,帮助他们轻松地将高保真的扫描数据转化为可交互、可编辑的资产,极大地简化了从实景重建到内容创作的流程。

使用场景

某游戏工作室的美术团队正试图将一段通过无人机拍摄的真实花园视频转化为可在 Unity 引擎中实时交互的 3D 资产。

没有 SuGaR 时

  • 网格提取困难:原始的 3D Gaussian Splatting 重建结果由数百万个无序的高斯点组成,无法直接导出为传统的三角网格模型,导致资产无法导入主流游戏引擎。
  • 细节丢失严重:若强行使用传统的 Marching Cubes 算法从神经隐式场中提取网格,不仅耗时数小时,还会抹平花园中树叶和草丛的精细几何结构。
  • 编辑流程断裂:由于缺乏明确的表面网格,美术师无法在 Blender 中对场景进行常规的拓扑修改、绑定骨骼或制作动画,只能面对不可编辑的点云束手无策。
  • 渲染与物理冲突:纯高斯表示难以高效计算碰撞体积,导致角色在场景中行走时无法产生真实的物理遮挡和碰撞反馈。

使用 SuGaR 后

  • 快速生成高质量网格:SuGaR 利用表面正则化项引导高斯点对齐,仅需几分钟即可通过泊松重建提取出保留丰富细节的精确三角网格。
  • 构建混合表示:工具自动将高斯点“冻结”在提取的网格表面,形成“网格 + 高斯”的混合架构,既保留了照片级的渲染质感,又拥有了清晰的几何边界。
  • 无缝接入传统管线:导出的网格可直接在 Blender 中进行雕刻、重拓扑和骨骼绑定,让静态的花园场景瞬间变为可动画化的游戏关卡。
  • 高效物理交互:基于提取的网格,引擎能快速构建碰撞体,实现角色在花丛中穿梭时的真实遮挡关系和物理反馈,同时维持高帧率渲染。

SuGaR 成功打破了神经渲染与传统图形管线之间的壁垒,让高保真 3D 场景的获取从“仅能观看”变成了“可编辑、可交互”的生产级资产。

运行环境要求

操作系统
  • Linux
GPU

必需 NVIDIA GPU,需安装 CUDA Toolkit 11.8,C++ 编译器与 CUDA SDK 必须兼容(基于 3D Gaussian Splatting 需求)

内存

未说明

依赖
notes目前代码不兼容 Windows 系统(待办事项中明确提及);推荐使用 Conda 管理环境;项目包含完整的 3D Gaussian Splatting 实现作为基础;若需进行纹理网格提取以在 Blender 中使用,需额外安装 nvdiffrast。
python通过 Conda 环境自动安装(具体版本未在片段中明确,通常为 3.8+)
torch
CUDA Toolkit 11.8
C++ Compiler
Conda
nvdiffrast (可选,用于纹理网格提取)
3D Gaussian Splatting (内置封装)
SuGaR hero image

快速开始

SuGaR: 基于表面对齐高斯泼溅的高效3D网格重建与高质量网格渲染

CVPR 2024
Antoine GuédonVincent Lepetit
LIGM, Ecole des Ponts, Univ Gustave Eiffel, CNRS

| 网页 | arXiv | Blender插件 | 演示视频 | 查看器视频 |

walk.gifattack.gif
我们的方法可以从3D高斯泼溅重建结果中提取网格,并构建混合表示,
通过操作网格即可轻松地在高斯泼溅场景中进行合成和动画制作。

摘要

我们提出了一种方法,能够从3D高斯泼溅(SIGGRAPH 2023)中精确且极快速地提取网格。
高斯泼溅近年来因其在训练速度上显著快于NeRF的同时仍能生成逼真的渲染效果而广受欢迎。然而,从数百万个微小的3D高斯分布中提取网格却极具挑战性:这些高斯分布在优化后往往杂乱无章,目前尚未有相关方法被提出。
我们的首要贡献是一种正则化项,它促使3D高斯分布更好地与场景表面对齐。
随后,我们提出了一种利用这种对齐特性,在场景的真实表面上采样点,并采用泊松重建算法从高斯分布中提取网格的方法。该方法速度快、可扩展性强且能很好地保留细节,这与通常用于从神经SDF中提取网格的Marching Cubes算法形成了鲜明对比。
最后,我们引入了一种可选的精炼策略,将高斯分布绑定到网格表面,并通过高斯泼溅渲染联合优化这些高斯分布和网格。这样一来,用户便可以通过操作网格而非直接操作高斯分布本身,借助传统软件(如Blender、Unity、Unreal Engine等)轻松地对高斯分布进行编辑、雕刻、绑定骨骼、制作动画或重新打光。
使用我们的方法,只需几分钟即可获得可用于真实渲染的可编辑网格,而基于神经SDF的最先进方法则需要数小时;同时,我们在PSNR、SSIM和LPIPS等指标上均表现出更优的渲染质量。

混合表示(网格 + 表面高斯分布)
garden_hybrid.gif kitchen_hybrid.gif counter_hybrid.gif
playroom_hybrid.gif qant03_hybrid.gif _hybrid.gif
底层网格(无纹理)
garden_notex.gif kitchen_notex.gif counter_notex.gif
playroom_notex.gif qant03_notex.gif dukemon_notex.gif

BibTeX

@article{guedon2023sugar,
  title={SuGaR: Surface-Aligned Gaussian Splatting for Efficient 3D Mesh Reconstruction and High-Quality Mesh Rendering},
  author={Gu{\'e}don, Antoine and Lepetit, Vincent},
  journal={CVPR},
  year={2024}
}

更新与待办事项

更新
  • [2024年9月18日] 通过新的`dn_consistency`正则化方法提升了提取网格的质量,并增加了与用于合成和动画的新Blender插件的兼容性。
  • [2024年1月9日] 添加了一个专用的实时查看器,供用户可视化并导航重建后的场景(混合表示、带纹理的网格和线框网格)。
  • [2023年12月20日] 添加了一个简短的笔记本示例,展示如何使用高斯泼溅光栅化器渲染混合表示图像。
  • [2023年12月18日] 代码发布。

待办事项
  • 查看器:增加加载后处理网格的选项。
  • 网格提取:增加编辑背景包围盒范围的功能。
  • 技巧与窍门:在README.md文件(以及网页)中添加一些关于如何在自有数据上使用SuGaR以获得更好重建效果的技巧与窍门(参考用户kitmallet提供的建议)。
  • 改进:在`sugar_extractors/coarse_mesh.py`中添加一个`if`语句块,用于跳过前景网格重建,避免在前景包围盒内未检测到表面点时触发错误。这对于希望重建“背景场景”的用户可能很有用。
  • 使用预计算掩码与SuGaR:为SuGaR优化过程增加掩码功能,允许用户在训练图像中遮挡部分像素(例如合成数据集中的白色背景)。
  • 在Windows上使用SuGaR:调整代码使其兼容Windows系统。由于路径书写规范的不同,当前代码无法在Windows上运行。
  • 合成数据集:增加支持NeRF合成数据集的功能(其格式与COLMAP场景不同)。
  • 合成与动画:完成合成与动画相关代码的清理工作,并将其整合到`sugar_scene/sugar_compositor.py`脚本中。
  • 合成与动画:制作教程,介绍如何使用`blender`目录下的脚本以及`sugar_scene/sugar_compositor.py`类,将合成与动画数据导入PyTorch,并应用于SuGaR混合表示。

概述

如我们在论文中所述,SuGaR 优化首先对 3D 高斯溅射模型进行 7000 次迭代的优化,期间不添加任何额外的正则化项。因此,当前实现包含原始 3D 高斯溅射代码的一个版本,并且我们将我们的模型构建为一个原生 3D 高斯溅射模型的封装器。

请注意,尽管这种封装实现因多种原因非常方便,但它在内存使用方面可能并非最优。

完整的 SuGaR 流程由四个主要步骤和一个可选步骤组成:

  1. 简短的原生 3DGS 优化:对原生 3D 高斯溅射模型进行 7000 次迭代的优化,以使高斯分布能够正确地定位在场景中。
  2. SuGaR 优化:优化高斯分布与场景表面的对齐。
  3. 网格提取:从优化后的高斯分布中提取网格。
  4. SuGaR 精修:同时精修高斯分布和网格,构建混合的网格+高斯表示。
  5. 纹理网格提取(可选):从精修后的 SuGaR 模型中提取传统的带纹理网格,作为在 Blender 中进行可视化、合成和动画制作的工具,借助我们的 Blender 插件

我们为每个步骤都提供了专用脚本,同时还提供了一个运行整个流程的脚本 train_full_pipeline.py。我们将在后续章节中说明如何使用该脚本。


blender_edit.png attack.gif
您可以在 Blender 中可视化、编辑、组合或为重建的带纹理网格制作动画(左)
并借助我们的 Blender 插件用 SuGaR 渲染结果(右)


请注意,最后一步——纹理网格提取——是可选的,但在 train_full_pipeline.py 脚本中默认启用。事实上,拥有一个传统的带纹理网格对于使用传统软件(如 Blender)进行可视化、合成和动画制作非常方便。如果您已按照下文所述安装了 Nvdiffrast,那么这一步骤通常只需几秒钟即可完成。

混合表示(网格 + 表面的高斯分布)
garden_hybrid.gif kitchen_hybrid.gif qant03_hybrid.gif _hybrid.gif
底层网格与传统的彩色 UV 纹理
garden_notex.gif kitchen_notex.gif qant03_notex.gif dukemon_notex.gif

下面是一个展示黑色镜面材质机器人的场景示例。以下图片分别展示了混合表示(网格 + 表面的高斯分布)、带有传统彩色 UV 纹理的网格,以及网格的深度图:

混合表示 - 带纹理网格 - 网格深度图
alpha_hybrid.png alpha_texture.gif alpha_depth.gif

安装

点击此处查看内容。

0. 要求

软件要求如下:

  • Conda(推荐用于简化安装)
  • 用于 PyTorch 扩展的 C++ 编译器
  • 用于 PyTorch 扩展的 CUDA 工具包 11.8
  • C++ 编译器和 CUDA SDK 必须兼容

有关详细信息,请参阅原始 3D 高斯溅射仓库

1. 克隆仓库

首先克隆本仓库:

# HTTPS
git clone https://github.com/Anttwo/SuGaR.git --recursive

# SSH
git clone git@github.com:Anttwo/SuGaR.git --recursive

2. 创建 Conda 环境

要创建并激活包含所有所需包的 Conda 环境,请进入 SuGaR/ 目录并运行以下命令:

python install.py
conda activate sugar

该脚本将自动创建名为 sugar 的 Conda 环境,并安装所有必需的包。它还会自动安装 3D 高斯溅射光栅化器以及用于加速网格光栅化的 Nvdiffrast 库。

如果在安装过程中遇到任何问题,您可以按照下面的详细说明手动安装所需的包。

手动安装的详细说明

a) 安装所需的 Python 包

要安装所需的 Python 包并激活环境,请进入 SuGaR/ 目录并运行以下命令:

conda env create -f environment.yml
conda activate sugar

如果此命令未能成功创建可用环境,您可以尝试手动安装所需的包,方法是运行以下命令:

conda create --name sugar -y python=3.9
conda activate sugar
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install pytorch3d==0.7.4 -c pytorch3d
conda install -c plotly plotly
conda install -c conda-forge rich
conda install -c conda-forge plyfile==0.8.1
conda install -c conda-forge jupyterlab
conda install -c conda-forge nodejs
conda install -c conda-forge ipywidgets
pip install open3d
pip install --upgrade PyMCubes

b) 安装高斯溅射光栅化器

SuGaR 目录内运行以下命令,以安装高斯溅射所需的额外 Python 子模块:

cd gaussian_splatting/submodules/diff-gaussian-rasterization/
pip install -e .
cd ../simple-knn/
pip install -e .
cd ../../../

更多详情请参阅 3D 高斯溅射仓库

c) (可选)安装 Nvdiffrast 以加快网格光栅化速度

安装 Nvdiffrast 是可选的,但可以显著加快纹理网格提取步骤,从几分钟缩短到不到 10 秒。

git clone https://github.com/NVlabs/nvdiffrast
cd nvdiffrast
pip install .
cd ../

快速入门

点击此处查看内容。

从头开始训练

你可以运行以下单个脚本,使用 COLMAP 数据集从头优化一个完整的 SuGaR 模型:

python train_full_pipeline.py -s <COLMAP 数据集路径> -r <"dn_consistency", "density" 或 "sdf"> --high_poly True --export_obj True

你可以通过 -r 参数选择正则化方法,可选值为 "dn_consistency""density""sdf"。我们推荐使用较新的 "dn_consistency" 正则化以获得最佳质量的网格,不过论文中展示的结果是使用 "density" 正则化处理以物体为中心的场景,而使用 "sdf" 正则化处理具有挑战性背景的场景,例如 Mip-NeRF 360 数据集。

你还可以将 --high_poly True 参数替换为 --low_poly True,以提取一个包含 20 万顶点而非 100 万顶点的网格,并且每个三角形使用 6 个高斯分布而非 1 个。

此外,你可以添加 --refinement_time "short""medium""long" 来设置细化步骤所花费的时间。默认是 "long"(1.5 万次迭代),但 "short"(2 千次迭代)通常足以生成外观良好的混合表示。

最后,你可以通过 --export_obj 参数选择导出传统的带纹理网格。这一步骤是可选的,但在 train_full_pipeline.py 脚本中默认启用,因为该网格是使用 Blender 插件以及在 Blender 中编辑、组合或制作动画场景所必需的。

结果会保存在 output/ 目录中。

请点击此处查看 `train_full_pipeline.py` 脚本中的重要参数。
参数 类型 描述
--scene_path / -s str 包含 COLMAP 数据集的源目录路径。
--gs_output_dir str 原始 3D 高斯泼溅模型的检查点目录路径。如果未提供路径,脚本将从头开始,并首先优化一个原始的 3DGS 模型。
--regularization_type / -r str 用于对齐高斯分布的正则化类型。可为 "dn_consistency""density""sdf"。我们建议使用较新的 "dn_consistency" 正则化以获得最佳质量的网格。
--eval bool 如果为真,则会对训练图像进行评估划分。默认为 True
--low_poly bool 如果为真,则使用低多边形网格的标准配置,即 20 万个顶点和每个三角形 6 个高斯分布。
--high_poly bool 如果为真,则使用高多边形网格的标准配置,即 100 万个顶点和每个三角形 1 个高斯分布。
--refinement_time str 细化步骤所用时间的默认配置。可为 "short"(2 千次迭代)、"medium"(7 千次迭代)或 "long"(1.5 万次迭代)。
--export_ply bool 如果为真,在训练结束时会导出包含细化后 3D 高斯分布的 .ply 文件。该文件可能较大(约 500MB),但它是使用 3DGS 查看器所必需的。默认为 True
--export_obj / -t bool 如果为真,在细化完成后,将从细化后的 SuGaR 模型中优化并导出一个传统的带纹理网格作为 .obj 文件。使用 Nvdiffrast 计算传统颜色 UV 纹理只需几秒钟。默认为 True
--square_size int UV 纹理中每对三角形分配的正方形大小。增大此值可提高纹理分辨率。如果遇到内存问题,请减小此值。默认为 8
--white_background bool 如果为真,图像的背景将被设置为白色。默认为 False

正如我们在论文中所解释的那样,该脚本平均在单个 GPU 上 30 分钟内提取出网格。网格提取完成后,使用 --refinement_time "short" 时,细化过程仅需几分钟;而使用 --refinement_time "long" 时,则可能需要更长时间。在大多数情况下,短时间的细化就足以生成外观良好的混合表示。

请注意,优化时间可能会因场景复杂性和所使用的 GPU 而有所不同。此外,当前实现将优化过程拆分为多个模块化脚本,这些脚本可以单独运行,因此每次都会重新加载数据,这并不理想,且会耗费数分钟时间。

有关所有命令行参数的更多详细信息,请参阅 train_full_pipeline.py

从原始高斯泼溅模型开始训练

如果你已经为某个场景训练了一个 原始高斯泼溅模型(我们建议训练 7 千次迭代),你可以使用 --gs_output_dir 参数提供原始高斯泼溅模型输出目录的路径。这样将跳过优化的第一部分,直接从原始模型加载高斯分布:

python train_full_pipeline.py -s <COLMAP 数据集路径> -r <"dn_consistency", "density" 或 "sdf"> --high_poly True --export_obj True --gs_output_dir <高斯泼溅输出目录路径>

实时可视化 SuGaR 模型

点击此处查看内容。

优化完 SuGaR 模型后,你可以使用任意 3D 高斯泼溅查看器实时可视化该模型。
事实上,优化完成后,我们会自动在 ./output/refined_ply/ 目录中导出一个 .ply 文件,其中包含 SuGaR 混合表示的细化后的 3D 高斯分布,且与任何 3DGS 查看器兼容。 例如,你可以使用 3D 高斯泼溅原始实现中提供的查看器,或者使用出色的 SuperSplat 查看器
此外,还提供了一个在线的 SuperSplat 浏览器版

我们还提供了一个专用的实时查看器,不仅可以可视化细化后的 3D 高斯分布,还可以同时显示带纹理的网格和线框网格。请参阅下方说明以安装并使用此查看器。

请点击此处查看我们实时查看器的安装和使用说明。

请在此处观看 简短视频,了解如何使用该查看器。

1. 安装

该查看器目前适用于 Linux 和 Mac OS,不支持 Windows。对于 Windows 用户,我们建议使用 WSL2(Windows Sub系统 for Linux),因为它安装和使用都非常方便。更多详情请参阅 官方文档
我们感谢 Mark Kellogg 为 Three.js 提供的出色的 3D 高斯泼溅实现, 我们正是基于此实现构建了这款查看器。

首先,请安装最新版本的 Node.js(例如 21.x)和 npm。 一种简单的方法是运行以下命令(使用 aptitude):

curl -fsSL https://deb.nodesource.com/setup_21.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install aptitude
sudo aptitude install -y npm

然后,进入 ./sugar_viewer/ 目录并运行以下命令:

npm install
cd ..

2. 使用

首先,请确保您已使用 train.py 脚本导出 .ply 文件和 .obj 文件。.ply 文件包含优化后的 3D 高斯点云,而 .obj 文件则包含带纹理的网格。默认情况下,运行 train.py 脚本时会导出这些文件,因此如果您在运行代码时使用了 --export_ply--export_obj 的默认值,那么您应该可以直接使用。

.ply 文件应位于 ./output/refined_ply/<您的场景名称>/ 目录中。然后,在根目录下运行以下命令即可启动查看器:

python run_viewer.py -p <.ply 文件路径>

请确保您的 .ply 文件位于正确的位置,并使用以 ./output/refined_ply 开头的相对路径。该命令将重定向到本地 URL。点击链接即可在浏览器中打开查看器。单击右上角的图标可在不同表示形式之间切换(混合表示、带纹理的网格、线框网格)。使用鼠标旋转场景,使用鼠标滚轮进行缩放。

viewer_example.png

我们还推荐使用我们的 Blender 插件 来创建 SuGaR 表示的动画和视频片段。 具体来说,该插件允许您导入 SuGaR 网格,并在 Blender 中对其进行可视化、编辑、组合或动画制作。 最后,您可以使用 3DGS 光栅化器渲染结果,它能够高质量且逼真地呈现 SuGaR 的混合表示。

使用 Blender 进行渲染、合成与动画制作

点击此处查看内容。

view_sugar_results.ipynb 笔记本和 metrics.py 脚本提供了如何加载优化后的 SuGaR 模型来渲染场景的示例。

我们还提供一个 Blender 插件,用于在 Blender 内编辑、组合和动画化 SuGaR 网格,并使用 SuGaR 的混合表示进行渲染。网格位于 ./output/refined_mesh/ 目录中。

有关如何使用该插件以及如何为 SuGaR 创建渲染包的更多详细信息,请参阅 Blender 插件仓库。 准备好使用 Blender 制作的渲染包后——该包应为位于 ./output/blender/package/ 目录中的 .JSON 文件——您可以使用 render_blender_scene.py 脚本渲染场景:

python render_blender_scene.py -p <渲染包路径>

渲染后的图像将保存在 ./output/blender/renders/ 目录中。
如果在图像中观察到伪影,您可以调整脚本的参数以提高渲染质量。 具体而言,您可以切换到 --adaptation_method simple 或降低 deformation_threshold 来减少渲染中的伪影。 有关命令行参数的更多信息,请参阅脚本。

评估

点击此处查看内容。

为了评估重建的质量,我们提供了一个 metrics.py 脚本,用于计算测试图像上的 PSNR、SSIM 和 LPIPS 指标。首先,针对所需的场景和正则化方法(dn_consistencydensitysdf)优化 SuGaR 模型,然后创建一个包含场景路径的 .json 配置文件,格式如下:{source_images_dir_path: vanilla_gaussian_splatting_checkpoint_path}

最后,按如下方式运行脚本:

python metrics.py --scene_config <.json 文件路径> -r <"sdf" 或 "density">

结果将保存在 output/metrics/ 目录下的 .json 文件中。
有关命令行参数的更多信息,请参阅脚本。

使用 SuGaR 处理您自己的数据以获得更好重建效果的提示

点击此处查看内容。
1. 拍摄覆盖场景整个表面的图片或视频

使用智能手机或相机拍摄覆盖您想要重建的 3D 场景整个表面的图片或视频。最简单的方法是在场景周围移动并录制视频。尽量缓慢平稳地移动,以避免运动模糊。为了实现一致的重建效果,并便于 COLMAP 进行相机位姿估计,保持统一的焦距和恒定的曝光时间也很重要。我们建议关闭智能手机的自动对焦功能,以确保焦距不变。

为了获得更好的重建效果,尽量从多个不同的角度拍摄物体,尤其是场景中细小而复杂的部分。
事实上,SuGaR 能够重建非常细小和复杂的物体,但如果这些细小物体在训练图像中没有被充分覆盖,只从一个方向可见,则可能会出现一些伪影。

要将视频转换为图片,您可以安装 ffmpeg 并运行以下命令:

ffmpeg -i <视频文件路径> -qscale:v 1 -qmin 1 -vf fps=<FPS> %04d.jpg

其中 <FPS> 是您希望的视频图像采样率。FPS 值为 1 表示每秒采样一张图像。我们建议根据视频长度调整采样率,使采样的图像数量在 100 到 300 张之间。

2. 使用 COLMAP 估计相机位姿

请先安装最新版本的 COLMAP(最好支持 CUDA),并将您想要使用的图像放入目录 <location>/input 中。然后,从原始的 Gaussian Splatting 实现中运行脚本 gaussian_splatting/convert.py,以使用 COLMAP 从图像中计算相机位姿。更多详情请参阅原始的 3D Gaussian Splatting 仓库

python gaussian_splatting/convert.py -s <location>

有时 COLMAP 无法将所有图像重建为同一个模型,从而产生多个子模型。较小的子模型通常只包含少数几张图像。然而,默认情况下,脚本 convert.py 只会对第一个子模型应用去畸变处理,而这个子模型可能只包含少量图像。

如果是这种情况,一个简单的解决方法是只保留最大的子模型,丢弃其他子模型。为此,请打开包含输入图像的源目录,然后进入子目录 <Source_directory>/distorted/sparse/。您应该会看到几个名为 0/1/ 等的子目录,每个子目录都包含一个子模型。删除除包含最大文件的子目录之外的所有子目录,并将其重命名为 0/。然后再次运行 convert.py 脚本,但跳过匹配步骤:

python gaussian_splatting/convert.py -s <location> --skip_matching

注意:如果这些子模型有共同的已注册图像,可以在后处理阶段使用 COLMAP 将它们合并为一个模型;然而,合并子模型需要在合并后运行另一次全局光束平差,这可能会非常耗时。

3. DN-一致性、密度还是 SDF?选择适合您场景的正则化方法

我们建议使用较新的 DN-一致性正则化以获得最佳质量的网格

不过,论文中展示的结果是在以下情况下得到的:对于以物体为中心的场景使用密度正则化,而对于背景较为复杂的场景(如 Mip-NeRF 360 数据集)则使用 SDF 正则化。

正如我们在论文中所解释的那样,密度正则化最为简单,且在场景中物体居中时效果较好。SDF 提供了更强的正则化作用,尤其是在背景区域。因此,在标准数据集上,SDF 正则化的指标通常更高。然而,对于用环绕物体四周拍摄的图像来重建场景中居中的物体时,相对简单的密度正则化往往能生成比 SDF 更好的网格。

DN-一致性正则化是一种新的正则化方法,它 (a) 在使用密度正则化的同时,强制高斯分布与场景表面对齐;同时 (b) 强制深度梯度与法线图之间的一致性——这两者都是通过 3D 高斯分布渲染出来的。
如论文所述,高斯分布的法线被定义为该高斯分布协方差矩阵的最短轴。
这种正则化方法能够生成最高质量的网格。

4. 我的网格上有孔洞,该怎么办?

如果您发现网格上有孔洞,这意味着 Poisson 网格的清理步骤对您的场景过于激进。您可以通过修改 sugar_extractors/coarse_mesh.py 文件第 43 行来降低用于清理的阈值 vertices_density_quantile。例如,您可以将这一行从

  vertices_density_quantile = 0.1

改为

  vertices_density_quantile = 0.
5. 我的网格表面出现了杂乱的椭圆形凸起,该怎么办?

根据您的场景,Poisson 重建所使用的默认超参数可能相对于高斯分布的尺寸来说过于精细。这样一来,高斯分布就有可能在网格上显现出来,从而导致网格表面出现杂乱的椭圆形凸起。 这种情况可能发生在相机轨迹非常靠近简单的前景物体时。
要解决这个问题,您可以降低 Poisson 重建的深度 poisson_depth,方法是修改 sugar_extractors/coarse_mesh.py 文件第 42 行。
例如,您可以将第 42 行从

  poisson_depth = 10

改为

  poisson_depth = 7

如果效果仍不理想,您也可以尝试 poisson_depth = 6poisson_depth = 8

6. (可选)调整场景的尺度和边界框

正如原始 3D Gaussian Splatting 仓库 所述,该方法适用于重建合理尺度的场景。对于重建规模更大的数据集(如城市街区),原作者建议降低高斯分布位置和缩放因子的学习率。场景越庞大,这些学习率就应该越低。

对于 SuGaR 来说,当重建非常大的场景时,也应相应降低这些学习率。此外,正如我们在论文补充材料中所解释的那样,在从高斯分布中提取具有最优顶点分布的网格时,我们实际上会进行两次 Poisson 重建:一次针对“前景”高斯分布,一次针对“背景”高斯分布。“前景”高斯分布是指位于预定义边界框内的高斯分布,“背景”高斯分布则是指位于该边界框外的高斯分布。

默认情况下,此边界框被计算为所有相机中心的包围盒。这种通用方法与原始 3D Gaussian Splatting 调整学习率的方式是一致的。我们在论文及演示视频中展示的所有重建均使用了这一默认边界框。

然而,在某些特定情况下,此边界框可能并不理想,尤其是当用户希望以高细节重建场景中某个特定物体,或者场景非常庞大,又或者相机中心距离场景十分遥远时。用户可以自由地通过 --bboxmin--bboxmax 参数向 train.py 脚本提供自定义边界框。请注意,边界框必须以字符串形式提供,格式为 "(x,y,z)",其中 xyz 分别表示边界框最小和最大点的坐标。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|1周前
开发框架图像Agent