PointCNN代码组织架构

初次用PointCNN的同学,容易看不太懂它的代码结构。

我们从README.md开始看起。

以分割任务中的Semantic3D数据为例:

cd data_conversions# bash download_semantic3d.sh bash un7z_semantic3d.sh mkdir ../../data/semantic3d/val#建了一个验证集,把四个数据放了进去。mv ../../data/semantic3d/train/bildstein_station3_xyz_intensity_rgb.* ../../data/semantic3d/train/domfountain_station2_xyz_intensity_rgb.* ../../data/semantic3d/train/sg27_station4_intensity_rgb.* ../../data/semantic3d/train/untermaederbrunnen_station3_xyz_intensity_rgb.* ../../data/semantic3d/val cd split_data python3 semantic3d_split.py cd .. python3 prepare_multiChannel_seg_data.py -f ../../data/semantic3d/out_part -c6cd ../pointcnn_seg ./train_val_semantic3d.sh -g-x semantic3d_x8_2048_k16

这是一些列linux上的操作:

首先进入‘data_conversions’文件夹;

然后运行‘download_semantic3d.sh’脚本,用来加载数据集;

接着运行‘un7z_semantic3d.sh’解压;

接着用‘mkdir’命令在这个文件夹中新建子文件夹,用来存放验证集;

下一行‘mv’是把这几个东西移动到刚才建的文件夹中;

再然后,进入'split_data'文件夹,

运行脚本‘semantic3d_split.py’,对原始数据进行切分,因为原始数据太大,我们先将它们切成小块,进行处理。

再然后,返回‘data_conversions’文件夹;

运行脚本,把刚才切分好的数据,转换成能够处理的格式;

进入‘pointcnn_seg’文件夹;

运行脚本train_val_semantic3d.sh,设置了两个参数,分别是‘-g 0 -x semantic3d_x8_2048_k16’。

然后就开始训练了。

到这里,我们有必要看看train_val_semantic3d.sh做了什么。里面有47行代码,但我们只要关注最后一行就行。

CUDA_VISIBLE_DEVICES=$gpu python3 ../train_val_seg.py -t ../../data/semantic3d/out_part/train_data_files.txt -v ../../data/semantic3d/out_part/val_data_files.txt -s ../../models/seg -m pointcnn_seg -x $setting > ../../models/seg/pointcnn_seg_$setting.txt2>&1&

这行代码让系统这么操作:

使用GPU——用python3来运行代码——返回上一级文件夹——执行train_val_seg.py代码,并对其设置了几个参数。分别是

‘-t’,告诉网络,训练数据的ground truth文本是哪个。

‘-v’,验证数据的ground truth文本。

'-s',保存check points and summary的路径和文件夹。

'-m',使用哪个模型。

'-x',要使用的设置。

可以说这句话的作用非常强大,把训练网络所有需要的东西都告诉代码了。

如果你看过其他分割任务的sh脚本的话,其实和这个sh结构是一模一样的。而且对于不同分割任务,用于进行训练的环节(怎么取模型、取数据、shuffle等操作)统统用一个公共的train_val_seg.py代码来做了,这样代码的可移植性就非常高。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180526G0J2LH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券