pointnet分割自己的点云数据_pointnet点云语义分割源码解读

本文介绍了使用PointNet进行3D点云数据的语义分割,包括源码目录解读、模型结构分析以及训练与评估过程。通过学习PointNet的网络结构,探讨了点云分类、部分分割和语义分割的应用,并提供了数据处理和模型训练的指南。
摘要由CSDN通过智能技术生成

本意是要做3D Mesh语义分割,但是没有找到较合适的解决方案,于是从pointnet入手来了解三维分割。通过这段时间对论文与源码的配套学习,对源码有了一定的认识,也有一些疑惑的地方,因此借助这个平台分享心得、缕清思路,理解有误的地方望不吝赐教,共勉。

Pointnet点云分类及分割框架如下图1所示。图1 pointnet网络结构图

(1) Pointnet源码目录解读

Pointnet源码包含 3D点云分类、部分分割以及语义分割三部分。源码运行之前建议仔细阅读README.md,根据这个文档指导即可复现源码。

1)根目录下py文件介绍

2)根目录下文件夹内容介绍data 存放用于训练的样例文件h5,test_files与train_files中列举的用于训练及测试的文件项;shape_name.txt中分类类别名称。

dump 存放的是训练结果评价报告以及分类预测结果。

log 存放的是训练结果,默认情况下只存放最近一次训练结果,可根据需要更改源码存放多次训练结果。

models 存放的是训练模型。Pointnet_cls.py和Pointnet_cls_basic.py中的MLP是分类模型结构(这两段未跟踪源码,因此没有做详细区分),对应于论文中如下图2,与论文中所述略有不同;pointnet_seg.py是点云分割模型结构;transform_nets.py为原始点云对称变换以及特征变换,分别对应于源码网络中如图3和图4部分。图2 点云分类MLP图3 点云对称变换图4 特征变换utils data_prep_util为numpy、h5、ply等文件/数据的存储于读取以及其他预处理函数;pc_util这部分没有去跟踪源码,因此暂不解读;tf_util.py为tf的各种卷积函数。

part_seg 部分分割。

sem_seg 语义分割内容。

(2) sem_seg语义分割源码解读

该部分按照训练所涉及到的文件顺序一一介绍。log 存放训练模型结果。

meta all_data_list列举的是数据集中所包含的所有训练数据;anno_path是对应文件的相对存放路径;area6_data_label为验证训练模型时所用到数据集的数据文件列表;class_name是数据集所包含的所有分类类别。

indoor3d_util.py 数据集制作所需的函数。

collect_indoor3d_data.py 数据集制作时npy/txt文件的制作。

gen_indoor3d_h5.py h5文件制作,其输入文件npy/txt的文件内容及格式为ID XYZRGBL,输出为若干个1000*4096的数据文件。

model.py 局部与整体特征拼接及分割网络模型结构,其对应于网络结构中如图5部分。图5 语义分割train.py 语义分割模型训练。

eval_iou_accuracy.py 训练结果的验证。

batch_inference.py 利用训练结果进行点云分类,不提供可视化结果;可选择输出或者不输出obj文件,obj文件可用meshlab 等软件打开预览。

后续做源码的详细解读以及训练集的制作;文中如有理解不当之处,烦请指出;如有意交流,一起进步,可以私信加好友。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值