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

pointnet+(pointnet++分割算法网络)



前言

       PointNet++是一个用于对不规则形状的点云数据进行分类和分割任务的深度神经网络。相对于传统的基于网格的3D数据表示方法,点云数据更易于获取和处理。PointNet++的另一个优势是它引入了多尺度层次结构,可以处理更为复杂的点云数据。相比于第一版的PointNet网络作者提出了许多新的想法,也取得了很不错的效果。

PointNet算法存在的问题

(1)一幅点云图像点数量太多,这会造成计算量过大从降低算法速度,如何解决

(2)如何将点云划分为不同的区域,并且获取不同区域的局部特征?

(3)点云不均匀的时候应该如何解决这个问题?

分类任务

1797facf5f835f59190a08670bc15b1c.jpeg

分层抽取特征 set abstraction

该模块主要由3个部分组成:

1.采样层(sample layer):在稠密的点云中抽取出一些相对重要的点作为中心点,即FPS(farthest point sampling)最远点采样法,也为了解决本文中的第一个问题。

2.分组层(group layer):找距离中心点附近最近的K个点,组成local points region。这操作有点像图像卷积,形成卷积图像,方便提取特征。解决第二个问题。

3.特征提取层(pointnet layer):特征提取层。对每个local points region提取特征。

FPS流程如下:

(1)随机选择一个点作为初始择采样点;

(2)计算未选择采样点集中每个点与已选择采样点集之间的距离distance,将距离最大的那个点加入已选择采样点集,

(3)根据新的采样点计算distance,一直循环迭代下去,直至获得了目标数量的采样点。

9cbe09bbb41cd00b255aaea98b86fef1.png

分组层流程如下:

(2)将每一个中心点在原点集中根据距离筛选出附近需要的点数,以每个FPS点为中心形成一个个新的点集

(3)新的点集会做一个类似坐标归一化的操作形成3个新特征然后与原先每个点自带的特征结合形成特征提取前的新特征。

f895eab6c14995bafd6dcf4b39e2fca2.png

   图一  

b69d6514181f537e921e989953a949c4.png

       图一中红点为FPS结果的中心点,黑点为初始的一些点。图二绿点是根据距离筛选后的点,这些点与红点将会组成一系列的点集。

       在分组层中作者提出了3种方案:SSG(single scale grouping)、MSG(multi-scale grouping)多尺度、MRG(multi-resolution grouping)多分辨率。实际上就是采用不同的半径或不同的分辨率进行了多次采样分组。也是为了解决本文中的第三个问题。

SSG:就相当于只有一种半径做了分组采样

330dc19f7fa95a08f6a168c6d838eddf.png

MSG:相当于在同分辨率下做了多个半径分组采样,然后再将点集结合起来。

983bf7727cd37c137aa80e786d1782b0.pnga98f06fd87e37a6940739d7c8ba775fc.pngf0ce28b43e7e4d1b67afe5e41c0f46a0.png

MRG

d404617f8f52cf36cacfdd7a06cd8aa0.png

特征提取层

843dda9f3ef510799b839496889b2438.png3d9c175a5207eb335498f9efb6193d23.png

       如此重复几次set abstraction层,在最后接一些全连接网络对点云进行分类。

分割任务

ae4a185c0654cd4665a945276adee460.png

812852be3bf9a6051ad19e065d033a5e.png

权重计算:每个黑点寻找出附近最近的3个红点,然后在每个红点根据距离权重为黑点分配特征。那么每个黑点都会产生新的特征。红点也是要进行如此的操作。即上图的所有点都会产生新特征。

6422d0e07d4349782821768c6465962d.png98e6743bdf29000bb05349748b6ef687.pngd6551eb41dd07c50c1844a6fea10c1f4.png7b2b95b544ce9057df7eecdff3218247.png

       至此,有关PointNet++的文章解析就完毕了!如有错误解读的地方,欢迎批评指正,我们共同进步!

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

版权声明


相关文章:

  • udp socket广播(socketio 广播)2025-11-04 09:27:10
  • cp1501图解(cp1515n)2025-11-04 09:27:10
  • cnns认证的检测机构(cna检测机构)2025-11-04 09:27:10
  • pointnet++网络代码(pointnet网络结构)2025-11-04 09:27:10
  • kubectl怎么读(kubectl发音)2025-11-04 09:27:10
  • msvcp140dll丢失怎样修复(msvcp140dll丢失怎样修复win7)2025-11-04 09:27:10
  • console线和串口线一样吗(console口连接线)2025-11-04 09:27:10
  • webflux使用(webflux使用caffeine cache)2025-11-04 09:27:10
  • cnn神经网络(cnn神经网络算法)2025-11-04 09:27:10
  • conv啥意思(convoy是什么意思)2025-11-04 09:27:10
  • 全屏图片