总体概述

这两篇文章出发点一样,都是想借助两个任务的结合来提高性能。

我们都知道,点云语义分割就是对每个点进行分类,而实例分割不但要进行逐点的分类,还需在具体的类别基础上区别开不同的实例。

实例分割可以有两种实现策略:一种是语义分割+聚类;另一种是检测+mask。比如我们都知道的CVPR2018上的文章SGPN就是前者,它的网络会输出语义分割结果和相似矩阵,相似矩阵达到把同类点聚到一起的作用;而第二种策略最典型的例子是Mask-RCNN,当然它是图像领域的网络,在点云领域,首先可以想到的是F-PointNet,比较接近这种思路,先检测出一个大致区域,然后在这个区域内做分割,达到实例分割的最终目标。

今天这两篇文章,用的都是第一种策略:语义分割+聚类。而且在具体实现上也有很多相似点。比如骨干网络用的分别是pointnet和pointnet++,损失函数也非常相似。

具体分析

实例分割dataloader加载的mask标签通道数不一致 实例分割代码_vrmlpad家居场景实例代码

图一是JSIS的网络结构图,网络的主干部分是PointNet,输出分为两路,一路输出语义分类信息,另一路输出实例嵌入信息(instance embeddings,用于指示每个点属于哪个实例),当然了,这两路输出都会在损失函数中有所体现,这里重点看一下实例嵌入信息的损失函数:

实例分割dataloader加载的mask标签通道数不一致 实例分割代码_点云_02

这个函数大致的含义是:Lpull用来将同一个实例中的点聚合到某个中心点周围,Lpush用于将两个实例拉开距离,Lreg是正则项。

然后,将实例嵌入信息采用多值条件随机场进行聚类,达到实例分割的效果。条件随机场其实早在深度学习席卷点云领域之前,就被用来进行点云的分割了,算是一种传统算法,它将点与点之间的差异表征为一个能量函数,通过最小化这个能量函数,达到分割的作用,感兴趣的同学可以详细去搜一些2017年之前的论文了解一下。

实例分割dataloader加载的mask标签通道数不一致 实例分割代码_语义分割和实例分割_03

图三是ASIS的网络结构图,网络的主干部分是PointNet++,输出部分也有两路构成,跟JSIS网络类似,分别是语义信息和实例嵌入信息,并且在实例嵌入信息的损失函数的设计上,基本相同:

实例分割dataloader加载的mask标签通道数不一致 实例分割代码_损失函数_04

但是不同的是,在输出之前,ASIS对网络做了专门的设计如图2(b),使得语义分割和实例分割的信息能够互相利用,这部分是文章的一个亮点,论文也花了很长的篇幅来进行了解释。然后,对于输出的实例嵌入信息,利用mean-shift进行聚类,达到实例分割效果。

 实验效果

实验结果方面JSIS还是不错的,ASIS就要差一点了。总结起来一句话:JSIS简单粗暴,效果好,ASIS花里胡哨,效果差点。

由于这两个网络的代码也是基于pointnet实现的,因此读起来应该会比较容易。感兴趣的同学可以克隆下来跑一跑。

附:

JSIS摘要

深度学习技术已经成为大多数二维图像视觉相关任务的可行模型。然而,在三维空间的一些任务上,如三维场景理解,它们的能力还没有得到充分的实现。在这项工作中,我们同时解决了三维点云的语义和实例分割问题。具体地说,我们开发了一个多任务逐点网络,它同时执行两项任务:预测三维点的语义信息,并将这些点嵌入高维向量中,使相同对象实例的点用相似的嵌入表示。然后,我们提出了一个多值条件随机场模型,将语义和实例标签结合起来,将语义和实例分割问题表述为场模型中标签的联合优化问题。在S3DIS和SceneNN等不同的室内场景数据集上,对该方法进行了深入的评价,并与现有方法进行了比较。实验结果表明,所提出的联合语义实例分割方案对单个构件具有较强的鲁棒性。我们的方法在语义分割方面也取得了state-of-the-art的性能。

ASIS摘要

三维点云能够准确、直观地描述真实场景。到目前为止,如何在这样一个信息丰富的三维场景中分割多样化的元素还很少被讨论。在本文中,我们首先介绍了一个简单而灵活的框架来同时分割点云中的实例和语义。然后,我们提出了两种方法,使这两项任务互相利用,实现双赢。具体来说,我们通过学习语义感知的点级实例嵌入,使实例分割受益于语义分割。同时,将属于同一实例的点的语义特征融合在一起,使每个点的语义预测更加准确。我们的方法在很大程度上超过了现有的方法,在三维语义分割方面有了显著的改进。代码已提供:https://github.com/WXinlong/ASIS。


相关阅读:

1.PointNet++文章及代码