《OccuSeg: Occupancy-aware 3D Instance Segmentation》Paper Reading

论文信息

作者 作者单位 年份 会议/期刊名 引用量 研究方向 方法
Lei Han; Lu Fang THU&CUHK 2020 CVPR 63 点云实例分割 super-voexl 图分割 占用估计 嵌入表示学习

TL;DR

作者提出一个估计占用尺寸的实例分割机制,占用尺寸(3D oocupancy size)指的是每个voxel去估计自己所在instance的voxel数量。

定义一个”3D occupancy size”定义为每个实例占用的体素数量。在此基础上,提出了一种占用感知的三维实例分割方案。聚类方案受益于预测占用大小和聚类占用大小之间的可靠比较,这有助于正确聚类硬样本并避免过度分割。

这篇工作同样也采用super-voxel的方式做pre-merge

在正式的做super-voxel clustering的时候作者利用上面提到的occupancy size以及spatial information 与 implicit feature这三个feature去计算权值进行聚类

这里的聚类是采用计算super voxel两两之间的score,卡阈值得到,聚类依据则融合了上面三个估计量以一个概率的形式得到score。

Method

Framework

这个网络输入一个点云场景,流向了两个地方,第一是做3D U-Net,后面预测偏移量(spatial term)、occupancy (实例占用大小)、feature term(隐式特征,判别损失指导训练);第二是做super voxel生成,用得到的super voxel来构建图的节点,节点的特征用super voxel的所有点的特征聚合表示,拿到节点之间的特征之后计算边的链接概率,最后卡阈值来进行图分割得到最终的实例分割结果。

1. Multi-task learning

这里就是用U-Net去学习三个事情:语义分割、embedding (包括偏移量估计还有隐式判别学习)、ouucpancy size估计。语义分割的loss就是CE Loss,而且语义分割的结果不会被用来指导实例分割。

a) Embedding Learning

实际上是学习两个事情:实例中心偏移量估计、feature embedding

$\mathcal{L}{\mathrm{e}}=\mathcal{L}{\mathrm{sp}}+\mathcal{L}{\mathrm{se}}+\mathcal{L}{\text {cov }}$

并且两种嵌入都使用协方差估计进一步正则化。

Spatial Term

实际上就是实例中心偏移量估计

$\mathcal{L}{\mathrm{sp}}=\frac{1}{C} \sum{c=1}^{C} \frac{1}{N_{c}} \sum_{i=1}^{N_{c}}\left|\mathbf{d}{i}+\mu{i}-\frac{1}{N_{c}} \sum_{i=1}^{N_{c}} \mu_{i}\right|$

Feature Term

判别损失,学习如何判别点是否是来源于同一个实例(参考论文** ** Semantic instance segmentation with a discriminative loss function.

$\begin{aligned} \mathcal{L}{\mathrm{var}} &=\frac{1}{C} \sum{c=1}^{C} \frac{1}{N_{c}} \sum_{i=1}^{N_{C}}\left[\left|\mathbf{u}{c}-\mathbf{s}{i}\right|-\delta_{v}\right]{+}^{2} \ \mathcal{L}{\mathrm{dist}} &=\frac{1}{C(C-1)} \sum_{c_{A}=1}^{C} \sum_{c_{B}=c_{A}+1}^{C}\left[2 \delta_{d}-\left|\mathbf{u}{c{A}}-\mathbf{u}{c{B}}\right|\right]{+}^{2}, \ \mathcal{L}{\mathrm{reg}} &=\frac{1}{C} \sum_{c=1}^{C}\left|\mathbf{u}_{c}\right| \end{aligned}$

Covariance Term

The covariance term aims to learn an optimal clustering region for each instance.

这里实际上是约束一个实例中两个embedding各自的协方差最小,不同实例的spatial 和 feature embedding差异性越大。

首先我们计算每个实例中spatial和feature embedding的协方差c-th instance covariance $(\sigma_s^c, \sigma_d^c)$,然后得到c-th instance的点的数据在spatial&feature 的观测下属于该实例的概率

$p_{i}=\exp \left(-\left(\frac{\left|\mathbf{s}{i}-\mathbf{u}{c}\right|}{\sigma_{s}^{c}}\right)^{2}-\left(\frac{\left|\mu_{i}+\mathbf{d}{i}-\mathbf{e}{c}\right|}{\sigma_{d}^{c}}\right)^{2}\right)$

这里应该有个假设,估计量服从高斯分布。

最后,同样用CE Loss去学习这个概率

$\mathcal{L}{\text {cov }}=-\frac{1}{C} \sum{c=1}^{C} \frac{1}{N} \sum_{i=1}^{N}\left[y_{i} \log \left(p_{i}\right)+\left(1-y_{i}\right) \log \left(1-p_{i}\right)\right]$

b) Occupancy Regression

这部分也比较简单,预测i-th voxel所在的 c-th instance占有的voxel的数量,为了提高鲁棒性,实际预测数量的对数

$\mathcal{L}{\mathrm{o}}=\frac{1}{C} \sum{c=1}^{C} \frac{1}{N_{c}} \sum_{i=1}^{N_{c}}\left|o_{i}-\log \left(N_{c}\right)\right|$

同时作者还引入一个测量指标来说明预测的准确性以及可行性

2. Instance Clustering

前面是训练一个网络估计点的特征的工作,后面利用前面网络估计的embedding以及直接从点云场景提取super voxel的结果进行实例的聚类,因为这里实际是从super voxel聚合得到instance,所以这步叫做实例聚类而不是实例分割。

前面我们有了点的语义、空间表示、嵌入表示、占用尺寸的信息,首先我们需要构建出super voxel的信息。直接用averaging operation就可以。

对于占用尺寸,我们可以进一步计算super-voxel的占用率(occupancy rate),拿平均后得到的占用尺寸和super voxel中voxel的数量做除法得到占用率。如果占用率大于1,说明该super voxel中可能含有多于它对应instance的点。

$r_{i}=\frac{\left|\Omega_{i}\right|}{O_{i}}$

有了super voxel和它的表示之后可以建立一个图$G=(V,E,W)
$,节点就是生成的超点,边的权值定义如下

$w_{i, j}=\frac{\exp \left(-\left(\frac{\left|\mathbf{S}{\mathbf{i}}-\mathbf{S}{\mathbf{j}}\right|}{\sigma_{s}}\right)^{2}-\left(\frac{\left|\mathbf{D}{\mathbf{i}}-\mathbf{D}{\mathbf{j}}\right|}{\sigma_{d}}\right)^{2}\right)}{\max (r, 0.5)}$

形式上与上面训练时的概率p很像,但是感觉用t检验(双总体t检验 )更数学一点。

$\sigma_d
$与$\sigma_s
$表示两个super voxel的所有点的协方差。

分母部分$max(r,0.5)$会惩罚那些可能会引起over segmentation的super voxel,拉低他们的权重,另外还要过滤掉那些$r$过大或者过小的super voxel,限制为$0.3<r<2$。

Experiment

Note

  1. 利用FlashFusion制作实时实例分割系统,作为演示demo

  2. 测试了三个数据集: ScanNetV2 S3DIS SceneNN

  3. 注意这篇工作的时间分析,提取supervoxel最耗时,大约是网络推断用时的7倍

  4. 消融实验中不加偏移量估计掉1.4个点,不加occupancy掉3.3,不加feature掉7.5,可见嵌入表示的学习还是很有必要的

Thought

感觉是一个不错的工作,利用概率的方式建模提高了方法设计的合理性。但是super voxel的使用会增大计算开销,不知道这一步能否用其他方式来替代。

这篇工作提出解决over segment的方式是估计occupancy size,保留那些super voxel的occ size大于super voxel的体素数量的super voxel去做clustering

而occupancy size的作用主要是用来干掉那些可能造成over segmentation的super voxel。

读论文的时候spatial feature看了半天没看明白是要干什么,到第四页看到公式的时候才知道这是偏移量估计,感觉的作者写的时候思考和后面工作不大一样,而且这个工作早于PointGroup,提出偏移量估计的原创性也挺高的。这个工作目前还是ScanNet上第二好的结果,说明方法还是挺靠谱的,另外第一是SSTNet,也是基于super voxel的方法,这方法有利有弊,确实挺有效的,但是引入了很大的计算开销。