COB-GS: 基于边界自适应高斯划分的 3DGS 语义分割中清晰的物体边界
在 3D 视觉领域中,实现精准的物体分割对于高质量的场景理解至关重要。然而,基于 3D Gaussian Splatting(3DGS)的三维分割方法在准确描绘物体边界上仍存在困难。
总览
摘要
在 3D 视觉领域中,实现精准的物体分割对于高质量的场景理解至关重要。然而,基于 3D Gaussian Splatting(3DGS)的三维分割方法在准确描绘物体边界上仍存在困难。由于高斯原语具有体积属性且训练过程中缺乏语义指导,它们往往会跨越物体边缘,从而导致边界模糊。
为解决这些问题,我们提出 COB-GS(Clear Object Boundaries for 3DGS Segmentation),一种专注于提升 3DGS 分割边界清晰度的方法,使得场景中交织、模糊的高斯在物体边界处被更加准确地区分。与以往通过删除模糊高斯而牺牲视觉质量的方法不同,COB-GS 作为一种 3DGS 精修方法,能够联合优化语义与视觉信息,让两种信息互相增强。
具体来说:
- 在语义优化中,我们提出“边界自适应的高斯划分(Gaussian Splitting)”技术,通过统计语义梯度来识别哪些高斯跨越了物体边界,并将它们进行拆分,使其更准确地贴合边界。
- 在视觉优化中,我们对被划分后的边界区域进行纹理修复,以恢复因模糊和误差导致退化的纹理质量。
实验表明,COB-GS 显著提升了分割结果的准确度与鲁棒性,特别是在基础模型(如 SAM2)生成的掩码不准确时,仍能保持物体边界清晰,同时整体视觉效果优秀。
1. 引言(Introduction)
理解和与三维场景进行交互一直是计算机视觉和计算机图形学中的核心挑战。该任务不仅要求从图像或视频集合中重建 3D 场景,还需要能够准确地感知、识别并分割其中的三维结构。
近年来,研究者在三维场景表示与三维感知方面进行了大量探索。在众多发展中,3D Gaussian Splatting(3DGS) [15] 作为一种新兴的实时辐射场渲染技术,以接近 Neural Radiance Fields(NeRF)[26] 的新视角合成质量,同时远超 NeRF 的优化与渲染速度,从而实现真正的实时渲染。作为一种显式的场景表示形式,3DGS 也为三维场景的感知和交互带来了新的可能。
✔ 3D 分割的重要性
在神经三维场景表示中(如 3DGS),获得准确的 3D 分割对于有效的 3D 场景理解和交互至关重要。当前主要有两类方法用于 3DGS 分割:
① 基于特征的分割方法(feature-based)
这类方法通常在三维场景重建的同时,为每个高斯学习高维语义特征。分割时,通过查询特征与高斯特征之间的相似度来筛选属于特定语义的高斯 [3, 28, 35, 42, 46]。
缺点:
- 训练与渲染效率低
- 高维特征存在天然歧义
- 边界区域容易模糊、不精确
② 基于掩码的分割方法(mask-based)
该方法借助预训练模型(如 SAM [17])提供的 2D 掩码,将语义标签映射到每个高斯中 [4, 14, 34],再根据标签过滤对应高斯实现 3D 分割。
虽然有效,但存在关键问题:
✘ 原始场景重建不包含语义信息
3DGS 在训练时主要优化视觉外观,对高斯的体积属性未做语义约束,从而导致:
- 边界高斯的标签模糊
- 分割边缘模糊不清,精度不够
如图 1 所示。为了缓解边界模糊,有些方法直接删除模糊高斯 [4, 34],但这会:
- 破坏渲染质量
- 损害物体结构完整性
✔ 我们的解决方案:COB-GS
为解决以上问题,我们提出 COB-GS,一种 3DGS 精修 + 分割方法
它的核心思想是:
👉 语义与视觉联合优化,让两种信息互相增强
具体做法包括:
基于语义梯度的“边界自适应高斯划分(Gaussian Splitting)”
当掩码监督信号在某个高斯上既像前景又像背景时,它一定位于物体边界。我们利用掩码梯度统计来识别这些“语义模糊的高斯”,并将其拆分为两个更小的高斯,使其更加贴合物体边界。
对划分后的边界进行纹理修复
分割过程中若直接划分高斯,局部纹理可能会退化。我们设计了边界引导的纹理修复,使 3DGS 在保持分割精度的同时,仍拥有高质量的视觉效果。
增强对预训练模型错误掩码的鲁棒性
由于 SAM/SAM2 的掩码偶尔不准确,会产生大量不收敛的小模糊高斯。COB-GS 能自动识别这些“微小但错误的高斯”并专门处理,避免破坏边界质量。
提出两阶段 SAM2 掩码生成方法
针对长序列中 SAM2 掩码不连续的问题,我们设计了一个:
- 粗阶段(低置信度)
- 细阶段(高置信度)
的两阶段掩码追踪方案,更稳定地生成用于监督的语义掩码。
✔ 贡献总结
- 首个显式设计用于 3DGS 的“语义–视觉联合优化”框架
通过边界对齐显著提升分割边界清晰度与视觉质量。 - 提出“边界自适应高斯划分”方法
基于掩码梯度自动定位并拆分模糊边界高斯。 - 提出“边界引导的纹理恢复”方法
在优化分割的同时保持甚至提升 3DGS 的视觉质量。 - 增强了对不准掩码的鲁棒性
尤其在 SAM/SAM2 掩码不稳定时仍能得到干净的边界。 - 设计两阶段 SAM2 掩码生成方案
解决长序列目标跟踪不连续问题,提高分割监督质量。
下面是你提供的 Related Works(相关工作)部分的专业、准确、自然中文翻译。
我把每段按结构准确翻译,同时保持论文风格。
2. 相关工作(Related Works)
3D Gaussian Splatting(3DGS)
作为一种新兴的实时逆向渲染技术,3DGS [15] 已被证明在新视角合成任务中能够达到与 NeRF [26] 相当的高质量渲染效果,同时速度远快于 NeRF。当前关于 3DGS 的研究主要集中在以下方面的改进:
- 重建质量的提升 [7, 23, 44]
- 重建速度的加快 [10, 24]
- 存储占用的优化 [9, 19]
此外,也有一些工作致力于解决特殊场景,如动态场景 [20, 39] 和具有挑战性的输入数据 [5, 47]。
作为一种显式表示,3DGS 也为 3D 编辑 [6, 29, 40] 和 3D 生成 [21, 37] 提供了更多可能性。
而我们的工作重点是:
👉 在 3DGS 场景中实现具有清晰边界的 3D 分割。
3D 神经场景分割(3D Neural Scene Segmentation)
近年来,神经 3D 场景表示方法 [11, 15, 26, 36] 与 2D 基础模型 [2, 17, 30, 32, 41] 的迅速发展,显著增强了对 3D 场景的理解与交互能力。
这些方法的核心思想是:
利用 2D 基础模型,为 3D 表达学习除颜色外的额外属性,从而扩展到更多任务。
其中一个重要方向就是:
👉 3D 分割(3D segmentation)
早期的 NeRF [26] 作为隐式神经表示被广泛应用于 3D 分割任务 [4, 12, 13, 16, 22, 27, 31, 45]。
但由于隐式网络固有的耦合问题,这类方法在分离不同区域时存在挑战。
相比之下,3DGS 作为显式表示,更适合在 3D 分割中进行区域解耦,成为比 NeRF 更高效的选择。
基于 3DGS 的 3D 分割方法
目前在 3DGS 上的分割方法主要分为两类:
方法 ①:基于特征的分割(Feature-based) [8, 28, 35, 46]
代表方法包括:
● Grouping Gaussian [42]
学习每个 3D 高斯的 identity 编码,并将编码相同的高斯聚为同一类。
该方法通过 3D 空间一致性约束来规范 identity 编码的学习。
● SAGA [3]
向每个高斯中引入与尺度相关的特征,使模型能够在多尺度条件下提升分割效果。
方法 ②:基于掩码的分割(Mask-based) [4, 14, 34]
这类方法与本论文最接近。
● SAGD [14]
引入跨视角标签投票机制(cross-view label voting)以及高斯分解来提升前景质量。
● FlashSplat [34]
使用线性规划解决 2D 掩码的逆渲染问题,并通过引入 background bias 来删除边界附近的高斯。
核心区别一句话解释
| 方法类型 | 基于特征 Feature-based | 基于掩码 Mask-based |
|---|---|---|
| 语义来源 | 从 3DGS 本身学习特征 | 从 2D 分割模型(如 SAM2)获取分类信息 |
| 标签来源 | 不依赖 2D 掩码,自主学习聚类 | 强依赖 2D 掩码的质量 |
| 优势 | 独立于2D分割,不依赖 SAM | 标签准确性高(如果掩码好) |
| 缺点 | 特征学不好时会乱分 | 掩码错误会被放大成 3D 错误 |
| 重点问题 | 特征区分度 | 掩码边界准确度 |
方法 ①:基于特征的分割(Feature-based)**
核心思想:
让 3D 高斯自己学习“长得像什么”,按高斯特征自动聚类。
不用 SAM,不用掩码,不用任何 2D 标签。
相当于:
“你自己根据你的特征,分成不同的类。”
✔ 举例(最简单的例子)
假设你有一个房间的 3DGS,高斯看起来像这样:
- 桌子区域的高斯 → 特征相似
- 椅子区域的高斯 → 特征相似
- 墙壁区域的高斯 → 特征相似
Feature-based 的做法:
根据这些特征,自然聚成:
- cluster 1 = 椅子
- cluster 2 = 桌子
- cluster 3 = 墙
(没有人告诉它哪一个是椅子,只是特征相似就聚起来)
✔ Feature-based 的代表:
- Grouping Gaussian
- SAGA
- SparseConv 之类
方法 ②:基于掩码的分割(Mask-based)
核心思想:
用 2D 模型(如 SAM2)给每张图贴标签,再把这些标签投影到 3D 高斯上。
换句话说:
2D 决定 3D 的语义。
✔ 举例(特别清楚):
假设一张图里:
- SAM2 把椅子区域画成 Mask
- SAM2 把桌子区域画成 Mask
那么:
- 如果某个高斯投影到图片 = 落在椅子 mask → 它就是椅子
- 落在桌子 mask → 它就是桌子
这样所有高斯就被 2D mask 标注标签了。
✔ Mask-based 的代表:
- SAGD
- FlashSplat
- GaussianLabeling
- 多数 3DGS segmentation 方法
两类方法最大的本质差别
Feature-based
→ “让场景自己学会怎么分割”
→ 不依赖 2D,靠自身特征
Mask-based
→ “用 2D 结果直接告诉 3D应该怎么分割”
→ 非常依赖 SAM2 的边界质量
现有方法的不足
这些方法通常把“场景分割(segmentation)”与“场景重建(reconstruction)”分开处理,
并且忽略了 3D 高斯的体积属性,这会带来两个核心问题:
- 分割不准确
- 边界模糊、不清晰
我们的贡献
与现有方法不同,我们提出:
👉 联合优化语义(semantics)与纹理(texture)
以获得清晰的物体边界,同时保持整体视觉质量。
3. 方法(Method)

(我们用于 3DGS 的清晰物体边界分割方法的流程。在左侧,我们展示了我们的两阶段掩码生成方法,该方法利用 SAM 基于文本提示对图像序列进行掩码预测,以获取感兴趣区域的掩码。图像和掩码为 3DGS 的细化提供监督。在右侧,对于重建的 3DGS 场景,我们联合且交替地优化掩码和纹理。对于掩码优化,执行边界自适应高斯分裂以细化边界结构。)
在本节中,我们首先在第 3.1 节介绍 3D Gaussian Splatting(3DGS)的基本原理,以明确其光栅化(rasterization)过程。在第 3.2 节中,我们将详细阐述如何联合优化语义与纹理,其核心是基于掩码梯度统计的边界自适应 Gaussian 分裂。最后,在第 3.3 节中介绍基于 SAM2 的两阶段掩码生成方式。
图 2 展示了我们提出的 COB-GS 的整体流程。
3.1. 预备知识:3D Gaussian Splatting
3D Gaussian Splatting(3DGS)[15] 是一种新兴的实时辐射场渲染技术,其渲染质量可与 NeRF 相媲美。由于其是一种显式场景表示,因此为场景分割与编辑提供了新的可能性。
给定一组输入视图
{ I v } \{ I^v \} {Iv}
及其对应的摄像机位姿,3DGS 通过学习一组高斯集合
{ G i } \{ G_i \} {Gi}
来表示整个场景。
在原始 3DGS 中,第 i 个 3D 高斯原语可以表示为:
G i = { x i , s i , q i , o i , c i } G_i = \{ x_i, s_i, q_i, o_i, c_i \} Gi={xi,si,qi,oi,ci}
其中:
- x i ∈ R 3 x_i \in \mathbb{R}^3 xi∈R3:高斯中心位置
- s i ∈ R 3 s_i \in \mathbb{R}^3 si∈R3:尺度
- q i ∈ R 4 q_i \in \mathbb{R}^4 qi∈R4:旋转四元数
- o i ∈ R o_i \in \mathbb{R} oi∈R:不透明度
- c i ∈ R 48 c_i \in \mathbb{R}^{48} ci∈R48:颜色(包括 SH 系数)
渲染过程
渲染时,所有 3D 高斯首先投影到图像平面,成为 2D 高斯。
位于“共享空间(shared space)”中的这些投影高斯随后以像素块并行访问的形式被处理。
具体来说,在渲染一个像素时,传统的 α 混合(alpha compositing)会将各个 2D 高斯的目标属性 p i p_i pi(如颜色、深度或语义特征)融合到像素空间中:
像素颜色公式:
公式
P = ∑ i = 1 N p i α i ∏ j = 1 i − 1 ( 1 − α j ) = ∑ i = 1 N p i α i T i (1) P = \sum_{i=1}^{N} p_i \alpha_i \prod_{j=1}^{i-1} (1 - \alpha_j)= \sum_{i=1}^{N} p_i \alpha_i T_i\tag{1} P=i=1∑Npiαij=1∏i−1(1−αj)=i=1∑NpiαiTi(1)
其中:
α i _i i(第 i 个高斯的影响权重)来自于:
- 高斯本身的不透明度
- 以及其 2D 投影与像素中心位置的距离(指数衰减)
T i _i i 表示透射率(Transmittance):
T i = ∏ j = 1 i − 1 ( 1 − α j ) T_i = \prod_{j=1}^{i-1} (1 - \alpha_j) Ti=j=1∏i−1(1−αj)
含义:
👉 表示光线穿过前 i − 1 i-1 i−1 个高斯后,能传递到第 i 个高斯的 “透明度分数”。
等价于:
“前面那些高斯挡住了多少光?剩下多少能到第 i 个高斯?”
3.2. 基于边界感知的物体分割(Boundary-Aware Object Segmentation)
为了高效处理,我们为每个高斯引入一个连续的掩码标签
m i ∈ ( 0 , 1 ) m_i \in (0, 1) mi∈(0,1)
其中:
- 当 m i m_i mi 接近 1 时,表示第 i 个高斯对于物体分割是必要的;
- 当 m i m_i mi 接近 0 时,表示该高斯属于背景。
类似于颜色渲染过程,这些 3D 高斯的掩码标签通过 alpha 混合方式组合,最终得到 2D 像素空间的掩码结果 M render M_{\text{render}} Mrender:
M render = ∑ i = 1 N m i α i ∏ j = 1 i − 1 ( 1 − α j ) = ∑ i = 1 N m i α i T i (2) M_{\text{render}} = \sum_{i=1}^N m_i \alpha_i \prod_{j=1}^{i-1}(1 - \alpha_j) = \sum_{i=1}^N m_i \alpha_i T_i \tag{2} Mrender=i=1∑Nmiαij=1∏i−1(1−αj)=i=1∑NmiαiTi(2)
受 SA3D [4] 启发,我们采用类似的损失函数用于监督掩码标签的训练过程:
L mask = ∑ v ∑ j , k [ M j k v ⋅ M render v + ( 1 − M j k v ) ⋅ M render v ] (3) L_{\text{mask}} = \sum_{v} \sum_{j,k} \left[ M^{v}_{jk} \cdot M^{v}_{\text{render}} + (1 - M^{v}_{jk}) \cdot M^{v}_{\text{render}} \right] \tag{3} Lmask=v∑j,k∑[Mjkv⋅Mrenderv+(1−Mjkv)⋅Mrenderv](3)
其中:
- M j k v ∈ { 0 , 1 } M^{v}_{jk} \in \{0, 1\} Mjkv∈{0,1} 是视角 v 下像素 (j,k) 的 GT 掩码;
- 掩码生成方法将在 3.3 节中介绍。
与 SA3D 不同,我们将掩码标签限制在 m i ∈ ( 0 , 1 ) m_i\in(0,1) mi∈(0,1)。
根据 alpha 混合中所有采样高斯满足
0 < ∑ i α i T i < 1 0 < \sum_i \alpha_i T_i < 1 0<i∑αiTi<1
可推导出
0 < ∑ i m i α i T i < 1 0 < \sum_i m_i \alpha_i T_i < 1 0<i∑miαiTi<1
从而确保 L mask L_{\text{mask}} Lmask 能稳定收敛。
此外,我们消除了 SA3D 中依赖超参数的负损失项设计,转而强调对背景的学习,从而实现真正的 3D 分割,而不仅仅是前景提取。
补充: 1)标准(推荐) — 像素级二元交叉熵(BCE)
对每个视角 v v v、像素 ( j , k ) (j,k) (j,k):
$$
L_{\text{mask}}
= - \sum_v \sum_{j,k}
\Big[, M^v_{jk}\log \hat M^v_{jk}
- (1-M^v_{jk})\log(1-\hat M^v_{jk}) ,\Big]
$$
其中 M ^ j k v = M render v ( j , k ) ∈ ( 0 , 1 ) \hat M^v_{jk}=M^v_{\text{render}}(j,k)\in(0,1) M^jkv=Mrenderv(j,k)∈(0,1)。
- 数值上稳定时要加 ϵ \epsilon ϵ 避免 log 0 \log 0 log0(例如用
torch.clamp)。 - 这是常规二分类监督,梯度方向会把 M ^ \hat M M^ 推向 GT M M M。
PyTorch 伪代码(高层)
# M_gt: [V,H,W] (0/1)
# M_render: [V,H,W] (来自渲染, in (0,1))
eps = 1e-8
loss = - (M_gt * torch.log(M_render.clamp(min=eps))
+ (1-M_gt) * torch.log((1-M_render).clamp(min=eps)))
loss = loss.sum() # 或 mean()
loss.backward() # autograd 会把梯度传回 m_i(因为 M_render = f(m_i))
- 简化线性版本(用于手推导导数,论文中常用的“推向真值”形式)
单像素损失可以写成(等价于把预测“推向”GT,但是比 BCE 更线性,方便演示):
ℓ j k v = M j k v ( 1 − M ^ j k v ) + ( 1 − M j k v ) M ^ j k v . \ell_{jk}^v = M_{jk}^v(1 - \hat M_{jk}^v) + (1-M_{jk}^v)\hat M_{jk}^v. ℓjkv=Mjkv(1−M^jkv)+(1−Mjkv)M^jkv.
合并可得
ℓ j k v = ( 1 − 2 M j k v ) M ^ j k v + const. \ell_{jk}^v = (1-2M_{jk}^v)\,\hat M_{jk}^v + \text{const.} ℓjkv=(1−2Mjkv)M^jkv+const.
对某个高斯的参数 m i m_i mi 用链式法则:
∂ ℓ j k v ∂ m i = ( 1 − 2 M j k v ) ∂ M ^ j k v ∂ m i = ( 1 − 2 M j k v ) α i T i , \frac{\partial \ell_{jk}^v}{\partial m_i} = (1-2M_{jk}^v)\,\frac{\partial \hat M_{jk}^v}{\partial m_i} = (1-2M_{jk}^v)\,\alpha_i T_i, ∂mi∂ℓjkv=(1−2Mjkv)∂mi∂M^jkv=(1−2Mjkv)αiTi,
于是当 M = 1 M=1 M=1 得到 − α i T i -\alpha_iT_i −αiTi,当 M = 0 M=0 M=0 得到 + α i T i +\alpha_iT_i +αiTi,与论文式(4) 一致。
说明:此形式不是严格的 BCE,但常用于解释梯度符号和简单推导;实际训练推荐用 BCE(第1条)。
- 为什么用 BCE 更好?
- 对概率建模合理(最大似然)。
- 对极端错误(预测接近0而GT=1,或预测接近1而GT=0)有更大惩罚,训练更稳健。
- autograd 自动把梯度传回
m_i,你不必手动推导每个像素的 α i T i \alpha_iT_i αiTi(但推导有助理解)。
- 如果你要在训练里显式用导数信息(例如做边界判定)
- 训练时用 BCE 或上面线性 loss;
- 同时可以按像素计算每个高斯在该视角/像素的
α_i T_i贡献并统计正类/负类次数 N + , N − N^+, N^- N+,N−,用式(6) 的mask_sig判断一致性(是否为边界高斯),这和训练 loss 并不冲突,而是做高斯拆分/自适应处理的策略性量化信号。
3.2.1. 边界自适应 Gaussian 分裂(Boundary-Adaptive Gaussian Splitting)
原始 3DGS 依赖 RGB 监督,缺乏物体级别的语义信息,因此高斯会根据冻结的几何与纹理形状形成模糊的边界区域。
这样的“语义模糊”高斯会导致边界分割不清晰,因此必须识别并分裂这些高斯以获得干净的边界。
为此,我们不采用现有方法 [14, 34] 中效率极低的前向投票机制,而是在掩码优化阶段,依据掩码标签梯度来识别语义模糊高斯。
具体来说,对于视角 v 下像素 (j,k),损失关于 m i m_i mi 的导数如下:
d L j k , m a s k v d m i = { − α i T i , if M j k v = 1 α i T i , if M j k v = 0 (4) \frac{dL^{v}_{jk,mask}}{dm_i} = \begin{cases} -\alpha_i T_i, & \text{if } M^{v}_{jk} = 1 \\ \alpha_i T_i, & \text{if } M^{v}_{jk} = 0 \end{cases} \tag{4} dmidLjk,maskv={−αiTi,αiTi,if Mjkv=1if Mjkv=0(4)
在优化过程中,梯度是以视角 v 为单位计算的,而高斯本身具有体积属性,因此其梯度会受到该视角下多个像素的影响:
d L m a s k v d m i = ∑ j = 1 N v , i + ( − α j T j ) + ∑ j = 1 N v , i − ( α j T j ) (5) \frac{dL^{v}_{mask}}{dm_i} = \sum_{j=1}^{N^{+}_{v,i}} (-\alpha_j T_j) + \sum_{j=1}^{N^{-}_{v,i}} (\alpha_j T_j) \tag{5} dmidLmaskv=j=1∑Nv,i+(−αjTj)+j=1∑Nv,i−(αjTj)(5)
其中:
- N v , i + N^{+}_{v,i} Nv,i+:视角 v 中,第 i 个高斯收到的正类监督次数(mask = 1)
- N v , i − N^{-}_{v,i} Nv,i−:收到的负类监督次数(mask = 0)
因此,仅依赖某一视角的累计梯度无法有效区分模糊边界高斯,而梯度符号则反映了监督信号的类别。
基于此关系,我们为每个高斯引入一个变量,表示监督信号的一致性强度:
mask_sig v , i = ∣ N v , i + − N v , i − N v , i + + N v , i − + ϵ ∣ (6) \text{mask\_sig}_{v,i} =\left| \frac{ N^{+}_{v,i} - N^{-}_{v,i} }{ N^{+}_{v,i} + N^{-}_{v,i} + \epsilon } \right| \tag{6} mask_sigv,i=
Nv,i++Nv,i−+ϵNv,i+−Nv,i−
(6)
其中 ϵ \epsilon ϵ 是一个小常数。
当 mask_sig 越接近 0,表示监督信号越不一致(即边界区域)。
在掩码优化过程中,我们将 mask_sig 小于阈值 δ 的高斯识别为语义模糊的边界高斯集合:
{ G i } B = { G i ∣ i ∈ I ∧ 1 V ∑ v = 1 V mask_sig v , i < δ } (7) \{ G_i \}_{B} =\left\{ G_i \mid i \in I \ \wedge \ \frac{1}{V} \sum_{v=1}^{V} \text{mask\_sig}_{v,i} < \delta \right\} \tag{7} {Gi}B={Gi∣i∈I ∧ V1v=1∑Vmask_sigv,i<δ}(7)
在分裂过程中,我们借鉴 3DGS 的原方法:
- 先移除尺度很小的高斯(无需分裂)
- 对于剩余较大的高斯,将其替换为两个更小的高斯
- 新高斯的位置根据原高斯的概率密度函数(PDF)进行采样
补充: 梯度的定义
在深度学习中,梯度表示损失对参数的变化率:
∂ L ∂ m i < 0 ⇒ L 随 m i 增加而下降 \frac{\partial L}{\partial m_i} < 0 \quad \Rightarrow \quad L \text{ 随 } m_i \text{ 增加而下降} ∂mi∂L<0⇒L 随 mi 增加而下降
而梯度下降(gradient descent)的更新规则是:
m i ← m i − η ∂ L ∂ m i m_i \gets m_i - \eta \frac{\partial L}{\partial m_i} mi←mi−η∂mi∂L
所以:
- 如果 ∂ L ∂ m i < 0 \frac{\partial L}{\partial m_i} < 0 ∂mi∂L<0(负数)
→ 更新公式变成 m i ← m i − ( − ∣ grad ∣ ) = m i + η ∣ grad ∣ m_i \gets m_i - (-|\text{grad}|) = m_i + \eta|\text{grad}| mi←mi−(−∣grad∣)=mi+η∣grad∣
→ m_i 会增加 - 如果 ∂ L ∂ m i > 0 \frac{\partial L}{\partial m_i} > 0 ∂mi∂L>0(正数)
→ 更新公式 $m_i \gets m_i - \eta|\text{grad}| $
→ m_i 会减小
3.2.2. 基于边界引导的场景纹理修复(Boundary-Guided Scene Texture Restoration)
现有方法或直接删除语义模糊的边界高斯 [4, 34],或仅优化前景高斯的尺度 [14]。
这些粗糙的处理方式会损害渲染质量,并未充分利用物体级语义信息来提升纹理学习。
为此,我们提出的关键 insight 是:
精准的物体边界既能提升 3D 分割准确性,也能改进场景纹理优化质量。
如图 3 所示,我们交替学习:
- 掩码标签
- 几何与纹理
在掩码阶段:
- 物体级语义引导高斯收缩边界区域
- 降低边界模糊体积
在纹理优化阶段:
- 准确的边界结构反过来提升纹理质量,改善新视角渲染
用于几何和纹理学习的损失函数与原始 3DGS 一致:
L r g b = ( 1 − λ ) L 1 + λ L D-SSIM (8) L_{rgb} = (1 - \lambda)L_1 + \lambda L_{\text{D-SSIM}} \tag{8} Lrgb=(1−λ)L1+λLD-SSIM(8)
在交替优化中:
- 冻结几何和纹理,最小化 L m a s k L_{mask} Lmask → 优化掩码
- 冻结掩码标签,最小化 L r g b L_{rgb} Lrgb → 恢复几何纹理(消除模糊)
- 是循环执行的过程,逐渐融合两类信息,使 3DGS 逐步趋于正确的几何和语义结构
补充: COB 的做法:
第一步:冻结纹理 → 用 mask 调整边界
- 边界高斯被拆分
- 前景和背景的高斯被分开
- 苹果轮廓变 sharp
第二步:冻结掩码 → 优化 RGB 纹理
因为边界清晰了,颜色可以正确涂到前景:
- 苹果表面纹理锐利
- 桌子的纹理不被污染
再回来进行下一轮掩码更新
因为纹理更清楚,掩码能识别更细的边界
……
如此循环数次 → 逐渐变完美。
所以这个交替优化流程的核心逻辑是:
| 阶段 | 动作 | 带来的好处 |
|---|---|---|
| 掩码阶段 | 调整语义边界 → 分裂模糊高斯 | 形状清晰、几何锐利 |
| RGB阶段 | 根据新几何恢复纹理 | 颜色正确归属、减少模糊 |
两者互相提升,越学越准。
3.2.3. 针对错误掩码的鲁棒性(Robustness Against Erroneous Masks)
通过交替优化,本应逐渐减少语义模糊高斯的数量。
然而实验发现:
- 大的模糊高斯是减少了
- 但仍有大量“小而模糊”的边界高斯残留
这是因为:
- 2D 掩码来自 SAM2,本身是离散的
- 多视角之间边界预测不一致
- 一些边界高斯永远无法收敛到稳定的标签
不同于 FlashSplat [34] 那种粗暴地同时处理边界模糊和体积问题,我们的方法利用联合优化的最终阶段专门增强对错误掩码的鲁棒性。
具体做法:
- 根据 mask_sig + 高斯尺度 s,识别出“很小,但语义混乱”的边界高斯
- 将这些高斯删除
这些高斯对渲染质量几乎没有影响,但在 3D 分割时会破坏边界连续性,因此必须移除(图 4)。
3.2.4. 多物体 3D 分割(Multi-Object 3D Segmentation)
真实场景通常包含多个物体。
Feature-based 方法需要长时间训练来为所有高斯学习特征,并且只能学习粗粒度分割(例如“熊”和“熊头”难以同时区分)。
Mask-based 方法在全场景标签学习中也有类似问题。
因此我们提出:
👉 把多物体分割拆成多个顺序进行的单物体分割任务。
具体方法:
- 为每个高斯增加一个整数存储(object id)
- 利用实时光栅化加速单物体分割
- 对 K 个物体分别定义 K 个掩码集合 { M v } k \{M^v\}_k {Mv}k
对于第 k 个物体,我们进行:
- 边界自适应 Gaussian 分裂
- 与纹理联合优化
- 得到新的 3DGS { G i } k \{G_i\}_k {Gi}k
最终对每个物体各执行一次快速掩码学习,即可得到清晰、稳健的多物体分割结果。
**3.3 两阶段掩码生成(Two-Stage Mask Generation)
基于掩码的 3DGS 分割方法需要先在输入图像中生成目标物体的掩码(mask)。在我们的方法中,监督数据由 V 张输入图像 {Iᵥ} 及其对应的 二维二值掩码 {Mᵥ} 组成。
随着 SAM2 等基础模型的发展,模型已经能够在图像序列中生成具有一致性的掩码,从而显著提升了跨帧的稳定性。然而,SAM2 在处理长序列时仍存在问题:
由于视觉信息的断裂,它可能无法正确推断严重被遮挡的目标物体,导致掩码的不连续。
为解决这一局限,我们提出了一个基于文本提示(text prompts)的两阶段掩码生成方法。
第一阶段:粗掩码生成(Coarse Stage)
- 我们使用 Grounding-DINO 在文本置信度较低的情况下,从图像中提取初步的框提示(box prompts)。
- 这些框提示被应用于整个序列,用来生成初始的粗掩码预测。
(粗掩码的作用:确保所有帧都至少有一个基本的掩码,即使某些帧的目标比较模糊、被遮挡。)
第二阶段:细致掩码生成(Fine-grained Stage)
- 在这一步,我们对那些在粗阶段中掩码预测中断或出错的子序列重新处理。
- Grounding-DINO 会在文本置信度较高的情况下重新提取更准确的框提示。
- 使用这些更精确的提示,对子序列进行重新分割,生成最终的高质量掩码。
(细掩码的作用:修复粗阶段遗漏、断裂、或被遮挡部分导致的掩码错误。)
补充: Grounding-DINO 是什么?
一句话:Grounding-DINO = 能听懂文字的目标检测器。
它的功能是:
“你告诉我一句话,我帮你找到图里对应的东西。”
例如你输入:
a yellow backpack
Grounding-DINO 会在图上框出所有“黄色背包”的 bounding box。
它不是人工操作,是 全自动的 AI 模型。
✔️ Grounding-DINO 全自动生成框。
COB-GS 的 pipeline 是:
- 输入:文本提示
- 输出:自动检测框
没有人工画框,没有人工改框。
所以不会“麻烦”,对人来说是 全自动 的。
例如:
你输入一句:
cat
Grounding-DINO 会自动帮你找到图里的猫。
Q:那为什么要粗阶段和细阶段?(重点)
这是因为在视频或多帧图像里:
- 有些帧物体很明显 → 容易检测(高置信度)
- 有些帧物体被遮挡或模糊 → 难检测(低置信度)
Grounding-DINO 的检测置信度会波动。
于是 COB 采用两阶段策略:
第一阶段:粗掩码(Coarse Stage)
用 低置信度 检测:
“不管你检测得准不准,先把能找到的全部找到。”
比如:
- 检到一半没检到另一半
- 框不精确,但至少有个大概位置
Q:为什么这么做?
因为:
视频中有时物体模糊,必须降低门槛,否则会漏掉关键帧。
粗阶段的目标不是准确,而是:
保证每帧至少有点东西,不要断掉。
第二阶段:细掩码(Fine Stage)
只对“粗阶段失败的地方”重新检测。
使用 高置信度 的检测(更严格标准):
- 框更精准
- 位置更准
- 语义理解更好
这样:
- 粗阶段保证“不丢帧”
- 细阶段保证“高质量”
两者互补。
Q: 为什么不是直接用高置信度?
因为高置信度会:
- 在模糊帧中检测失败
- 导致整段中断
- 无法生成连续 mask
所以要先粗、再细。
┌────────────────────┐
│ 输入图像序列 {Iv} │
└─────────┬──────────┘
│
▼
┌────────────────────────────────┐
│ 第 1 阶段:粗分割(Coarse) │
└────────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ Grounding-DINO(低置信度) │
│ 文本提示:如 "toy bear" │
└───────┬─────────────────────┘
│ 生成粗糙 box prompts
▼
┌─────────────────────────────┐
│ SAM2 根据 box 生成粗 mask │
└───────┬─────────────────────┘
│
▼
┌──────────────────────────────────────────┐
│ 粗分割结果:部分帧正确,部分帧被遮挡或失败 │
└───────────┬──────────────────────────────┘
↙ ↘
正常帧 失败帧(mask断掉)
│ │
▼ ▼
┌──────────────────────────┐ ┌───────────────────────────┐
│ 保留粗 mask 作为最终结果 │ │ 进入第 2 阶段:精修(Fine) │
└──────────────────────────┘ └───────────┬─────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Grounding-DINO(高置信度、更严格) │
│ 用文本提取更准确 box(仅针对失败帧)│
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ SAM2 再次根据高质量 box 生成 mask │
└─────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ 最终生成完整、高一致性、高质量的 {Mv} 掩码集 │
└────────────────────────────────────────────────────────┘
方法(Method)的大流程 Pipeline 图:
- 输入图像 → 生成掩码 → 联合优化
- Boundary-adaptive splitting(边界自适应高斯拆分)
- Texture & Geometry 交替优化
- 最终得到清晰边界的 3DGS 分割结果
COB-GS:Method 总流程 Pipeline(超清晰流程图)
┌──────────────────────────────┐
│ 输入图像序列 {Iv} │
└───────────────┬──────────────┘
│
▼
┌────────────────────────────────────────┐
│ 3.3 Two-Stage Mask Generation │
│ (Grounding-DINO + SAM2 生成 {Mv}) │
└───────────────┬────────────────────────┘
│
▼
得到所有视角的 2D 掩码 Mv
│
▼
┌────────────────────────────────────────────┐
│ 初始化 3DGS:学习初始高斯 {Gi} │
└───────────────┬────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 3.2 Boundary-Aware Segmentation │
└──────────────────────┬────────────────────────────────────┘
│
▼
┌───────────────────────────┐
│ 1) 优化 mask label mi │
│ 使用 Lmask │
└──────────┬────────────────┘
│
▼
┌──────────────────────────────────────────────────────┐
│ 2) 计算 mask gradient,找出语义模糊的 Gaussians {Gi}B │
│ • 判断每个高斯是否处于“语义边界” │
│ • 使用 mask_sig 测量监督信号一致性 │
└──────────┬──────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 3) Boundary-Adaptive Gaussian Splitting │
│ 对模糊边界高斯进行“边界自适应拆分”: │
│ • 排除小高斯 │
│ • 大高斯 → 拆成两个更小高斯 │
│ • 位置从 PDF 中随机采样 │
└──────────────────┬──────────────────────────────────────────┘
│
▼
高斯集合得到结构性增强 → 边界更清晰、更锐利
│
▼
┌────────────────────────────────────────────────────────┐
│ 4) 冻结 mask → 优化纹理与几何(Lrgb) │
│ • 使用原始 3DGS 损失(L1 + SSIM) │
│ • 在更准确的边界上训练纹理,提升渲染质量 │
└──────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Mask 优化 ↔ Texture/Geometry 优化(交替迭代) │
│ • 利用语义提升几何与纹理 │
│ • 利用几何纹理提升 mask 清晰度 │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ 5) Robustness Against Wrong Masks │
│ 根据 mask_sig + 高斯尺度 s 删除细小模糊高斯 │
└─────────────────────┬────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ 6) Multi-Object Segmentation │
│ 对多个物体:逐物体重复上面流程,逐次 refine 整个场景 │
└────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────┐
│ 输出:边界清晰、可控的 3DGS 场景分割 │
└──────────────────────────────────────────┘
一句话总结整个方法
先用 Grounding-DINO + SAM2 得到 2D masks →
优化 3D 高斯的 mask label →
找出边界模糊的高斯 → 边界自适应拆分 →
交替学习 mask 与纹理 → 边界更锐利 & 渲染更清晰!
4. 实验
我们从定量与定性两个方面验证了方法的有效性。
在定量评估中,我们使用 NVOS 数据集 [33],该数据集源于 LLFF 数据集,并提供具有精确物体边缘的真实遮罩(GT mask)。
在定性评估中,我们使用来自 LLFF [25]、MIP-360 [1]、T&T [18] 和 LERF [16] 的多种场景。这些数据集包含真实世界的复杂场景,包括室内与室外场景,以及前向与环绕式场景。实现细节与更多实验结果见附录。
4.1. 定量结果
NVOS 数据集包含八个场景。每个场景都包含一个参考视角和一个带有清晰真实遮罩的目标视角。我们的方法使用参考视角的标注遮罩提取提示点(prompt points),再使用 SAM2 将这些点传递至其他视角以生成遮罩。
分割评估。
我们提取与目标物体对应的高斯集合,并渲染目标视角的 2D mask。随后计算渲染 mask 与 GT mask 的平均 IoU 和平均精度。结果如表 1 所示。
NeRF 基方法由于场景表示不足,分割细节有限;3DGS 基于特征的方法因高维特征模糊导致物体边界不平滑。与我们最相似的是基于 mask 的 3DGS 方法。
SAGD [14] 对错误的 GT mask 鲁棒性较差,常在边界产生小高斯伪影;FlashSplat [34] 虽减少边缘模糊,但破坏了物体结构完整性。
视觉评估。
由于缺少物体分割结果的参考图像,我们使用 CLIP-IQA [38] —— 一种无参考图像质量评价方法,评估图像与文本提示的一致性。我们设置了三个针对边界质量的文本提示,综合评估分割质量(表 2)。
SAGD [14] 和 FlashSplat [34] 粗糙地处理 Gaussians,为了分割精度牺牲视觉质量;SA3D [4] 出现明显的边界模糊 Gaussians。
我们的方法在各项视觉指标上均表现最佳。
表 1. NVOS 数据集上的分割定量结果
| 类别 | 方法 | mIoU (%) | mAcc (%) |
|---|---|---|---|
| NeRF-based | NVOS [33] | 70.1 | 92.0 |
| ISRF [12] | 83.8 | 96.4 | |
| SA3D [4] | 90.3 | 98.2 | |
| OmniSeg3D [43] | 91.7 | 98.4 | |
| 3DGS-based | SAGD [14] | 90.4 | 98.2 |
| SA3D-GS [4] | 90.7 | 98.3 | |
| SAGA [3] | 90.9 | 98.3 | |
| FlashSplat [34] | 91.8 | 98.6 | |
| COB-GS (ours) | 92.1 | 98.6 |
表 2. NVOS 数据集上的视觉质量评价结果
| 方法 | Clear / Unclear Boundary | Smooth / Noisy Boundary | Complete / Mutilated Object |
|---|---|---|---|
| SAGD [14] | 0.621 | 0.631 | 0.788 |
| SA3D-GS [4] | 0.658 | 0.718 | 0.835 |
| FlashSplat [34] | 0.626 | 0.644 | 0.829 |
| COB-GS (ours) | 0.682 | 0.731 | 0.859 |
4.2. 定性结果
我们对分割后的物体和移除物体后的背景进行了可视化,包括单物体和多物体分割场景。我们将本方法与当前 3DGS 分割领域的 SOTA 方法进行了对比。
在单物体分割中,我们选择了 T&T 数据集中的 Truck 场景和 MIP-360 数据集中的 Kitchen 场景(见图 5)。为保证公平性,所有方法使用一致的 mask。我们对比不同方法渲染的背景与物体视图。
SA3D-GS [4] 在物体边界处出现明显模糊,高斯不平衡的损失函数还会降低背景质量;
SAGD [14] 会在前景产生细小边缘高斯伪影;
FlashSplat [34] 虽减少边缘模糊,但会误删语义模糊的真实物体区域,例如 Truck 场景中的后视镜和积木桶。
相比之下,我们的方法提升了边界表示精度,同时在移除物体后尽量减小背景扭曲。可视化结果与表 2 的视觉质量评价相吻合。
此外,我们在 LERF 数据集的 Figurines 场景中展示了多物体分割能力(见图 6)。
分割中我们采用与 FlashSplat [34] 一致的文本提示 mask;而特征驱动的方法 SAGA [3] 使用点提示。两者均出现边界不清晰、背景模糊的问题。
相比之下,我们的方法在保持背景清晰的同时,实现了显著更清晰的物体边界。
4.3. 消融实验
4.3.1. 语义与纹理的联合优化
直观上,仅依赖高斯分裂是不够的。虽然该方法能够使高斯适应物体边界,但会破坏视觉质量。
我们在 NVOS 数据集上进行了消融实验,以探索语义与纹理之间的关系,结果如表 3 所示。
当仅应用基于边界的自适应高斯分裂时,场景纹理质量显著下降。
相比之下,联合优化 mask 标签与纹理既提升了场景分割精度,也保持了场景的视觉质量。为了对比,我们在仅使用纹理优化时运行了相同的迭代次数,但效果更差。
图 7 的可视化结果显示,基于 mask 标签统计的边界高斯分裂可以提升物体边缘处的纹理质量,同时保持前景与背景的独立性。
表 3. NVOS 数据集上的纹理质量结果(PSNR)
(Vanilla 表示原始场景;M.O 为 mask 优化;T.O 为纹理优化;M.O+T.O 为两者联合优化)
| 方法 | Fern | Flower | Fortress | Horns C | Horns L | Leaves | Orchids | Trex | Mean |
|---|---|---|---|---|---|---|---|---|---|
| Vanilla | 24.26 | 26.75 | 29.43 | 22.24 | 22.24 | 15.07 | 19.82 | 24.68 | 23.06 |
| M.O | 23.66 | 26.49 | 29.05 | 21.31 | 22.13 | 15.05 | 19.80 | 23.35 | 22.61 |
| T.O | 24.26 | 26.69 | 29.45 | 22.27 | 22.27 | 15.06 | 19.83 | 24.71 | 23.07 |
| M.O+T.O | 24.29 | 26.82 | 29.48 | 22.24 | 22.25 | 15.09 | 19.91 | 24.97 | 23.13 |
PSNR 是什么?
PSNR 衡量的是:
原始图像和重建图像(或生成图像)之间的差异程度。
简单说:
- 原始图像和生成/重建图像越接近 → PSNR 越高
- PSNR 高意味着“纹理越真实,噪声越少”
它常用来评估 NVOS 数据集上的纹理重建质量、超分辨率、图像压缩等
4.3.2. 错误遮罩的鲁棒性
联合优化后,由于预测 mask 中的误差,分割边界附近仍存在小的模糊高斯,如图 4 所示。
为研究此现象,我们在 NVOS 数据集上进行了消融实验,如表 4 所示。
结果显示:
- 不使用高斯分裂时,大量模糊高斯导致指标最低;
- 仅使用高斯分裂时,分割指标提升,但纹理质量下降;
- 联合优化提升了纹理质量,但分割精度略有下降;
- 进一步加入对微小高斯的鲁棒处理后,性能最佳。
表 4. NVOS 数据集消融结果
(BAGS = 边界自适应高斯分裂;BGTR = 基于边界的纹理恢复;RAEM = 错误遮罩鲁棒性模块)
| 组件 | mIoU (%) | mAcc(mean Accuracy,平均精度) (%) |
|---|---|---|
| (三个组件均无) | 91.2 | 98.3 |
| BAGS ✓ | 91.9 | 98.5 |
| BAGS ✓ + BGTR ✓ | 91.9 | 98.4 |
| BAGS ✓ + BGTR ✓ + RAEM ✓ | 92.1 | 98.6 |
mIoU(mean IoU)是什么?
当有多个类别或者多个样本时,我们通常取 所有类别/样本的平均 IoU(交并比,衡量两个区域的重叠程度),就是 mIoU:
mIoU = 1 C ∑ c = 1 C IoU c \text{mIoU} = \frac{1}{C} \sum_{c=1}^{C} \text{IoU}_c mIoU=C1c=1∑CIoUc
- C C C 是类别数
- IoU c \text{IoU}_c IoUc 是每个类别的 IoU
用途: 多类分割或多物体分割时的综合评价指标。
图 8 展示了在 Fortress 场景中的消融结果。随着 δ 的不断增大,模糊边界高斯数量不断减少,但高斯数量迅速增加。
4.3.3. 模糊监督阈值
在我们的方法中,δ 参数作为阈值,用于控制模糊 Gaussians 的数量。随着 δ 的增大,对语义模糊高斯的区分能力加强,从而导致更多的分裂。
我们在 Fortress 场景上进行了 δ 的消融实验(图 8)。结果表明:
- 较大的 δ 能有效减少模糊边界高斯、提升分割清晰度;
- 但也会在物体边缘引入大量额外高斯;
- 因此 δ 的选择十分重要,其中 δ = 0.5 在大多数场景中表现良好。
5. 结论
本文提出了 COB-GS,一种 3DGS 精化与分割方法,能够清晰分割场景边界。
COB-GS 创新地联合优化语义与纹理,使二者互补提高。该过程由 边界自适应高斯分裂方法 提供支持。
具体包括:
- 语义优化阶段
通过语义梯度统计识别并分裂模糊高斯,使其与物体边界对齐。 - 纹理增强阶段
在精化后的边界结构上进一步提升场景纹理质量。
实验结果显示,该方法在 3D 分割任务上显著提高了性能,特别是在以下方面:
- 更清晰的物体边界
- 更准确的纹理
- 对错误遮罩更强的鲁棒性
目前,3D 场景重建仍存在漂浮伪影问题,这在分割后更为突出。未来工作应关注如何利用语义信息有效消除这些伪影。
更多推荐

所有评论(0)