ECCV2020——Self-Prediction for Joint Instance and Semantic Segmentation of Point Clouds

Abstract

  • 针对3D实例和点云的语义分割开发了一种名为“Self-Prediction”的新颖学习方案。
  • 与大多数现有的专注于设计卷积操作符的方法不同,该论文设计了一种新的学习方案来增强点关系的探索,以便更好地分割。
  • 更具体地说,将一个点云样本划分为两个子集,并根据它们的表示构造一个完整图。在给定一个子集的标签时,利用标签传播算法对另一个子集的标签进行预测。
  • 通过训练这个Self-Prediction,骨干网络可以充分探索关系上下文/几何/形状信息和学习更多的可区分特征。
  • 而且,在此基础上,设计了一种基于Self-Prediction方案的通用关联框架,用于同时增强实例和语义分割,结合实例和语义表示进行Self-Prediction。
  • 通过这种方式,实例分割和语义分割相互配合,相互加强。
  • 与基线相比,S3DIS和ShapeNet在实例分割和语义分割上取得了显著的性能改进。在S3DIS上取得了state-of-the-arts的实例分割结果。
  • 在仅以pointnet++为骨干网络的情况下,与S3DIS和ShapeNet上最先进的语义分割结果相比,也取得了比较好的结果。

(一) Introduction

网络框架:

  • 包含一个骨干网和instance-head,semantic-head和Self-Prediction head。
  • instance-head学习实例嵌入以进行实例聚类。
  • semantic-head则输出语义嵌入以进行语义预测。
  • 在Self-Prediction head中,每个点的实例和语义嵌入被组合在一起。
  • 然后,将语义和实例标签连接起来,为每个点形成一个多标签。
  • 之后,将点云分为两组,其中一组标签被丢弃。
  • 给定整个点云和一组标签的组合嵌入,构造了一个完整的图,然后使用标签传播算法为另一组同时预测语义和实例标签。
  • 在两组之间执行双向传播。通过多标签自预测的此过程,实例和语义嵌入得到了关联的增强。
  • 自我预测的过程结合了点的嵌入相似性,这使网络探索点之间的有效关系并学习更多区分性表示。
  • 这三个heads在训练时进行了联合优化。在推理过程中,Self-Prediction head被丢弃,没有引入计算负担和网络参数。
  • 论文框架在不同的骨干网络(如PointNet,PointNet ++等)上是通用且有效的。

(二) Related Work

~~

(三) Methodology

3.1 Self-Prediction

定义:

  • Self-Prediction是与实例和分割任务并行的辅助任务,旨在增强骨干网络以学习更强大和更具区分性的表示形式。

idea:

  • 为了获得更好的分割性能,许多现有工作设计了卷积算子以捕获点云中包含的关系,几何和形状信息。共同目标是学习更多区分性表示。但是,论文采取了新的观点。如果给定点云中rest points的标签,学到的表示形式可用于预测点云的一部分的实例/语义标签,则可以认为它充分利用了关系信息并具有足够的代表性。
  • 因此,论文制定了一个Self-Prediction任务,即将点云平均分为两组,然后根据给定的表示在两组之间执行双向预测。

结果:

  • 网络在Self-Prediction任务上表现良好,可以获得更 strong features ,并在特定任务(即实例和语义分割)上表现更好。

网络框架详解:

  1. 给定一个包含N个点 X = { x 1 , x 2 , . . . , x N } X= \left \{x_{1},x_{2},...,x_{N}\right \} X={ x1,x2,...,xN}的点云示例,每个点 x i ∈ R h x_i∈R^h xiRh可以用坐标,颜色,法线等表示。 h h h是输入点特征的维数。

  2. 对于每个点 x i x_i xi,其类别标签均由一个one-hot vector表示。制定一个标签矩阵 Y ∈ y Y∈y Yy,其中矩阵 Y Y Y的每一行表示点 x i x_i xi的one-hot label,而 y y y表示具有非负元素的 N × C N×C N×C矩阵的集合(C是类别数)。

  3. 将点云平均分为两组,即 X S = { x 1 , x 2 , . . . , x N } X_{S}= \left \{x_{1},x_{2},...,x_{N}\right \} XS={ x1,x2,...,xN},及其标签矩阵 X 1 : M ; X_{1:M}; X1:M X U = { x M + 1 , x M + 2 , . . . , x N } X_{U}= \left \{x_{M+1},x_{M+2},...,x_{N}\right \} XU={ xM+1,xM+2,...,xN},及其标签矩阵 Y M + 1 : N Y_{M+1:N} YM+1:N

  4. 使用标签传播算法在点子集 X S X_S XS X U X_U XU之间执行双向Self-Prediction,即从 X S X_S XS X U X_U XU以及从 X U X_U XU X S X_S XS反向传播标签。.

  5. 首先,构造一个完整的图 W ∈ R N × N W∈R^{N×N} WRN×N,其每个元素都由高斯相似度函数定义:
    W i j = e x p ( − d ( φ ( x i ) , φ ( x j ) ) 2 σ 2 ) − − − − − − − − − − − − − − − − − − − − ( 1 ) W_{ij}=exp(-\frac{d\left ( \varphi \left ( x_{i}\right ),\varphi \left ( x_j\right )\right )}{2\sigma ^{2}})--------------------(1) Wij=exp(2σ2d(φ(xi),φ(xj)))(1)
            φ \varphi φ是骨干网
            φ ( x i ) \varphi \left ( x_{i}\right ) φ(xi)表示点 x i x_i xi的提取特征,
            d d d是欧几里得距离度量函数,
            σ σ σ是用于调整strength neighbors的长度比例参数。
            在所有实验中,将σ设置为1。

  6. 然后通过计算拉普拉斯矩阵对构造的图进行归一化:

L = D − 1 / 2 W D − 1 / 2 − − − − − − − − − − − − − − − − ( 2 ) L=D^{-1/2}WD^{-1/2}----------------(2) L=D1/2WD1/2(2)
                D D D是对角矩阵, D i i D_{ii} Dii W W W的第i行之和。即 D i i = ∑ j = 1 N W i j D_{ii}=\sum_{j=1}^{N}W_{ij} Dii=j=1NWij

  1. 为了分别在给定 X S X_S XS标签预测 X U X_U XU标签和给定 X U X_U XU标签时预测 X S X_S XS标签,必须通过将Y1:M和YM + 1:N分别填充零向量来准备两个初始标签矩阵 S 0 S^{0} S0 U 0 U^0 U0。 具体来说, S 0 S^{0} S0 U 0 U^0 U0表示为:
    S 0 = [ Y 1 T , . . . , Y M T , 0 T , . . . , 0 T ] T − − − − − − ( 3 ) S^{0}=\left [ Y_{1}^{T},...,Y_{M}^{T},0^{T},...,0^{T}\right ]^{T}------(3) S0=[Y1T,...,YMT,0T,...,0T]T(3)
    U 0 = [ 0 T , . . . , 0 T , Y M + 1 T , . . . , 0 N T ] T − − − − − ( 3 ) U^{0}=\left [ 0_{}^{T},...,0_{}^{T},Y_{M+1}^{T},...,0_{N}^{T}\right ]^{T}-----(3) U0=[0T,...,0T,YM+1T,...,0NT]T(3)
            Y i Y_i Yi表示标签矩阵 Y Y Y的第 i i i行。
  2. Self-Prediction过程是通过标签传播算法执行的,其迭代版本如下:
    S ( t + 1 ) = α L S ( t ) + ( 1 − α ) S 0 − − − − − − ( 4 ) S^{(t+1)}=\alpha LS^{\left ( t\right )}+\left ( 1-\alpha\right )S^{0}------(4) S(t+1)=αLS(t)+(1α)S0(4)
    U ( t + 1 ) = α L U ( t ) + ( 1 − α ) U 0 − − − − − − ( 4 ) U^{(t+1)}=\alpha LU^{\left ( t\right )}+\left ( 1-\alpha\right )U^{0}------(4) U(t+1)=αLU(t)+(1α)U0(4)
            α α α是用于控制传播比例的参数,即初始标记矩阵对传播结果的影响程度。将α设置为0.99。
  3. S ( t ) ∈ y S^{(t)}\in y S(t)y U ( t ) ∈ y U^{(t)}\in y U(t)y是第 t t t次迭代结果。通过迭代方程4直到收敛,我们将得到最终结果 S ∗ S^∗ S U ∗ U^ ∗ U。论文直接使用<<Learning with local and global consistency中>>提出的上述迭代版本的封闭形式来获得传播/预测的结果。封闭形式的表达式,如下所示:
    S ( ∗ ) = ( 1 − α L ) − 1 S 0 − − − − − − ( 5 ) S^{(\ast)}=\left ( 1-\alpha L\right )^{-1}S^{0}------(5) S()=(1αL)1S0(5)
    U ( ∗ ) = ( 1 − α L ) − 1 U 0 − − − − − − ( 5 ) U^{(\ast)}=\left ( 1-\alpha L\right )^{-1}U^{0}------(5) U()=(1αL)1U0(5)
            I ∈ R N × N I\in R^{N\times N} IRN×N是单位矩阵。 S M + 1 : N ∗ S^{\ast}_{M+1:N} SM+1:N U 1 : M ∗ U^{\ast}_{1:M} U1:M是有效的传播结果。
  4. 预测 x i x_i xi的标签通过arg max U i ∗ U_{i}^{\ast} Ui 1 < i ≤ M 1< i\leq M 1<iMand arg max S i ∗ S_{i}^{\ast} Si M < i ≤ N M< i\leq N M<iN
  5. 最终self-predicted结果 Y ∗ ∈ y Y^{\ast}\in y Yy是:
    Y ∗ = [ ∪ 1 : M ∗ T , S M + 1 : N ∗ T ] T − − − − − ( 6 ) Y^{\ast}=\left [\cup^{\ast T}_{1:M},S^{\ast T}_{M+1:N}\right ]^{T}-----(6) Y=[1:MT,SM+1:NT]T(6)
  6. 最后,使用ground truth label矩阵 Y Y Y作为监督信号来训练这个Self-Prediction任务。

3.2 Associated Learning Framework

  • 以点云 X X X为输入,骨干网输出特征矩阵 F ∈ R N × H F∈^{RN×H} FRN×H,其中 H H H表示输出特征的维数。Instance head以 F F F为输入,将其转换成point-wise instance embeddings F i n s ∈ R N × H i n s F_{ins}∈R^{N×H_{ins}} FinsRN×Hins,其中 H i n s H_{ins} Hins是实例嵌入的维数,在所有的实验中都设置为32。

损失函数:

  • 如果一个点云例子包含 K K K个实例,并且第K个(K∈1,2,…K)实例包含 N k N_k Nkpoints,则将 e j ∈ R H i n s e_j∈R^{H_{ins}} ejRHins表示为第j个点的实例嵌入,将 μ k ∈ R H i n s \mu_{k}∈R^{H_{ins}} μkRHins表示为第 K K K个实例的平均嵌入。实例损失写为:
    L v a r . = 1 C ∑ c = 1 C 1 N c ∑ i = 1 N c [ ∥ μ C − ϵ i ∥ − δ v ] + 2 − − − − − − − − − − − − − − − ( 5 ) L_{var.}=\frac{1}{C}\sum_{c=1}^{C}\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}\left [ \left \| \mu_{C}-\epsilon _{i}\right \|-\delta _{v}\right ]_{+}^{2}---------------(5) Lvar.=C1c=1CNc1i=1Nc[μCϵiδv]+2(5)
    L d i s t . = 1 C ( C − 1 ) ∑ C A = 1 C ∑ C B = 1 C [ 2 δ d − ∥ μ C A − μ C B ∥ ] + 2 . . . . . . . . C A ≠ C B − − − − − − − − − − ( 6 ) L_{dist.}=\frac{1}{C(C-1)}\sum_{C_{A}=1}^{C}\sum_{C_{B}=1}^{C}\left [2\delta _{d}- \left \| \mu_{C_{A}}-\mu_{C_{B}}\right \|\right ]_{+}^{2} ........ C_{A}\neq C_{B}----------(6) Ldist.=C(C1)1CA=1CCB=1C[2δdμCAμCB]+2........CA=CB(6)
    L r e g . = 1 C ∑ C = 1 C ∥ μ C ∥ − − − − − − − − − − − − ( 7 ) L_{reg.}=\frac{1}{C}\sum_{C=1}^{C}\left \|\mu _{C} \right \|------------(7) Lreg.=C1C=1CμC(7)
    L i n s = L v a r + L d i s t + 0.001 ⋅ L r e g − − − − − − − − ( 10 ) L_{ins}=L_{var}+L_{dist}+0.001\cdot L_{reg}--------(10) Lins=Lvar+Ldist+0.001Lreg(10)
  • [ x ] + = m a x ( 0 , x ) \left [ x\right ]_{+}=max(0,x) [x]+=max(0,x) δ v δ_v δv, δ d δ_d δd分别是 L v a r 和 L d i s t L_{var}和L_{dist} LvarLdist的边界
  • L v a r . L_{var.} Lvar.将属于同一实例的特征拉到它们的平均值
  • L d i s t . L_{dist.} Ldist.将具有不同实例标签的聚类分开
  • L r e g . L_{reg.} Lreg.是一个正则化的术语, pulling the means towards the origin。

实例标签:

  • 通过在推理过程中对实例嵌入进行mean-shift聚类得到的。

semantic-head:

  • 以特征矩阵 F F F为输入,学习语义嵌入矩阵 F s e m ∈ R N × H s e m F_{sem}∈R^{N×H_{sem}} FsemRN×Hsem,在交叉熵损失的监督下进一步进行点分类。点语义嵌入的维数 H s e m H_{sem} Hsem被设置为128。

Self-Prediction head:

  • 结合实例嵌入和语义嵌入,联合self-predict实例和语义标签。

  • 具体地说,将 F i n s F_{ins} Fins F s e m F_{sem} Fsem沿着axis of features连接起来,并将其转换成一个联合嵌入矩阵 F j o i n t ∈ R H j o i n t F_{joint}∈R^{H_{joint}} FjointRHjoint,其中 h j o i n t h_{joint} hjoint是联合嵌入的维数,在所有的实验中都设置为160。

  • 对于 X X X中的每个点,分别将其语义和实例标签转换为one-hot形式。

  • 每个点的实例标签表示它属于哪个实例。这个实例标签是语义不可知的,即不能从一个点的实例标签中推断出它的语义标签。

  • 一个数据集包含 C s e m C_{sem} Csem semantic类,而输入点云样本 X X X包含 C i n s C_{ins} Cinsinstances。然后将语义标签矩阵和实例标签矩阵分别表示为 Y s e m ∈ y s e m Y_{sem}∈y_{sem} Ysemysem and Y i n s ∈ y i n s Y_{ins}∈y_{ins} Yinsyins,其中 Y s e m Y_{sem} Ysem是具有非负元素的 N × C s e m N×C_{sem} N×Csem矩阵的集合, Y i n s Y_{ins} Yins是具有非负元素的 N × C i n s N×C_{ins} N×Cins矩阵的集合。

  • 在给定这两个标签矩阵的基础上,通过连接每个点的语义标签和实例标签,构造了一个多标签矩阵 Y j o i n t ∈ y j o i n t Y_{joint}∈y_{joint} Yjointyjoint,其中 Y j o i n t Y_{joint} Yjoint N × ( C s e m + C i n s ) N×(C_{sem}+C_{ins}) N×Csem+Cins矩阵的非负元素集。可以从 Y j o i n t Y_{joint} Yjoint推断每个点属于哪个语义类和实例。

  • 将self-predicted 切片为 Y j o i n t ∗ ∈ y j o i n t Y_{joint}^*∈y_{joint} Yjointyjoint切片为语义结果 Y s e m ∗ ∈ y s e m Y_{sem}^*∈y_{sem} Ysemysem Y i n s ∗ ∈ y i n s Y_{ins}^*∈y_{ins} Yinsyins,然后分别由semantic ground truth Y s e m Y_{sem} Ysem和instance ground truth Y i n s Y_{ins} Yins进行监督。应该注意的是,Self-Prediction每次都是在一个点云样本之间进行的,因此实例标签的含义随样本的不同而变化也没关系。

Instance-head, semantic-head and Self-Prediction head 联合优化:

  • Instance-head and semantic-head旨在获得分割结果。
  • Self-Prediction head 融合了点之间的相似性关系,并加强了backbone以学习更多区分性表示。
  • 这三个heads相互配合,可获得更好的分割效果。
  • Self-Prediction head被丢弃,during inference仅使用实例头和语义头,因此不会引入额外的计算负担和空间使用量。

3.3 Optimization Objectives

  • 用等式10中的实例损失 L i n s L_{ins} Lins训练instance-head。
  • semantic-head由经典的交叉熵损失训练,并由语义标签 Y s e m Y_{sem} Ysem监督,写为:

L s e m = − 1 N ∑ i = 1 N [ Y s e m ] i l o g p i − − − − ( 11 ) L_{sem}=-\frac{1}{N}\sum_{i=1}^{N}\left [ Y_{sem}\right ]_{i}logp_{i}----(11) Lsem=N1i=1N[Ysem]ilogpi(11)

  • p i p_i pi表示由softmax函数计算的输出概率分布。

  • 给定共同的self-predicted 结果 Y i n s ∗ Y_{ins}^{\ast} Yins Y i s e m ∗ Y_{isem}^{\ast} Yisem,我们还通过交叉熵损失训练了Self-Prediction head,公式为:
    L s p = − 1 N ∑ i = 1 N ( [ Y i n s ] i ∗ l o g q i + [ Y s e m ] i ∗ l o g r i ) − − − − − − − − ( 12 ) L_{sp}=-\frac{1}{N}\sum_{i=1}^{N}\left ( \left [ Y_{ins}\right ]_{i}\ast logq_{i}+\left [ Y_{sem}\right ]_{i}\ast logr_{i}\right )--------(12) Lsp=N1i=1N([Yins]ilogqi+[Ysem]ilogri)(12)

  • q i q_i qi r i r_i ri Y i n s ∗ Y_{ins}^{\ast} Yins Y i s e m ∗ Y_{isem}^{\ast} Yisem i i i行的输出概率分布(由softmax计算)。

  • 输出概率分布也由softmax函数计算

  • 三个head共同优化,总体优化目标是上述三个损失的加权总和:
    L = L i n s + L s e m + β L s p − − − − − − − − ( 13 ) L=L_{ins}+L_{sem}+\beta L_{sp}--------(13) L=Lins+Lsem+βLsp(13)

其中,β用于平衡上述三个项的贡献,以使它们对总损失的贡献相等。在所有的实验中,β均设置为0.8。

(四)Experiments

4.1 Experiment Settings

Datasets:

  • S3DIS
  • ShapeNet

S3DIS:

  • 对于在S3DIS上进行的实验,采用与PointNet 相同的设置,其中每个房间被分成面积为1m×1m的块。
  • 每个3D点均由9维矢量表示(XYZ,RGB和房间的归一化位置)。
  • 在训练期间为每个块采样4096个点,所有点都用于测试。
  • 上面提到,先构造一个图,然后将点云分为两组以在Self-Prediction head中执行Self-Prediction。在实践中,将点云分为more than两组以进行加速。
  • 具体来说,根据实例标签将每个块平均分为8组,即保证每个实例的点平均分布在每个组中。
  • 结果,每个语义的点也平均地分布在每个组中。
  • 然后随机配对4对,进行Self-Prediction。
  • 使用SGD优化器,batch size 8。在S3DIS上训练了100个时期的所有模型。基本学习率设置为0.01,然后每20个时期除以2。
  • 按照与JSIS3D: joint semanticinstance segmentation of 3d point clouds with multi-task pointwise networks and multi-value conditional random fields. In: CVPR (2019)和Associatively segmenting instances
    and semantics in point clouds. In: CVPR (2019)相同的设置将 δ v δ_v δv设置为0.5,将 δ d δ_d δd设置为1.5。 L s p L_{sp} Lsp的损失权重系数β设置为0.8.
  • BlockMerging算法用于在推理过程中合并来自不同块的实例,对于mean-shift clusterin,bandwidth设置为0.8。

ShapeNet:

  • 输入点云只有coordinat表示
  • 在Self-Prediction head,输入点云分成4组。
  • Adam optimizer
  • train all models for 200 epochs
  • batch size 16
  • 学习率设置为0.001,每20个epochs.除以2。
  • 其他设置与在S3DIS上进行的实验相同。

4.2 Segmentation Results on S3DIS

注释:

  1. Baseline表示仅使用instance-head和semantic-head来训练backbone network。
  2. InsSem-SP表示方法的完整版本,即联合执行instance and semantic Self-Prediction.
  3. Ins-SP意味着仅通过使用 F i n s F_{ins} Fins Y i n s Y_{ins} Yins输入来执行instance Self-Prediction。
  4. Sem-SP意味着只能通过接受 F s e m F_{sem} Fsem Y s e m Y_{sem} Ysem做为输入来执行semantic Self-Prediction。
  5. 提出的Self-Prediction head被公式化为损失函数,并且会在推理过程中删除,因此与基线相比,不会引入额外的计算负担和空间使用量。

注释:

  • Cov is the average instance-wise IoU between prediction and ground truth.
  • WCov means Cov that is weighted by the size of the ground truth instances.

4.3 Segmentation Results on ShapeNet

4.4 Ablation Study

任务: 验证bidirectional Self-prediction和 class-averaged group dividing 方式优势。

  1. 执行 unidirectional Self-Prediction,并且该方向是在两个方向中随机选择的。
  2. 将点云随机分组,而不是根据Self Prediction head.中的实例标签进行分组。
  3. 与单向自预测相比,双向自预测带来了明显的改进,随机分组会稍微降低性能。

Parameter Analyses.

  1. 方法对参数β(平衡 L s p L_{sp} Lsp权重)不敏感,并且在很大范围内(0.4-1.4)都可以很好地工作。
  2. 第二个参数是在性能和​​训练速度之间进行权衡的divided groups G的数量。性能相对稳定,并且在合理范围内对G不敏感。
  3. 最后一个参数是 α α α,用于控制标签传播过程中的传播部分。论文在所有实验中都遵循通用设置(α= 0.99),并在较大范围内(即,α> 0.5)优于基线。

(五)Conclusion

  • 提出了一种名为Self-Prediction的新学习方案以加强关系探索,并提出了一种将点云的实例和语义分段进行关联的联合框架。
  • 大量的实验证明,论文方法可以与流行的网络相结合,大大提高其性能。仅以PointNet ++为骨干,方法就可以达到最新水平或可比的结果。
  • 论文方法是一个通用的学习框架,易于应用于大多数现有的学习网络。

猜你喜欢

转载自blog.csdn.net/Dujing2019/article/details/107843794