首页 > 编程学习 > MASC: Multi-scale Affinity with Sparse Convolution for 3D Instance Segmentation

Abstract

我们提出了一种基于稀疏卷积和点亲和力预测的 3D 实例分割新方法,该方法指示两个点属于同一实例的可能性。所提出的网络基于子流形稀疏卷积[3],处理体素化点云并预测每个占用体素的语义分数以及不同尺度下相邻体素之间的亲和力。一种简单而有效的聚类算法根据预测的亲和性和网格拓扑将点分割成实例。每个实例的语义由语义预测确定。实验表明,我们的方法在广泛使用的ScanNet基准测试 [2] 上大大优于最先进的实例分割方法。我们在 https://github.com/art-programmer/MASC上公开分享我们的代码。

1. Introduction

近年来,视觉社区见证了3D数据捕获和处理技术的巨大进步。消费级深度传感器使研究人员能够收集3D场景的大规模数据集 [2, 1, 7]。此类数据集的出现使基于学习的方法能够处理各种 3D 任务,例如对象识别、部分分割和语义分割。其中,3D 实例分割是一项重要但具有挑战性的任务,因为它需要基于实例准确分割 3D 点没有固定的标签集。在本文中,我们提出了一种简单而有效的方法来学习点之间的亲和力,该方法基于哪些点被聚类为实例。

3D 数据的不规则性对 3D 学习技术提出了挑战。体积 CNN [21, 15, 12] 首先被探索,因为它们是成功的 2D 对应物的直接扩展。提出了各种技术来降低昂贵的 3D 卷积的成本。 OctNet [17] 和 O-CNN [19] 通过八叉树表示利用 3D 数据的稀疏性来节省计算量。其他方法 [9, 14] 直接处理 3D 点云,无需体素化。虽然显示出有希望的结果,但这些方法缺乏对输入点云的局部结构进行建模的能力。后来的方法 [16, 8, 10] 使用各种技巧对局部依赖关系进行建模,但网络处理的点数仍然非常有限(例如,4、096)。室内空间的点云通常包含更多的点,这意味着网络每次只能处理输入点云的一部分,这会禁用空间的全局推理。最近,Graham 等人 [3] 提出了一种基于子流形稀疏卷积 [4] 的超高效体积 CNN 来处理室内场景的整个点云,在语义分割任务上取得了可喜的成果。在本文中,我们采用稀疏卷积并提出了一种基于学习的多尺度亲和力的聚类算法来解决 3D 实例分割问题。

实例分割比语义分割更具挑战性,因为它需要对对象进行额外的推理。实例分割方法可以分为两类,基于提案的方法和无提案的方法。基于提议的方法在对象检测的基础上构建系统,并在边界框提议之后附加分割模块。受最近在 2D 实例分割上取得成功的 Mask R-CNN [5] 的启发,3D-SIS [6] 开发了一个基于提案的系统,该系统在使用 ScanNet 基准评估的 3D 实例分割上实现了最先进的性能[2]。GSPN [22] 提出了一种用于生成提案的生成模型。 FrustumNet [13] 将 2D 提议取消投影到 3D 空间,以供分割网络处理。另一方面,无提议方法基于相似性度量将点聚类到实例中。 SGPN [20] 训练一个网络来预测语义标签、所有点对之间的相似性矩阵以及作为种子点的逐点置信度,从中生成实例分割结果。然而,大多数点对之间的相似性没有提供信息,并且引入了不必要的学习挑战,限制了网络每次只能处理 4, 096个点。我们通过仅预测多个尺度的相邻点之间的相似性来解决这个问题,就像在 [11] 中对2D实例分割所做的那样,并开发了一种聚类算法来基于学习的局部相似性和输入网格拓扑对点进行分组。

在这里插入图片描述

图 1. 我们使用具有子流形稀疏卷积 [3] 的 U-Net 架构来处理室内场景的整个点云,并预测每个点的语义分数以及不同尺度下相邻体素之间的亲和力。一种简单而有效的聚类算法根据预测的亲和性和网格拓扑将点分组到实例中。

2. Methods

如图 1 所示,我们使用与 [3] 中使用的子流形稀疏卷积相同的 U-Net 架构 [18] 进行语义分割。稀疏 U-Net 首先对来自每个 ScanNet 场景的整个点云进行体素化,每个点由其坐标、颜色和局部表面法线表示。在[3]之后,我们将体素大小设置为2cm×2cm×2cm,并使用4096×4096×4096体素网格,这样整个场景就可以被稀疏体素化,每个体素通常最多包含1个点。在体素化之后,具有跳跃连接的子流形稀疏卷积层生成不同空间分辨率的特征图。我们附加一个带有一个全连接层的语义分支来预测逐点语义,并添加多个不同尺度的亲和分支来预测一个活动体素与其 6 个邻居之间的相似度得分。我们表示最精细的尺度,它有4096 × 4096 × 4096 体素,因为尺度0和尺度s的分辨率为 4 , 096 s 2 × 4 , 096 s 2 × 4 , 096 s 2 \frac{4,096}{s^2} \times \frac{4,096}{s^2} \times \frac{4,096}{s^2} s24,096×s24,096×s24,096

在这里插入图片描述

我们将输入网格视为初始graph(V,E),并提出一种基于多尺度亲和场和语义预测的聚类算法将点分组为实例。请注意,聚类是在网格图上进行的,而网络预测具有固定邻域的相邻体素之间的亲和力。因此,我们首先通过取连接两个节点的相邻体素对之间的平均亲和力来计算两个音符之间的亲和力。一开始,每个节点只包含原始点云中的一个点,占据一个体素,两个节点之间的亲和度就是对应体素之间的亲和度。随着节点的增长,一个节点可以占据多个最精细尺度的体素,如果该节点有不少于 4 s 4^s 4s个点落在更高尺度s的体素内,我们就说该节点占据了这个体素。有了节点亲和性,我们如果它们之间的相似度高于0.5,则将每个节点 V i V_i Vi映射到其最相似的邻居 M ( V i ) M\left(V_i\right) M(Vi),否则映射到其自身。通过映射,我们可以将节点聚集成组,使得组中的每个节点都映射到同一组中的另一个节点,并且组中的任何节点都不会映射到其他组。我们将每个集群视为一个新节点并相应地更新边。我们重复这个过程,直到没有变化发生(即每个节点都映射到自己)。上述程序总结在 Alg 1 中。

与 [11] 中用于 2D 实例分割的聚类算法相比,我们的聚类算法更具侵略性,因为它并行合并节点,并且具有使用 GPU 操作实现的潜力。在聚类过程之后,每个实例从其点中获取具有最大票数的语义标签。

3. Results

3.1. Implementation details

我们基于 [3]1 的代码使用 PyTorch 实现了所提出的方法。除了以与 [3] 相同的方式对 ScanNet 场景进行体素化和增强之外,我们还在输入中添加点法线并使用实例标签来生成相邻体素之间的亲和性监督。尺度为 s 的两个相邻体素的相似度得分为 1,如果 1)它们每个都包含至少 4s 个点,并且 2)它们在点之间的实例分布相同。为了更好地预测输入网格稀疏区域的局部亲和力,我们通过在每个三角形内随机采样 5 个点来进一步扩充输入网格,该三角形在任一维度上跨越至少 2 个体素。如果两个采样点以最精细的比例被体素化为相邻的体素,则在两个采样点之间添加一条边,并且采样点也与其最近的原始三角形顶点相连。这种随机致密化也丰富了训练数据。我们使用 2 个尺度进行亲和力预测。我们在 Titan 1080ti GPU 上训练网络 20 个 epoch。

3.2. Quantitative evaluation

我们在 ScanNet 基准测试 [2] 上评估实例分割性能。为了评估每个实例的置信度,我们收集训练集中的所有预测实例并训练一个较小的网络来预测一个实例是否对预测标签有效。网络使用稀疏卷积对实例的点云进行编码,并使用全连接层对预测标签进行编码。我们连接两个特征并添加两个完全连接的层来预测最终的置信度分数。此外,我们发现聚类算法有时难以分割与其他较大对象共面的对象。因此,我们通过根据预测的语义找到这些类的连接组件,为通常是平面的语义类添加额外的实例,即图片、窗帘、浴帘、水槽和浴缸(通常只包含底面)。我们的方法在很大程度上优于最先进的方法。表 1 显示了与已发表结果的比较(与可引用的出版物)。

3.3. Qualitative evaluation

我们在图 2 的验证集中展示了 ScanNet 场景的定性结果。

在这里插入图片描述

图 2. ScanNet 场景的定性结果。在每一行中,我们在左侧显示输入网格,在右侧显示我们的实例分割结果。

4. Discussion

尽管这种简单的方法已经取得了可喜的结果,但仍需要进行一些改进以进一步提高其性能。首先,聚类算法目前是按顺序实现的,因此速度很慢。该算法在理论上是并行的,可以在 GPU 上实现它并对其进行扩展,以实现端到端训练的反向传播。除了速度问题外,多尺度的影响还没有得到充分探索。在实践中,我们发现使用 2 个尺度可以快速训练并取得良好的性能,但尚不清楚每个尺度所起的作用。随着对多尺度亲和性的更多探索,可以设计出更好的聚类算法,使用更多尺度的亲和性来获得更好的性能。最后,当前方法有时无法区分共面对象。

表 1. ScanNet 基准上的实例分割评估(IOU 阈值为 0.5 的 AP)
在这里插入图片描述

原文链接:https://arxiv.org/pdf/1902.04478.pdf

References

在这里插入图片描述

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式