ICCV2023论文精读:Clustering based Point Cloud Representation Learning for 3D Analysis¶
1. 背景简绍¶
点云分析(如三维分割和检测)是一个具有挑战性的任务,不仅因为点云是数百万点的无序的点组成的不规则几何形状,而且深度、视角、遮挡等会使点云产生的巨大变化。当前的研究非常关注神经网络对复杂点云几何形状的补全,但对一个基本问题视而不见:如何学习一个适当的点嵌入空间,该空间既注意区分语义又考虑具有挑战性的变化?为此,作者提出了一种基于聚类的点云分析表示学习方案。
2. 方法前瞻¶
本文介绍了一种用于点云分析的无监督点云聚类表示学习方法。这种方法有以下三个优点:首先,它提出了一个数据集级上下文意识训练策略。与当前的场景级训练范式不同,本算法对点特征进行跨场景分组,并进行基于聚类的表示学习。通过探索全局数据分布,我们的算法鼓励高度灵活的特征空间被离散化为几个不同的子集群中心,缓解最终语义分类的困难。其次,它对大规模点云训练很高效。为避免对海量点数据进行时间消耗的聚类,作者选择Sinkhorn-Knopp算法,它使用快速的矩阵向量运算求解聚类分配。此外,为了紧跟迭代网络训练导致的漂移表示,本方法采用动量更新策略进行在线近似子集群中心。第三,它在原则上足够强大,可以无缝地并入任何现代点云分割网络的训练过程,在推理时不会带来额外的计算负担或模型参数。
3. 算法详解¶
3.1 背景概述¶
在完全监督点云分割学习的背景下,当前的常见做法是从训练数据集{P_{k},L_{k}}_{k}学习一个点识别网络。这里P_{k}={p_{k}^{n}\in\mathbb{R}^{3+x}}_{n=1}^{N}是第k个包含N个点的点云,带有3D位置和其他辅助信息(例如颜色、强度);L_{k}={l_{k}^{n}\in C}_{n=1}^{N}包含P_{k}中的点的语义标签,其中C是标签列表,例如C={car, road, ···}。分割网络实现为h\circ\phi:P\rightarrowL,其中\phi:\mathbb{R}^{N \times (3+x)}\rightarrow\mathbb{R}^{N \times d}是一个特征提取器(上图中的\phi),它将P中的点嵌入到d维特征空间,h:\mathbb{R}^{N \times d}\rightarrow\mathbb{R}^{N \times |C|}是一个分割头(上图中的h),通常由一个小的多层感知器组成,将点特征映射到区分语义的空间以进行逐点|C|分类。因此,整个网络通常通过最小化逐点交叉熵损失来学习:
J_{CE}(p_{n}) = -\log P(l_{n}|p_{n}) = -\log \frac{exp(y_{n,l_{n}})}{∑_{c∈C}exp(y_{n,c})}, (1)
其中y_{n}=[y_{n,c}]_{c}\in\mathbb{R}^{|C|}是点p_{n}的分类分数(logits)向量,即y_{n}=h(p_{n}),p_{n}\in\mathbb{R}^{d}是从\phi获得的点p_{n}的特征。对于特征提取器\phi,已经有许多候选者(例如基于体素/点的3D网络),它们都是精心设计的,以捕获点数据的特定几何形状。但是,点云产生丰富和多样化的模式,例如细粒度语义、类内变化等。这些模式反映了潜在的数据结构;它们对语义理解是信息丰富的,但具有挑战性,甚至难以识别。因此,通常的做法是简单地从易获取的高层语义标签的监督学习分割网络h\circ\phi(即式1),而不考虑潜在的数据结构。
相反,我们设计了一种基于聚类分析的监督学习框架(上图)。我们不仅学习带预定义语义标签的点识别,而且更重要的是,我们自动发现并将点数据的潜在结构编码到特征空间中。我们期望以这种策略学习的特征对细粒度语义更具区分力,并对类内变化更具鲁棒性,从而最终促进对点云的密集识别。
在每个训练迭代中,我们的算法有两个阶段。在第1阶段,我们对每个标记类中的大量点执行在线聚类。目的是发现在不同场景中是难以标注但很重要的子类模式。在第2阶段,除了通常使用点式分类损失J_{CE}优化整个分割网络h\circ\phi外,我们还将确定性的聚类分配作为辅助约束来塑造特征空间\phi。改进的特征反过来实现更可靠的类内聚类,并最终提升点识别效果。独立于某种点分割网络,我们的训练方案是强大而通用的。
3.2 基于在线聚类的子类模式挖掘¶
我们的算法建立在一个直观的想法之上:捕捉潜在的数据结构可以促进点表示学习和语义识别。因此,第一个主要问题是:如何高效自动发现无法明确标注的潜在数据结构?这激发我们在每个标记类c\inC内进行无监督聚类,以自动挖掘代表性的潜在子类模式。
为了使我们的算法扩展到数百万点数据,我们将这样的类内聚类形式化为最优运输问题,可以使用Sinkhorn迭代高效求解。此外,为了克服每次表示更新后重新计算集群中心的花费资源过程,我们采用动量更新策略进行在线聚类与网络批量训练同步进行。
对于每个类c\inC,我们假设它包含M个潜在的细粒度模式。因此,我们希望从训练数据集{P_{k},L_{k}}_{k}中总共发现M\times|C|个不可观察的模式。为此,我们在点嵌入空间\phi上执行类内聚类。因此,属于类c的训练点,即P_{c}={p_{n}|l_{n}=c},被划分为M个子类,可以直观地表示为相应的聚类中心。
设Q_{c}=[q_{c}^{1},···,q_{c}^{M}]\in\mathbb{R}^{d\times M}表示类c的M个聚类中心(例如上图中的Q_{c}),P_{c}=[p_{c}^{1},···,p_{c}^{N_{c}}]\in\mathbb{R}^{d\times N_{c}}表示属于类c的所有点的特征(例如上图中的P_{c}),其中p_{c}\inP_{c},N_{c}=|P_{c}|。聚类分配可以表示为一个二值矩阵A_{c}\in{0,1}^{M\times N_{c}},其中A_{c}的(m,i)元素表示将第i个点分配给类c的第m个聚类中心,即第m个子类。类c内的聚类可以通过优化分配矩阵A_{c}来实现,即最大化点特征与聚类中心之间的相似度:
\min\limits_{A_{c} \in \mathcal{A}_{c}} \langle A_{c}^{\top},-\log S_{c} \rangle,
\mathcal{A}_{c} = \{A_{c} \in \{0,1\}^{M \times N_{c}} | A_{c}^{\top}\mathbf{1}_{M} = \mathbf{1}_{N_{c}}, A_{c}\mathbf{1}_{N_{c}} = N_{c}/M\mathbf{1}_{M}\} (2)
其中S_{c}=softmax(Q_{c}^{\top}P_{c})指聚类中心和点之间的相似度矩阵,\langle \cdot \rangle是Frobenius点积,log作用于元素。对解空间\mathcal{A}_{c},前一个约束强制每个点恰好被分配给一个子类,后一个约束施加等分约束,以鼓励N_{c}个点被分组成大小相等的M个子类。等分约束有助于避免所有点样本被分配到单个聚类的退化解。通过放松A_{c}属于运输多面体,即
\mathcal{A}'_{c} = \{A_{c} \in \mathbb{R}_{+}^{M \times N_{c}} | A_{c}^{\top}\mathbf{1}_{M} = \mathbf{1}_{N_{c}}, A_{c}\mathbf{1}_{N_{c}} = \mathbf{1}_{M}\},
标签分配任务可以看作是最优运输问题的一个实例,可以通过快速Sinkhorn-Knopp算法高效求解:
\min\limits_{A_{c} \in \mathcal{A}'_{c}} \langle A_{c}^{\top},-\log S_{c} \rangle + \frac{1}{\lambda} KL(A_{c} || \frac{1}{MN_{c}}\mathbf{1}_{M}\mathbf{1}_{N_{c}}^{\top}), (3)
其中KL是Kullback-Leibler散度,\lambda是正则化强度。在集合\mathcal{A}'_{c}上的问题(3)的解可以写为:
A_{c}^{*} = \text{diag}(u)(S_{c})^{\lambda}\text{diag}(v), (4)
其中指数运算是元素运算。u\in\mathbb{R}^{M}和v\in\mathbb{R}^{N_{c}}是通过Sinkhorn-Knopp算法的几个矩阵向量运算迭代获得的两个缩放系数向量。由于迭代网络训练导致的点表示漂移,在每个训练批次后重新计算聚类分配将是非常花费资源的过程。为避免这样计算代价高昂的离线聚类分配过程,我们将运输多面体限制在小批量内,通过动量近似聚类中心Q_{c}。在每次训练迭代中,类c的每个聚类中心q_{c}^{m}被更新为:
q_{c}^{m} \leftarrow \mu q_{c}^{m} + (1-\mu)\bar{p}_{c}^{m}, (5)
其中\mu \in [0,1]是动量系数,\bar{p}_{c}^{m}指在当前批次中被分配给聚类中心q_{c}^{m}的点的平均特征向量。聚类中心最初随机初始化,并在每批次逐步更新,顺应表示\phi的变化。这些设计导致了可扩展的在线聚类,允许从庞大的训练点数据中自动挖掘潜在的子类模式。在GPU上聚类非常高效;在实践中,将50K个点分配到40个聚类只需要60ms。我们在下图中可视化了5个类的聚类结果(M=2),其中同一类下的子类由类似颜色表示。可以看出,具有相似模式的点被分组在一起,因此每个类的基础数据分布可以被全面捕获。
3.3 基于聚类分析的点云表示学习¶
通过类内聚类,我们在点云中发现了潜在结构,并检测到局部区分的模式,即聚类中心{q_{c}^{m}}_{m,c}。下一个问题是:如何利用这些细粒度模式帮助点云表示学习?为回答这个问题,我们将监督的逐点分类损失J_{CE}(式1)与基于聚类分析的对比学习策略相补充,后者为点表示施加结构化和直接的监督。具体而言,利用§3.2中确定性的聚类分配,我们在点对点和点中心对上进行对比表示学习。这使我们可以充分利用任何两个点之间以及局部数据结构之间的关系,并直接优化点特征空间\phi。
点对点对比学习。我们的点对点对比学习是通过比较点对来将不同子类的点表示推离,同时将来自同一子类的点表示拉近。对每个点p_{n},相应的训练目标定义为:
J_{PPC}(p_{n}) = \frac{1}{|O_{p_{n}}|} \sum\limits_{p^{+} \in O_{p_{n}}} -\log\frac{exp(p_{n} \cdot p^{+} / \tau)}{exp(p_{n} \cdot p^{+} / \tau) + \sum\limits_{p^{-} \in N_{p_{n}}} exp(p_{n} \cdot p^{-} / \tau)}, (6)
其中\tau > 0是标量温度参数,O_{p_{n}}和N_{p_{n}}分别表示p_{n}的正样本集合和负样本集合。与p_{n}属于同一聚类的训练点是正样本,而被分配到其他聚类的点是负样本。注意,正(负)样本不限于同一训练点云。为进一步增强我们的点对点对比学习,我们遵循无监督表示学习中的常见做法,为每个聚类建立一个记忆库,总共有M\times|C|个记忆库。记忆库收集来自之前训练批次对应聚类的点特征,因此增加了正负样本的数量和多样性。这些设计提供了一种跨场景的训练方案,而不是当前的场景级训练范式,后者忽略了不同场景之间点之间的丰富对应关系。最小化式(6)导致一个结构良好的嵌入空间φ,其中具有相似模式的点彼此靠近,而具有不同模式的点彼此分离。
点中心对比学习。与点对点对比学习的思想类似,即激发聚类内紧凑性和聚类间分离性,我们的点中心对比学习策略在嵌入空间φ上对比点与聚类中心之间的相似度:
J_{PCC}(p_{n}) = -\log\frac{exp(p_{n} \cdot q^{+} / \tau)}{\sum\limits_{c,m}exp(p_{n} \cdot q_{c}^{m} / \tau)}, (7)
其中q^{+}指点p_{n}的聚类中心。式(7)使p_{n}在所有中心{q_{c}^{m}}_{c,m}中找到分配的聚类中心q^{+},以减小p_{n}与q^{+}之间的距离,同时增加p_{n}与其他聚类中心的距离。由于聚类中心代表了数据集,与点对点对比学习(式6)相比,式(7)以更低成本、更直接的方式将数据集级上下文或潜在的数据结构施加到特征空间优化上。在实践中,我们发现结合这两种基于聚类分析的对比学习策略可以获得最佳性能(详见§4.5的详细实验)。也可以从信息瓶颈的角度理解点中心对比学习[96, 104],其中确定性聚类施加了一个自然的瓶颈,并将嵌入空间\phi离散化为有限集群中心集合{q_{c}^{m}}_{c,m},通过最小化式(7),而不是学习\phi作为一个连续的向量空间。
整体训练目标。标准交叉熵损失J_{CE}在式(1)中本质上是一元训练目标,仅考虑逐点语义判别,而不考虑任何潜在的数据结构和训练点之间的配对关系。基于聚类分析的对比损失,即J_{PPC}在式(6)和J_{PCC}在式(7),是成对的训练目标,利用局部代表模式进行结构感知的距离基表示学习。因此,我们将这两个互补的训练目标组合成我们的整体学习目标:
J = J_{CE} + \alpha(J_{PPC} + J_{PCC}). (8)
我们的训练算法交替执行类内聚类分析点嵌入空间\phi,并使用语义标签{L_{k}}_{k}和聚类分配{A_{c}}_{c}优化整个分割网络h\circ\phi。这样,有意义的聚类捕获细粒度的数据结构,并成为点表示学习的信息丰富的监督信号;反过来,区分性表示有助于获得有意义的聚类,并最终缓解点识别。在上图(b-c)中,我们提供了仅由J_{CE}和J学习的点嵌入的可视化。可以看出,在额外考虑基于聚类分析的训练目标后,点嵌入空间变得更加结构化。
3.4 算法详细信息¶
在线聚类(3.2)。我们对每个类的点样本分组到M个子类,以挖掘数据集的潜在结构。我们经验性地设置M=40和式(5)中的动量系数μ=0.9999(相关实验见§4.5)。我们在式(3)中设置λ=25。
基于聚类分析的训练(§3.3)。我们的基于聚类分析的训练策略强制点特征空间φ更好地尊重发现的数据结构。我们在式(6-7)中将标量温度τ设置为0.1。对于基于聚类的记忆库,我们从每个场景为每个聚类采样10个点特征,并存储所有训练点云{P_{k}}_{k}的所有采样特征。对于训练损失J(式8),系数设为α=1(我们经验发现,当α\in[0,1]时,我们的算法对α不敏感)。
点云分割网络h\circ\phi。我们的算法是点云分割的一般监督学习方案。原则上,它可以应用于任何能够学习逐点特征的分割网络。在我们的实验中,我们在四种典型的分割网络上测试我们的算法,包括基于体素的、基于点的、基于Transformer的和基于NAS的。
推理。我们的训练算法不会在模型部署时带来额外的推理成本或网络架构修改。M\times|C|个聚类中心和M\times|C|个记忆库在网络训练后直接丢弃。
4.实验结果¶
在各种3D网络体系结构(基于体素、基于点、基于Transformer、基于自动搜索的体系结构)上,本算法在著名的点云分割数据集(SemanticKITTI单帧和多帧、S3DIS)上都显示出显著的提升(mIoU提升2.0-2.6%、2.0-2.2%、1.8-1.9%)。本算法在3D检测方面也显示出效用,在KITTI上获得了2.0-3.4%的mAP提升。
5. 结论与讨论¶
我们设计了一种基于聚类的点云分析监督学习方案,在点表示学习中发现并尊重潜在的数据结构。作者不仅最小化点识别误差,还迭代地进行1)无监督的类内聚类分析以自动发现子类模式和2)基于聚类分配的点嵌入空间优化。我们的算法是通用的,在各种任务和数据集上展示了卓越的性能。它也带来了一些新的挑战,包括在实例感知分割设置中扩展,以及自动估计聚类数量。
本文总阅读量次