All Projects → sarthakTUM → roofn3d

sarthakTUM / roofn3d

Licence: other
Roof Classification, Segmentation, and Damage Completion using 3D Point Clouds

Programming Languages

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

Projects that are alternatives of or similar to roofn3d

awesome-lidar
😎 Awesome LIDAR list. The list includes LIDAR manufacturers, datasets, point cloud-processing algorithms, point cloud frameworks and simulators.
Stars: ✭ 217 (+520%)
Mutual labels:  point-cloud, pointcloud
lepcc
Point Cloud Compression used in i3s Scene Layer Format
Stars: ✭ 22 (-37.14%)
Mutual labels:  point-cloud, pointcloud
ECCV-2020-point-cloud-analysis
ECCV 2020 papers focusing on point cloud analysis
Stars: ✭ 22 (-37.14%)
Mutual labels:  point-cloud, pointcloud
3d Bat
3D Bounding Box Annotation Tool (3D-BAT) Point cloud and Image Labeling
Stars: ✭ 179 (+411.43%)
Mutual labels:  point-cloud, pointcloud
Polylidar
Polylidar3D - Fast polygon extraction from 3D Data
Stars: ✭ 106 (+202.86%)
Mutual labels:  point-cloud, pointcloud
Pcl
Point Cloud Library (PCL)
Stars: ✭ 6,897 (+19605.71%)
Mutual labels:  point-cloud, pointcloud
costmap depth camera
This is a costmap plugin for costmap_2d pkg. This plugin supports multiple depth cameras and run in real time.
Stars: ✭ 26 (-25.71%)
Mutual labels:  point-cloud, pointcloud
Pointcnn
PointCNN: Convolution On X-Transformed Points (NeurIPS 2018)
Stars: ✭ 1,120 (+3100%)
Mutual labels:  point-cloud, pointcloud
Mvstudio
An integrated SfM (Structure from Motion) and MVS (Multi-View Stereo) solution.
Stars: ✭ 154 (+340%)
Mutual labels:  point-cloud, pointcloud
Graph Cnn In 3d Point Cloud Classification
Code for A GRAPH-CNN FOR 3D POINT CLOUD CLASSIFICATION (ICASSP 2018)
Stars: ✭ 206 (+488.57%)
Mutual labels:  point-cloud, pointcloud
attMPTI
[CVPR 2021] Few-shot 3D Point Cloud Semantic Segmentation
Stars: ✭ 118 (+237.14%)
Mutual labels:  point-cloud
superpose3d
register 3D point clouds using rotation, translation, and scale transformations.
Stars: ✭ 34 (-2.86%)
Mutual labels:  point-cloud
3DGNN
No description or website provided.
Stars: ✭ 56 (+60%)
Mutual labels:  point-cloud
pcl.py
Templated python inferface for Point Cloud Library (PCL) based on Cython
Stars: ✭ 64 (+82.86%)
Mutual labels:  point-cloud
lodToolkit
level-of-details toolkit(LTK). Convert osgb lod tree to 3mx tree. Convert pointcloud in ply/las/laz/xyz to 3mx/osgb tree.
Stars: ✭ 81 (+131.43%)
Mutual labels:  pointcloud
Depth-Guided-Inpainting
Code for ECCV 2020 "DVI: Depth Guided Video Inpainting for Autonomous Driving"
Stars: ✭ 50 (+42.86%)
Mutual labels:  point-cloud
SpareNet
Style-based Point Generator with Adversarial Rendering for Point Cloud Completion (CVPR 2021)
Stars: ✭ 118 (+237.14%)
Mutual labels:  point-cloud
pointcloud viewer
No description or website provided.
Stars: ✭ 16 (-54.29%)
Mutual labels:  point-cloud
annotate
Create 3D labelled bounding boxes in RViz
Stars: ✭ 104 (+197.14%)
Mutual labels:  pointcloud
NeuralPull
Implementation of ICML'2021:Neural-Pull: Learning Signed Distance Functions from Point Clouds by Learning to Pull Space onto Surfaces
Stars: ✭ 149 (+325.71%)
Mutual labels:  point-cloud

Roof Classification, Segmentation, and Damage Completion using 3D Point Clouds

This repository contains the project for the course: https://dvl.in.tum.de/teaching/adl4cv-ws18/

About

We design a Deep Learning framework that directly consumes unordered point sets as inputs, representing the Roof of a building. A Point Cloud is represented as a set of 3D points {Pi| i = 1, ..., n}, where each point Pi is a vector of its (x, y, z) coordinate. We perform the following tasks:

  1. Classification: Clasifying the input point cloud into 3 categories: Saddleback Roof, Pyramid Roof, and Two-Sided Hip Roof
  2. Segmentation: Classifiying each point into semantic sub-categories.
  3. Damaging: Manually simulating damages of various shapes in the roofs.
  4. Completion: Completing the damaged point cloud
  5. Multi-Task Learning: Perform Classification, and Segmentation in a multi-task setting for original, and perturbed dataset.

Approach

  1. PointNet [2] is used for Classification, Segmentation and Multi-Task Learning on original as well as perturbed dataset
  2. Point Completion Network [3] is used for completing the damaged roofs.
  3. The damage has been manually simulated on the roof point clouds.
  4. Data has been provided by [1].

Usage

Demo

  1. Clone the repository: git clone https://github.com/sarthakTUM/roofn3d.git
  2. go to cd roofn3d. Install the requirements: pip install -r requirements.txt. It is recommended to perform this step in a separate virtual environment. If using Conda, then conda create --name roofn3d.
  3. For classification, segmentation, and multi-task demo: cd cls_seg_mt.
  4. Run python demo.py. Different examples can be seen by changing the --idxparameter. For example, python demo.py --idx=15. The --idx parameter can be a maximum of 23.
  5. For Roof Completion, go to cd completion from the roof directory.
  6. Run python demo.py. Different example can be seen by changing the --input_path parameter. For example: python demo.py --input_path=demo_data/saddleback_roof.pcd, or python demo.py --input_path=demo_data/twosidedhip_roof.pcd.
  7. Demo data for both the tasks have been added to demo:data directories.

The models are cloned along with the repository. If there are any difficulties in cloning the models, please download the models from:

  1. https://drive.google.com/open?id=1C8X4O9SnNmvmJbzpqx_2YJR7sYTxZ3Tm for Classification, segmentation, and Multi-Task networks. Place the models in the roofn3d/cls_seg_mt/models directory.
  2. https://drive.google.com/open?id=15r54fXLjZcFuL2ok35M1_hXxw_Fn7LJu for Completion. Place the model in completion/log directory.

Training

Classification, Segmentation, and Multi-Task

Non-Damaged Data: download the data from https://drive.google.com/open?id=1hYBrNl2nficT_rFJkFUlXQYjR-2QvNQF Damaged data: download the data from https://drive.google.com/open?id=1gNqYKxKP3CT_Fd8D_L6OWk545tAR4Oxl

  1. Unzip it into a folder.

  2. go to cd cls_seg_mt. Run python train_classification.py --input_path=path_to_data_from_step2 --outf=models/cls. You must change the --input-pathto path of data dobtained from step 2. The outf argument corresponds to output drectory for the trained models. For example: python train_classification.py --input_path=data/roofn3d_data_multitask_all --outf=models/cls.

  3. for segmentation, run python train_segmentation.py --input_path=path_to_data_from_step2 --outf=models/seg. You must change the --input-pathto path of data dobtained from step 2. The outf argument corresponds to output drectory for the trained models. For example: python train_segmentation.py --input_path=data/roofn3d_data_multitask_all --outf=models/seg.

  4. For Multi-Task Learning, run python train_multitask.py --input_path=path_to_data_from_step2 --outf=models/mt. You must change the --input-pathto path of data dobtained from step 2. The outf argument corresponds to output drectory for the trained models. For example: python train_multitask.py --input_path=data/roofn3d_data_multitask_all --outf=models/mt.

NOTE: The first run might take some time to load all the point-clouds in the memory and save them for faster access in the next run. It is recommended to spare atleast 10GB of RAM for data loading.

Testing

  1. go to cd cls_seg_mt, and run python test_cls.py --input_path=path_to_data --model=model_to_test.pth. For example: python test_cls.py --input_path=data/roofn3d_data_multitask_all --model=models/classification_complete.pth.

  2. go to cd cls_seg_mt, and run python test_seg.py --input_path=path_to_data --model=model_to_test.pth. For example: python test_seg.py --input_path=data/roofn3d_data_multitask_all --model=models/segmentation_complete.pth.

  3. go to cd cls_seg_mt, and run python test_multitask.py --input_path=path_to_data --model=model_to_test.pth. For example: python test_multitask.py --input_path=data/roofn3d_data_multitask_all --model=models/multitask_complete.pth.

Acknowledgement

The RoofN3D training data (Wichmann et al., 2018) was provided by the chair Methods of Geoinformation Science of Technische Universität Berlin and is available at https://roofn3d.gis.tu-berlin.de.

Citations

[1] Wichmann, A., Agoub, A., Kada, M., 2018. RoofN3D: Deep Learning Training Data for 3D Building Reconstruction. In: The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, XLII-2, pp. 1191-1198.

[2] Qi Charles, R & Su, Hao & Kaichun, Mo & Guibas, Leonidas. (2017). PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. 77-85. 10.1109/CVPR.2017.16.

[3] Yuan, Wentao & Khot, Tejas & Held, David & Mertz, Christoph & Hebert, Martial. (2018). PCN: Point Completion Network. 728-737. 10.1109/3DV.2018.00088.

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].