当前位置:网站首页 > C++编程 > 正文

pointnet++网络结构(pointnet网络结构)



PointNet不能捕捉到度量空间(欧式和非欧但是只要有度量PointNet都可以用)点所产生的几何结构,从而限制了它识别细粒度模式的能力和对复杂场景的通用性。在这项工作当中,我们引入了一个分层神经网络,递归的将应用于输入点集的嵌套划分。通过利用度量空间距离,我们的网络可以在不断增加的上下文范围内学习局部特征。进一步的观察可以发现点集通常在不同的密度上进行采样,这导致在均匀密度上训练的网络性能大大降低,我们提出了新的去自适应的组合来自多个尺度的特征。

  • 分层神经网络
  • 自适应采样以应对不同密度的点集

我们感兴趣的是分析几何点集,它是欧几里德空间中点的集合。一种特别重要的几何点集类型是3D扫描仪获得的点云。作为一个集合,这样的数据必须对其成员的排列保持不变。此外,度量距离定义可能显示不同属性的局部邻域。例如,点的密度和其他属性在不同位置可能不一致---在3D扫描中,密度变化可能来自透视效果,运动等。

的基本思想是学习每个点的空间编码特征,然后将所有独立的点特征聚合到一个全局点云特征中。这样的设计导致不会捕获由度量带来的局部结构。然而局部结构已经被证明是卷积结构成功地重要因素。把规则网络上的数据作为输入,能够在的结构上以越来越大的视野以逐步获取特征。低的时候,神经元的感受野较小,水平较高的时候,神经元的感受野较大。

我们引入了一个分层神经网络,named ,它以层次的方式处理度量空间中的一组采样点。的思想很简单,首先我们将点集根据度量距离将其划分为重叠的局部区域。和类似,我们先从小区域中提取局部特征,捕捉精细的几何结构;这些局部特征被进一步分组为更大的单元,并进行处理以生成更高级别的特征。重复这个过程直到获得整个点集的特征。

  1. 我们先从小区域中提取局部特征,捕捉精细的几何结构
  2. 局部特征被进一步分组为更大的单元,并进行处理以生成更高级别的特征
  3. 重复这个过程直到获得整个点集的特征

然而由于特征尺度的纠缠性和输入点集的非均匀性,确定合适的局部邻域球的尺度大小是一个更具有挑战性的问题。我们假设输入点集可能在不同的区域有不同的密度,这一点是很常见的,因此,我们的输入点集和CNN是很不相同的,输入可以被视为在均匀恒定密度的规则网格上定义的数据。在中,使用较小的是一件很好的事情,但是在这里,由于采样的不足,小的邻域由更少的点组成,这可能不足以允许 capture patterns robustly

  1. 可识别非刚性物体
  2. 和的越小越好不同,由于点云的不均匀可能会导致,Feature extractor容易收到稀疏点云不稳定的影响。

我们的工作可以看作为是的扩展,它增加了层次结构。

给定一个无序的点集,可以定义一个集合函数,他将一组点映射到一个向量:

一个集合抽象层以的矩阵作为输入,其中的是个点,每个点有维的坐标,和维度的特征向量。他的输出是的矩阵,是二次采样的点的个数,是空间的维数,和之前的是一样的,以及刚才区域的特征向量。

Sampling layer. 给输入点集,我们使用最远点采样算法选择一个子集,该抽样算法和随机抽样相比,对于整个点集具有更好的覆盖率。和的扫描不可知分布的向量空间,我们的采样策略以依赖数据的方式生成感受野。

Grouping layer. 该层的输入是一个大小为的点集,和一组大小为。输出是大小为,其中每一个分组对应一个局部区域,是中心点相邻点的个数。需要注意的是这个参数在不同的是可以变化的,但是后续的层能够将可变的点数量转化为固定长度的局部特征描述特征向量。

  • 以第一层为例,输入应该包含,也就是原始的点集,和采样之后的点集。

PointNet layer. 在这一层中,输入为个,大小为。输出中的每个局部区域有中心和对中心邻域进行编码提取特征。输出数据大小为。

具体操作:局部区域中的点的坐标,首先以中心点转化为局部坐标,,其中的和,其中的是中心点坐标。通过使用相对坐标和点特征,我们可以捕获局部区域中点和点之间的关系。

像之前讲的那样,点集在不同区域密度不均与这件事是非常常见的。这种非均匀性给点集特征学习带来这重大的挑战。在密集区域学习到特征可能无法generalize 带稀疏区域。因此,稀疏点云训练出来的模型可能不法识别细粒度的局部结构。

理想情况下,我们希望可以尽可能近的去检查一个点集,以获得在密集区域中的最佳细节信息。然而这种操作在低密度区域是行不通的,因为取样的不足会破坏给总体带来负面的影响。在这种情况下,我们应该在更大的尺度下寻找更大的邻域,以降低本次local feature extractor受到低密度的影响。为了实现这个目标,我们提出了密度自适应,当输入采样密度变化的时候,该层学习组合来自不同尺度区域的特征。我们称具有密度自适应PointNet层的分层网络为。

在PointNet++中,每个抽象层提取多个尺度的local patterns并且根据local point densities智能的对这些特征进行组合。在对局部区域进行分组和结合不同尺度的特征方面,我们提出了两种类型的密度自适应层,如下所示:

image

Multi-scale grouping (MSG). 如上图a所示,捕捉多尺度模式的一种简单但有效的方法是,应用具有不同尺度的分组层,然后根据PointNet提取每个尺度的特征,然后将不同比例的特征连接起来以形成多比例特征。

此处我们训练网络学习一种优化策略,以combine多尺度特征。这是通过对每个实例以随机概率随机删除输入点来实现的,我们称之为随机输入删除。具体来说,针对每个训练数据集,我们从均匀分布的中随机采样一个,其中,这个就是对于每个训练点集的随机丢弃比率。对于每一个点,我们丢弃它的概率为。在实践过程中,为了防止太小导致采样到的过小的情况,从而导致随机丢弃几率太高,生成空集的情况。

在训练过程中,有着不同的稀疏性(的大小不同)和不同的均匀性(丢弃点是随机的)训练集网络。。在test中我们使用所有的可用点,不做dropout。

Multi-resolution grouping (MRG). :上面的多尺度方法计算开销很大,因为他在大规模邻域中以每个中心点为准去运行。特别的是,在较低level的时候中心点的数量非常多,因此时间的成本很大。

此处提出一种替代方案,避免了昂贵的计算开销,但仍然保留了根据点的分布特性自适应聚合信息的能力。在上图的中,某一级别的的区域特征是由两个特征向量串联起来的。图中左边的向量是由集合抽象级别从较低级别汇总每个子区域的特征而获得的。另一个向量(右边),是由单个PointNet直接处理局部区域中所有点获得的。

当局部区域密度比较低的时候,上面的第一个向量的可靠性就不如第二个向量了。因为计算第一个向量的时候包含的点更为稀疏,并且特别容易受到采样不足的影响。在这种情况下,第二个向量的权重就应该更高。换言之,当点的密度很高的时候,第一个向量可以提供更加精确的局部细节信息,因为他在具有较低级别以较高分辨率递归检查的能力。

相比之下的计算效率更高。

在几何抽象层,其中的“原始点”已经是被采样过得点了。然而在于一点标注等集合分割任务当中,我们需要获取所有原始点的点特征。一种解决方案是在所有几何抽象级别中始终将所有店作为质心进行采样,但是这样计算成本很高。另一种方法是将特征从子采样点传播到原始点。

image

此处我们采用基于距离的插值和跨级别跳过链接的分层传播策略。在特征传播级别,我们将特征点从拓展到其中(),具体是利用其原有的点的特征矩阵,。我们通过在的坐标处通过找到这次补上的点,并插入的特征值,实现特征值传播。在众多的插值选择中,基于的反向距离加权平均(如下式2,此处我们使用)。在使用下面公式进行插值完毕之后,使用对特征进行归一化。

Datasets 此处使用了四个数据集进行评估,从2D对象数据集(),3D对象(,这种刚性物体),这种非刚性对象,真实3D环境()

  • :60k训练集10k测试数据集的手写数字图像。
  • : 40个类别的CAD模型(大部分是人造的),使用官方给我分割比例,9843用于训练,2468用于测试。
  • :来自50个类别的1200个形状,每个类别包含24个形状,这些形状大部分是具有各种姿势的有机形状。如马、猫等。此处使用五折交叉验证来获得精度。
  • :1513个扫描和重建的室内场景。此处使用1201个场景进行训练,312个场景进行测试。

将MNIST转化为二维点云,ModelNet40为三维点云。默认情况下MNIST使用512个点,ModelNet40使用1024个点。在下面的最后一行,我们使用发现发现和5000个点作为额外的特征。

image

到此这篇pointnet++网络结构(pointnet网络结构)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • console线接法与usb(console线接法图解)2025-06-23 11:09:07
  • 消息认证码mac值(mac进行消息认证的过程)2025-06-23 11:09:07
  • cp1500上市时间(cp1501图解)2025-06-23 11:09:07
  • apc和upc区别图片(apc和apz)2025-06-23 11:09:07
  • git clone 和git checkout区别(git init和git clone)2025-06-23 11:09:07
  • enact翻译(ency翻译)2025-06-23 11:09:07
  • 2258xt主控ce数(2258xt主控和2258的区别)2025-06-23 11:09:07
  • 进程控制块pcb(进程控制块pcb的主要作用是什么)2025-06-23 11:09:07
  • tomcat idea 乱码(idea配置tomcat乱码)2025-06-23 11:09:07
  • msvcp140.dll是干什么用的(msvcp140.dll有什么用)2025-06-23 11:09:07
  • 全屏图片