Journal

MILo: Mesh-In-the-Loop Gaussian Splatting for Detailed and Efficient Surface Reconstruction

Antoine Guédon, Diego Gomez, Nissim Maruani, Bingchen Gong, George Drettakis, Maks Ovsjanikov

École Polytechnique; Inria, Université Côte d'Azur

一句话总结

MILo 把网格抽取从”训练后的后处理”变成”训练环内的一步”:每次迭代都从高斯参数可微地抽出一张网格(顶点位置 + 连接关系),让梯度从网格反传回高斯,从而在体表示(高斯)与面表示(网格)之间建立双向一致性,得到又准又轻(顶点数少一个数量级)的表面。

研究背景

从图像重建表面网格的主流做法是两阶段流水线:先用可微渲染优化一个体表示(NeRF 或 3DGS),再在后处理阶段通过定义等值面抽取网格。这套流程有几个根本性缺陷:

  • 后处理把复杂的体信息坍缩成一张面,容易丢失细小或半透明结构(例如自行车辐条),并引入伪影;
  • 高斯与 NeRF 会独立于几何去调整不透明度与视相关颜色,以更好地拟合训练图像,这种”作弊”会产生漂浮物、空腔等与几何不一致的幻象,一旦被体表示吸收就很难在抽取阶段修正;
  • 抽取只在训练结束后发生,训练过程中没有任何关于网格质量的反馈,无法保证优化后的高斯能抽出一张高质量网格;
  • 常见方法多聚焦物体中心场景(DTU、Tanks and Temples 的真值只覆盖前景),产出的网格往往极其稠密(上千万顶点),难以扩展到含背景的完整场景。

MILo 的核心主张是:让网格抽取成为优化的组成部分,使体表示与面表示在训练中始终保持一致,二者互相帮助。

方法

整体思路

在每次训练迭代内,从一组与高斯纠缠在一起的点(称为 Gaussian Pivots,高斯支点)生成一张网格。因为网格顶点由高斯参数解析导出,梯度可以直接从网格反传到高斯参数,于是高斯扮演了”显式网格的隐式参数化”角色。连接关系随高斯移动而动态更新,因此摆脱了固定拓扑的限制;反过来网格又作为几何先验软约束高斯、抑制”作弊”。

每次迭代包含五步:从高斯支点取出可训练的 Delaunay 顶点、更新 Delaunay 三角剖分、为每个 Delaunay 顶点取出可训练的 SDF 值、用 GPU 可微 Marching Tetrahedra 抽出网格、同时渲染网格与高斯并把图像损失与一致性损失反传回高斯参数。

从高斯采样 Delaunay 顶点

直接用所有高斯中心作为 Delaunay 顶点有两个问题:高斯中心往往贴在表面上,而 Marching Tetrahedra 需要顶点”跨越”目标表面两侧;且全量高斯对大场景计算代价太高。

为解决第一个问题,沿用 GOF 的策略:每个高斯采样 9 个点(中心 + 与主轴对齐的 8 个包围盒角点)。给定高斯 \(k\),其单位包围盒顶点与中心 \(\{b_0, b_1 \ldots b_8\}\) 经缩放旋转后得到:

\[p_{k,i} = \mu_k + R_k \times (s_k \odot b_i), \quad i = 0 \ldots 8,\]

其中 \(\odot\) 是 Hadamard 积。这让三角剖分能适配基元的各向异性。

为解决可扩展性,只从”最可能靠近表面”的高斯采样支点:借用 Mini-Splatting2 的重要性加权采样,按高斯在所有训练视角中对渲染的贡献(沿相机光线的混合系数平均幅度)排序,以重要性得分作为采样概率。由此衍生两种模型:

  • Base 模型:重要性采样后移除其余高斯,仅从保留的高斯(约 0.1M–0.5M)每次迭代抽网格,得到轻量高斯集与轻量网格;
  • Dense 模型:同样做重要性采样,但保留全部高斯(约 2M–5M)用于渲染,只用被采样的高斯作为支点生成 Delaunay 顶点。网格顶点数与 Base 相当,但更多高斯有助于在这些顶点上学到更好的 SDF 值,代价是更长的优化时间与更好的性能。

计算 SDF 值

Marching Tetrahedra 需要一个带标量值的四面体网格。作者给每个高斯 \(G_k\) 额外附加 9 个可优化的 SDF 值 \(f_k \in \mathbb{R}^9\),每个 Delaunay 顶点一个。关键在于这些 SDF 值与高斯的其他参数(不透明度、尺度、旋转)解耦,从而对等值面层级有局部化的独立控制,这对捕捉细节和保证网格与体表示强一致非常有益。这些值并非来自真实 SDF,只是为了叙述方便称作 SDF 值;作者还设计了自定义初始化以加速收敛。

可微 Marching Tetrahedra

对每个 SDF 值符号相反的四面体(说明表面穿过它),算法在其边上求交点作为最终网格顶点。给定四面体两个 SDF 值符号相反的 Delaunay 顶点 \(p_{k,i}\) 与 \(p_{k',j}\)(SDF 值 \(f_{k,i}\) 与 \(f_{k',j}\)),交点位置为:

\[v_n = \frac{f_{k,i} p_{k',j} - f_{k',j} p_{k,i}}{f_{k,i} - f_{k',j}}.\]

梯度可通过两条路径回流到高斯:一是可学习的 SDF 值,二是由高斯均值与协方差算出的 Delaunay 顶点坐标。

环内优化与损失

体渲染损失沿用 2DGS/GOF/RaDe-GS 那套光度项加正则项:

\[L_{vol} = (1 - \lambda_{RGB}) L_1 + \lambda_{RGB} L_{D\text{-}SSIM} + \lambda_N L_N,\]

其中法向一致性项为

\[L_N = \sum_i \left(1 - N(i) \cdot \tilde{N}(i)\right),\]

\(N(i)\) 是体渲染期望法向,\(\tilde{N}(i)\) 由渲染深度图做有限差分得到。

体-面一致性损失比较从高斯和从网格渲染出的深度、法向:

\[L_{mesh} = \lambda_{MD} L_{MD} + \lambda_{MN} L_{MN},\]

\[L_{MD} = \sum_i \log\left(1 + |D(i) - D_M(i)|\right),\]

\[L_{MN} = \sum_i \left(1 - \tilde{N}(i) \cdot N_M(i)\right),\]

其中 \(D_M\)、\(N_M\) 分别是从网格渲染的深度与被光栅化面片法向。

针对两个关键难题引入正则:

抗侵蚀。若某四面体内所有 SDF 值都变正,细节会被侵蚀甚至丢失,且侵蚀后梯度信号极弱难以恢复。为此鼓励被采样高斯中心的 SDF 值为负(即落在表面内侧):

\[L_{erosion} = \sum_{g \in G_{Del}} \max(0, f_{\mu_g}).\]

它只作用于被选中的高斯支点中心而非全部四面体顶点,避免网格坍缩。

内部伪影。遮挡区域缺乏监督,网格内部会出现混乱结构与空腔。作者用抽出的网格为每个 Delaunay 站点 \(p\) 构造占用标签 \(o_p \in \{0, 1\}\)(是否在可见表面内侧),强制被判为”内部”的顶点 SDF 为负:

\[L_{interior} = \sum_p H(\sigma(-f_p), o_p) \cdot o_p,\]

\(H\) 为交叉熵,\(\sigma\) 为 sigmoid。占用标签通过从所有训练视角渲染网格深度图、判断站点是否”落在所有深度图之后”得到,每 200 次迭代更新一次,只需几秒。

完整损失为:

\[L = L_{vol} + L_{mesh} + L_{reg}, \quad L_{reg} = \lambda_{erosion} L_{erosion} + \lambda_{interior} L_{interior}.\]

方法可插入任何能可微渲染深度图与法向图的高斯方法;实现基于 RaDe-GS 代码库。

实验结果

在 Tanks and Temples 上以 F1-score 评估,MILo 在显式方法中取得最佳。Dense 版本(基于 RaDe-GS 光栅器)平均 F1 达 0.49,Base 版本(基于 GOF)也达 0.49,均优于 2DGS(0.30)、GOF(0.46)、RaDe-GS(0.40)、QGS(0.44);隐式方法中训练超 24 小时的 Neuralangelo 为 0.50。

资源上优势明显:在 Tanks and Temples 上 Base 模型仅 0.28M 高斯、约 4.36M 顶点、179.6 MB,而 2DGS/GOF/RaDe-GS 均在 14–16M 顶点、557–600 MB 量级,顶点数少约一个数量级。Base 模型在单张 RTX 4090(24GB)上,DTU 场景约 25 分钟、无界场景 40–50 分钟;Dense 无界场景约 2 小时,显存 10–17GB。

在 DTU 上,DTU 是受控的物体中心场景,标准后处理抽取本已很有效;MILo Base 平均 Chamfer Distance 0.68,与 RaDe-GS 持平、优于 2DGS(0.80),保持有竞争力的表现。作者强调 MILo 的优势主要体现在复杂完整场景重建。

为解决背景无真值几何的评测难题,作者提出 Mesh-Based Novel View Synthesis:在网格上训练一个神经颜色场(TensoRF 骨干)解耦颜色与网格分辨率,用网格渲染测试视图并与真值图像比较。在 MipNeRF 360、Tanks and Temples、DeepBlending 三个无界数据集上,Base 模型在 PSNR/SSIM/LPIPS 多数指标领先,且用远少的高斯(如 MipNeRF 360 上 0.46M vs. 2.9M)与顶点实现。该指标与真值 F1 排序高度一致,佐证其能反映真实几何精度。

消融显示:加深度监督 \(L_{MD}\) 把平均 F1 从 0.41 提到 0.46;再加法向得到 \(L_{mesh}\) 后 F1 略降到 0.44,但网格明显更干净、噪声更少;加抗侵蚀损失能保住栅栏、植被等细结构;内部正则则消除内部空腔、产出可用于物理仿真的水密网格;全部组合达到最高 F1。与 TSDF 融合的对比表明:TSDF 依赖固定 3D 网格、内存开销大(会 OOM)、易过度平滑,且每次抽取都要遍历所有训练视角、无法进环;MILo 在各网格分辨率下都取得更高 F1,其可学习 SDF + 可扩展支点集使得网格抽取足够轻量,才能真正进训练环。

亮点与局限

亮点:

  • 首个把网格抽取作为优化组成部分的辐射场流水线,用高斯参数化并联合精修体表示与面表示,天然支持顶点位置与拓扑的动态更新;
  • 用高斯支点做 Delaunay 三角剖分 + 可微 Marching Tetrahedra,配合与高斯参数解耦的可学习 SDF 值,避免几何侵蚀、实现精确抽取;
  • 抗侵蚀与内部正则两项 mesh-based 约束显著改善细结构保真与内部水密性;
  • 完整场景(含背景)state-of-the-art 质量,同时顶点数少一个数量级,网格轻、内部空、适合物理仿真与动画等下游应用;
  • 提出 Mesh-Based Novel View Synthesis 评测协议,仅需真值图像即可评估含背景的完整场景几何。

局限:

  • 每次迭代都抽取与处理网格,训练时间比标准高斯 splatting 增加(但相较基线仍可控);
  • 重建质量仍依赖高斯的初始分布,并非对所有场景都最优。

延伸思考

这篇工作的价值在于把”显式网格操作”从流水线末端提前进了训练环。一旦网格在每次迭代都可微地存在,几乎所有基于表面的处理工具(正则化、几何增强、编辑)都能在优化过程中作用于高斯,而不再只是事后补救。它给出的一个通用洞见是:当两种表示(体与面)通过可微桥梁互相监督时,各自的短板会被对方补齐——高斯负责高效渲染与外观细节,网格提供拓扑与几何先验抑制”作弊”。

另一个务实之处是对”进环”可行性的工程判断:作者明确指出 TSDF 融合因需遍历所有视角、内存随分辨率暴涨而无法进环,转而用可学习 SDF + 重要性采样的支点集把抽取成本压到可接受范围,这才让”mesh-in-the-loop”从理念变成能跑的系统。此外,他们对评测缺口的反思(现有数据集缺背景真值、缺衡量表面与图像对齐的协议)并提出神经颜色场解耦分辨率的评测方式,也提示了该领域后续在标准化评测上的改进方向。