3D语义分割方法通俗理解(入门友好,参考高引用文章)

我看了一篇高引用的综述性文章,感觉写的挺好的,把其中的一个部分“3D POINT CLOUD SEGMENTATION” 里的内容结合自己的理解写了篇笔记,在这里进行分享,适合入门选手了解(如果写的有不准确的地方,还请大家指出,谢谢!),需要了解更多细节可以下载这篇论文看。

Guo Y, Wang H, Hu Q, et al. Deep learning for 3d point clouds: A survey[J]. IEEE transactions on pattern analysis and machine intelligence, 2020, 43(12): 4338-4364.

1、3D点云分割方法

🔹一、3D Semantic Segmentation(语义分割)

定义: 将点云中每个点赋予一个“语义类别标签”(比如:地面、建筑、树木、行人、车等)。

1. Projection-Based Methods(投影方法)

思路:把3D点云投影成2D图像,借助图像的CNN来做语义分割。

  • 原理:把3D点云“拍成照片”(比如从上往下看),变成2D图像,像处理照片一样用CNN来做分割。

  • 类比理解:你把一堆零散的沙子(3D点)拍个照,然后在照片上用涂色的方式标出来“这块是车”,“这块是行人”。

  • 举例:将点云投影到地面(BEV视角)、球面(像SqueezeSeg)等,形成类似深度图或RGB图像的结构。

  • 优点:可复用成熟的2D语义分割技术。

  • 缺点:投影过程会导致信息丢失(比如深度、遮挡问题)。


2. Discretization-Based Methods(离散方法)

思路:把3D空间“划格子”,把点云转换为体素(Voxel)或栅格(Grid),再用3D CNN处理。

  • 原理:把点云的3D空间“划格子” → 每个小立方体叫“体素 voxel”,然后用3D CNN对体素处理。

  • 类比理解:就像把整个空间分成一个个小“乐高方块”,每个方块里有哪些点,就打个标签。

  • 举例:VoxelNet:直接把点云体素化后用3D卷积做处理。

  • 优点:有结构感,适合大场景(如建筑、地面)。

  • 缺点:分辨率受限,占用内存大,处理效率低。


3. Hybrid Methods(混合方法)

思路:结合投影、体素和原始点云等多种方式取长补短。

  • 原理:结合投影、体素和原始点处理,取长补短。

  • 举例:MinkowskiNet 结合稀疏体素和卷积方法。

  • 优点:效率和精度之间取得平衡。

  • 缺点:设计复杂,对工程实现有挑战。


4. Point-Based Methods(基于点的方法)

思路:直接处理原始的点云,使用神经网络。不需要投影或体素化。

  • 原理:每个点就像一颗“粒子”,给它输入位置(x, y, z)、有时还加上颜色(r, g, b)或强度信息,让神经网络告诉我们:“这个点属于什么类别”

  • 类比理解:像是“一个个点”做问卷调查:“你是地面吗?”“你是车吗?”再根据周围点的回答一起判断。

  • 举例:PointNet、PointNet++、DGCNN、PointTransformer。

    • PointNet:输入是点 → 输出每点的分类。

    • PointNet++:考虑邻居点的信息,更精准。

    • DGCNN:把点之间的“边”也考虑进去,用图神经网络提特征。

  • 优点:原始信息保留最好,处理精度高。

  • 缺点:计算量大,点之间缺乏结构(点是无序的),需要设计特别的邻接结构。

🔍 主要代表方法对比:
模型特点能力
PointNet直接处理每个点,忽略周围邻居能捕捉整体形状,但对细节不敏感
PointNet++加入局部邻域,层次化聚合能识别曲面变化、边缘、小结构
DGCNN用图建边,动态调整邻居点连接特征更强,适合复杂形状
PointTransformer用注意力机制建邻居间关系类似Transformer那一套,精度高

🔧 模型怎么“理解点”?(以 PointNet++ 为例)

  1. 采样:选出一部分关键点(比如远离边界的地面、物体边缘)。

  2. 建邻域:对每个关键点,在点云中找“附近的点”(K近邻 or 球形邻域)。

  3. 提特征:用MLP(多层感知机)提取邻域内每个点的局部特征。

  4. 聚合:把邻域内的特征“汇总”成该关键点的特征(类似做平均或最大池化)。

  5. 堆叠多层:像CNN一样,做成多层局部+全局融合。

🔹二、Instance Segmentation(实例分割)

定义: 不仅要告诉“每个点是啥”,还要知道“属于哪个具体对象”。 比如:图中有两辆车,语义分割都标成“车”,实例分割则会标成“车1”、“车2”。

1. Proposal-Based Methods(候选框方法)

思路:先生成“物体候选区域”,然后在区域内做精细分割。

  • 原理:先提出几个“可能是物体”的区域,再在每个区域内精细分类。

  • 类比理解:像摄影师先拿一个框圈出“可能是车的地方”,再细看里面是不是车,是几号车。

  • 举例:3D-MPA:使用Proposal生成多个候选区域,再做区域内分割。

  • 优点:适合处理边界明确的物体。

  • 缺点:计算复杂,候选框容易重叠或错位。


2. Proposal-Free Methods(无候选框方法)

思路:不生成候选框,直接根据点之间的关系进行“聚类”,形成不同实例。

  • 原理:不生成“框”,直接通过点之间“相似性”或“连通性”来聚类。

  • 类比理解:就像你在一堆点之间“拉关系”,谁离得近、特征像,就分成一类。

  • 举例:ASIS、JSIS3D、PointGroup。

    • PointGroup:先做语义分割,再将相似点聚成不同“车”或“人”

    • ASIS:共享语义和实例特征,边分边聚类。

  • 优点:流程简单,适合稠密或无明显边界的点云。

  • 缺点:对点的邻接信息、聚类算法依赖大,边界容易模糊。有时边界不清楚,会把两个物体混在一起。


🔹三、Part Segmentation(部件分割)

定义: 通常在一个物体已知的前提下,对其“组成部分”进行分割。 比如:一把椅子 → 椅背、椅腿、坐垫等。

  • 思路:先识别是“椅子”,然后在其上进行“部件级别”的细分。

  • 类比理解:就像你买了一把椅子,需要给每个部件编号来组装。

  • 相关方法:常用 PointNet++ 进行监督训练。

  • 举例:常用于CAD建模、ShapeNet Part等任务。

    • 基于 PointNet++ 进行训练。

    • 使用 ShapeNet Part 数据集(每个物体都带有部件标注)

  • 优点:常用于CAD建模、ShapeNet Part等任务。

    • 基于 PointNet++ 进行训练。

    • 使用 ShapeNet Part 数据集(每个物体都带有部件标注)

  • 缺点:物体部件的定义存在主观性,不同实例的结构差异较大。


总结:任务+方法对照表
任务类型主要目标代表方法类型是否保留原始点云结构
Semantic Segmentation每点分类(车、人、树…)投影 / 体素 / 点云 / 混合点方法保留最好
Instance Segmentation区分同类不同物体(车1、车2)候选框 / 聚类大多数基于点或聚类
Part Segmentation同一物体的局部分割(椅背等)多数基于点云直接操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值