从零开始点云语义分割:RandLANet教程
这是一个关于如何从零开始学习点云语义分割的教程,之所以说从零是因为我自己就是从零开始接触点云的语义分割任务的,希望这个系列的博客能对想要做点云语义分割的同学有一点点的帮助。
一、准备工作
1.1、深度学习知识
MLP、卷积即可
1.2、点云操作
点云数据的基本结构是坐标+属性特征,有多种存储格式,我们需要知道如何解析不同存储格式的点云数据,也就是如何读写点云数据。
参考不同格式点云存储结构(txt、pcd、las、ply)整理以及基本的读写、可视化方法。
点云的基础变换参考3D点云变换(平移、旋转、缩放)以及python实现
3D点云变换(平移、旋转、缩放)C++实现
二、公开数据集测试
了解公开的数据集如Semantic3D、S3DIS、KITTI等,我自己使用RandLANet测试了Semantic3D、S3DIS,由于KITTI的数据集过大,我没有做这块的测试,以后有机会会补上。
3.1、Semantic3D
Ubuntu环境下参考文章在tensorflow2.0环境下使用RandLA-Net训练Semantic3D数据集。
Windwos环境Win10系统下训练RandLA-Net点云语义分割模型。
3.2、S3DIS
Ubuntu环境下参考文章在tensorflow2.0环境下使用RandLA-Net训练S3DIS数据集。
项目地址:RandLA-Net
三、论文阅读
在训练公开数据集的时候我们可以开始阅读paper。
paper地址:RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds。
我自己的理解点云语义分割:RandLA-Net解读。
四、源码解读
阅读源码是为了在自己的数据集上更好的调参。
tf1.x版RandLA-Net源码解读(1):数据预处理
tf1.x版RandLA-Net源码解读(2):Dataset
五、训练自己的数据集
六、python生产环境部署
七、C++生产环境部署
点云语义分割:RandLANet模型推理C++部署(1)
点云语义分割:RandLANet模型推理C++部署(2)