当前位置:网站首页 > 编程语言 > 正文

pointnet源码(pointnet原理)



Pointnet++包含pointnet源代码,所以看pointnet++

以debug的形式看源码,分析网络中电力数据的变化过程,以及如何提取特征

以batch size u003d 2为例

输入数据:2、1024、3

->频道_first 2, 3, 1024

一、改回21024、3

那么味精有三种不同的半径

使用 query_ball_point() 进行分组

最远点采样

选取512个点[2512,3],然后以512个点为圆心对给定的r进行分组,

团体

三个半径的运算分别进行,最后合并在一起

以第一个为例

通过第一个半径分组得到的数据是[2512,16,3]

然后改为[2,3,16512]

mlp特征提取后,结果为

[2,64,16,512]

说明:2-batchsize 64 通道 16 是一组中的点数

再次求最大值(即每组求最大值,与pointnet中的maxpool相同)

最终结果是 [2,64512]

这是第一组 mlp 的结果

其他两个半径的结果是[]和[] 然后concat三个结果

最后是[]

第二SA

into SA 由两部分组成,

一个是最远点采样后的点[2,3512],MLP后的结果是[]

MLP之后的结果作为特征的一部分放入网络,

提取后的结果是

[2,3128] 最远点采样结果

[] 在 MLP 之后

第三SA

[2,3,1]

[21024, 1] 在 MLP 之后

最终分类

根据[21024,1]的特点进行分类,MLP就完成了,比较简单。

FPS最远点采样,每一行都有注释,其他代码比较简单

首先将质心和距离定义为后续存储中心点和距离

随机选择一个点作为最远点的起点,

然后求所有点到该点的距离

得到一个新的距离矩阵dist

将此距离与距离进行比较。如果距离很小,替换距离结果,

然后根据距离矩阵选择最大值,即距离最大的值。获取对应的索引

计算第三个点时,计算所有点到第二个点的距离dist

比较一下距离。注意这里的距离意味着什么。表示所有点到第一个点的距离

比较两者,即所有点到第一个点的距离和到第二个点的距离。选择较小的距离并将其更新为距离。那么这个距离就变成了所有点到第一个点和第二个点的最短距离。这是关键。画一点就明白了

下一个点被确定为最近点中最大的一个,并继续迭代。

def 最远_point_sample(xyz, npoint):

"""

输入:

xyz:点云数据,[B, N, 3]

npoint:样本数

返回:

质心:采样点云索引,[B, npoint]

"""

设备 u003d xyz.device #

B、N、C u003d xyz.shape#

#首先定义中心点的矩阵和距离矩阵。中心点是我们最远的点。首次采样点数为512

质心 u003d torch.zeros(B, npoint, dtypeu003dtorch.long).to(device)#2*512

distance u003d torch.ones(B, N).to(device) * 1e10 #1024 先定义的距离矩阵有大数

#最远点,随机选择第一个最远点

#随机索引,如[],有两个值,因为batch size为2

farthest u003d torch.randint(0, N, (B,), dtypeu003dtorch.long).to(device)#批量中,每个样本随机初始化一个最远点的索引

批次_indices u003d torch.arange(B, dtypeu003dtorch.long).to(device)

for i in range(npoint): #第一个npoint为512,循环为512ci

centroids[:, i] u003d farthest #第一个采样点选择随机初始化的索引

centroid u003d xyz[batch_indices, farthest, :].view(B, 1, 3)#获取当前采样点的坐标B*3

dist u003d torch.sum((xyz - centroid) 2, -1)#计算当前采样点与其他点的距离

mask u003d dist < distance#选择最近的一个更新距离(更新并维护这张表),一个由bool组成的掩码

距离[面具] u003d 灰尘[面具]#

farthest u003d torch.max(distance, -1)[1]#重新计算最远点索引(选择更新表中距离最大的点)

返回质心

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

版权声明


相关文章:

  • ssh免密码登录配置不起作用(ssh免密码登录配置还需要输入密码)2026-05-19 16:00:10
  • 表锁住了怎么解锁(表锁了怎么释放)2026-05-19 16:00:10
  • 蓝牙地址怎么查苹果(苹果查蓝牙与wifi地址)2026-05-19 16:00:10
  • 工具类五金(工具五金是什么类物质 a.a类 b)2026-05-19 16:00:10
  • 来自远方的作品集txt(来自远方的作品集双男主)2026-05-19 16:00:10
  • C7000纸盒不显示(m7400显示纸盒无纸)2026-05-19 16:00:10
  • sigmoid什么意思神经网络(神经网络mse是什么意思)2026-05-19 16:00:10
  • edge修复网络(edge修复网络最简单方法网页版登录)2026-05-19 16:00:10
  • 单片机程序示例(单片机程序示例图)2026-05-19 16:00:10
  • nvme能插sata的m.2(nvme口能插sata)2026-05-19 16:00:10
  • 全屏图片