Point cloud segmentation is currently in Beta.
A Point Cloud is a set of data points in space, usually describes by x
, y
and z
coordinates.
PointCloud Segmentation is the task of performing classification at a point-level, meaning each point will associated to a given class. The current integration builds on top Open3D-ML.
Let's look at an example using a data set generated from the KITTI Vision Benchmark. The data are a tiny subset of the original dataset and contains sequences of point clouds. The data contains multiple folder, one for each sequence and a meta.yaml file describing the classes and their official associated color map. A sequence should contain one folder for scans and one folder for labels, plus a pose.txt
to re-align the sequence if required. Here's the structure:
data
├── meta.yaml
├── 00
│ ├── scans
| | ├── 00000.bin
| | ├── 00001.bin
| | ...
│ ├── labels
| | ├── 00000.label
| | ├── 00001.label
| | ...
| ├── pose.txt
│ ...
|
└── XX
├── scans
| ├── 00000.bin
| ├── 00001.bin
| ...
├── labels
| ├── 00000.label
| ├── 00001.label
| ...
├── pose.txt
Learn more: http://www.semantic-kitti.org/dataset.html
Once we've downloaded the data using ~flash.core.data.download_data
, we create the PointCloudSegmentationData
. We select a pre-trained randlanet_semantic_kitti
backbone for our PointCloudSegmentation
task. We then use the trained PointCloudSegmentation
for inference. Finally, we save the model. Here's the full example:
../../../flash_examples/pointcloud_segmentation.py
To learn how to view the available backbones / heads for this task, see backbones_heads
.
The point cloud segmentation task can be used directly from the command line with zero code using flash_zero
. You can run the above example with:
flash pointcloud_segmentation
To view configuration options and options for running the point cloud segmentation task with your own data, use:
flash pointcloud_segmentation --help