【点云】《PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space》

本文探讨了如何在Pointnet基础上进行层次化和多尺度的点集特征学习,介绍了Pointnet++中采样层、分组层和PointNet层的工作原理,以及如何通过MSG和MRG处理点云数据的密度变化。同时,文章详细阐述了特征的反向传播策略,尤其是在Pointnet++中MLP的运用,包括空间编码、全局特征聚合和任务特定的预测阶段。
摘要由CSDN通过智能技术生成


将pointnet作为工具,进行层次化、多尺度特征学习,且设计了密度自适应的PointNet层来处理点集的非均匀采样密度

Pointnet++;我们首先根据底层空间的距离度量将点集划分为重叠的局部区域。与 CNN 类似,我们提取局部特征,捕捉小邻域的精细几何结构;这些局部特征被进一步分组为更大的单元并被处理以产生更高级别的特征。重复这个过程,直到我们获得整个点集的特征 (局部特征–不同算子–高级特征,感觉和图像特征提取的想法很像)
pointnet相当于pointnet++的特征学习器(因为在model里STN3d和STNkd真的很好用)

分层点集特征学习

集合抽象层由三个关键层组成:采样层、分组层和PointNet层。采样层从输入点中选择一组点,这定义了局部区域的质心。然后,分组层通过查找质心周围的“相邻”点来构造局部区域集。 PointNet 层使用迷你 PointNet 将局部区域模式编码为特征向量。
sampling层和grouping层选好点,pointnet层提取特征

N是数据集中有N个点,d是欧氏空间维数,二维或者三维,C是每个点还可能具有的其他特征的维度,颜色、法线等
sampling层:最远点采样FPS选择子集,比随机采样好,输入是Nx(d+C)个点,输出是选定的N’个中心点形成的点集
grouping层:根据选定的点集,将其拓展为N’个邻域,输出维度是N’xKx(d+C)。这个输出表示了N’个局部区域,每个区域由K个点组成,每个点都有d维的坐标和C维的特征
与 kNN 相比,ball query的局部邻域保证了固定的区域尺度,从而使局部区域特征在空间上更具泛化性,这对于需要局部模式识别(例如语义点标记)的任务来说是首选
前者KNN就是大家耳熟能详的K近邻,找K个坐标空间最近的点。 后者query ball point就是划定某一半径,找在该半径球内的点作为邻点
pointnet层:对由质心和邻域组成的每个局部区域进行抽象,输出N’x(d+C’)

多尺度特征学习

点云数据是非均匀的,理想情况下,我们希望尽可能仔细地检查点集,以捕获密集采样区域中最精细的细节。然而,在低密度区域进行这种近距离检查可能会因采样不足而被破坏。
因此提出了pointnet++,当输入密度发生变化时会将不同尺度的特征及进行组合作为输出特征
我们提出了两种类型的密度自适应方法:MSG和MRG

MSG变换不同的scale,每一个scale都用pointnet算一遍,然后拼起来

MRG只算一遍pointnet,剩下的先降维区域点集特征,再进行总结,最后两部分拼起来,比MSG计算量小。当点集稀疏时逃课的那个不可靠,pointnet权重要大;反之点集密集时逃课那个权重大

特征的反向传播

在PointNet++的层次化结构中,原始点集在经过采样层和分组层后会被下采样,这意味着不是所有的原始点都会被保留
但是在分割问题中,我们希望为每一个点都赋予一个标签
为了实现这一点,PointNet++采用了一种层次化的特征传播策略,该策略使用基于距离的插值和跨层跳跃连接(skip links)来将特征从下采样的点传播到原始点集

  1. step1 初级特征:对下采样点集中最接近的k个邻居点的特征,通过反距离加权平均值找到被忽略点的部分特征
  2. step2 高级特征:从更高层次的抽象层直接传递下来跳跃连接特征(skip linked features),将其与初级特征拼接
  3. step3 融合局部与全局:将拼接后的特征通过一个“单位点网络”(unit pointnet),这类似于卷积神经网络中的逐点卷积,用于进一步处理和更新每个点的特征向量

Pointnet与Pointnet++中MLP的体现

1. 空间编码(Pointwise Feature Learning):
PointNet首先对每个点应用一个小型的MLP网络,这个网络被称为T-Net(Transformation Network),用于学习每个点的空间编码。这个过程将每个点的原始坐标转换为一个新的特征向量,这些特征向量包含了空间信息和局部结构信息。
2. 全局特征聚合(Global Feature Learning):
在对每个点进行空间编码后,PointNet使用一个全局的MLP网络来聚合所有点的特征。这个全局MLP网络接收由T-Net输出的所有点的特征向量,并通过最大池化(Max Pooling)操作来提取全局特征。最大池化操作确保了点集的排列不变性,即无论点的顺序如何变化,最终的全局特征表示都保持不变。
3. 分类或分割任务:
在PointNet的最后阶段,全局特征向量被送入另一个MLP网络,这个网络根据具体的任务(如分类或分割)来输出最终的预测结果。对于分类任务,MLP输出一个类别概率向量;对于分割任务,MLP为每个点输出一个局部特征向量,这些向量随后用于点级别的预测。
在PointNet++中,MLP的使用与PointNet类似,但在处理局部区域和多尺度特征时,PointNet++引入了额外的MLP网络来捕捉不同尺度上的局部特征。这些局部MLP网络与PointNet中的全局MLP网络相似,但它们专注于局部区域的特征提取。

  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值