All Projects → Colin97 → Point2Mesh

Colin97 / Point2Mesh

Licence: MIT license
Meshing Point Clouds with Predicted Intrinsic-Extrinsic Ratio Guidance (ECCV2020)

Programming Languages

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

Projects that are alternatives of or similar to Point2Mesh

Meshlab
The open source mesh processing system
Stars: ✭ 2,619 (+4193.44%)
Mutual labels:  point-cloud, mesh, mesh-generation, 3d-reconstruction, mesh-processing
SkeletonBridgeRecon
The code for CVPR2019 Oral paper "A Skeleton-bridged Deep Learning Approach for Generating Meshes of Complex Topologies from Single RGB Images"
Stars: ✭ 72 (+18.03%)
Mutual labels:  mesh, mesh-generation, 3d-reconstruction
softpool
SoftPoolNet: Shape Descriptor for Point Cloud Completion and Classification - ECCV 2020 oral
Stars: ✭ 62 (+1.64%)
Mutual labels:  point-cloud, 3d-reconstruction, eccv2020
3d Machine Learning
A resource repository for 3D machine learning
Stars: ✭ 7,405 (+12039.34%)
Mutual labels:  point-cloud, mesh, 3d-reconstruction
Openmvs
open Multi-View Stereo reconstruction library
Stars: ✭ 1,842 (+2919.67%)
Mutual labels:  point-cloud, mesh, 3d-reconstruction
NeuralPull
Implementation of ICML'2021:Neural-Pull: Learning Signed Distance Functions from Point Clouds by Learning to Pull Space onto Surfaces
Stars: ✭ 149 (+144.26%)
Mutual labels:  point-cloud, 3d-reconstruction
Easy3d
A lightweight, easy-to-use, and efficient C++ library for processing and rendering 3D data
Stars: ✭ 383 (+527.87%)
Mutual labels:  point-cloud, mesh
Draco
Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.
Stars: ✭ 4,611 (+7459.02%)
Mutual labels:  point-cloud, mesh
Awsome deep geometry learning
A list of resources about deep learning solutions on 3D shape processing
Stars: ✭ 105 (+72.13%)
Mutual labels:  point-cloud, 3d-reconstruction
Silhouette-Guided-3D
PyTorch Code of our WACV2020 paper: Silhouette Guided Point Cloud Reconstruction beyond Occlusion
Stars: ✭ 36 (-40.98%)
Mutual labels:  point-cloud, 3d-reconstruction
Kinectfusionapp
Sample implementation of an application using KinectFusionLib
Stars: ✭ 69 (+13.11%)
Mutual labels:  point-cloud, mesh
Polylidar
Polylidar3D - Fast polygon extraction from 3D Data
Stars: ✭ 106 (+73.77%)
Mutual labels:  point-cloud, mesh
Point Cloud Utils
A Python library for common tasks on 3D point clouds
Stars: ✭ 281 (+360.66%)
Mutual labels:  point-cloud, mesh
Kinectfusionlib
Implementation of the KinectFusion approach in modern C++14 and CUDA
Stars: ✭ 261 (+327.87%)
Mutual labels:  point-cloud, mesh
3PU pytorch
pytorch implementation of >>Patch-base progressive 3D Point Set Upsampling<<
Stars: ✭ 61 (+0%)
Mutual labels:  point-cloud, 3d-reconstruction
3dhop
3D Heritage Online Presenter
Stars: ✭ 89 (+45.9%)
Mutual labels:  point-cloud, mesh
Msn Point Cloud Completion
Morphing and Sampling Network for Dense Point Cloud Completion (AAAI2020)
Stars: ✭ 196 (+221.31%)
Mutual labels:  point-cloud, 3d-reconstruction
Cgal
The public CGAL repository, see the README below
Stars: ✭ 2,825 (+4531.15%)
Mutual labels:  point-cloud, mesh-processing
pyRANSAC-3D
A python tool for fitting primitives 3D shapes in point clouds using RANSAC algorithm
Stars: ✭ 253 (+314.75%)
Mutual labels:  point-cloud, 3d-reconstruction
volumentations
Augmentation package for 3d data based on albumentaitons
Stars: ✭ 26 (-57.38%)
Mutual labels:  point-cloud, mesh

Meshing-Point-Clouds-with-IER

Codes for Meshing Point Clouds with Predicted Intrinsic-Extrinsic Ratio Guidance (ECCV2020). [paper]

We propose a novel mesh reconstruction method that leverages the input point cloud as much as possible, by predicting which triplets of points should form faces. Our key innovation is a surrogate of local connectivity, calculated by comparing the intrinsic/extrinsic metrics. We learn to classify the candidate triangles using a deep network and then feed the results to a post-processing module for mesh generation. Our method can not only preserve fine-grained details, handle ambiguous structures, but also possess strong generalizability to unseen categories.

0. Envrionment & Prerequisites.

a) Environment: - PyTorch 1.3.1 - Python 3.6 - Cuda 10.0

b) Download submodules annoy(1.16) and SparseConvNet(0.2) and install SparseConvNet:

git submodule update --init --recursive
cd SparseConvNet/
sh develop.sh

annoy 1.17 changed their API. Please download the previous version.

c) Install plyfile, pickle, and tqdm with pip.

1. Download pretrained models and demo data.

You can download the pretrained model and demo data from here to get a quick look. Demo data includes ten shapes (both gt mesh and point cloud) and their pre-generated pickle files. The pickle files contain the point cloud vertices and proposed candidate triangles (vertex indices and gt labels). You can use the pickles files to train or test the network.

2. Classify proposed candidate triangles with a neural network.

You can use network/test.py to classify the proposed candidate triangles. You can find the prediced labels (npy files) at log/shapenet_pretrained/test_demo. 300,000 triangles per npy file and each shape may have multiple npy files.

3. Post-process and get output meshes.

You can feed the pickle files and the predicted npy files into a post-process program to get output meshes.

First, compile cpp codes:

cd postprocess
mkdir build
cd build
cmake ..
make
cd ..

Then, you can post-process all the demo shapes with run_demo.py or post-process a single shape with main.py. You can find the generated demo meshes at log/shapenet_pretrained/test_demo/output_mesh.

4. Train your own network.

You can download all the pickle files for the full ShapeNet dataset from here(23,108 shapes, ~42.2GB). Then use network/train.py to train your own network.

5. Generate your own training data.

You can generate your own training data with gt mesh (ply).

First, compile the cpp code:

cd preprocess_with_gt_mesh
mkdir build
cd build
cmake ..
make
cd ..

Then, you can use main.py to generate the picke file for a single shape or use run_demo.py to generate the pickle files for all the demo meshes. The total runtime for each shape may take several minutes. You can use multiple processes to accelerate.

In detail, the training data generation consists of several steps:

  • preprocess the gt mesh: normalize mesh, merge close vertices, etc.
  • sample point cloud: sample 12,000 ~ 12,800 points with Poisson sampling and use binary search to determine the radius.
  • calculate geodesic distance between pairs of points: it may take up to 1 minute. In some cases (e.g., complex and broken meshes), it may time out and thus fail to generate the final pickle file.
  • propose candidate triangles based on KNN.
  • calculate the distances between the candidate triangles and ground truth mesh.

6. Generate pickle files with only point clouds.

You can also generate pickle files with only point clouds (ply), so that you can feed the pickle files into the network and the postprocess program to get the final mesh.

First, compile the cpp code:

cd preprocess_with_pc
mkdir build
cd build
cmake ..
make
cd ..

Then, you can use main.py to generate the picke file for a single shape or use run_demo.py to generate the pickle files for all the demo point clouds. The total runtime for each shape may take less than one minute. You can use multiple processes to accelerate. Please note that, in this way, the candidate labels in the pickle files will be set to -1.

The input point cloud should contain 12,000 ~ 12,800 points (to best fit our pre-trained network). Using Poisson sampling as pre-processing can get evenly distributed point cloud and thus boost the performance. Currently, our method do not support very noisy point clouds.

If you find our work useful for your research, please cite:

@article{liu2020meshing,
  title={Meshing Point Clouds with Predicted Intrinsic-Extrinsic Ratio Guidance},
  author={Liu, Minghua and Zhang, Xiaoshuai and Su, Hao},
  journal={arXiv preprint arXiv:2007.09267},
  year={2020}
}

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