您当前的位置:首页 > IT编程 > pointnet
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:Pointnet++ _语义分割实践

51自学网 2021-01-10 19:39:26
  pointnet
这篇教程Pointnet++ _语义分割实践写得很实用,希望能帮到您。

数据集:Scannet

数据集包含xyz和label信息,并不包含颜色信息。

一共1513个采集场景数据(每个场景中点数不一样),其中,1201个场景用于训练,312个场景用于测试。

这里的每一个场景8192点是一个样本,跟pointnet中单位平方4096点为一样本不同。

(注:github上回答s3dis数据集直接用于pointnet++的效果可能并不好的问题,说可能是s3dis采用的9通道信息,后六个通道占主要特征导致的,建议采用前三个通道! what???待测)

理论部分

这就是pointe++的核心结构图了。

pointe++提出的目的:改善pointnet没有很好地捕获局部特征的问题。

我们可以把网络分为前端+后端,前端为特征提取层,后端按功能分为分类模块和分割模块。(这里主要讲语义分割模块)

特征提取层

特征提取层的每个小块的组成:sampling(采样层:质心)--> grouping(分组层)--> pointnet(局部特征提取)

  1. 采样层:主要是为了质心点的选取,采用的是 FPS算法,即最远点采样。这里的质心点的个数是固定的,可能有重复点。
  2. 分组层:为了克服常常在同一密度上训练而实际点集密度分布不均匀的情况,提出通过多尺度的方法实现自适应的特征提取,这里包括SSG(单尺度)、MSG(多尺度同一级,说计算成本很高)、MRG(多尺度不同级)三种方式。
  3. pointnet:pointnet++在采样和分组后采用类似于pointnet几个特征层嵌入到网络中,分级式网络结构就是在这里体现的。

                 

  • figure 3:
    • MSG(左边):不同半径的区域的特征连接在一起,附近的点数是固定的,由随机采样得到的;但计算成本很高,所以提出MRG;
    • MRG(右边):不同网络级中综合不同半径的信号;根据当前局部密,上级特征和这级特征分以不同的权重:当前局部密度比较小,上一级(右侧)的权重比较大;当前局部密度比较大时,这一级(左侧)的权重比较大。 

:以上的多尺度方式的分组层并没有开源代码,仅开源了SSG单尺度的代码。

SSG:每一层球查询的质心点数逐渐减少,半径逐渐增大,附近点一直是32个。TiTAN XP上训练约7个小时。

  • figure 5:
    • 不同方式在均匀和不均匀的场景数据集上的准确率的比较;MSG、MRG鲁棒性更强。
    • DP:means random input dropout during training,均匀点随机丢失;(其它??)

Pointnet++_源代码
理解和跑通pointnet对于三维数据的分类和分割原理
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1