[CVPR2023 | GrowSP:无监督3D点云语义分割]

文章目录

    • 概要
    • 引言
    • 相关工作
    • 方法
    • 小结

概要

论文链接:https://arxiv.org/abs/2305.16404

代码链接:https://github.com/vLAR-group/GrowSP

本文的研究主要关注点云的三维语义分割问题。与目前主要依赖于人工注释数据训练神经网络的方法不同,本文提出了一种全新的无监督方法,名为GrowSP。该方法能够成功地识别3D场景中每个点的复杂语义类别,而无需任何标签或预训练模型。

该方法的核心思想是通过逐步增加超点的方式发现三维语义元素。本文的方法由三个主要部分组成:
1)特征提取器:从输入的点云数据中学习逐点的特征。
2)超点构造器:逐步增加超点的大小。
3)语义基元聚类模块:将超点分组为语义元素,以进行最终的语义分割。

本文在多个数据集上对GrowSP进行了广泛评估,并证明了其在所有无监督基线方法上的优越性能,同时接近于经典的全监督PointNet方法。

引言

赋予机器自动发现复杂3D场景的语义组合的能力对于许多尖端应用程序至关重要。在过去几年中,针对三维点云的全监督语义分割已经取得了巨大的进展。通过PointNet、SparseConv以及最近的神经模型等方法,每点语义估计的准确性和效率都得到了极大提高。然而,这些方法的成功主要依赖于大规模的人工注释来训练深度神经网络。

然而,由于数据格式非结构化,手动标注现实世界的3D点云成本极高。为了缓解这个问题,最近的一些方法开始在训练中使用更少的3D点云标签和2D图像标签。尽管取得了较好的结果,但它们仍然需要繁琐的人工工作来注释或配准特定数据集的图像上的3D点,因此不适用于没有训练标签的新场景。

本文提出了一种无监督的三维语义分割方法,是向现实世界点云的无监督三维语义分割迈出的第一步。为了解决这个问题,可以采用两种策略:一是将现有的无监督2D语义分割技术应用于3D领域,二是应用现有的自监督3D预训练技术来学习判别性的每点特征,然后使用经典聚类方法来获得语义类别。

对于无监督2D语义方法,在彩色图像上取得了较好的结果,但很难扩展到3D点云,主要原因是缺乏代表性的3D数据集和通用的预训练主干网络来提取点云的高质量特征。此外,它们通常被设计为将具有相似低级特征(例如颜色或边缘)的像素分组为语义类别,但由于点稀疏性和空间遮挡,这种方式通常不满足3D点云的要求。

对于自监督的3D预训练方法,虽然预训练的逐点特征具有判别性,但由于常用的数据增强技术没有明确地捕获分类信息,因此从根本上缺乏语义意义。

本文引入了一个简单而有效的流程来自动发现逐点语义,只需逐步增加逐点邻域的大小,而不需要任何人工标签或预训练的主干。

本文的架构由三个主要组件组成:

每个点的特征提取器、逐步创建越来越大的超点构造器和语义基元聚类模块。其中,特征提取器可以灵活地采用现有的神经网络,如SparseConv;

在训练过程中,逐步创建的超点构造器指导语义学习;

而语义基元聚类模块则通过聚类算法对语义类别的基本元素进行分组。

本文方法的关键在于采用超点构造器和渐进式增长策略。这些组件驱动特征提取器逐步学习特定且不断扩张的超点内的3D点云的相似特征,而不同超点的特征往往被判断为语义类别的不同元素。本文的方法被称为GrowSP,图1显示了室内3D场景的定性结果。

[CVPR2023 | GrowSP:无监督3D点云语义分割]_第1张图片
图1 给定来自S3DIS数据集的具有复杂结构的输入点云,GrowSP只需通过逐步扩张的超点即可自动发现准确的语义类别,而无需在训练中使用任何标签。

相关工作

强监督学习:随着3D扫描仪的进步,获取点云变得更容易和更便宜。在过去的五年中,大规模人工标注的点云数据集的可用性使得全监督神经方法能够获得较好的3D语义分割结果。

这些方法通常包括:
1)基于2D投影的方法将原始点云投影到2D图像上,然后使用成熟的2D神经架构学习语义;
2)基于体素的方法通常将非结构化点云体素化成规则的球体、立方体和圆柱体,然后使用现有的卷积网络;
3)基于点的方法主要遵循开创性的PointNet,使用共享MLP直接学习每个点的特征。

这些方法的性能可以通过自监督预训练技术进一步提高。虽然在现有的基准上取得了优异的准确性,但它们需要密集注释的3D数据进行训练。这在实际应用中是非常昂贵的。

弱监督学习:为了减轻人工标注的成本,一些工作已经开始在训练中使用更少的人工标签来学习3D语义。这些弱标签主要包括较少的3D点标签以及场景级标签,这些弱监督方法的性能也可以通过自监督预训练技术来提高。除了这些弱标签,监督信号也可以来自其他领域,如标记的二维图像或预训练的语言模型。尽管获得了较好的结果,但这些方法仍然需要繁琐的人工工作来注释或准数据点云。从根本上说,它们仍然不能自动发现语义类别。

无监督语义学习:该研究通过对3D点云进行随机排列,然后恢复体素位置的方式来学习点云的语义信息。然而,它们都只能在简单的目标点云上工作。从技术上讲,现有的自监督3D预训练技术可以用于无监督语义分割,只需学习判别的逐点特征,然后进行聚类。然而,预训练的点特征实际上是缺乏语义的,不能作为类别进行分组。对于2D图像,最近的一些研究解决了无监督的2D语义分割问题。然而,由于图像和点云之间的域差距,目前还没有研究表明它们在三维空间中的适用性。事实上,具有代表性的二维方法IIC和PICIE在点云上都失败了,而本文的方法取得了明显更好的精度。

方法

4.1 概述

本文的方法一般将无监督的三维语义分割问题表述为在没有标签的情况下联合三维点云特征学习和聚类。输入N个点云,其中每个点都有一个位置信息,如果有颜色,特征提取器首先获得每个点的特征,其中嵌入长度可以自由预定义。本文简单地采用了强大的SparseConv架构,没有任何预训练步骤作为本文的特征提取器。

有了输入点云和点特征,然后将它们输入到超点构造器中,在越来越多的训练周期中逐步生成越来越大的超点。这些超点将被输入到语义基元聚类模块中,为所有超点生成伪标签。在训练过程中,这些伪标签将用于优化特征提取器。
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第2张图片
GrowSP主要由三个部分组成:1)学习每点特征的特征提取器,2)逐级增加超点大小的超点构造器,3)将超点分组为语义元素的语义基元聚类模块。

4.2 超点构建器
该模块旨在将每个输入点云划分为多个块,使每个块作为整体理想地属于同一类别。直观上,与单个点相比,单个块更有可能具有几何意义,从而更容易提取高级语义信息。为了构建高质量的超点,帮助网络自动发现语义,本文提出了两个关键问题:

首先,应该采用什么策略来构建超点。如果一个超点保持较小,它可能是高度同质的,但缺乏语义。另一方面,较大的超点可能具有更好的语义,但如果构造不当则容易出错。在这方面,本文建议在越来越多的训练周期中逐渐增加超点的大小。

第二,如何在一开始就将点云分割成令人满意的小块,使网络训练能够有效地进行。考虑到点神经特征在网络训练的早期阶段实际上是没有意义的,简单地利用经典算法来获得基于几何特征的初始超点是更可靠的,例如表面法线或连通性。

初始超点:在网络训练开始时,通过VCCS构建初始超点,然后使用区域生长算法。它们共同考虑了3D点之间的空间/法线/归一化RGB距离。对于特定的输入点云,其中每个超点由原始点云的一个小子集组成,对于不同的点云,其初始超点的个数通常是不同的。
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第3张图片
训练过程中逐渐增长的超点:假设训练特征提取器以用于epoch,那么点特征会更有意义。在这方面,本文主要使用神经特征来逐步构建更大的超点,以供将来的训练。如图所示,每个点代表一个3D点的神经嵌入,红色圆圈表示初始超点。蓝色圆圈表示吸收一个或多个初始超点的较大超点。
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第4张图片
4.3 语义基元聚类
对于每一个epoch,每一次输入点云都将有一些超点,每个超点都代表物体的特定部分。对于整个数据集来说,所有的超点加在一起可以看作是一个巨大的基本语义元素的集合,如椅背、桌子表面等。为了从这些超点中发现语义,需要解决两个问题:

1)如何有效地将这些超点进行分组。一种直接的方法是使用现有的聚类算法将所有的超点直接聚类到许多目标类别中。然而,本文发现这是过于激进的,因为许多属于不同类别的超点是相似的,然后在早期训练阶段错误地分配到相同的语义组,并且随着时间的推移很难纠正。在这方面,本文选择在所有训练周期不断地将所有的超点分组到相对大量的聚类中。

2)超点的神经特征是否足以用于语义聚类。同样,考虑到3D点和超点的神经特征在网络训练开始时是没有意义的,明确地考虑点的几何特征(如表面正态分布)来增强对超点的识别是更可靠的。为此,对于每个超点,本文将其神经特征和经典的PFH特征结合在一起进行聚类。

4.4 实现
训练阶段:本文的方法不需要在训练中给定语义类别的实际数量,因为本文只学习语义基元。

测试阶段:一旦网络被训练得很好,本文在训练分割时保持K-Means估计的语义基元的质心。在测试中,使用K-Means将这些质心直接分组到C个语义类中。将新获得的C类质心用作最终的分类器。给定一个测试点云,所有逐点的神经特征都被直接分类为C类之一,而不需要再构造超点。对于最终的评价指标计算,本文遵循使用匈牙利算法将预测的类别与真值标签匹配。

本文的方法主要在两个大型室内数据集和一个具有挑战性的室外激光雷达数据集上进行了评估:S3DIS 、ScanNet和SemanticKITTI。本文还进行了跨数据集实验来评估未见场景的泛化能力。对于评价指标,本文报告了所有类别的平均交并比(mIoU),总体精度(OA),平均精度(mAcc)。

5.1 S3DIS数据集的结果

S3DIS数据集由6个大区域组成,共有271个房间。每个点属于13个类别中的一个。本文发现不同房间的clutter类并不具有一致的几何图案和语义信息。在没有标签的情况下,自动发现这些不同的几何形状作为一个共同的类别是具有挑战性的,也是不合理的。因此,在最后的测试阶段,本文只将除clutter外的所有点分成12类。在训练中,包含clutter的所有点都被输入到网络中,但是clutter点不用于聚类和损失计算。

由于目前还没有针对三维点云的语义分割的无监督方法,本文实现了以下四种基线:

1)RandomCNN,它使用K-means将每个点的特征直接聚类为12类,其中从随机初始化的主干中获得的特征作为本文的基线;2)vanilla K-means,它直接将原始3D点聚类为12类;3)IIC,它改编自现有的无监督2D方法,其中本文改为使用与本文相同的主干;4)PICIE,与本文的主干相同。

为了进行广泛的比较,本文还在基线上采用了相同的语义基元聚类模块,表示为van Kmeans-S/IICS/PICIE-S。PFH特征也适用于它们,表示为van Kmeans-S-PFH/IIC-S-PFH/PICIE-S-PFH。此外,还包括三个经典的全监督方法PointNet、pointnet++和SparseConv进行比较。这些基线都经过仔细的训练和评估,使用与本文相同的设置。

分析:如表1和表2所示,本文的方法明显优于所有无监督基线。基本上,RandomCNN和vanilla K-means无法获得任何有意义的语义类,因为缺乏有意义的点特征。尽管使用了同样强大的SparseConv作为特征提取器,但IIC和PICIE都无法获得高质量的语义分割结果,主要是因为它们都没有充分利用越来越大的点区域产生的语义,而是倾向于简单地根据低级特征对相似点进行分组。添加语义基元聚类模块可以帮助PICIE获得更好的结果,但仍然明显比本文的方法差。
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第5张图片
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第6张图片
5.2 ScanNet数据集的结果

ScanNet数据集有1201个房间用于训练,312个房间用于离线验证,100个房间用于在线隐藏测试。每个点属于20个对象类别或未定义背景中的一个。由于隐藏测试集上没有无监督的结果,并且不允许将基线结果上传到网上,因此本文在验证分割上与上述4条无监督基线进行比较。在训练过程中,所有的原始点云都被输入到神经网络中,而未定义的点不用于损失计算和聚类。它们也将在测试期间被掩盖。

分析:如表3所示,所有无监督基线在这个具有挑战性的数据集上都失败了。IIC和PICIE仅略好于RandCNN,说明了分割难度的水平。相比之下,GrowSP取得了非常好的结果。如表4所示,本文的方法在在线基准测试中获得了类似的mIoU分数。
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第7张图片
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第8张图片
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第9张图片

5.3 SemanticKITTI数据集的结果

SemanticKITTI数据集由43552个户外激光雷达扫描的21个序列组成。它有19130个用于训练,4071个用于验证,20351个用于在线测试。每个点属于19个语义类别或未定义背景中的一个。
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第10张图片
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第11张图片
5.4 与自监督学习的比较

在以下两组实验中,本文进一步比较了现有的自监督预训练方法PointConstrast(PC)和contrast Scene Contexts(CSC)。PC有两个版本:InfoNCE和Hardest Contrastive,表示为PC-I/PC-H。

第1组:所有PC-I/PC-H/CSC/GrowSP都在ScanNet训练集上受过良好的训练。本文简单地重用了作者发布的PC-I/PC-H/CSC的官方预训练模型。所有这些经过训练的网络都被冻结,然后通过K-means将输出特征分组到ScanNet(验证集)和S3DIS(区域5)上的语义类别中。

第2组:本文为四个预训练模型中的每个模型添加一个线性分类器,并且只使用全监督来训练分类器,直到在ScanNet(训练集)和S3DIS(区域1/2/3/4/6)上收敛(每种方法大约150个epoch)。之后,在ScanNet (验证集)和S3DIS (区域5)上直接测试所有四个模型。

分析:如表7所示,现有的所有自监督方法完全不能使用K-means估计语义,而本文的方法明显更好。在增加一层线性探测的情况下,本文的方法也显示出更好的分割结果。现有的自监督预训练特征实际上没有丰富的语义类别信息,而本文的方法可以直接学习语义。
[CVPR2023 | GrowSP:无监督3D点云语义分割]_第12张图片

本文证明了使用一种纯粹的无监督方法可以从真实世界的点云中自动发现多个3D语义类别。通过利用简单的渐进式增长策略来随着时间的推移创建越来越大的超点,本文的方法可以成功地学习有意义的语义元素。大量的实验验证了本文方法的有效性。

小结

本文提出了3D场景上的无监督语义分割方法GrowSP,并且不需要任何预训练模型或标签。GrowSP方法包括三个核心部分,分别是特征提取器、超点构建器以及语义基元聚类。其中,特征提取器用于学习输入点云的每点特征;超点构建器用于构建初始的超点,并且将几何位置、空间位置或RGB相似的点组合成超点,然后逐渐增加超点的大小,进而逐步涵盖语义相近的区域;语义基元聚类则将超点合并为一些简单的语义元素,进行最终的分组。

GrowSP克服了在缺乏监督信息的情况下进行语义分割的挑战,为解决实际世界中复杂场景的问题提供了一种创新的解决方案。无监督分割方法不需要大量标记好的数据,对未知场景的适应性更强,具有更广泛的适应性,相信在将来会出现更多先进的无监督方法,进而缓解手工标注的繁琐。

你可能感兴趣的:(#,学习笔记,python深度学习,人工智能,3d,python,数据库,linux,opencv,计算机视觉,django)