【点云语义分割】Weakly Supervised Semantic Point Cloud Segmentation: Towards 10× Fewer Labels(CVPR 2020)
论文链接
代码链接

Motivation

弱监督工作都是利用少的标记样本去做更好的预测结果,本文的弱监督包括不完全监督,即只有少量的点带有准确的label;不准确监督,即点云的每个sample都带有一个不准确的label,文章将这两种弱监督的方式互为补充。之后用Siamese Self-Supervision的技术去处理没有label的点云,此外,文章的写作和分析都很到位。

概念陈述

【点云语义分割】Weakly Supervised Semantic Point Cloud Segmentation: Towards 10× Fewer Labels(CVPR 2020)
把点云标记为BB个独立的shapes或者房间块,记做{Xb}b=1B\left\{\mathbf{X}_{b}\right\}_{b=1 \cdots B}。每一个sampleXbRN×F\mathbf{X}_{b} \in \mathcal{R}^{N \times F} 包括NN个3d点和点的特征(如xyz,rgb)。每一个sample被进一步标记为 per-point segmentation label yb{1,K}N\mathbf{y}_{b} \in\{1, \cdots K\}^{N},比如飞机的机身、机翼、发动机。为了清晰起见,文章将其标记为 one-hot encoded label Y^{0,1}B×N×K\hat{\mathbf{Y}} \in\{0,1\}^{B \times N \times K}。点云的编码网络标记为 f(X;Θ)f(\mathbf{X} ; \Theta),嵌入后的点云特征为 ZbRN×K\mathbf{Z}_{b} \in \mathcal{R}^{N \times K}

Method

【点云语义分割】Weakly Supervised Semantic Point Cloud Segmentation: Towards 10× Fewer Labels(CVPR 2020)
网络总共分为四个branch

Incomplete Supervision Branch

文章假设,在点云的sample {Xb}\left\{\mathbf{X}_{b}\right\} 中,只有少数的点有label。技术上,文章采用一个二分掩码 M{0,1}B×N\mathbf{M} \in\{0,1\}^{B \times N},其中1为标记的点,0为其他。在标记的点上,文章定义了交叉熵损失:
lseg=1Cbimbiky^biklogexp(zbik)kexp(zbik) l_{s e g}=-\frac{1}{C} \sum_{b} \sum_{i} m_{b i} \sum_{k} \hat{y}_{b i k} \log \frac{\exp \left(z_{b i k}\right)}{\sum_{k} \exp \left(z_{b i k}\right)}
其中,C=b,imbi=M1C=\sum_{b, i} m_{b i}=\|\mathbf{M}\|_{1} 是归一化变量,即是被标记的点的个数。

讨论:这部分理论分析了弱监督情况下点的标记策略,文章假设一个全监督的网络和一个弱监督的网络,当这两个网络的梯度相近时,预测出来的结果就相近。接下来证明了当弱监督标记的label呈现独立同分布时,这种情况更可能接近于全监督的梯度。在标记策略上就是对每个sample都标记了点效果更好。
【点云语义分割】Weakly Supervised Semantic Point Cloud Segmentation: Towards 10× Fewer Labels(CVPR 2020)

Inexact Supervision Branch

将网络输出ZbRN×K\mathbf{Z}_{b} \in \mathcal{R}^{N \times K}做最大池化后得到Zb=maxiZbi\overline{\mathbf{Z}}_{b}=\max _{i} \mathbf{Z}_{b i},标签为yb=maxiy^bi\overline{\mathbf{y}}_{b}=\max _{i} \hat{\mathbf{y}}_{b i},引入一个如下形式的交叉熵损失:
lmil=1BKbkyˉbklog11+exp(zˉbk)+(1yˉbk)(log(exp(zˉbk)1+exp(zˉbk))) \begin{aligned} l_{m i l}=&-\frac{1}{B \cdot K} \sum_{b} \sum_{k} \bar{y}_{b k} \log \frac{1}{1+\exp \left(-\bar{z}_{b k}\right)} \\ &+\left(1-\bar{y}_{b k}\right)\left(\log \left(\frac{\exp \left(-\bar{z}_{b k}\right)}{1+\exp \left(-\bar{z}_{b k}\right)}\right)\right) \end{aligned}
基本原理是,对于sample中缺少的那些部分的类别,不应以高对数预测任何点。 不完全的监督分支仅在标签点的一小部分受到监督,而不准确的监督分支则在涉及所有点的样本级别上受到监督,因此它们是相互补充的。

Siamese Self-Supervision Branch

这个分支是为了大部分未标记的点设计的。文章假设任何一点的预测都是旋转和镜像翻转不变,这种假设适用于3D CAD形状和在XoY平面中旋转的室内场景,例如语义标签不应随房间的不同视角而变化。设计的loss如下,F为2范数:
lsia=1BNKbg(f1(Xb))g(f2(X~b))F2 l_{s i a}=\frac{1}{B \cdot N \cdot K} \sum_{b}\left\|g\left(f_{1}\left(\mathbf{X}_{b}\right)\right)-g\left(f_{2}\left(\tilde{\mathbf{X}}_{b}\right)\right)\right\|_{F}^{2}

Spatial & Color Smoothness Constraint

这部分文章将XYZ和RBG信息分开成两个channel,个人感觉存疑,因为颜色信息脱离位置信息存在时没有意义的,到底能不能分开用?随后,作者对xyz和rgb的channel分别算了两个相关的权重矩阵,并把这两个权重矩阵相加,这一步时融合了同一个点的位置信息和颜色信息,但是这样分开做有什么必要么?这个分支在训练策略上,对training阶段和inference阶段有些不同。

实验Experiments

  • 整个实验的算法过程如下:
    【点云语义分割】Weakly Supervised Semantic Point Cloud Segmentation: Towards 10× Fewer Labels(CVPR 2020)

  • 实验方面做了三个数据集,shapenet、partnet和S3DIS,都有不错的效果。

  • 消融实验部分分析了:每个独立部分的重要性;不同的backbone的编码能力;不同的标记的label的数量;可视化了点特征的嵌入。

总结

文章用了DGCNN作为backbone,在处理数据输入的时候用了mask来处理掉数据的部分label,在训练的过程中,从不同的角度设计loss去监督网络的学习。其中,Incomplete Supervision Branch和Inexact Supervision Branch来对少部分有标记的点去学习,Siamese Self-Supervision Branch学习无标记的大部分点,Spatial & Color Smoothness Constraint对整个过程做平滑,类似于CNN之后的CRF。文章值得借鉴的地方是loss的设计思路,和消融实验的策略。

相关文章:

  • 2021-07-04
  • 2021-04-15
  • 2022-12-23
  • 2021-11-23
  • 2021-08-24
  • 2021-12-25
  • 2022-01-07
  • 2022-01-02
猜你喜欢
  • 2021-04-04
  • 2021-05-20
  • 2022-01-04
  • 2021-04-06
  • 2022-01-05
  • 2021-08-27
  • 2021-04-16
相关资源
相似解决方案