CVPR 2020——Learning to Segment 3D Point Clouds in 2D Image Space

论文:https://arxiv.org/abs/2003.05593
源码:https://github.com/Zhang-VISLab/Learning-to-Segment-3D-Point-Clouds-in-2D-Image-Space

Abstract

  • 研究如何有效和高效地将这些点云投影到2D图像空间中的问题,从而使传统2D卷积神经网络(CNN)(例如U-Net)可用于分割。
  • 受到图绘制的激励,并将其重新构造为整数编程问题,以学习每个单个点云的topology-preserving图到网格映射。
  • 为了在实践中加快计算速度,提出了一种新颖的分层近似算法。借助Delaunay三角剖分从点云构建图,使用多尺度U-Net进行分割。

(一)Introduction

  • 作为存储几何特征的基本数据结构,点云会将从物理世界扫描的点的3D位置保存为无序列表。
  • 相比之下,图像在2D网格上具有规则的图案,并且在局部邻域中的像素组织良好。这样的局部规则性对于快速2D卷积是有好处的,使得比较优秀的卷积神经网络(CNN),例如FCN ,GoogleNet 和ResNet ,可以有效地从像素中提取局部特征。
  • 与传统的CNN不同,PointNet缺乏提取局部特征的能力,可能会限制其性能。

论文解决的问题:

How to effectively and efficiently project 3D point clouds into a 2D image space so that we can take advantage of local pattern extraction in conventional 2D CNNs for point cloud semantic segmentation?

投影很容易导致点云中的结构信息丢失,这种结构上的损失是破坏性的,可能会引入大量噪声,以至于原始云中的局部模式被完全改变,即使使用2D常规CNN也会导致性能不佳。因此,良好的点对图像投影功能是弥合点云输入和2D CNN之间差距的关键。

论文方法:

  • 从点云构造图。
  • 使用图形绘图将图形投影到图像中。
  • 使用U-Net分割点。

论文溯源:

  • 受到图形绘制中图形可视化技术的启发(图形绘制是数学和计算机科学领域,其目标是在具有某些特定属性的平面上显示图形的节点和边缘。)

  • Kamada-Kawai(KK)算法是最广泛使用的无向图可视化技术之一。通常,KK算法定义一个目标函数,该目标函数测量每个图布局的能量。一定的图形距离,并搜索(局部)最小值,以提供合理的2D可视化效果。

  • KK算法在连续的2D空间而不是2D网格(即离散空间)中工作。

  • 提出了一种整数编程(IP)来强制执行KK算法以学习2D网格上的投影,但是会导致NP-complete问题。

  • KK算法的计算复杂度至少为O(n2),且图中节点数为n(例如,点云中的有数千个点),即使对IP进行舍入处理,其计算代价仍然过高。

论文改进:

  • 为了加快计算速度,遵循分层策略,并进一步提出了一种新的具有 O ( n L + 1 L ) O(n\frac{L+1}{L}) O(nLL+1)复杂度的分层,其中L表示数字层次结构中的级别。实际上,这种分层方案还可以帮助使用Delaunay三角剖分降低点云图构建的复杂度,对于3D点,最坏情况下的复杂度为 O ( n 2 ) O(n^{2}) O(n2)
  • 学习点云的图形到网格投影,然后将其填充3D点和零来生成 ( x , y , z ) (x,y,z) xyz图像。将这些图像表示提供给多尺度U-Net 进行分割。

论文贡献:

  • 第一个在学习2D图像表示以进行3D点云分割的背景下探索图形绘制算法。
  • 提出了一种新颖的分层近似算法,该算法考虑了将点云映射为图像表示的计算,并保留了每个云中各点之间的局部信息。
  • 使用结合了Delaunay三角剖分的图绘制算法和多尺度U-Net的集成方法,展示了ShapeNet和PartNet上的最新性能。

(二)Related Work

(三)Our Method: A System Overview

3.1. Graph Construction from Point Clouds

提出现有不足:

  • 在原来论文中,通常通过连接每个点的K个最近邻居(KNN)来生成来自点云的图形。
  • 然而,这样的KNN方法受制于选择合适的K。当K太小时,这些点旨在形成小的子图(即,簇),而不能保证子图之间的连通性。
  • 当K太大时,点密集连接,从而导致局部特征提取中的噪声更多。

分析自己改进:

  • 采用了Delaunary三角剖分一种在计算几何中广泛使用的三角剖分方法)来基于点的位置创建图形。
  • 三角剖分图具有三个优点:(1)保证图中所有节点的连接; (2)所有本地节点直接相连; (3)图连接的总数相对较小。在我们的实验中,
  • 发现Delaunary三角剖分的分割性能要比使用KNN(K = 20)的最佳分割效果略好,边距约为0.7%。
  • Delaunay三角剖分的最坏情况下的计算复杂度为 O ( n ⌈ d 2 ⌉ ) O(n^{\left \lceil \frac{d}{2}\right \rceil}) O(n2d),其中d是特征维,而 ⌈ ⋅ ⌉ \left \lceil \cdot \right \rceil 表示上限操作。因此,在3D空间中,复杂度为 O ( n 2 ) O(n^{2}) O(n2)

3.2. Graph Drawing: from Graphs to Images

步骤:

  1. g = ( ν , ε ) g=(\nu,\varepsilon ) g=(ν,ε)是具有顶点集 ν \nu ν和边集 ε ⊆ ν × ν \varepsilon\subseteq \nu \times \nu εν×ν 的无向图 。
  2. s i j ≥ 1 , ∨ i ≠ j s_{ij}\geq 1,\vee i\neq j sij1,i=j是距离,例如两个顶点 v i , v j ∈ ν v_{i},v_{j}\in \nu vi,vjν之间的最短路径,对图拓扑进行编码。
  3. 学习一个函数 f f f V → Z 2 V\rightarrow Z^{2} VZ2,以将图形顶点集映射到网格上的一组2D整数坐标,以便在给定度量 d : R 2 × R 2 → R d:R^2×R^2→R d:R2×R2R和损失 l : R × R → R l:R×R→R l:R×RR的情况下,可以尽可能保留图形拓扑。
  4. 寻求 f f f以最小化目标 m i n f ∑ i ≠ j l ( d ( f ( v i ) , f ( v j ) ) , s i j ) min_{f}\sum _{i\neq j}l(d(f(v_{i}),f(v_{j})),s_{ij}) minfi=jl(d(f(vi),f(vj)),sij)
  5. x i = f ( v i ) ∈ z 2 x_{i}=f(v_{i})\in z^{2} xi=f(vi)z2作为reparametrization,,可以将此目标重写为整数编程(IP)问题 x ⊆ z 2 ∑ i ≠ j l ( d ( x i , x j ) , s i j ) x\subseteq z^{2}\sum_{i\neq j}l(d(x_{i},x_{j}),s_{ij}) xz2i=jl(d(xi,xj),sij),其中集合 χ = { x i } \chi =\left \{x_{i}\right \} χ={ xi}表示图形的2D网格布局,即2D网格上的所有顶点坐标。
  6. 为简单起见,将 l , d l,d l,d分别设置为最小平方损失和欧几里得距离以保留拓扑结构。这导致以下学习目标(实际上,KK算法与公式1中的目标相同,但在 R 2 R^2 R2中具有不同的可行解空间,导致相对较快的解,稍后将其用作算法中的初始化(图2)):
  7. 一旦确定了网格上一个点的位置,就将它的3D特性和标签(如果有的话)与位置联系起来,最终得到(x, y, z)图像表示和具有相同图像大小的标签掩码,用于网络训练。

缺点:

IP问题是NP-complete,因此找到精确的解决方案是具有挑战性的。KK算法的计算复杂度至少为 O ( N 2 ) O(N^{2}) O(N2),而图中的节点数为n(对于论文,点数为几千),为了加快计算速度,提出分层解决方案。

3.3. Multi-Scale U-Net for Point Segmentation

发现:

等式1将图像表示为紧凑的点云,这表明点云中的局部结构很可能在其图像表示中保留为局部补丁。这对于2D CNN的工作至关重要,因为这样的小卷积核(例如3×3)可用于局部特征提取。

应用:

为了捕获图像中的这些局部模式,通常在网络中使用多尺度卷积。U-Net 的变体很广泛用于不同的图像分割任务。

图释:

论文提出了一种多尺度的U-Net,将Inception模块与U-Net集成在一起,其中FC代表完全连接层,在每个Inception模块和FC层之后都应用ReLU激活,并在最后一个Conv1×1层之后应用softmax激活。

对比:

Single-Scale vs. Multi-Scale.

  • 考虑两种大小的2D卷积核,即1×1和3×3,
  • 实验发现较大的核不会带来明显的改善,但会增加计算负担。
  • 从表2看到带有初始模块的多尺度U-Net明显优于其他单尺度U-Net。

U-Net vs. CNNs.

  • 在表3中将U-Net与其他一些CNN架构进行了比较。
  • 第一个基准是与图2具有类似架构但没有多尺度和 skip connections的自动编码器-解码器网络,分别使用1×1和3×3内核进行了测试。
  • 第二个基准是SegNet,这是一个更为复杂的自动编码器-解码器。同样,我们的U-Net表现最佳。
  • 通过比较表3和表2,可以看到U-Net中的跳过连接确实有助于提高性能。

(四) Efficient Hierarchical Approximation

4.1. Two-Level Graph Drawing

步骤:

  1. 给定一个点云,首先对这些点进行分层聚类。
  2. 依次将Delaunay三角剖分和论文提出的图形绘制算法分别应用于聚类中心以及每个聚类内的点,从而生成较高和较低级别的图形布局。
  3. 最后,将所有较低级别的图形布局嵌入到较高级别的布局中(沿层次结构递归)以生成2D图像表示。
  4. 举例,将来自ShapeNet的2048点云聚类为32个簇,并使用这32个聚类中心构建大小为16×16的更高级别的网格。在每个聚类中,再使用属于聚类的点构建了一个尺寸为16×16的较低级别的网格。最终构造大小为256×256的点云的图像表示。

4.1.1 Balanced KMeans for Clustering

加速从点云进行图形构建的计算的关键是减少三角剖分和图形绘制算法一次处理的点数。Delaunay三角剖分和KK算法的复杂度为 O ( N 2 ) O(N^{2}) O(N2)

问题:

给定n个点,如何确定 K K K个聚类,以使从点云构建图的复杂性降至最低。理想地,所有群集应具有相等的大小 n / K n/K n/K,即平衡。但是诸如KMeans之类的快速算法不会提供这种平衡的聚类。

解决方案:

在KMeans基础之上提出了启发式后处理步骤,以近似平衡条件为 ∣ h ∣ ≤ α ∣ p ∣ K , h ∈ H \left | h\right |\leq \alpha \frac{|p|}{K},h\in H hαKp,hH的群集。

  • P = { p } P=\left \{p\right \} P={ p}表示大小为 ∣ P ∣ | P | P的点云。
  • H = { h } H=\left \{h\right \} H={ h}表示大小为 K K K的一组聚类(即点集)。
  • ∣ h ∣ |h| h表示簇h的大小。
  • α≥1是预定义的常数。

在算法1中列出了算法。 首先应用Kmeans生成聚类初始化。

  • 在每次迭代时,将目标锁定在一个超大规模的聚类上,并仅为一个点更改聚类关联。
  • 将目标聚类 h ′ h' h确定为最接近 h ∗ h * h的不完整聚类以接收一个点。
  • 为了将一个点从 h ∗ h * h发送到 h ′ h' h,所选点是最接近 h ′ h' h中心的边界点。
  • 默认情况下,设置α= 1.2,观察到较高的值对运行时间或性能几乎没有影响。

4.1.2 Fast Graph-to-Image Drawing Algorithm

困难:

等式1中的图形绘制算法是一个具有NP-complete复杂性的IP问题。即使论文使用分层聚类来减少要处理的点数,但是解决确切的问题仍然具有挑战性。

解决:

为了克服这个问题,在算法2中提出了一种快速近似算法。 其中 ∣ X ∣ | X | X表示点数。

Layout Discretization.

使用KK算法初始化布局后,将布局离散到2D网格上。

  • 首先将布局标准化为具有零均值和同一性标准偏差(std)的高斯分布。
  • 然后,使用缩放因子 ∣ X ∣ \sqrt{|X|} X 重新缩放布局中的每个2D点,​​接着使用舍入运算符。
  • 将布局尽可能紧密地组织在一个 ∣ X ∣ × ∣ X ∣ \sqrt{|X|}\times \sqrt{|X|} X ×X 补丁中,同时最小化拓扑变化。
  • 最后,将每个collided point依次替换为网格上最近的空白单元,作为最终的图形布局。

Point Collision.

为了控制运行时间和图像尺寸,需要进行权衡以预先确定最大迭代次数以及Alg.2中2D网格的最大尺寸。 这可能会导致某些3D点在网格上的同一位置发生碰撞。

但是,这种点碰撞场景在论文实验中很见。例如,使用ShapeNet的实现,当投影到2D网格上时,在测试集中的5,885,952个点中观察到26个碰撞,其中2×26 = 52点(即每个碰撞2个点),导致 8.8 × 1 0 − 6 8.8×10^{-6} 8.8×106点碰撞比。

  • 发生点碰撞时,会从碰撞点中随机选择一个点,然后将选择的点放置在具有其3D特征(x,y,z)和标签(如果有)的位置,以训练U-Net。
  • 最大池化或平均池化不适用于此处,因为碰撞点的标签可能会有所不同,例如不同部分边界处的点会导致训练U-Net的混乱。
  • 在测试时,将所选点的预测标签传播到它的所有碰撞点。
  • 在ShapeNet上,由于点碰撞而被错误标记的52个点中,仅观察到4个。

4.2. Generalization

在这里插入图片描述

目的: 在分层方法中实现平衡的聚类,以提高计算效率。

  • 使用全树数据结构(如图5所示)来组织分层聚类。
  • 在每个聚类上,使用聚类中心上的Delaunay三角剖分来构建更高级别的图形,随后是图形绘制生成图像补丁。
  • 然后,将所有补丁按层次嵌入,以生成点云的图像表示。
  • 将图4中的其余步骤应用于分割。

Complexity.

为简单起见且不失一般性,假定整棵树的L≥1级,并且同一级的每个聚类包含相同数量的点。令 a i a_i ai b i b_i bi分别表示第i个级别的聚类数量和每个聚类的子聚类的数量,n为点的总数。

图释: L = 3,a1 = 1,b1 = 2,a2 = 2,b2 = 3,a3 = 6,b3 = 1,n = 6。

∏ j = i L b i = n a i , ∨ i \prod_{j=i}^{L}b_{i}=\frac{n}{a_{i}},\vee i j=iLbi=ain,i

分层近似的运行时间主要由Alg2中的KK初始化决定。详细信息,表4。

Proposition 1 (Complexity of Hierarchical Approximation)

给定一棵全树 ( a i , b i ) \left ( a_{i},b_{i}\right ) (ai,bi) ∀ i ∈ [ L ] ∀i∈[L] i[L]如上所述,Hierarchical Approximation的复杂度 至少为 0 ( n L + 1 L ) 0(n^{\frac{L+1}{L}}) 0(nLL+1)

证明:

将重点放在KK算法的复杂性上,因为它占主导地位。因为对于每个聚类,此复杂度为 0 ( b i 2 ) 0(b_{i}^{2}) 0(bi2),所以方法的总复杂度为 0 ( ∑ i = 1 L a i b i 2 ) 0(\sum_{i=1}^{L}a_{i}b_{i}^{2}) 0(i=1Laibi2)。因为:

(五)Experiments

数据集: ShapeNet and PartNet

ShapeNet:

  • 包含来自16个类别和50个零件类别的16,881个CAD形状模型(分别用于训练和测试的14,007和2,874个)。
  • 从每个形状模型中扫描2048个点,并标记其零件类别。
  • 来自相同对象类别的形状共享相同的零件标签集,而来自不同对象类别的形状没有共享的零件类别。

PartNet:

  • 具有24个形状类别和26,671个形状实例。
  • 从每个形状实例中采样10,000个点,并在一个形状类别中定义多达82个零件语义,这需要更好的本地上下文学习来识别它们。
  • 与在ShapeNet中为所有形状类别训练单个网络不同,PartNet在每个形状类别中定义三个分割级别,其中分别针对每个级别的每个类别训练和测试网络。

5.1. Our Pipeline for Point Cloud Segmentation

在这里插入图片描述
利用图4所示的管线进行点云分割。3D点将按照它们在3D空间中的相对距离平滑地映射到2D图像空间,从而导致图像像素之间的邻域中的分布与点云局部区域中的相似。

Implementation.

  • 在Scikitlearn库中使用KMeans solver ,最多进行100次迭代。
  • 在Scipy库中使用Delaunay三角剖分实现。
  • 在Networkx库中使用spring-layout implementation实现图形绘制。
  • 在 mask image,中,忽略了没有点关联且不会造成网络训练损失的像素。
  • 超参数:clusters K,最大比率α以及低级和高级图形绘制的网格大小。
  • 默认情况下,在ShapeNet和PartNet上设置K = 32和K = 100。在这两个数据集上,α= 1.2,较低和较高级别的网格大小均设置为16×16,从而使得每个点云的256×256图像表示形式。
  • 在训练过程中,遵循PointNet 的旋转和抖动形状模型作为输入。
  • 使用Adam 优化器,学习率设置为0.0001。
  • 在每次迭代中,使用单个批处理对网络进行100个epoch的训练。

Running Time.

表释:

  • 列出了管道中每个组件的平均运行时间。
  • 与2048点的运行时间相比,Delaunay三角剖分和图形绘制算法均得到了显着加速(分别调用了0.1s和38s)。静止图形绘制控制着整个运行时间。可考虑在这改进加速。

5.2. State-of-the-art Performance Comparison

5.2.1 Ablation Study

任务: 使用ShapeNet评估不同因素对分割效果的影响。

Graph Distance s i j s_{ij} sij in Eq. 1.

表释:

  • 对于3D距离方法,不从点云构造图形。相反,直接计算成对的点之间的(x,y,z)距离。
  • 不同的 s i j s_{ij} sij时间确实会对分割效果产生影响,但影响相对较小。

Grid Size in Graph Drawing.

表释:

  • 网格大小不仅影响分割性能,还影响管道的推理时间。
  • 较大的图像大小会导致更长的推理时间,但性能会发生轻微变化。
  • 使用较小的大小可能很难在点之间保留拓扑信息,从而导致性能下降,但推理时间更快。

Number of Clusters.

表释:

  • 与网格大小相似,聚类的数量也对分割性能和推理时间都有影响。
  • K越大,性能下降。这可能是因为更高级别的图在点云中丢失了更多的本地上下文,因此即使在合并之后,这种丢失也无法在学习中恢复。
  • 就时序而言,时间会因Proposition 1中的层次结构不同而波动

5.2.2 Comparison Results

图释:

在图6上说明ShapeNet上的一些视觉结果。可以观察到明显差异,论文的结果更接近于ground-truth。

在这里插入图片描述
图释:

论文方法分别在16个类别中的12个,2个和1个中达到了最佳,第二佳和第三佳。就类mIoU和实例mIoU而言,分别将最新技术水平分别提高了4.8%和3.6%。

在这里插入图片描述

图释:

  • 在PartNet上,有着更为显着的改进,在三种不同的分割水平上分别超过最新水平18.5%,23.5%,21.4%,平均改善了18.3%。
  • 鉴于类别和形状的数量,PartNet更具挑战性。例如,PointNet在ShapeNet上达到83.7%,但在PartNet上仅达到57.9%。但是,论文方法更加健壮和可靠,仅降低了7.0%。
  • 考虑到三个级别中的所有类别,即总共50个类别,论文在50个类别中的47个类别中取得了最佳精度!

(六)Conclusion

  • 利用传统的2D CNN解决了点云语义分割的问题。
  • 提出了一种新颖的分割pipeline,,包括从点云构建图,使用图绘制进行图到图像映射以及使用U-Net进行点分割。
  • 图形绘制算法是论文的计算瓶颈,它本质上是一个整数编程问题。为了加快计算速度,进一步提出了一种新颖的层次近似算法,其复杂度由 0 ( n L + 1 L ) 0(n^{\frac{L+1}{L}}) 0(nLL+1)决定,从而节省了约97%的运行时间。
  • 为了更好地捕获来自点云的图像表示中嵌入的本地上下文,提出多尺度U-Net作为论文的网络。
  • 评估了ShapeNet和PartNet上的pipeline,,在两个数据集上均实现了新的最新性能,并且具有显着的优势。

猜你喜欢

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