简介
这也是一篇在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,它们的和即为总的损失函数。
相似性矩阵
两个点的相似性由两个点特征向量差的 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)是对这一假设的一个验证,对箭头指出的点,颜色越深表明特征越接近。
相似性矩阵的Double-Hinge Loss
对于两个点 P i P_i Pi和 P j P_j Pj,它们之间有三种关系:
- 它们属于同一部分
- 它们不属于同一部分,但在语义上它们是同一类物体(比如椅子腿一般有多个,不同椅子腿上的点就是这一关系)
- 它们语义上也不是同一类物体
对这三种情况,它们的损失函数不同:
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∑Npj∑Npl(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.