P3-SAM:Native 3D Part Segmentation
P3-SAM:Native 3D Part Segmentation
一句话理解
P3-SAM 可以看作 3D 版本的 SAM:在某个零件上点一下,模型就找出与这个点属于同一零件的所有区域。
它不是直接做 K-means 聚类,而是做 “提示点条件下的部件归属预测”。
1. 整体流程
2. 每个点的特征怎么得到
从 Mesh 表面采样点:
其中 \(x_i\) 是点坐标,\(n_i\) 是法线。
Sonata 使用 Point Transformer 让每个点观察周围邻居,并逐层融合不同范围的几何信息:
每个点的特征可以理解为一张描述卡片,包含:
- 它在哪里;
- 表面朝向是什么;
- 周围的几何形状是什么;
- 它在整体结构中可能扮演什么角色。
论文中将多尺度特征融合后,用 MLP 得到点特征:
3. 提示点如何产生一个部件 Mask
假设提示点是 \(p\),对每个采样点 \(x_i\),模型构造:
然后分割头预测该点属于提示点所在部件的概率:
根据阈值生成 Mask:
也就是说,模型实际在回答:
“第 \(i\) 个点,和提示点 \(p\) 是不是同一个部件?”
多个候选 Mask
模型会同时生成 3 个候选 Mask,因为一个提示点可能对应不同尺度的部件:
因此,P3-SAM 的核心不是计算点与点之间的简单距离,而是让网络学习一个 提示点条件的二分类器。
4. 如何自动分割整个模型
交互模式只需要一个提示点;自动模式则自动生成很多提示点:
其中:
- FPS:尽量均匀地选择提示点,避免漏掉小部件;
- NMS:两个 Mask 重叠太多时,只保留质量更高的一个;
- 投票和 Flood Fill:把采样点结果恢复到完整 Mesh 面上,并补齐未覆盖区域。
5. 它和“特征聚类”的区别
| 方式 | P3-SAM | 直接聚类 |
|---|---|---|
| 是否需要提示点 | 需要 | 不需要 |
| 判断方式 | 根据提示点预测部件 Mask | 根据特征距离分组 |
| 是否需要预设部件数量 | 不需要 | 通常需要或需要调参数 |
| 是否直接进行 K-means | 否 | 是 |
| 自动分割方式 | 多个提示点 + NMS | 聚类后直接分组 |
最准确的概括是:
一次提示点得到一个部件 Mask;多个提示点重复执行,再通过 NMS 去重并恢复成完整的部件分割。
6. 训练时学什么
训练时,从一个真实部件中随机选一个点作为提示点,让模型恢复该部件的真实 Mask:
这样模型逐渐学会:
“给定部件中的一个点,如何利用几何特征找回整个部件。”
7. 最终总结
P3-SAM 的核心逻辑可以压缩成一句话:
先为每个 3D 点提取几何特征,再以提示点为条件判断哪些点属于同一个部件,最后通过多个提示点和 Mask 去重实现全模型自动拆分。
本文来自博客园,作者:S-X-Q,转载请注明原文链接:https://www.cnblogs.com/sxq-blog/p/23315615

浙公网安备 33010602011771号