论文链接
0. Abstract
**背景:**PointNet的设计并未捕捉到度量空间中存在的局部结构,限制了其识别细粒度模式和适用于复杂场景的能力
解决思路:
- 引入了一种分层神经网络,该网络==在输入点集的嵌套分割上递归地应用PointNet==
- 利用度量空间距离,网络能够学习具有不断上下文尺度增加的==局部特征==
- 提出了新颖的==集合学习层 ,以自适应地组合多个尺度的特征==
1. Intro
前期工作:
- PointNet 的基本思想是学习每个点的空间编码,然后将所有单个点特征聚合为全局点云签名
- PointNet 不会捕获由度量引起的局部结构。然而,事实证明,利用局部结构对于卷积架构的成功非常重要
PointNet++:
- PointNet++ 利用分层神经网络,以分层方式处理度量空间中采样的一组点
Yes No 开始 根据底层空间的距离度量将点集划分为重叠的局部区域 提取局部特征 局部特征被分为更大单元 循环结束? 获得整个点集的特征
-
PointNet ++ 的设计需要解决两个问题:如何生成点集的划分,如何通过局部特征学习器抽象点集或局部特征
-
仍然存在的一个问题是如何生成点集的重叠划分
- 解决方法:为了均匀地覆盖整个集合,通过最远点采样(FPS)算法在输入点集中选择质心
-
特征尺度的纠缠和输入点集的不均匀性,确定局部邻域球的适当尺度是一个更具挑战
- 解决方法:输入点集与 CNN 输入非常不同,CNN 输入可以被视为在具有均匀恒定密度的规则网格上定义的数据
主要贡献
- PointNet++ 利用多个尺度的邻域来实现鲁棒性和细节捕获。
- 网络学习自适应地对在不同尺度检测到的模式进行加权,并根据输入数据组合多尺度特征
- PointNet++ 能够高效、鲁棒地处理点集。特别是,在具有挑战性的 3D 点云基准上获得了明显优于现有技术的结果
2. Problem Statement
f f f 可以是为 X \Chi X 分配标签的分类函数,也可以是为 M M M 的每个成员分配每点标签的分段函数
3. Method
3.1 回顾 PointNet
f ( x 1 , . . . , x n ) = γ ( M A X i = 1 , . . , n { h ( x i ) } ) f(x_1,...,x_n)=\gamma (\underset{i=1,..,n}{MAX} \{h(x_i)\}) f(x1,...,xn)=γ(i=1,..,nMAX{h(xi)})
PointNet 在一些基准测试中取得了令人印象深刻的性能。然而,它缺乏捕捉不同尺度的当地背景的能力
3.2 分层点集特征学习
-
PointNet++ 构建了点的分层分组,并沿着层次结构逐步抽象出越来越大的局部区域
-
我们的层次结构由许多抽象级别集合组成(图 2)。在每个级别,都会对一组点进行处理和抽象,以生成包含更少元素的新集合
-
集合抽象层由三个关键层组成:采样层、分组层和PointNet层
- 采样层从输入点中选择一组点,这定义了局部区域的质心
- 分组层通过查找质心周围的"相邻"点来构造局部区域集
- PointNet 层使用迷你 PointNet 将局部区域模式编码为特征向量
采样层
- 给定输入点 { x 1 , x 2 , . . . , x n } \{x_1, x_2, ..., x_n\} {x1,x2,...,xn},我们使用迭代最远点采样 (FPS) 来选择点的子集 { x i 1 , x i 2 , . . . , x i m } \{x_{i_1} , x_{i_2} , ..., x_{i_m} \} {xi1,xi2,...,xim},使得 x i j x_{i_j} xij 是从集合 { x i 1 , x i 2 , . . . , x i j − 1 } \{x_{i_1} , x_{i_2} , ..., x_{i_{j−1}} \} {xi1,xi2,...,xij−1} 到其余点最远点(以公制距离表示)
- 与随机采样相比,在质心数量相同的情况下,它可以更好地覆盖整个点集。与扫描与数据分布无关的向量空间的 CNN 相比,我们的采样策略以数据相关的方式生成感受野
分组层
- 该层的输入是大小为 N × (d + C) 的点集和大小为 N ' × d 的质心集的坐标。输出是大小为 N ′ × K × (d + C) 的点集组
- 每个组对应于一个局部区域,K 是质心点邻域中的点数,因组而异
- 通过卷积神经网络的性质,从度量空间采样的点集中,点的邻域由度量距离定义
- Ball query 的局部邻域保证了固定的区域尺度,从而使局部区域特征在空间上更具泛化性,这对于需要局部模式识别(例如语义点标记)的任务来说是首选
PointNet 层
- 输入是数据大小为 N '×K ×(d+C) 的点的 N ' 个局部区域。输出中的每个局部区域都是由其质心和编码质心邻域的局部特征抽象的。输出数据大小为 N ′ × (d + C′)
3.3 非均匀采样密度下的鲁棒特征学习
-
点集在不同区域的密度不均匀是很常见的。这种不均匀性给点集特征学习带来了重大挑战
-
在低密度区域禁止进行这种近距离检查,因为局部模式可能会因采样不足而被破坏
-
解决方法:提出了密度自适应 PointNet 层(图 3),当输入采样密度发生变化时,该层学习组合不同尺度区域的特征。即PointNet++
-
-
在PointNet++中,每个抽象级别都会提取多个尺度的局部模式,并根据局部点密度将它们智能地组合起来
在对局部区域进行分组并结合不同尺度的特征方面 ,我们提出了两种类型的密度自适应层
多尺度分组(MSG)
- 应用不同尺度的分组层,然后根据 PointNet 提取每个尺度的特征。不同尺度的特征连接起来形成多尺度特征
- 训练网络学习结合多尺度特征的优化策略:
- 对每个实例以随机概率随机丢弃输入点,称之为随机输入丢弃
- 对于每个训练点集,我们选择从 [0, p] 中均匀采样的丢弃率 θ
- 在实践中,我们设置 p = 0.95 以避免生成空点集
多分辨率分组(MRG)
- MSG 方法的计算成本很高,因为它在每个质心点的大规模邻域中运行本地 PointNet
- 某个级别 L i L_i Li 的区域特征是两个向量的串联。通过使用设定的抽象级别从较低级别 L i − 1 L_{i−1} Li−1 总结每个子区域的特征,获得一个向量(图中左侧)。另一个向量(右)是使用单个PointNet直接处理局部区域中的所有原始点获得的特征
- 当局部区域的密度较低时,第一向量可能不如第二向量可靠,在这种情况下,第二个向量的权重应该更高
- 当局部区域的密度较高时,第一向量提供更精细细节的信息
3.4 用于集合分割的点特征传播
-
在集合抽象层中,对原始点集进行二次采样
-
一种解决方案是始终将所有点采样为所有设置的抽象级别中的质心,但这会导致较高的计算成本;另一种方法是将特征从子采样点传播到原始点
-
PointNet 采用基于距离的插值和跨级跳跃链接的分层传播策略
-
在特征传播层中,我们将 N l × ( d + C ) N_l × (d + C) Nl×(d+C) 个点的点特征传播到 N l − 1 N_{l−1} Nl−1 个点,其中 N l − 1 N_{l−1} Nl−1 和 N l N_l Nl( N l ≤ N l − 1 N_l ≤ N_{l−1} Nl≤Nl−1)是输入和输出集合抽象层 l l l 的点集大小
-
通过对 N l − 1 N_{l−1} Nl−1 点的坐标进行插值来实现特征传播,其中插值的选项有很多种,这里使用基于 k k k 个最近邻的倒数距离加权平均值
f ( j ) ( x ) = ∑ i = 1 k w i ( x ) f i ( j ) ∑ i = 1 k w i ( x ) w h e r e w i ( x ) = 1 d ( x , x i ) p , j = 1 , 2 , . . . , C ( p = 2 , k = 3 ) f^{(j)}(x)=\frac{\sum_{i=1}^k w_i(x)f_i^{(j)}}{\sum_{i=1}^k w_i(x)} \ \ \ \ where \ \ w_i(x)=\frac{1}{d(x,x_i)p},j=1,2,...,C \ \ \ (p=2,k=3) f(j)(x)=∑i=1kwi(x)∑i=1kwi(x)fi(j) where wi(x)=d(x,xi)p1,j=1,2,...,C (p=2,k=3)
-
-
将其与抽象级别的跳接点特征连接起来。然后通过"单元PointNet"传递连接的特征
-
应用几个共享的全连接和ReLU层来更新每个点的特征向量
-
重复这个过程,直到我们将特征传播到原始点集
4. Experiment
数据集:评估了四个数据集
- MNIST: 手写数字图像数据集,包含6万张训练样本和1万张测试样本
- ModelNet40:40个类别的CAD模型(大部分是人造的)。使用官方划分的 9,843 个形状进行训练,2,468 个形状进行测试
- SHREC15:50 个类别的 1200 个形状。每个类别包含 24 个形状,其中大部分是具有各种姿势的有机形状,例如马、猫等。使用五 fold 交叉验证来获得该数据集的分类准确性
- ScanNet:1513 个扫描和重建的室内场景。使用1201个场景进行训练,312个场景进行测试
4.1 欧氏度量空间中的点集分类
- 我们评估我们的网络对从 2D (MNIST) 和 3D (ModleNet40) 欧几里得空间采样的点云进行分类
结果
表 2 中的 PointNet (vanilla) 是[20]中不使用变换网络的版本,这相当于我们只有一层的分层网络
对采样密度变化的鲁棒性
-
直接从现实世界捕获的传感器数据通常会遇到严重的不规则采样问题。本文的方法选择多个尺度的点邻域,并学习通过适当加权来平衡描述性和鲁棒性
-
测试期间随机丢弃点(见图 4 左),以验证我们的网络对非均匀和稀疏数据的鲁棒性。 图 4 右侧,MSG+DP(训练期间具有随机输入丢失的多尺度分组)和 MRG+DP(训练期间具有随机输入丢失的多分辨率分组)
4.2 用于语义场景标记的点集分割
为了验证方法是否适合大规模点云分析,对语义场景标记任务进行了评估
-
目标是预测室内扫描中点的语义对象标签
-
在所有实验中删除了 RGB 信息,并将点云标签预测转换为体素标签
引入了分层特征学习并捕获不同尺度的几何特征。这对于理解多个级别的场景以及标记不同尺寸的对象非常重要
对采样密度变化的鲁棒性
- 由于采样密度从均匀点云转移到虚拟扫描场景,SSG 性能大幅下降。另一方面,MRG 网络对采样密度变化更加鲁棒
- 当采样稀疏时,它能够自动切换到描述较粗粒度的特征
- 尽管训练数据(随机丢失的均匀点)和密度不均匀的扫描数据之间存在域差距,MSG 网络仅受到轻微影响,并且在比较方法中实现了最佳精度
4.3 非欧度量空间中的点集分类
- 首先构造由成对测地距离导出的度量空间,再获得模拟测地距离的嵌入度量,接下来提取该度量空间中的内在点特征
- 使用这些特征作为输入,然后根据底层度量空间对点进行采样和分组
- 通过这种方式,我们的网络学习捕获不受形状特定姿势影响的多尺度内在结构
结果
- 该方法优于之前最先进的方法
- 比较方法的第一和第二设置,我们发现内在特征对于非刚性形状分类非常重要
- 比较方法的第二个和第三个设置,发现使用测地线邻域比欧几里得邻域更有利
- 欧几里得邻域可能包括表面上远离的点,并且当形状提供非刚性变形时,该邻域可能会发生巨大变化
- 表面上的测地邻域消除了这个问题并提高了学习效率
4.4 特征可视化
-
可视化了分层网络的第一级内核所学到的内容。我们在空间中创建了一个体素网格,并聚合了在网格单元中最能激活某些神经元的局部点集