-----------物体形状分类任务(Shape Classfication)-------

一、数据准备

modelnet40_normal_resampled.zip 解压后下边有:

(1)有40个子文件是不同的物体类别,每一个类别里边是超级多的txt文件,一个txt文件代表的是每一个物体类别的一个点云数据。

如下打开的是飞机的其中一个txt文件:

其中每一行代表的是这一个点的位置和法向量信息(每一行中的前三个分别对应xyz的坐标值,当然都是经过归一化-1和1之间的值)然后是法向量的信息,也是三个值因为法向量是在这个点垂直与切平面的向量的信息,也是有3个值,所以每一行一共是6个值。

(2)有一个modelnet40_shape_names.txt,这个里边存放的是40个类别的目录的列表的一个文件。

(3)有一个filelist.txt,这个里边一共有12311行,表明所有物体的点云文件一共有12311个。

(4)有一个modelnet40_train.txt这里是用作训练的点云文件的列表,一共有9843个,也就是12311个数据集中有9843用作训练集。

(5)有一个modelnet40_test.txt这里是测试集文件的列表,一共有2468个。

二、PointNet++物体形状分类训练:

如果出现显存溢出的报错,就要指定一下batch_size,默认batch_size是24,所以给他改小一点,改成16。

训练完会自动生成log文件夹,里面保存了日志文件和网络参数。

训练结束后在log文件夹下存在一个classfication,classfication下边有一个pointnet2_cls_msg,这个pointnet2_cls_msg文件下有checkpoints,如果这个checkpoints下边有一个best_model.pth这是我们训练好的网络模型的权重文件。pointnet2_cls_msg这个文件夹下边有一个logs目录,下面的pointnet2_cla_msg.txt就是我们训练过程的日志,包含一些从什么时候开始训练以及他中间的一些信息,从里边可以看到这个Accuracy是在不断的改善,最终训练好的Best Instance Accuracy可以到0.926613(其中Instance Accuracy是所有物体分类正确以后的统计结果)、Class Accuracy可以到0.915796(Class Accuracy是对每一分类正确的统计,每一个类别我们就是对于40个类别他的Accuracy以后的再进行平均以后的结果)。

三、测试

接下来对训练好的模型进行一下测试。

在log--->classfication--->pointnet2_cls_msg--->eval.txt这个里边就是测试的结果,

---------物体部件分割的任务(Part Segmentation)--------

一、数据准备

shapenetcore_partanno_segmentation_benchmark_v0_normal.zip解压后下边有:(有16个子文件夹,他代表了不同的物体)

(1)有synsetoffset2category.txt,里边罗列了16种物体,以及后边是分别对应的他们文件夹的名字。

(2)到每一个文件夹下查看有很多个txt文件,比如02691156文件夹下打开一个txt文件如下图:

每一个txt文件里边有很多行数据(2816行,就表示有2816个点的数据),每一行中其中前三个表示xyz的值,接着的中间三个表示法向量的值,最后一个他是飞机部件的编号(0、1、2、3一共有4个部件,也就是说飞机一共被分成了4个部分,)(一共有16个物体,每个物体有若干个部件的分类,一共有50个部件的分类)

二、PointNet++物体部件分割训练

训练结果在log目录下,part_seg下边pointnet2_part_seg_msg下边checkpoints下边我们训练出的best-model.pth就是我们训练出的网络模型。同时在pointnet2_part_seg_msg下边的logs下边pointnet2_part_seg_msg.txt就是训练过程的记录 .

三、测试

---------场景语义分割(Semantic Segmentation)任务--------

一、数据准备

下载完数据集后在解压的时候自己一定要新建立一个s3dis文件夹,否则他在处理的时候会出问题。这个s3dis文件夹下边就会放入我们新解压以后的Stanford3Dataset_v1.2_Aligned_Version这个数据集,这个数据集下边有6个Area,每一个Area下边有不同的场景,比如 conferenceRoom_1下边有一个conferenceRoom_1.txt下边有很多点的数据(前3个是xyz的值即坐标信息,后边3个是RGB的值即颜色信息)这个就是conferenceRoom的一个场景,场景中有办公桌、门、地板等物体,我们要做的事情就是对这个场景中的物体进行分类,我们需要对每一个点它属于哪一个物体进行相应的分类,其实这是一个分割的问题。

解压完数据之后,在训练之前还需要一个步骤,就是进一步的处理。到data_utils目录下执行python collect_indoor3d_data.py 这样处理完的数据他会在data/stanford_indoor3d目录下。

产生这样的npy数据之后我们才能够进行网络模型的训练。

二、训练

这样的任务对于内存和显存的要求都比较高,pointnet++的作者是有4个显卡进行训练的,所以对于我们大家机器的内存和显存要求都比较高,内存最好在64g,显卡最好有4张显卡,这样每张显卡在11~12g可以达到40多g的这样的显存,但是我们平时都没有这么高的配置哈哈,下边是训练的命令和测试的命令,有条件的话可以尝试。

由于性能配置要求较高,直接shot了进程,没有训练完成。

PointNet++:(1)网络完成的任务分析相关推荐

  1. 既可生成点云又可生成网格的超网络方法 ICML

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文发表在 ICML 2020 中,题目是Hypernetwork approach to gener ...

  2. 一文搞懂PointNet全家桶——强势的点云处理神经网络

    作者:黎国溥,3D视觉开发者社区签约作者,CSDN博客专家,华为云-云享专家 首发:公众号[3D视觉开发者社区] 前言 PointNet是由斯坦福大学的Charles R. Qi等人在<Poin ...

  3. Waymo离线点云序列3D物体检测网络 (3D Auto Labeling): Offboard 3D Object Detection from Point Cloud Sequences

    本文介绍一篇Waymo基于点云序列的3D物体检测网络:3D Auto Labeling,论文已收录于CVPR 2021. 这里重点是理解本文提出的 Object-centric Auto Labeli ...

  4. PointNet++详解与代码

    在之前的一篇文章<PointNet:3D点集分类与分割深度学习模型>中分析了PointNet网络是如何进行3D点云数据分类与分割的.但是PointNet存在的一个缺点是无法获得局部特征,这 ...

  5. PointNet:3D点集分类与分割深度学习模型

    之前的一篇博客<动手学无人驾驶(4):基于激光雷达点云数据3D目标检测>里介绍到了如何基于PointRCNN模型来进行3D目标检测,作者使用的主干网是PointNet++,而PointNe ...

  6. PointNet学习笔记(一)—— 论文

    PointNet学习笔记(一)-- 论文 本文记录了博主在学习<PointNet: Deep Learning on Point Sets for 3D Clasification and Se ...

  7. PointNet 翻译:

    红色字体表示可能存在问题的译句 蓝色字体表示值得关注的论文.知识点等 初次接触,所以翻译内容仅供参考,欢迎批评指正 Abstract 摘要 A point cloud is a commonly us ...

  8. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    基本简介 论文下载地址:https://arxiv.org/abs/1612.00593 代码开源地址:https://github.com/charlesq34/pointnet 作者以及论文信息如 ...

  9. [LiteratureReview]PointNet Deep Learning on Point Sets for 3D Classification and Segmentation

    [LiteratureReview]PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 出处:20 ...

最新文章

  1. 5G UE — CPE
  2. ITK:创建一个后向差分运算符
  3. 160 - 52 egis.1
  4. 前端学习(2671): vue3.0脚手架获取功能页面布局
  5. centos tar安装mysql_centos系统通过tar.gz包安装mysql5.7.19
  6. 基于 CoreAudio 的音频编解码(二):音频编码
  7. 【Java Saves!】Session 2:我的意图
  8. android gms包找不到,错误:包com.google.android.gms.appstate不存在
  9. Shell脚本 小程序演示
  10. 【计算机系统组成】IO设备知识要点
  11. python实现五子棋-人机对战/人人对战(动图演示+源码分享)
  12. 500VIP源码下载
  13. android 仿百度地图,仿百度地图街景实现
  14. 阿里云DDoS防护产品介绍
  15. 同花顺炒股指标定制-K线只有红绿2个颜色怎么行?
  16. iPhone手机轻松获取UDID的六种方式
  17. Rockchip开发系列 - 3.2.引脚配置默认上拉下拉
  18. 如何在未越狱的ios系统安装ipa文件
  19. 音乐现场的未来将被NFT门票主宰?
  20. 【技术栈】【SSM】SMM的常用注解

热门文章

  1. 客快物流大数据项目(五十二):根据数据库表及字段创建公共模块
  2. Laravel和Thinkphp有什么区别,哪个框架好用
  3. Eclipse工具栏上android的机器人小图标和adt图片的显示
  4. T100-----调试程序,快速定位到错误行
  5. 2022-2028年中国石油套管行业市场研究及前瞻分析报告
  6. Bundle捆绑压缩技术
  7. 十一月第三周学习进度条
  8. C++中模块(Dll)对外暴露接口的方式
  9. CString工作原理和常见问题分析
  10. matlab编程实现基于密度的聚类(DBSCAN)