天天看点

SGPN阅读笔记:相似性聚类的点云模型分割

简介

这也是一篇在PointNet基础上进行模型分割的论文。它的流程是,首先使用PointNet和PointNet++找到每个点对应的特征。然后对特征两两求差,得到相似性矩阵,它表示了一对点是不是属于同一类物体。除相似性矩阵外,SGPN还有一个置信向量,来表示点是否属于模型的一部分(而不是背景);以及一个语义分割矩阵,给同一类的部分打上同样的label。

方法

SGPN简单且符合直观,它的结构如下图所示。对于有 N p N_p Np​个点的点云 P P P,它首先使用PointNet得到每个点上的特征,维度为 N p × N f N_p \times N_f Np​×Nf​。对于这一特征矩阵,我们分别在计算相似性矩阵、置信向量和语义分割矩阵时称之为 F S I M F_{SIM} FSIM​、 F C F F_{CF} FCF​和 F S E M F_{SEM} FSEM​,并分别得到对应的三种损失函数 L S I M L_{SIM} LSIM​、 L C F L_{CF} LCF​和 L S E M L_{SEM} LSEM​,它们的和即为总的损失函数。

SGPN阅读笔记:相似性聚类的点云模型分割

相似性矩阵

两个点的相似性由两个点特征向量差的 L 2 L_2 L2​范式。即对于点 P i P_i Pi​和 P j P_j Pj​,它们的特征向量为 F S I M i F_{SIM_i} FSIMi​​和 F S I M j F_{SIM_j} FSIMj​​,则相似性矩阵 S S S为

S i j = ∣ ∣ F S I M i − F S I M j ∣ ∣ 2 S_{ij} = || F_{SIM_i} - F_{SIM_j} ||_2 Sij​=∣∣FSIMi​​−FSIMj​​∣∣2​

它的假设是,两个点如果属于同一部分(或同一类),则它们的特征会更加接近。下图(a)是对这一假设的一个验证,对箭头指出的点,颜色越深表明特征越接近。

SGPN阅读笔记:相似性聚类的点云模型分割

相似性矩阵的Double-Hinge Loss

对于两个点 P i P_i Pi​和 P j P_j Pj​,它们之间有三种关系:

  1. 它们属于同一部分
  2. 它们不属于同一部分,但在语义上它们是同一类物体(比如椅子腿一般有多个,不同椅子腿上的点就是这一关系)
  3. 它们语义上也不是同一类物体

对这三种情况,它们的损失函数不同:

l ( i , j ) = { ∣ ∣ F S I M i − F S I M j ∣ ∣ 2 C i j = 1 α max ⁡ ( 0 , K 1 − ∣ ∣ F S I M i − F S I M j ∣ ∣ 2 ) C i j = 2 max ⁡ ( 0 , K 2 − ∣ ∣ F S I M i − F S I M j ∣ ∣ 2 ) C i j = 3 \begin{aligned} l(i,j) = \left\{ \begin{aligned} & || F_{SIM_i} - F_{SIM_j} ||_2 & C_{ij} = 1 \\ & \alpha \max (0, K_1 - || F_{SIM_i} - F_{SIM_j} ||_2) & C_{ij} = 2 \\ & \max (0, K_2 - || F_{SIM_i} - F_{SIM_j} ||_2) & C_{ij} = 3 \end{aligned} \right. \end{aligned} l(i,j)=⎩⎪⎨⎪⎧​​∣∣FSIMi​​−FSIMj​​∣∣2​αmax(0,K1​−∣∣FSIMi​​−FSIMj​​∣∣2​)max(0,K2​−∣∣FSIMi​​−FSIMj​​∣∣2​)​Cij​=1Cij​=2Cij​=3​​

其中, C i j C_{ij} Cij​表示了它们属于哪一类关系, α > 1 \alpha>1 α>1以及 K 2 > K 1 K_2>K_1 K2​>K1​都是一些参数。显然,我们希望对于第2类关系,它们相似性应小于 K 1 K_1 K1​,对于第三类关系,它们相似性应小于 K 2 K_2 K2​。

整体的损失函数为两两损失的加和,即

L S I M = ∑ i N p ∑ j N p l ( i , j ) L_{SIM} = \sum_{i}^{N_p} \sum_{j}^{N_p} l(i,j) LSIM​=i∑Np​​j∑Np​​l(i,j)

相似性置信网络

F C F F_{CF} FCF​被传入另一个PointNet,得到一个 N p × 1 N_p \times 1 Np​×1的置信向量 C M CM CM。 C M CM CM表示了它对于该点是一个模型上的点的信心(与之相对的是背景点)。上图(b)可视化了置信向量的结果,可以看到,在模型中间,置信度很高;而在模型边缘,置信度就下降了,因为我们担心它们实际上是背景点。

置信向量的ground truth和相似性矩阵 S S S相关。训练时,对每个点 P i P_i Pi​,每一轮迭代中,相似性矩阵给出了和 P i P_i Pi​同类的一个点集 S i S_i Si​,以及我们本来就有的分割ground truth点集 G i G_i Gi​,我们以它们的IoU(Intersection over Union)为 P i P_i Pi​的置信ground truth。当点 P i P_i Pi​为背景点时, G i G_i Gi​为空,IoU显然为0;在训练过程中, S i S_i Si​会慢慢地接近 G i G_i Gi​,IoU也就会越来越大,从而使我们的网络也对它们逐渐更有信心。

因此,置信网络的损失函数 L C F L_{CF} LCF​为网络产生的结果和IoU的L2范数。

在测试阶段,当置信度大于阈值 T h C Th_C ThC​时,我们才认为这些是有效的、需要分割的点。

语义分割映射

F S E M F_{SEM} FSEM​被传入了第三个PointNet,得到一个 N p × N C N_p \times N_C Np​×NC​的语义分割矩阵 M S E M M_{SEM} MSEM​,其中 N C N_C NC​代表分割的种类数量。 M S E M M_{SEM} MSEM​中的每一项代表了该点属于该类别的概率。

这一过程的损失函数为softmax交叉熵,和大多数的分类问题一致。作者使用了中频平衡(median frequency balancing),每个类具有的权重为 a c = m e d i a n f r e q / f r e q ( c ) ac=medianfreq/freq(c) ac=medianfreq/freq(c),其中 f r e q ( c ) freq(c) freq(c)表示类别为 c c c的点占总点数的比例, m e d i a n f r e q medianfreq medianfreq表示 f r e q ( c ) freq(c) freq(c)中的中位数。这样,对于数量特别多的类别,其权重就会下降;数量特别少的类别,权重就会上升。

方案整合

在相似性矩阵中,每个点都提出了自己的一个聚类的主张,即和自己像的点划为一类,其他点划为一类。所以这样的主张共有 N p N_p Np​个,它们大多有噪声,或表示了同样的一个部分。我们首先丢弃掉那些置信度小于 T h C Th_C ThC​和基数(cardinality,即集合的元素数量)小于 T h M 2 Th_{M2} ThM2​的点。然后我们采用了非极大值抑制(Non-Maximum Suppression,NMS)的方法来得到不重叠的分割方案,即我们选择了IoU大于阈值 T h M 1 Th_{M1} ThM1​的聚类中,基数最大的那一个作为最终的聚类结果。

这样每个点就被分配到了每一类中,但仍有少量的点(大约2%)被分配给了多个部分。这通常意味着这些点出于部分和部分的边缘。由于边缘的二义性,随机分配这些点并不会显著影响分割的结果。这一过程被称为了GroupMerging。

参考文献

Wang, Weiyue, et al. “Sgpn: Similarity group proposal network for 3d point cloud instance segmentation.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.

继续阅读