首页 > 编程知识 正文

3d点云分割是做什么的,点云数据算法

时间:2023-05-04 05:48:30 阅读:31380 作者:4506

【lhdxf】3D点云应用领域分析【lhdxf】3D点云pointnet算法解读点云文件格式范例: modelnet40_normal_resampled :其中,txt文件上一行有6个点前三点表示x、y、z。 后面三点分别是Nx、Ny、Nz、法向量

点云任务:分类任务; 零件分割; 场景分割等。

点云特征:无序性:只有点,排列顺序不影响结果。

近密远疏的特性:由于扫描和视角的不同。 3358www.Sina.com/,非结构化数据要解决的任务是如何对点云数据进行3358www.Sina.com/。 可以在直接CNN有点难。上直接使用点云吗?

当前深度学习的核心思想是特征提取PointNet的基本出发点: 1、根据点省掉那些预处理操作,模型需要拥有一条龙服务(End2End)

例如,求加法、乘法、最大最小值。

2、直接使用Max函数(简单粗暴) :

信息过于压缩、过于浓缩,特征信息过于丢失。

3、先给每个样本无序性,再进行Max操作(其实是神经网络的隐藏层(维度上升) ) ) ) ) ) ) ) )。

PointNet基本公式:

h表示维数上升函数,g是max函数

置换不变性总体网络架构:升维是获得神经网络的本质就是一个特征提取器。再输出;

分类整体特征

分类网络:寻求整体特征。 的每个样本有n个点,每个点有x、y和z三个维度。 所以n3。 (也可以是六维输入。 n通常被指定为例如在采样中固定输入2048点。 请参阅。 经过mlp的维度提升,各点的3维变为64维。 64维再变成128维,128维变成1024维。 最后的输入变为n1024维。 每个采样点都是1024维的特征。 然后,经过maxPool,即置换不变性函数-Max函数。

MaxPool函数操作:从n1024矩阵中,从n个样本中提取每个特征维的最大值,即。 n个样品。 每个样本有1024个特征维度,每个特征维度取该n个样本在该维度中的最大值。 而不是在每个采样点取最大值。 各维的n个值取最大值。 生成长度为1024的向量。 该1024向量类似于3232图像输入到三个全联结层中,这三个全联结层分别有512、256和k个神经元。 (k取决于我们做k分类。 (2017年提交的网络。 )

分割网络:按积分分类。 把每个点的特征信息和全局特性信息联系起来。 但是,有n个点,全局特征只有1个长度为1024的向量。 连接方法:复制1024长度的全局特征信息n份,连接各点的特征信息。 各点的特征信息长度为64 1024=1088。 所以变成了n1088。

每个采样点都有自己的特点和全球的特点。

接着,经过三层mlp将拼接的特征信息从1088到512、从512到256再到128。 然后经过最后的分类网络输出各点的类别。 n个点,m个类别。 因为每个点都有m中类别,所以最后的输出是nm。

使用深度学习的三维点云分类介绍分割各点训练了MLP。 各点通过“各个点特征输出结果”转换为1024维空间。 然后,他们在PointNet:上解决了点云顺序问题。 它为每个点云提供1 x 1024的投影,并且将这些特征点传输到非线性分类器。 他们利用被称为T-net的“迷你网络”解决了旋转问题。 学习了点(3 x 3)和中级特征(64 x 64 )的变换矩阵。 叫“迷你”有点被误解了。 因为那实际上和主网络的大小有关。 另外,由于参数的大幅增加,引入了约束6464矩阵接近正交的损耗项。 使用类似的网络分割部件。 还进行了场景语义分割。 做得好! 强烈建议您阅读(或也可以观看演示视频)。 本文对ModelNet40数据集的准确率达到89.2%。

Princeton’s model net 40数据集。 它包含约40个对象类别(如飞机、表格和植物)和12311个由三角形栅格表示的CAD模型。 数据分为9843培训模式和2468测试模式,如下图所示

点对称函数(max-pool)本质上是PointNet的分层版本。 每个层有三个http://www.Sina.com/: http://www.Sina.com /

eting。在第一阶段,选择质心,在第二阶段,把他们周围的邻近点(在给定的半径内)创建多个子点云。然后他们将它们给到一个PointNet网络,并获得这些子点云的更高维表示。然后,他们重复这个过程(样本质心,找到他们的邻居和Pointnet的更高阶的表示,以获得更高维表示)。使用这些网络层中的3个。还测试了不同层级的一些不同聚合方法,以克服采样密度的差异(近密远疏性:对于大多数传感器来说这是一个大问题,当物体接近时密集样本,远处时稀疏)。他们在原型PointNet上进行了改进,在ModelNet40上的准确率达到了90.7%。

深度学习算法的点云分割-PointNet(三)

下面半部分文章内容。

一、PointNet存在的问题

PointNet只是简单的将所有点连接起来,只考虑了全局特征,但丢失了每个点的局部信息,如下图(以点云分割为例):

所以继pointnet之后,很多人的着重点都在提取局部区域特征方面。为了解决这个问题,pointnet++的整体思想就是:首先选取一些比较重要的点作为每一个局部区域的中心点,然后在这些中心点的周围选取k个近邻点(欧式距离的近邻)。再将k个近邻点作为一个局部点云采用pointnet网络来提取特征

三步: 采样中心点, 找邻点建局部区域, 提取局部区域特征

(鼓励一部分人先富起来,然后带动周边区域富起来,然后整个区域共同富裕起来。)

二、pointnet++网络结构详解

网络的两个亮点:

    1.改进特征提取方法:pointnet++使用了分层抽取特征的思想,把每一次叫做set abstraction。分为三部分:采样层、分组层、特征提取层。

首先来看采样层,为了从稠密的点云中抽取出一些相对较为重要的中心点,采用FPS(farthest point sampling)最远点采样法,这些点并不一定具有语义信息。当然也可以随机采样;然后是分组层,在上一层提取出的中心点的某个范围内寻找最近个k近邻点组成patch特征提取层是将这k个点通过小型pointnet网络进行卷积和pooling得到的特征作为此中心点的特征,再送入下一个分层继续。这样每一层得到的中心点都是上一层中心点的子集,并且随着层数加深,中心点的个数越来越少,但是每一个中心点包含的信息越来越多。

    2.解决点云密度不同问题:由于采集时会出现采样密度不均的问题,所以通过固定范围选取的固定个数的近邻点是不合适的。pointnet++提出了两个解决方案。

    方案一:多尺度分组

        如上图左所示,比较直观的思想是,在每一个分组层都通过多个尺度来确定每一个中心点的邻域范围,并经过pointnet提取特征之后将多个特征联合起来,得到一个多尺度的新特征。

    方案二:多分辨率分组

        很明显,通过上述做法,对于每一个中心点都需要多个patch的选取与卷积,计算开销很大,所以pointnet++提出了多分辨率分组法解决这个问题。如上图右所示,类似的,新特征通过两部分连接起来。左边特征向量是通过一个set abstraction后得到的,右边特征向量是直接对当前patch中所有点进行pointnet卷积得到。并且,当点云密度不均时,可以通过判断当前patch的密度对左右两个特征向量给予不同权重。例如,当patch中密度很小,左边向量得到的信息就没有对所有patch中点提取的特征可信度更高,于是将右特征向量的权重提高。以此达到减少计算量的同时解决密度问题。

深度学习算法的点云分割-PointNet(四)

文中对比了PointNet和PointCNN。代码还原讲解。

深度学习算法的点云分割-PointNet(五) 3D目标检测算法详解_pointnet, pointnet++,frustum-pointnets,VoteNet

三步: 采样中心点, 找邻点建局部区域, 提取局部区域特征
 1. sampling layer: 该层的输入是原始点集N*(d+C), d为xyz坐标数据,C是点特征数据. 使用FPS算法从数据集中选出中心点集

FPS算法: 随机选取一个点加入中心点集合, 之后选择离中心点集合里的点最远的点加入中心点集合中, 迭代选取中心点(后面选取的点需要和之前中心点集合中所有的点做距离计算metric distance),直到中心点集中点的个数达到阈值.

2. grouping layer: 该层的输入是原始点集N*(d+C)和sampling出的中心点集N'*d(N'是中心点个数,中心点只需要d坐标信息,不需要特征信息). 该层的输出是点集(point sets)的groups, 每个点集的shape是N'*K*(d+C), 每个group对应一个局部区域, 共有N'个局部区域, K是中心点周围的点的个数. 不同的group的K的值不一样. 虽然每个group含有的点的数量可能不同,但是使用pointnet结构提取出来的特征是维度一致的(每层特征图使用了全局max pooling)

Ball query: 使用KNN选取中心点周围的点集也没有考虑到密度不均匀的问题. 文章使用了一种Ball query的方法,就是在中心点周围取一定半径里的所有点.

3. PointNet layer: 使用pointnet的网络提取局部区域的特征, 输入是grouping出的groups, 每个group的shape是N'*K*(d+C), 输出是N'*(d+C'), 邻点的坐标减去中心点的坐标,作为他们的新坐标. 点特征shape C被embedding成shape C', K个邻点被抽象成一个特征.
 

针对密度不均匀的问题,提出密度适应的特征学习方法: PointNet++ layer 替代PointNet layer

点云数据有密度不均匀的问题, 近多远少, 对于密度不均匀的数据使用相同尺寸的特征提取是不合适的(如卷积的感受野对远处的点集应该更大),文章使用了两种特征提取方法:

1. MSG(multi-scale grouping多尺度组合) 对每个group都用不同尺度大小的网络来提取特征,再叠加在一起

2. MRG (multi-resolution grouping多分辨率组合)每层对某个局部区域的特征提取由两部分组成: 基于上一层输出的特征提取到的特征+该区域对应的原始点集提取出的特征. 前者经过了两层特征提取,感受野更大, 适用于比较稀疏的点集. 而后者只做了一次适用于比较稠密的点集.
 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。