放假闲着在家没事,本人突然想跑一下3d深度学习的开山之作——pointnet玩一玩,可是目前网上大部分pointnet的运行教程都是在Ubuntu系统下的。(其实本人也曾装过双系统,但是因为我太菜了,在Ubuntu下装完显卡驱动和cuda后切换win10开机一直黑屏。。。只好含痛放弃装回win10-_-本狗还是先在虚拟机好好学习Linux吧)ps:如果哪位好心的大佬知道怎么解决的话,不妨告诉我怎么解决。
后续文章:
pointnet语义分割_训练并预测自己的数据pointnet推理部署–libtorch框架pointnet推理部署–onnxruntime框架pointnet推理部署–openvino框架pointnet推理部署–tensorrt框架
环境
在下面环境中测试成功,gpu是RTX2060。
环境1: win10+cuda10.1+cudnn7.5+python3.7.2+tensorflow-gpu1.13
环境2: win10+cuda9.2+cudnn7.1+python3.6.5+tensorflow-gpu1.9
资源
pointnet代码GitHub链接cuda10.1cudnn7.5.0tensorflow-gpu1.13 软件的安装在此不赘述了,网上都可以找到详细教程。注意tensorflow-gpu1.13应在上面给出的链接下载处理之后的版本,否则后续会出现问题(本人亲自尝试过,不知道为什么)。
运行
1) Classification
1.下载ModelNet40模型(约415MB)并解压,目录结构为pointnet-master/data/modelnet40_ply_hdf5_2048。
modelnet40_ply_hdf5_2048.zip 2.运行pointnet-master/train.py。
python train.py
训练250个epoch,本人gpu情况训练5小时结束。
3.使用TensorBoard查看网络架构并监视培训进度。
tensorboard --logdir log
4.评估模型并输出一些错误案例的可视化图像。
python evaluate.py --visu
可以评估模型并输出错误情况的一些可视化,错误分类的点云保存在文件夹pointnet-master/dump中。我们通过将点云渲染为三视图来可视化点云。
2)Part Segmentation
1.运行脚本下载ShapeNetPart数据集(约1.08GB)和HDF5文件(约346MB)。
cd part_seg
sh download_data.sh
下载不下来的话可以在下面网站找到。
ShapeNetPart数据集shapenetcore_partanno_v0.zip HDF5文件 ShapeNetPart数据集解压后格式为pointnet-master/part_seg/PartAnnotation,HDF5文件解压放在pointnet-master/part_seg/hdf5_data。
2.训练代码在pointnet-master/part_seg下。
python train.py
batch改为4(否则我的gpu报out of memory,当然你显存够大当我没说),训练200个epoch,本人gpu情况训练约22个小时结束。
3.测试代码也在pointnet-master/part_seg下。
python test.py
在这里会生成许多.obj文件,这是对应分割的每一部分,可以用cloudcompare/meshlab可视化软件查看结果(cloudcompare可能对obj文件支持不好显示不出点云的rgb信息)。测试结果在pointnet-master/part_seg/test_result文件夹下。
3)Semantic Segmentation
1.运行脚本下载训练集(约1.56GB)
cd sem_seg
sh download_data.sh
或者可以从下面链接下载:
indoor3d_sem_seg_hdf5_data.zip 解压后格式为pointnet-master/sem_seg/indoor3d_sem_seg_hdf5_data。
2.训练
python train.py --log_dir log6 --test_area 6
训练50个epoch,本人gpu情况需花费约5小时。训练好以后,在pointnet-master/sem_seg⽂件夹下⾯会有⼀个log6的⽂件夹,⾥⾯是训练好的模型。
3.预测
下载S3DIS 点云数据集(约4.1GB),下载地址:
S3DIS 数据集 下载好后,将⽂件放到pointnet-master/data⽬录下,解压,并将⽂件名改为stanford_indoor3d。
修改indoor3d_util.py第13⾏:
修改前
DATA_PATH = os.path.join(ROOT_DIR, 'data','Stanford3dDataset_v1.2_Aligned_Version')
修改后
DATA_PATH = os.path.join(ROOT_DIR, 'data', 'stanford_indoor3d')
运⾏collect_indoor3d_data.py
python collect_indoor3d_data.py
运行batch_inference.py
python batch_inference.py --model_path log6/model.ckpt --dump_dir log6/dump --output_filelist log6/output_filelist.txt --room_data_filelist meta/area6_data_label.txt --visu
在pointnet-master/sem_seg/log6⽂件夹下会⽣成dump⽂件夹,⾥⾯有.obj⽂件,可以用cloudcompare/meshlab等可视化软件查看结果。
4.IOU评价
将pointnet-master/sem_seg/log6/output_filelist.txt复制到上一级文件夹下并改名为all_pred_data_label_filelist.txt。
运行程序eval_iou_accuracy.py,结果如下图。
参考
PointNet-环境搭建:win10、cuda10.1、cudnn7、python3.7、tensorflow-gpu1.13 (详细)PointNet分类和分割代码复现(跑程序)
所有数据集网盘链接:链接:https://pan.baidu.com/s/15X-Q8ygoLn4GCNMnN51v9w
提取码:dcf6
复制这段内容后打开百度网盘手机App,操作更方便哦