2025年unet分割网络(pointnet++分割算法网络)

unet分割网络(pointnet++分割算法网络)构建好图结构后 进行每个 epoch 的训练和测试 在每 5 个倍数 epoch 进行一次测试 加载 scannet train pickle 文件 1201 个场景数据集 假定每个场景有 n 个点云 文件中有 1201 n 个点的标签 21 个类别的初始权值 初始权值计算的依据为某一类点云标签数量占所有点云的比例 打乱索引 随机从中选取 4 个批次的场景数据 batch size 4 批次数据逐一输入

大家好,我是讯享网,很高兴认识大家。



构建好图结构后,进行每个epoch的训练和测试,在每5个倍数epoch进行一次测试

加载scannet_train.pickle文件

  • 1201个场景数据集。
  • 假定每个场景有n个点云,文件中有1201*n个点的标签。
  • 21个类别的初始权值,初始权值计算的依据为某一类点云标签数量占所有点云的比例。

coormax为场景中的右上角A点,往里采样,大小为1.51.53,smpmin是采样体素的A点的对角线点B点坐标。

实际体素的尺寸大小,对角线点相减,体素大小1.5 * 1.5 * h

从当前场景点集中随机取一点作为中心点

以当前点为体素中心,采样一个1.5 * 1.5 * h大小的体素,把此体素记为V1,h为点集包围盒的高度。

把体素V1的大小扩大0.2m(各边边长加0.2m),从当前场景的点云中,把此体素中的点提取出来,记为点集A

把体素V1的大小扩大0.01m,记为体素V2,从点集A中提取出位于体素V2中的点。

从体素V2中采样8912个点,部分权值为0

从8192个点中随机丢弃一些点,丢弃的点的位置坐标用第一个点的坐标代替,丢弃的点的权重设为0.有点点集丢弃比例很大,不知道这个对最终的预测效果影响大不大。


讯享网

数据增强 :围绕Z轴随机旋转一个角度,角度在(0,2pi)里面随机产生。

开始训练一个epoch的网络模型并计算损失,梯度优化,得到预测值pred_val (32,8192,21)

total_correct :总正确点云数
total_seen:总点云数
total_sum:计算总损失
total_seen_class
total_correct_class
total_correct_vox
total_seen_vox
total_seen_class_vox:基于体素的每一类总的点云数
total_correct_class_vox:基于体素的每一类总的正确点云数

测试部分直接用testdataset数据,不需要再进行乱序和dropout等操作。

数据增强:对batch_data进行z轴旋转

测试部分只需要进行模型训练以及计算损失,无优化过程,该过程为测试模型训练后的性能。

  • 作者为了和基于基线的方法进行精度比较,从而使用上面代码将点云label转化为体素label。

a.体素的大小放大50倍,即长宽高各放大50倍,L×50=L1,W50=W1,H×50=H1.

b.测试点云(x,y,z) (N3)减去最小坐标((x-min(x)=x1,y-min(y)=y1,z-min(z)=z1))后的x1,y1,z1各放大50倍,x150=x2, y150=y2, z150=z2

c.x+y(场景包围盒的长度放大50倍后的数)+z*(场景包围盒的长度放大50倍后的数)(场景包围盒的宽度放大50倍后的数),vidx:N3(如:4722*3)

即:x + y*L1 +z L1w1

d. np.unique() 去除数组中的重复数字,并进行排序,return_index = True 返回原列表中第一次出现的索引值


作者在是为了和体素进行比较而将标签全部体素化,正常对点云测试我认为是不需要这个操作的。

测试集test_dataset的测试结果:

平均损失:

体素准确率:

平均类别体素准确率:

点云预测准确率:

平均类别准确率:

加权后平均类别准确率:

Unet语义分割和halcon语义分割 pointnet++语义分割_深度学习

小讯
上一篇 2025-05-23 17:49
下一篇 2025-05-17 08:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/139997.html