Semantic3D数据集----Open3D_PointNet2_Semantic3D_master实现

1.下载

下载数据集Semantic3D并通过运行以下命令将其提取:

cd数据集/ semantic_raw。

bash download_semantic3d.sh

Open3D-PointNet2-Semantic3D /数据集/ semantic_raw
├──bildstein_station1_xyz_intensity_rgb.labels
├──bildstein_station1_xyz_intensity_rgb.txt
├──bildstein_station3_xyz_intensity_rgb.labels
├──bildstein_station3_xyz_intensity_rgb.txt
├──…

当然你也可以直接在数据集的官方下载,一共30个数据集,对该数据集不了解的可看我之前的博客Semantic3D介绍

2.将txt转换为pcd文件

python preprocess.py

Open3D能够更有效地读取.pcd文件。
open3d提供了read_point_cloud()和write_point_cloud()函数进行数据集的读写。对open3d函数的学习可看我的open3d教程学习


代码修改:

point_cloud = open3d.read_point_cloud(pts_file)
open3d.write_point_cloud(pcd_file, point_cloud)

改成:

point_cloud = open3d.io.read_point_cloud(pts_file)
open3d.io.write_point_cloud(pcd_file, point_cloud)

代码实现过程:

Semantic数据集的格式为(x,y,z,i,r,g,b),这种点云数据格式为pts格式,现存在txt文件中,首先打开txt文件,每行逐行写进pts文件中,再利用open3d写进pcd文件中。


Open3D-PointNet2-Semantic3D /数据集/ semantic_raw
├──bildstein_station1_xyz_intensity_rgb.labels
├──bildstein_station1_xyz_intensity_rgb.pcd(新)
├──bildstein_station1_xyz_intensity_rgb.txt
├──bildstein_station3_xyz_intensity_rgb.labels
├──bildstein_station3_xyz_intensity_rgb.pcd(新)
├──bildstein_station3_xyz_intensity_rgb.txt
├──…

3.下采样

python downsample.py

下采样的数据集将被写入dataset / semantic_downsampled。在下采样期间将排除标签为0(未标记)的点。


代码实现过程:
30个数据集全部进行下采样,0标签没有真实地面,不应该用于训练,故此先对训练集排除标签0采样。再利用open3d中的voxel_down_sample_and_trace()进行体素下的采样,设置体素大小。


由于我没有看到open3d的voxel_down_sample_and_trace()的源码,对于该函数的如何实现我不知道,如果有朋友知晓,请务必帮我解惑,谢谢~


Open3D-PointNet2-Semantic3D /数据集/ semantic_downsampled
├──bildstein_station1_xyz_intensity_rgb.labels
├──bildstein_station1_xyz_intensity_rgb.pcd
├──bildstein_station3_xyz_intensity_rgb.labels
├──bildstein_station3_xyz_intensity_rgb.pcd
├──…

4.编译TF Ops

我们需要在tf_ops中构建TF内核。首先,激活virtualenv并确保可以在当前python中找到TF。下一行应无错误运行。


python -c “import tensorflow as tf”
Then build TF ops. You’ll need CUDA and CMake 3.8+.

cd tf_ops
mkdir build
cd build
cmake …
make
After compilation the following .so files shall be in the build directory.


在这个部分,我没有编译成功,提示找不到Open3d的位置,我直接将pointnet++中编译好的三个.so文件复制到build文件夹可成功运行直到预测代码,但原作者在插值部分增加了一个label和color插值的部分,没法运行,故此最后的interpolate没有办法运行。


5.训练

python train.py

默认情况下,训练集将用于训练,而验证集将用于验证。要同时使用训练和验证集进行训练,请使用–train_set = train_full标志。检查点将输出到日志/语义。

6.预测

选择一个检查点并运行predict.py脚本。预测数据集由–set配置。由于PointNet2每向前通过仅获取几千个点,因此我们需要多次从预测数据集中进行采样,以很好地覆盖这些点。每个样本都包含PointNet2所需的几千个点。要指定每个场景中此类样本的数量,请使用–num_samples标志。

python Forecast.py

–ckpt日志/语义/best_model_epoch_040.ckpt
–set =验证
–num_samples = 500

预测结果将写入结果/稀疏。

Open3D-PointNet2-Semantic3D /结果/稀疏
├──sg27_station4_intensity_rgb.labels
├──sg27_station4_intensity_rgb.pcd
├──sg27_station5_intensity_rgb.labels
├──sg27_station5_intensity_rgb.pcd
├──…

效果展示

在这里插入图片描述
在这里插入图片描述
可在xianyu搜索标题提供代码

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值