All Projects → isl-org → Open3D-PointNet2-Semantic3D

isl-org / Open3D-PointNet2-Semantic3D

Licence: other
Semantic3D segmentation with Open3D and PointNet++

Programming Languages

python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
Cuda
1817 projects
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to Open3D-PointNet2-Semantic3D

SimpleView
Official Code for ICML 2021 paper "Revisiting Point Cloud Shape Classification with a Simple and Effective Baseline"
Stars: ✭ 95 (-77.49%)
Mutual labels:  point-cloud, pointnet, pointnet2
pointnet2-pytorch
A clean PointNet++ segmentation model implementation. Support batch of samples with different number of points.
Stars: ✭ 45 (-89.34%)
Mutual labels:  point-cloud, pointnet, pointnet2
pyRANSAC-3D
A python tool for fitting primitives 3D shapes in point clouds using RANSAC algorithm
Stars: ✭ 253 (-40.05%)
Mutual labels:  point-cloud, open3d
PAPC
PAPC is a deep learning for point clouds platform based on pure PaddlePaddle
Stars: ✭ 55 (-86.97%)
Mutual labels:  pointnet, pointnet2
torch-points3d
Pytorch framework for doing deep learning on point clouds.
Stars: ✭ 1,823 (+331.99%)
Mutual labels:  point-cloud, pointnet
Open3D-PointNet
Open3D PointNet implementation with PyTorch
Stars: ✭ 169 (-59.95%)
Mutual labels:  pointnet, open3d
pointnet2 semantic
A pointnet++ fork, with focus on semantic segmentation of differents datasets
Stars: ✭ 69 (-83.65%)
Mutual labels:  point-cloud, pointnet2
pcl.py
Templated python inferface for Point Cloud Library (PCL) based on Cython
Stars: ✭ 64 (-84.83%)
Mutual labels:  point-cloud
fastremap
Remap, mask, renumber, unique, and in-place transposition of 3D labeled images. Point cloud too.
Stars: ✭ 29 (-93.13%)
Mutual labels:  point-cloud
welding-robot
30th June, 2019 - 30th June, 2020. Robotics and Machine Intelligence Lab, The Hong Kong Polytechnic University. This work is supported in part by the Chinese National Engineering Research Centre for Steel Construction (Hong Kong Branch) at The Hong Kong Polytechnic University under grant BBV8, in part by the Research Grants Council of Hong Kong …
Stars: ✭ 43 (-89.81%)
Mutual labels:  point-cloud
Depth-Guided-Inpainting
Code for ECCV 2020 "DVI: Depth Guided Video Inpainting for Autonomous Driving"
Stars: ✭ 50 (-88.15%)
Mutual labels:  point-cloud
simpleICP
Implementations of a rather simple version of the Iterative Closest Point algorithm in various languages.
Stars: ✭ 140 (-66.82%)
Mutual labels:  point-cloud
Point-Cloud-Triangulation
C++ code for triangulating Point Cloud data and displaying it
Stars: ✭ 29 (-93.13%)
Mutual labels:  point-cloud
OpenCVB
OpenCV .Net application supporting several RGBD cameras - Kinect, Intel RealSense, Luxonis Oak-D, Mynt Eye D 1000, and StereoLabs ZED 2
Stars: ✭ 60 (-85.78%)
Mutual labels:  point-cloud
mix3d
Mix3D: Out-of-Context Data Augmentation for 3D Scenes (3DV 2021 Oral)
Stars: ✭ 183 (-56.64%)
Mutual labels:  point-cloud
3DGNN
No description or website provided.
Stars: ✭ 56 (-86.73%)
Mutual labels:  point-cloud
LiDAR fog sim
LiDAR fog simulation
Stars: ✭ 101 (-76.07%)
Mutual labels:  point-cloud
WS3D
Official version of 'Weakly Supervised 3D object detection from Lidar Point Cloud'(ECCV2020)
Stars: ✭ 104 (-75.36%)
Mutual labels:  point-cloud
AdvPC
AdvPC: Transferable Adversarial Perturbations on 3D Point Clouds (ECCV 2020)
Stars: ✭ 35 (-91.71%)
Mutual labels:  pointnet
Point2Mesh
Meshing Point Clouds with Predicted Intrinsic-Extrinsic Ratio Guidance (ECCV2020)
Stars: ✭ 61 (-85.55%)
Mutual labels:  point-cloud

Semantic3D semantic segmentation with Open3D and PointNet++

Intro

Demo project for Semantic3D (semantic-8) segmentation with Open3D and PointNet++. The purpose of this project is to showcase the usage of Open3D in deep learning pipelines and provide a clean baseline implementation for semantic segmentation on Semantic3D dataset. Here's our entry on the semantic-8 test benchmark page.

Open3D is an open-source library that supports rapid development of software that deals with 3D data. The Open3D frontend exposes a set of carefully selected data structures and algorithms in both C++ and Python. The backend is highly optimized and is set up for parallelization. We welcome contributions from the open-source community.

In this project, Open3D was used for

  • Point cloud data loading, writing, and visualization. Open3D provides efficient implementations of various point cloud manipulation methods.
  • Data pre-processing, in particular, voxel-based down-sampling.
  • Point cloud interpolation, in particular, fast nearest neighbor search for label interpolation.
  • And more.

This project is forked from Mathieu Orhan and Guillaume Dekeyser's repo, which, is forked from the original PointNet2. We thank the original authors for sharing their methods.

Usage

1. Download

Download the dataset Semantic3D and extract it by running the following commands:

cd dataset/semantic_raw.

bash download_semantic3d.sh.

Open3D-PointNet2-Semantic3D/dataset/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
├── ...

2. Convert txt to pcd file

Run

python preprocess.py

Open3D is able to read .pcd files much more efficiently.

Open3D-PointNet2-Semantic3D/dataset/semantic_raw
├── bildstein_station1_xyz_intensity_rgb.labels
├── bildstein_station1_xyz_intensity_rgb.pcd (new)
├── bildstein_station1_xyz_intensity_rgb.txt
├── bildstein_station3_xyz_intensity_rgb.labels
├── bildstein_station3_xyz_intensity_rgb.pcd (new)
├── bildstein_station3_xyz_intensity_rgb.txt
├── ...

3. Downsample

Run

python downsample.py

The downsampled dataset will be written to dataset/semantic_downsampled. Points with label 0 (unlabled) are excluded during downsampling.

Open3D-PointNet2-Semantic3D/dataset/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. Compile TF Ops

We need to build TF kernels in tf_ops. First, activate the virtualenv and make sure TF can be found with current python. The following line shall run without error.

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-PointNet2-Semantic3D/tf_ops/build
├── libtf_grouping.so
├── libtf_interpolate.so
├── libtf_sampling.so
├── ...

Verify that that the TF kernels are working by running

cd .. # Now we're at Open3D-PointNet2-Semantic3D/tf_ops
python test_tf_ops.py

5. Train

Run

python train.py

By default, the training set will be used for training and the validation set will be used for validation. To train with both training and validation set, use the --train_set=train_full flag. Checkpoints will be output to log/semantic.

6. Predict

Pick a checkpoint and run the predict.py script. The prediction dataset is configured by --set. Since PointNet2 only takes a few thousand points per forward pass, we need to sample from the prediction dataset multiple times to get a good coverage of the points. Each sample contains the few thousand points required by PointNet2. To specify the number of such samples per scene, use the --num_samples flag.

python predict.py --ckpt log/semantic/best_model_epoch_040.ckpt \
                  --set=validation \
                  --num_samples=500

The prediction results will be written to result/sparse.

Open3D-PointNet2-Semantic3D/result/sparse
├── sg27_station4_intensity_rgb.labels
├── sg27_station4_intensity_rgb.pcd
├── sg27_station5_intensity_rgb.labels
├── sg27_station5_intensity_rgb.pcd
├── ...

7. Interpolate

The last step is to interpolate the sparse prediction to the full point cloud. We use Open3D's K-NN hybrid search with specified radius.

python interpolate.py

The prediction results will be written to result/dense.

Open3D-PointNet2-Semantic3D/result/dense
├── sg27_station4_intensity_rgb.labels
├── sg27_station5_intensity_rgb.labels
├── ...

8. Submission

Finally, if you're submitting to Semantic3D benchmark, we've included a handy tools to rename the submission file names.

python renamer.py

Summary of directories

  • dataset/semantic_raw: Raw Semantic3D data, .txt and .labels files. Also contains the .pcd file generated by preprocess.py.
  • dataset/semantic_downsampled: Generated from downsample.py. Downsampled data, contains .pcd and .labels files.
  • result/sparse: Generated from predict.py. Sparse predictions, contains .pcd and .labels files.
  • result/dense: Dense predictions, contains .labels files.
  • result/dense_label_colorized: Dense predictions with points colored by label type.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].