一、配置环境
1、下载代码
git clone --depth=1 https://github.com/QingyongHu/RandLA-Net && cd RandLA-Net
2、创建虚拟环境
conda create -n randlanet python=3.6
conda activate randlanet
3、安装tensorflow
由于3090显卡只支持 tensorflow 2.x 版本,而该网络是基于 tensorflow 1.x 编写的,所以我们安装了nvidia官方维护适用于3090显卡的 tensorflow 1.x 版本,安装连接:
RTX3080+Ubuntu18.04+cuda11.1+cudnn8.0.4+TensorFlow1.15.4+PyTorch1.7.0环境配置
4、安装算法依赖库
这些库的版本可根据自己的环境有所调整,不过最好还是按照官方给出的版本来安装
numpy==1.16.1
h5py==2.10.0
cython==0.29.15
open3d-python==0.3.0
pandas==0.25.3
scikit-learn==0.21.3
scipy==1.4.1
PyYAML==5.4
5、编译
sh compile_op.sh
6、下载预训练模型
二、训练S3DIS数据集
1、下载S3DIS数据集,我放在了~/data目录下,
/home/abc/data/S3DIS/Stanford3dDataset_v1.2_Aligned_Version
2、生成数据集所需文件,此 .py 文件中需要修改成自己的数据集路径,就是上面所说的那样,运行次代码能在 /home/abc/data/S3DIS/ 目录下生成 input_0.040 和 original_ply
python utils/data_prepare_s3dis.py
3、训练数据集
详细语句可以看 jobs_6_fold_cv_s3dis.sh 文件,可以像官方一样一次性运行整个文件,训练所有数据集,也可以只运行该文件中的一行语句,只训练所需的数据集
整体:
sh jobs_6_fold_cv_s3dis.sh
分别训练:
python -B main_S3DIS.py --gpu 0 --mode train --test_area 1
python -B main_S3DIS.py --gpu 0 --mode train --test_area 2
python -B main_S3DIS.py --gpu 0 --mode train --test_area 3
python -B main_S3DIS.py --gpu 0 --mode train --test_area 4
python -B main_S3DIS.py --gpu 0 --mode train --test_area 5
python -B main_S3DIS.py --gpu 0 --mode train --test_area 6
4、预测数据集
同上
python -B main_S3DIS.py --gpu 0 --mode test --test_area 1
python -B main_S3DIS.py --gpu 0 --mode test --test_area 2
python -B main_S3DIS.py --gpu 0 --mode test --test_area 3
python -B main_S3DIS.py --gpu 0 --mode test --test_area 4
python -B main_S3DIS.py --gpu 0 --mode test --test_area 5
python -B main_S3DIS.py --gpu 0 --mode test --test_area 6
训练和预测会生成 txt 文件,是终端所打印出来的内容
5、6倍交叉验证
将 test 文件夹下生成的相对应的 val_preds 放在 data下自创的 result 文件中,在代码中路径具体到val_preds,由于训练这6个数据集生成文件名相同,都是 val_preds ,所以我把带有日期的整个文件夹都复制过去,以后在代码中修改成合适路径就行
生成文件目录:
data 目录:
最后执行命令:
python utils/6_fold_cv.py