当前位置:   article > 正文

pointnet分割自己的点云数据_3D 分割分类总结

pointnext可以用于实例分割

三维深度学习的几种方法:

  1. 多视角(multi-view):通过多视角二维图片组合为三维物体,此方法将传统CNN应用于多张二维视角的图片,特征被view pooling procedure聚合起来形成三维物体;
  2. 体素(volumetric):通过将物体表现为空间中的体素进行类似于二维的三维卷积(例如,卷积核大小为5x5x5),是规律化的并且易于类比二维的,但同时因为多了一个维度出来,时间和空间复杂度都非常高,目前已经不是主流的方法了;
  3. 点云(point clouds):直接将三维点云抛入网络进行训练,数据量小。主要任务有分类、分割以及大场景下语义分割;
  4. 非欧式(manifold,graph):在流形或图的结构上进行卷积,三维点云可以表现为mesh结构,可以通过点对之间临接关系表现为图的结构。流形表达比较抽象,用到拉普拉斯特征

pointNet

1.主要贡献:

1)解决体素的方法带来的时间空间复杂度高的问题,提供一个简单,快速,有效的方法处理点云数据

2)为分类,部分分割和予以分割提供了统一的体系结构

c90e2f118d51646d6955065f13b54775.png

2.欧几里得空间的点云有如下特征:

1)无序性

2)点与点直接存在空间关系

3)旋转平移不变性

3.网络的主要模块:

1)transform:

第一次,对输入点云进行对齐:位姿改变,使改变后的位姿更适合分类/分割

第二次,对64维特征进行对齐

2)mlp:使用共享权重的卷积

3)max pooling:汇总所有点云的信息(全局信息),前面的卷积除了第一次对xyz,使用1*3的,后面基本都是1*1的,相当于基本都是单点采样的工作。

4)分割部分:局部和全局信息组合结构(concate,语义分割)

5)分类loss:交叉熵,分割loss:分类+分割+L2(transform,原图的正交变换)

3289d245e9ab1a87bf0a412624681d02.png

3dc34b03cf81ebd400bd7e1060b63859.png

不足:缺乏在不同尺度上提取局部信息的能力(因为基本上都是单点采样,代码底层用的是2Dconv,只有maxpooling整合了整体特征,所以局部特征提取能力较差)

pointNet++

1.主要贡献:解决pointNet提取局部特征的能力

affdde9e0380933616971367fc826164.png

2.模型结构:

1)采样层(sampling)

激光雷达单帧的数据点可以多达100k个,如果对每一个点都提取局部特征,计算量是非常巨大的。因此,作者提出了先对数据点进行采样。作者使用的采样算法是最远点采样(farthest point sampling, FPS),相对于随机采样,这种采样算法能够更好地覆盖整个采样空间。

2)组合层(grouping)

为了提取一个点的局部特征,首先需要定义这个点的“局部”是什么。一个图片像素点的局部是其周围一定曼哈顿距离下的像素点,通常由卷积层的卷积核大小确定。同理,点云数据中的一个点的局部由其周围给定半径划出的球形空间内的其他点构成。组合层的作用就是找出通过采样层后的每一个点的所有构成其局部的点,以方便后续对每个局部提取特征。

3)特征提取层(feature learning)

因为PointNet给出了一个基于点云数据的特征提取网络,因此可以用PointNet对组合层给出的各个局部进行特征提取来得到局部特征。值得注意的是,虽然组合层给出的各个局部可能由不同数量的点构成,但是通过PointNet后都能得到维度一致的特征(由上述K值决定)。

3.grouping方法:

1)MSG:对每个实例进行dropout,选择从[0,0.95]均匀采样的dropout ratioθ,其中p≤1。对于每个点,我们以概率θ随机地丢弃一个点。 向网络呈现各种稀疏度(由θ引起)和变化均匀(由丢失中的随机性引起)的训练集。 在测试时保留所有可用点

2)上面的MSG方法计算成本很高,因为它在每个质心点的大规模邻域运行局部PointNet。 特别是,由于质心点的数量通常非常大(在lowest level),因此时间成本很高

MRG避免了大量的计算,但仍然保留了根据点的分布特性自适应地聚合信息的能力。某个层Li的区域的特征是两个矢量的串联。 通过使用设置的抽象级别从较低级别Li-1汇总每个子区域的特征来获得一个向量。 另一个向量是通过使用单个PointNet直接处理本地区域中的所有原始点而获得的特征。

当局部区域的密度低时,第一矢量可能不如第二矢量可靠,因为计算第一矢量的子区域包含更稀疏的点并且更多地受到采样不足的影响。 在这种情况下,第二个矢量应该加权更高。 另一方面,当局部区域的密度高时,第一矢量提供更精细细节的信息,因为它具有以较低水平递归地表达较高分辨率检查的能力。

与MSG相比,该方法在计算上更有效,因为我们避免了在最低级别的大规模邻域中的特征提取

7fc5c743b1682824ee784d2abdeb1788.png

facfa287128b6f7f02bd42452de5e5ae.png

Frustum pointNet

1.主要贡献:通过使用2D物体检测技术,减少3D遍历空间,有效的在3D空间中进行物体定位。

坐标系转换见 相机标定坐标系.odt

1a834f86a5f0097d25baab8b44d9ddf6.png

2.模型结构:

1)视锥生成(frustum proposal):

首先通过2D目标检测器(基于VGG网络的FPN作为特征提取器,并用Fast R-CNN来预测最终的2D bbox)来定位图片中的目标和类别。对每一个检测到的目标,通过标定好的传感器的内参和它们之间的转换矩阵得到其对应的点云数据中的各点,即点云视锥。

2)3D实例分割(3D instance segmentation):

对每个得到的点云视锥,通过旋转得到以中心视角为坐标轴的点云数据。对转换后的点云数据用PointNet(或PointNet++)进行实例分割。实例分割是一个二分类问题,用于判断每个点属于某个目标或者不属于。

3)3D边界框回归(3D box estimation):

将上一步实例分割的结果作为mask得到属于某个实例的所有点云,计算其质心作为新的坐标系原点。通过一个T-Net进行回归得到目标质心和当前坐标原点的残差。将点云平移到计算得到的目标质心后,通过PointNet(或PointNet++)对3D bbox的中心、尺寸和朝向进行回归得到最终的输出。此步骤采用的回归方式和Faster R-CNN中类似,不直接回归,而是回归到不同尺寸和朝向的锚点(anchors),即相对坐标。

3.给定2D图像和对应的3D视锥,获取3D bbox的方法:

1)直接使用2D CNN从深度图直接回归3D对象位置, 但由于在自然场景中遮挡物体和背景杂乱很常见这可能会严重分散3D定位任务的注意力。 由于物体在物理空间中是自然分离的,因此3D点云中的分割比来自远处物体的像素彼此接近的图像中的分割更加自然和容易。

2)提出改进方法:在3D点云中而不是在2D图像或深度图中分割实例。 与Mask-RCNN [14]类似,通过图像区域中像素的二值分类实现实例分割,使用基于PointNet的网络在视锥上的点云实现3D实例分割。

6f8d443ddbd0b8b73f406134fc192a52.png

4.不足:在2D转3D求点云的过程中,依赖标定的准确性

注:

1.本质还是2D卷积的方式

2.分类所用的数据是CAD模型,点云数据非常完整,且没有噪声,实际情况效果待定

3.对点云归一化,仍是-均值/方差

4.t-net的效果泛化能力待定(是否有可能出现没见过的shape,无法变换到一个适合分割的角度)

GACNet

1.主要贡献

提出了一种可学习kernel 形状的GAC,可动态的适应object的结构(GAC处理无序和大小变化的邻居,并共享权重)(本质是attention机制:不同的邻点使用不同的attention权重,GAC根据邻点的功能有选择的关注他们中最相关的部分,卷积核的形状由学习到的attention权重的分布得到)

2.pointnet和GAC:

PointNet的关键是使用max运算符(包括MLP)。 实际上,max运算符可被视为GAC的极端情况,即“最大关注度”,它通过获取每个要素通道的最大值来聚合相邻要素。 因此,最大操作者倾向于捕获最“特殊”的特征,这会破坏物体点之间的结构连接并对噪声敏感(可能最大值是噪声)。 相比之下,GAC通过为其分配特定的注意权重来聚合相邻特征,从而保持用于细粒度点云分割的对象的结构。(因此可以根据权重的情况,将后续操作看成是可变kernel大小的操作,权重是根据特征差异得到的,所以对不同的点的邻域计算的范围和影响大小不一样,这里用到的就是graph的思想)

1afdf8965681a990c8b19a9fb0c3fcc3.png

3.模型结构

1)encode-decode结构,encode过程使用了pointnet提取特征的方式

2)attention机制,figure2.归一化方式与softmax类似

3)decode过程,先插值,再concate再卷积优化参数,得到输出结果

7bfaec6af47d0732630012133106430f.png

eaaaf10620340f83d723d2cef85a6dcb.png

GACNet作者还没有公开代码,有别人实现的但是效果达不到论文说的。

SPGraph

1.主要贡献:

1)提出Super graph,具有丰富边特征的点云表示,用于编码3D点云中对象部分之间的上下文关系

2)可在大规模点云上应用深度学习,而不需要精细细节。

3)在Semantic3D和S3DIS数据集上表现出色

2.优点:

1)不关注独立的点或者体素,将整个对象当成一个整体,更容易识别

2)可以描述相邻对象之间的细节关系,对上下文分类是十分关键的,比如,路上的很可能是车,天花板周围很可能是墙

3)SPG的大小由场景中的简单结构的数量而不是点的总数来定义,通常小几个数量级。

37d35a0966a2a0262d5f01d1e22d6c77.png

3.模型结构

1)geometrically homogeneous partition:将点云分成superpoint graph形式

2)superpoint embedding:SPG的每个节点对应于与几何简单基元对应的点云的一小部分,将小点云下采样到最多数百个点,可以可靠地表示这种原始数据。 使用PointNet做enbedding(superpoint是结点,他们之间的关系是边,这里用到gnn思想)

3)contextual segmentation:superpoint比原始点云数量级小很多。 可以使用GCN,使用丰富的边缘特征对其节点进行分类,从而促进长距离交互。

fb3744ca5bfd05756435d55ba2094bf6.png

c9d096930d6a7787bf776d87a369d509.png

不足:第一步的好坏不知道会不会影响后面的分割效果。

Spidercnn

1.主要贡献:

1)有效提取点云中的几何特征。

2)将传统的卷积操作从规则网格拓展到非规则网格

3)继承了传统CNN 的多尺度特性,能够有效地提取层级化的深度语义信息。

2.结构:

c0e702e1a8d8da68ce4c3689ed5d7333.png

1)分类:

773336eda5f217f90c1195dbf072c0ca.png

2)分割:

0d00febf20fce9c08ac1efc6f694be51.png

7b6136993251f307fa0509fc5cdc5993.png

3.实现:

44d1b92717eedd5e950a3e370e5c40c0.png

F为点云,g为filter

g可用MLP表示,但在实践中不能很好地工作,原因如下:

1)MLP无法解释3D点云的几何优先级。

2)为了确保足够的表现力,MLP中的参数数量需要足够大,这使得优化问题变得困难。

所以:

9704647d4e8857afb7cf9b8b18fc42d3.png

第一项是一个点周围局部极坐标的半径变量的阶跃函数。编码local geodesic information。表征点云的局部几何特征。

2b78aecc8680aa78a246aeace4d73e4a.png

第二项是order-3Taylor多项式,丰富卷积簇的复杂度,捕获角度分量的变化, 保证几何特征的表达能力。

基于构造点云的统一采样过程,使用以下近似值:

1)使用K近邻方法来寻找局部区域,而不是直接将半径r内的当成局部区域

2)第一项由排列近似。

pointconv

1.主要贡献:

1)提出逆密度重加权卷积操作 PointConv(为了补偿不均匀采样),它能够完全近似任意3D 点集上的 3D 连续卷积。

2)通过改变求和顺序,提出了高效 PointConv 。

3)将 PointConv 扩展到反卷积(PointDeconv),以获得更好的分割结果

2.网络结构

1ca058c592738c22d93a70fc9cb62e29.png

1) pointConv:

C_in 和 C_out :输入和输出的特征的维度

k, c_in, c_out :索引

输入:3D 点的相对坐标 P_local,密度 Density 和特征 F_in。

过程:

a)P_local 经过连续函数 MLP1 后得到对应每一个点的特征的权重 W;

b)Density 经过 MLP2 之后得到逆密度系数 S;

c)权重 W, 逆密度系数 S 和输入的特征 F ,利用下式进行卷积,以得到输出特征 F_out:

ba0d6351e965e09560ad04d15994582d.png

不足:内存消耗大,效率低(主要是权重部分,逆密度还好)

2)高效pointConv

ba8b0f09e7f67b0960dc3dd05b8a0d68.png

cbbd42f8cd4bfb26391546065154fdb7.png

根据矩阵乘法和2D卷积重构pointConv,改善内存,效率问题

高效pointConv使内存占用变为原来的1/64

b37afc6d76ede932a2e485c621bbccf1.png

3)pointDeconv:

在分割任务中,将信息从粗糙层传递到精细层的能力非常重要。

PointDeconv 过程:

a)插值:使用一个线性插值算法来得到精细层的特征的初始值

b)pointConv:再对插值后的精细层进行一个 PointConv 进行优化特征,从而获得较高精度的特征值

929133ea83dd7171816b96931c66ba75.png

968598c77e577dd494b9e39dd8d8e8b6.png

2c842f3ccf3b411d4c7e0c3dab78252d.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/228959
推荐阅读
相关标签
  

闽ICP备14008679号