代码:https://github.com/vLAR-group/GrowSP
GrowSP:三维点云的无监督语义分割_CVPR_2023
Abstract:一种全新的无监督三维点云语义分割方法 GrowSP,无需任何人工监督信号或者预训练模型。我们的方法利用superpoints以及渐进式扩张superpoints的方式实现了在3D场景中自动发掘语义信息。成功识别3D场景中的每个点的复杂语义类,结果接近经典的全监督pointnet。
Inspire:少许局部点集无语义信息——>局部点集增加点量——>出现基元信息(纹理)——>组合基元——>通过多个组合在一起的基元识别类别信息。
Overview:将无监督3D语义分割作为一个3D特征学习和聚类的问题来处理。首先将点云输入backbone提取逐点feature;然后依靠几何构建initial superpoints,获取superpoint features;superpoints会进一步合并成为语义基元,根据语义基元产生pseudo labels用于训练backbone。在此过程中,随着训练的进行,backbone输出的特征具备的语义信息会越来越丰富,依照输出features的相似性对superpoints进行合并,实现superpoints growing。
GrowSP框架包括以下三个核心部分:
- Superpoints Constructor:构建初始的superpoints,将几何,空间位置或RGB (if available) 相似的点组合成superpoints;
该模块的目的是构建initial superpoints, 提供一些语义信息的先验,主要用于在训练初期引导网络的学习。对于数据集中每个3D场景,该模块会将场景点云划分为多个空间上连通的区域,这些区域内的几何形状和RGB是一致的。本文结合了两种手工设计的superpoints划分方法:VCCS和Region Growing,划分得到的superpoints。 - Superpoints Growing:随着神经网络的不断训练,其输出特征逐渐具有high-level信息,依靠特征相似度,对单个3D场景进行superpoints扩张,逐步涵盖语义相近的区域;
该模块是GrowSP框架的主要部分。初始构建的superpoints基于几何,位置和RGB等信息约束神经网络在后续步骤对这些low-level一致的点输出一致的特征,这可以促使网络学习语义,这一约束在训练的初期非常有效。
进一步地,为了使其学习到更加high-level的语义,我们依照特征相似度,对每一个3D场景进行superpoints growing。Growing的过程是在单个场景中进行的,将每个initial superpoints包含的per-point features平均,作为superpoint features。对单个场景内的superpoints依照features相似度聚类,实现superpoints的扩张。
- Semantic Primitive Clustering:数据集种包含的superpoints会进一步合并为一些简单的语义元素或基。
以上两个步骤只是构建和增强superpoints,并未产生语义类别。在这一步,我们对整个数据集的superpoint features (在网络训练初期是initial superpoints,后期是growing后的superpoints) 进行聚类。实验发现,当聚类数多于最终类别数可以避免错误地将不同类的superpoints聚集在一起,并且会带来performance提升。于是我们将superpoints聚合为多个基础的语义单元,同时产生pseudo labels用于训练backbone。训练结束后再将语义基元聚合成类别,聚合方法是简单地K-means。
由于本文以完全无监督的方式进行语义分割,所产生的类别标签只能用于区分不同的类,而和ground truth的标签序号不一致,所以在测试时会使用Hungarian matching修正标签序号。
手稿: