Introduction
- 最新的方法是3D实力分割当成自底向上的流程:先打标签再聚类
- 网络输出点语义类别和中心偏移向量,再用聚类把同类别并且几何距离近的点合并成实例
- 聚类使用hardlabel(只取最大概率),往往造成
- IoU 很低:真‑柜子被拆成几块;
- 假阳性:错误语义区又生成了多余实例。
语义预测本身有误,柜子的一部分被预测成其他家具,如果直接聚类,柜子实例会剪掉一部分,IoU下降,另外错误的区域被聚成一个“其他家具”实例
- SoftGroup主要就是解决如何让语义误差传到实例的问题
- 它的关键点是:用 soft semantic score(每类的概率分布)做聚类,而不是只取最大值那个类(one-hot prediction)
相比硬标签聚类,更能恢复出完整、正确的实例掩码(如:整个柜子),之后Instance Classification对每个聚出来的实例 proposal 做分类(包括是否是背景),压制(suppress)那些由错误语义区域组成的实例,防止它们进入最终结果。
- 它的关键点是:用 soft semantic score(每类的概率分布)做聚类,而不是只取最大值那个类(one-hot prediction)
- 另外发现,具有错误语义预测的对象部分对于真正的语义类仍然具有合理的分数。
- SoftGroup 依赖于分数阈值来确定对象属于哪个类别,而不是参数最大值,这样一个点可以又多个语义组候选
- 用 soft score 聚类,比 hard label 更容易恢复出 语义上真实一致的实例,提高精度,如果有一个实例 proposal 是由语义错误区聚起来的,SoftGroup 会学会把它当背景抑制掉;
- 每个实例 proposal,如果它和某个 GT 实例 IoU 高 ⇒ 正样本,否则 ⇒ 负样本,训练时要 压低它的得分,不要输出它,然后还有一个 top‑down refinement 模块,用于精细调整正样本(形状、边界),抑制负样本(soft mask 压缩)
Background
Proposal-based Instance Segmentation
考虑了一种自上而下的策略,该策略生成区域建议,然后在每个提案中分割对象。
方法 | 核心思路 | 特点 |
---|---|---|
GSPN | 分析-合成生成 proposal + PointNet refinement | 面向高 objectness proposal |
3DSIS | RGB 多视图 + 点云几何融合 | 多模态联合 |
3D-BoNet | 直接预测 bbox + 二分类做 mask | 简洁高效,无需 anchor/NMS |
GICN | 高斯建模实例中心,采样生成实例 | 更 probabilistic 的建模方法 |
Proposal-based 方法有个重大问题:
- 点云中只有物体表面有点 → 比如空心的椅子、桌子只采样边缘;
- 这会导致 不容易准确地框住目标对象(proposal质量差);
Grouping-based Instance Segmentation
- SGPN:构造 点对点的相似度矩阵,基于特征相似性进行聚类
- JSIS3D:利用 条件随机场(CRF) 同时建模语义和实例标签通过联合优化输出实例,融合语义与实例一致性,但优化过程较复杂
- CRF 中每个节点表示一个像素或点,其标签由语义类别(如“树”)和实例编号(如“第2棵树”)共同构成。所以标签空间是二维的:“语义类 × 实例ID”。
- 构造联合损失函数或能量函数,包含:语义一致性项:同类点/像素应该有相同语义标签,实例分离项:不同物体的边界处标签应不同
- MTML:学习两种嵌入:特征嵌入(用于聚类),方向嵌入(用于方向一致性判断),使用 mean-shift 做聚类 → 提高精度
- Mean-Shift 的核心就是: “在密度函数上向最大值爬,直到收敛到峰值(mode)。”换句话说,它会把数据点沿着“梯度方向”不断移动,直到聚到某个高密度区域的中心。没有事先指定聚类个数,适用于发现未知数量的聚类中心。
- OccuSeg:利用点的“占据信息(occupancy)”引导图结构聚类,能更准确地构造 object segmentation
- PointGroup:用语义分割 + 几何 offset(偏移) 引导聚类,原始点集和偏移点集上聚类 → 互补增强
- HAIS:在 PointGroup 基础上改进:自动吸收周围碎片(absorbing fragments),学习实例内部的 mask 结构(intra-instance)
- SSTNet:核心内容:结构感知分组,先预处理为超点(superpoint),构建树结构(基于超点的邻接关系)遍历树并切分节点 → 得到实例
- Zhang的模型: 将每个点表示为一个 3D 高斯分布,聚类方法基于这些概率模型进行
Grouping 方法的缺点是: - 它依赖点的语义标签(比如 cabinet、chair 等);如果语义分割有误,后面的聚类会出错
我们的融合
第一步:bottom-up 阶段(改进的 grouping)
- 用 soft semantic score(即每个点属于各类的概率分布,而不是 one-hot 类别)
- 通过 soft score 进行 grouping,得到质量更好的 proposal
第二步:top-down 阶段(改进的 proposal)
- 对每个 proposal(分组):
- 如果是真正的实例 → 进一步 refine、优化边界;
- 如果是错误的分组 → 学习抑制(suppress)这些负样本;
Method
Point-wise Prediction Network
- 通过 voxelization 将无序点集转换为 有序稀疏体素网格
- 使用了 U-Net 架构的稀疏网络,构建在 Submanifold Sparse Convolution (SubMConv) 之上
- 之后进入两个分支
Semantic Branch
- 结构: 两层 MLP
- **输出:**语义得分矩阵
S = {s1, ..., sN} ∈ R^{N×N_class}
表示每个点属于每个类别的概率(可理解为softmax后的语义分类) - 创新点:
- 传统做法:语义分数取最大值转换为 one-hot → 再进行语义分组
- 本文做法:直接基于 soft 语义得分进行聚类,更柔性地表达相似度,支持不确定边界
Offset Branch
- 结构: 两层 MLP
- **输出:**
O = {o1, ..., oN} ∈ R^{N×3}
表示每个点到其对应实例几何中心的偏移向量 - 用途:
- 通过
p_i + o_i
将点平移到其预测中心 - 再基于这些中心化点进行空间聚类(如 mean shift、DBSCAN)
- 能提高实例分割的准确度,尤其是分辨相近实例边界
- 通过
loss
模型总损失 = 语义分支损失 L_{semantic} + 偏移分支损失 L_{offset}
- Semantic Loss:交叉熵损失(Cross-Entropy),目标是让每个点的语义预测 s_i(softmax之后的分类概率)尽可能接近其真实语义标签 s_i^*
- Offset Loss:L1 loss, o_i是网络预测的 offset 向量(从点到所属实例中心的方向),o_i^* 是真实的 offset 向量,
‖·‖_1
表示 L1 距离(绝对值) - 1{p_i}是一个 指示函数,表示点 p_i 是否属于某个实例:
- 若是前景点(属于某个实例),值为 1
- 若是背景点(不属于任何实例),值为 0
- 所以,只有前景点才会参与 offset 损失计算,另外,实例中心可能偏移较大,但重点是方向对,L1 处理效果更好
Soft Grouping
- 首先,偏移向量用于将点移动到相应的实例中心。
- 为了使用语义分数进行分组,我们定义了一个分数阈值τ来确定一个点属于哪个语义类,从而允许点与多个类相关联。
- 对于每个类,都筛选出高于阈值的点进行切片
- 对每个类别子集 P_c,执行基于空间距离的聚类:
- 遍历子集中的所有点
- 两点间的欧式距离(偏移后的)小于 bandwidth b 时,认为两点属于同一个实例,建立连接,
- 这个过程类似图构建,然后每个连通子图对应一个实例候选
- 将所有类别的实例候选集合合并,得到整个场景的实例预测结果
阈值的讨论
- 由于分组的实例提议的质量高度依赖于语义分割的质量,我们定量分析 τ 对语义预测的召回率和精度的影响。
召回率衡量真实属于类别j的点中,有多少被正确检测为属于类别 j(且得分大于阈值 \tau),准确率衡量预测为类别j 的点中,有多少真实标签也是j。
虚线(dashed lines) 表示基于硬语义预测(hard semantic prediction) 的召回率和准确率
- 通过硬语义预测,召回率为 79.1%,表明预测未涵盖类上超过 20% 的点。
- 当使用分数阈值时,召回率随着分数阈值的降低而增加。然而,小分数阈值也会导致低精度。
- 我们提出了一个自上而下的细化阶段来缓解低精度问题。精度可以解释为对象实例的前景点和背景点之间的关系。我们将阈值设置为 0.2,精度接近 50%,导致前景和背景点之间的比率以确保阶段是平衡的。
Top-Down Refinement
首先,每个 instance proposal 中的点(坐标 + 初始特征)被从整幅场景中索引提取出来,然后经过一个 backbone feature extractor(小型 U-Net),这一步提取点的上下文信息,并编码结构语义特征,得到的输出特征
Classification Branch
- 对实例内所有点的特征进行 全局平均池化(Global Average Pooling),得到一个向量描述该实例整体特征,通过一层多层感知机(MLP)输出实例的类别得分向量
- 输出:C = \{c_1, \ldots, c_K\} \in \mathbb{R}^{K \times (N_{class} + 1)}
其中,N_{class} 是类别数,+1 表示额外的背景类别或无效实例类别。
我们从分类分支的输出中直接推导出对象类别和分类置信度分数。 - SoftGroup 直接用分类分支的输出作为实例类别,通过聚合实例内所有点的特征,实现对整个实例的统一分类,避开了语义错误
Segmentation Branch
- 在SoftGroup上我们根据偏移矢量聚成了实例proposal,但这些通常会有一些背景点噪声,我们需要细化出真正的前景点
- 我们要做的在每个 instance proposal 内,为每个点预测一个 mask 值(前景概率)
- 是个两层的MLP,用来前景预测
Mask Scoring Branch.
使用和 classification branch 一样的结构
E={e_1,e_2,...,e_K}∈R^{K×Nclass},K个实例,第 k 个实例的每个点属于这个 mask 的概率。本质上是预测它的 mask 和真实 mask 的 IoU,通过乘法将掩码分数与分类分数相结合,得到最终的置信度分数。
Learning Targets
- 对每个模型生成的 proposal(来自 bottom-up):
- 若与任意 ground-truth 实例的 IoU > 0.5 ⇒ 标为 正样本;
- 否则 ⇒ 负样本(只参与分类分支的背景类训练)。
- 正样本要 分配给与之 IoU 最大的 ground truth 实例,用于生成后续标签。
- Classification Target
- 正样本:赋予其匹配到的 GT 实例的类别;
- 负样本:设为“背景类”。
- 分类输出类别数为
N_class + 1
(多了背景类)
- Segmentation Target和Mask Scoring Target仅在正样本上进行训练,其中Mask Scoring Target的过程模型要学会预测它自己的 mask 有多“准”(IoU 越高越好)
- 对所有proposal都计算交叉熵损失,监督分类分支;
- 仅在正样本上计算掩码的二分类交叉熵损失;
- 仅在正样本上计算mask评分的均方误差回归损失;
Multi-task Learning
整个模型的总损失是各个子任务损失的加权和
- 端到端训练整个网络,不需要分阶段训练;
- 多任务损失让不同分支互相促进,共同优化性能;
- 语义和偏移分支主要负责底层的点特征和实例聚类;
- Top-Down Refinement 分支负责对实例提议进行分类和细化。
Experiments
Experimental Settings
实验是在标准基准ScanNet v2[6]和S3DIS[1]数据集上进行的。
Evaluation Metric
- AP50:IoU阈值为50%时的平均精度
- AP25:IoU阈值为25%时的平均精度
- AP:IoU阈值从50%到95%,步长为5%的平均精度(即IoU=50%, 55%, ..., 95%的平均)
额外指标(针对 S3DIS 数据集)
- mCov(mean Coverage):平均覆盖率
- mWCov(mean Weighted Coverage):加权平均覆盖率
- mPrec(mean Precision):平均精度
- mRec(mean Recall):平均召回率
Implementation Details
该模型是使用 PyTorch 深度学习框架实现的,并使用 Adam 优化器 在 120k 次迭代上进行训练。批量大小设置为 4。学习率初始化为 0.001,并通过余弦退火 调度。体素大小和分组带宽 b 分别设置为 0.02m 和 0.04m。软分组τ的得分阈值设置为0.2。
在训练时,场景以250k的最大点数随机裁剪。在推理时,整个场景被输入网络而不进行裁剪。
对于点密度高的S3DIS,场景在裁剪前以1/4的比例随机下采样。在推理时,场景在输入到模型之前分为四个部分,然后将四个部分的输出合并得到最终结果。
Benchmarking Results
ScanNet v2.
- SoftGroup 在 ScanNet v2 隐藏测试集上取得了平均 AP50 达到 76.1%;
- 相比之前最强方法,提升了 6.2 个百分点,优势明显;
- 在 18 个类别中,SoftGroup 有 12 个类别取得了最好成绩,显示了强大的类别区分能力。
S3DIS
- 在 S3DIS 数据集的 Area 5 测试集和 6 折交叉验证上,SoftGroup 同样表现出更优的整体性能;
- Area 5 评测中,SoftGroup 达到了:AP: 51.6%, AP50: 66.1%
- 比第二名提升了 8.9%(AP)和 6.8%(AP50),优势显著
Segmentation and Detection Results
- 为了获得目标检测结果,我们遵循中的方法从预测点掩码中提取紧密的轴对齐边界框。
- 与 实例分割AP50、实例分割AP25、物体检测box AP50 和 物体检测box AP25 的第二好的相比,我们的方法取得了显着的改进,分别为 3.2、3.3、6.3 和 7.3(%)
Runtime Analysis
- SoftGroup 推理时间约为 345毫秒(ms) 每个扫描场景,比最快模型只多了6ms
Qualitative Analysis
没有 SoftGroup 的实例预测在错误语义预测的区域输出低质量的实例掩码(用虚线框突出显示)。使用 SoftGroup 的预测显示了这些区域更准确的实例掩码。放大以获得最佳视图。
Ablation Study
Component-wise Analysis.
- Soft Grouping 和 Top-down Refinement 两个模块都 显著提升性能;
- 两者结合能将 AP 提升 6.5%(从 39.5 → 46.0),AP50 提升 6.5%,AP25 提升 3.4%;
Score Threshold for Soft Grouping.
- τ 是 soft grouping 的一个超参数,用来平衡 召回与精度;
- 过高或过低都不好,τ=0.2 是经验上表现最好的点;
- 和之前分析的一致:适当的概率门控,有助于提取更干净的候选实例。
Top-Down Refinement
- AP50/AP 的提升更显著,说明 Top-Down Refinement 更擅长提升分割质量,而不是仅仅找出一个大致区域(AP25)。
- Mask Branch 提升细粒度分割精度,而 Scoring Branch 改善排序能力。
- 三个分支联合使用,实现了全流程优化,从分类、分割到排序,最终大幅提升整体实例分割效果。
Instance Category from Classification Branch
- “N”表示实例类别取自语义预测的多数票。“Y”表示实例类别取自分类分支
- 单独的分类分支将整个实例的点特征聚合后统一预测类别
- 使用分类标签更好
Conclusion
- SoftGroup 是一个用于 3D 点云实例分割的 简单但高效 的方法。
- 过引入 soft grouping 和 top-down refinement,大幅提升了 3D 点云实例分割的精度,同时保持了优异的推理速度,是一个兼顾准确性和效率的先进方法。
评论区