尝试基于云服务器进行randla-net的点云分割
基于源码的RandLA-Net(走不通,省时间的话建议跳转到下面基于TensorFlow2.X的标题)
一、租赁云服务器
这一步就注意选用的python3.7.10,兼容性好
二、环境配置
1、载入数据集,有两个:1.RandLA-Net源码 2.S3DIS数据集
注意:每个人的数据代码不同,需要找到自己的代码
2、下载相关的包
注意:由于源码用的是python3.5,它的helper_requirements.txt里面的包已经与python3.7不适配了。所以我们要进行替换,步骤如下:
1.打开helper_requirements.txt
2.将里面的内容用
numpy==1.19.5
h5py==3.1.0
cython==0.29.36
open3d==0.13.0
pandas==1.3.5
scikit-learn==0.24.2
scipy==1.6.3
PyYAML==5.4.1
予以替换。注:这些包是我找到的适配python3.7.10的包,可以放心用。
3. cd到RandLA-Net路径下
cd data/RandLA-Net
安装并下载包:pip install -r helper_requirements.txt
4. 进行编译 sh compile_op.sh
报错,寻找解决方法。。。。。。。
解决方法:cd到各个目录下,直接执行
三、执行代码
1. 修改main_S3DIS.py中的self.path路径,把self.path = '/data/S3DIS'中的/去掉,即
self.name = 'S3DIS'
self.path = 'data/S3DIS'
2. 修改 data_prepare_s3dis.py 中的
dataset_path = '/data/S3DIS/Stanford3dDataset_v1.2_Aligned_Version'
为dataset_path = 'data/S3DIS/Stanford3dDataset_v1.2_Aligned_Version'
都是把 / 去掉
3.在RandLA-Net目录中,新建data/S3DIS,将数据集放入其中
即data/RandLA-Net/data/S3DIS/Stanford3dDataset_v1.2_Aligned_Version
4. 组织数据:
python utils/data_prepare_s3dis.py
5.开始训练:
python -B main_S3DIS.py --gpu 0 --mode test --test_area 1
报错:
原因分析,源代码是基于TensorFlow1.X编写的,与服务器的TensorFlow2.X不兼容。
解决方法:降级到TensorFlow1.X,经过查询,TensorFlow1.15.0可以使用。
降级:pip install tensorflow==1.15.0
问题解决不了,原因是源代码是基于TensorFlow1.X编写的,与服务器的TensorFlow2.X不兼容。但是找到了基于TensorFlow2.x的代码,参考学习一下
基于TensorFlow2.6的RandLA-Net:
https://github.com/luckyluckydadada/randla-net-tf2.git
luckyluckydadada/randla-net-tf2: Python 3.6, Tensorflow 2.6, CUDA 11.4 and cudnn in RTX 3090
在这里非常非常感谢代码提供者@Lucky Li !!!
一、数据编辑
由于我的S3DIS数据集在area5和area6有问题,所以我只训练area1-area4
进入randla-net-tf2-main/utils/meta/anno_paths.txt
删去area5和area6
二、环境配置
1.下载相关的包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cython==0.29.15
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple open3d==0.13.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple open3d-python==0.3.0
pip install -r helper_requirements.txt (这个记得先cd进randla-net目录再运行)
helper_requirements.txt:(里面的内容)
numpy
h5py==2.10.0
cython==0.29.15
open3d-python==0.3.0
pandas
scikit-learn==0.21.3
scipy
PyYAML
2.编译sh
sh compile_op.sh
三、执行
1.数据预处理
python utils/data_prepare_s3dis.py
预处理完成
2.数据训练
python -B main_S3DIS.py --gpu 0 --mode train --test_area 1
报错,原因:爆显存了
解决方法:
将 batch_size=6 改为 batch_size=4;将 train_steps=500 改为 train_steps=750
成功开始训练!!!
-----------------------------------------------------分割线------------------------------------------------------
作为入门的深度学习新手,我相信大家常常为没有一块好的显卡来进行训练而发愁,而大多数实验室又很难满足需求(主要是经费不足QAQ)。
在这里我推荐Featurize!!!
之前各大平台的云服务器也多多少少用过,主要存在以下问题:
1.炼丹环境要自己配
2.价格比较昂贵
3.上传的数据集没有办法保存,每次炼丹都要重新上传
而这些问题在Featurize里都得到解决,环境已经帮我们配置好了,数据集和代码可以存在云盘里,价格有多种可选,有时还有活动。
噢,还有我个人觉得最重要的一点:Featurize界面非常简洁干净,这是很多厂商做不到的一件事。
如果有心动的伙伴可以点击下面的链接,这是我的邀请码,有感兴趣的兄弟可以试试。
https://featurize.cn?s=db3ee1bf052c476bb2c7288f12963cb8
------------------------------------------------------------------------------------------------------------------------
训练结果:
最好的精度 Iou:61.233
达到要求!
踩坑:
若要进行可视化,在服务器上是不行的,需要在本地进行部署,所以打算重新进行训练。
下一篇博客将是基于Windows11系统的 RandLA-Net点云分割。(因为硬盘空间不够,不能安装Ubuntu系统了QAQ)
目标是实现分割结果可视化。