All Projects → XuyangBai → Ppf Foldnet

XuyangBai / Ppf Foldnet

PyTorch reimplementation for "PPF-FoldNet: Unsupervised Learning of Rotation Invariant 3D Local Descriptors" https://arxiv.org/abs/1808.10322

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Ppf Foldnet

3d Pointcloud
Papers and Datasets about Point Cloud.
Stars: ✭ 179 (+250.98%)
Mutual labels:  point-cloud, registration
DeepI2P
DeepI2P: Image-to-Point Cloud Registration via Deep Classification. CVPR 2021
Stars: ✭ 130 (+154.9%)
Mutual labels:  point-cloud, registration
Cupoch
Robotics with GPU computing
Stars: ✭ 225 (+341.18%)
Mutual labels:  point-cloud, registration
superpose3d
register 3D point clouds using rotation, translation, and scale transformations.
Stars: ✭ 34 (-33.33%)
Mutual labels:  point-cloud, registration
Unsupervisedrr
[CVPR 2021 - Oral] UnsupervisedR&R: Unsupervised Point Cloud Registration via Differentiable Rendering
Stars: ✭ 43 (-15.69%)
Mutual labels:  point-cloud, registration
Deepmapping
code/webpage for the DeepMapping project
Stars: ✭ 140 (+174.51%)
Mutual labels:  point-cloud, registration
YOHO
[ACM MM 2022] You Only Hypothesize Once: Point Cloud Registration with Rotation-equivariant Descriptors
Stars: ✭ 76 (+49.02%)
Mutual labels:  point-cloud, registration
Overlappredator
[CVPR 2021, Oral] PREDATOR: Registration of 3D Point Clouds with Low Overlap.
Stars: ✭ 106 (+107.84%)
Mutual labels:  point-cloud, registration
Ndt omp
Multi-threaded and SSE friendly NDT algorithm
Stars: ✭ 291 (+470.59%)
Mutual labels:  point-cloud, registration
Pycpd
Pure Numpy Implementation of the Coherent Point Drift Algorithm
Stars: ✭ 255 (+400%)
Mutual labels:  point-cloud, registration
OverlapPredator
[CVPR 2021, Oral] PREDATOR: Registration of 3D Point Clouds with Low Overlap.
Stars: ✭ 293 (+474.51%)
Mutual labels:  point-cloud, registration
Fast gicp
A collection of GICP-based fast point cloud registration algorithms
Stars: ✭ 307 (+501.96%)
Mutual labels:  point-cloud, registration
Probreg
Python package for point cloud registration using probabilistic model (Coherent Point Drift, GMMReg, SVR, GMMTree, FilterReg, Bayesian CPD)
Stars: ✭ 306 (+500%)
Mutual labels:  point-cloud, registration
Cilantro
A lean C++ library for working with point cloud data
Stars: ✭ 577 (+1031.37%)
Mutual labels:  point-cloud, registration
Pointnet2 pytorch
PyTorch implementation of Pointnet2/Pointnet++
Stars: ✭ 844 (+1554.9%)
Mutual labels:  point-cloud
Unity 3mx
Load 3MX/3MXB format LOD model files generated by Bentley ContextCapture into Unity.
Stars: ✭ 38 (-25.49%)
Mutual labels:  point-cloud
Cobigicp
[IROS2020] CoBigICP: COrrentropy based BIdirectional Generalized ICP
Stars: ✭ 27 (-47.06%)
Mutual labels:  registration
Hackathon Manager
All-in-one platform for hackathon registration & logistics.
Stars: ✭ 24 (-52.94%)
Mutual labels:  registration
Rgcnn
Regularized Graph CNN for Point Cloud Segmentation
Stars: ✭ 45 (-11.76%)
Mutual labels:  point-cloud
Extensionsindex
Slicer extensions index
Stars: ✭ 36 (-29.41%)
Mutual labels:  registration

PyTorch PPF-FoldNet

This repo is the unofficial implementation for PPF-FoldNet(https://arxiv.org/abs/1808.10322v1) in pytorch.

Project Structure

  • models/: dictionary that saves the model of PPF-FoldNet. PPF-FoldNet is an Auto-Encoder for point pair feature of a local patch. The input is a batch of point cloud fragments [bs(num_patches), num_points_per_patch, 4], output of the Encoder is the descriptor for each local patch in these point cloud, [bs(num_patches), 1, 512], where 512 is the default codeword length.
    1. models_conv1d.py: PPF-FoldNet model using conv1d layers.
    2. models_linear.py: PPF-FoldNet model using linear layers. Theoretically, nn.Conv1d and nn.Linear should be same when (kernel_size=1, stride=1, padding=0, dilation=1). You can try misc/linear_conv1d.py for the experiment.
  • input_preparation.py: used before training, including:
    1. read point cloud and voxel downsample.
    2. choose reference point(or interest point) from the point cloud.
    3. collect neighboring points near each reference point.
    4. build local patch for each reference point and their neighbor.
    5. save the local patch as numpy array for later use.
    6. I also write a function for preparing the ppf input on the fly.
  • dataset.py: define the Dataset, read from the files generated from input prepration stage or on-the-fly.
  • dataloader.py: define the dataloader.
  • loss.py: define the Chamfer Loss. (Earth Move Distance Loss is worth trying.)
  • trainer.py: the trainer class, handle the training process including snapshot.
  • train.py: the entrance file, every time I start training, this file will be copied to the snapshot dictionary.
  • geometric_registration/: dictionary for evaluating the model through the task of geometric registration
    1. gt_result/: the ground truth information provided by 3DMatch benchmark.
    2. preparation.py: calculate the descriptor for each interest point provided by 3DMatch Benchmark. (need to calculate the ppf representation for each interest point first)
    3. evaluate_ppfnet.py: using the evaluation metric proposed in PPF-FoldNet paper to evaluate the performance of the descriptor.
      1. get point cloud from .ply file and get the interest point coordinate from .keypts.bin file.
      2. use the descriptor generated by preparation.py to register each pair of point clouds fragment and save the result in pred_result/
      3. after register each pair of fragment, we can get the final recall of the descriptors.
    4. utils.py
  • misc/

Data

  • rgbd_fragments/: fragments of training set.
  • intermediate-files-real/: dictionary that saves the keypoints coordinates for each scene.
  • fragments/: fragments of test set.

Prepara the date

Use script/download.sh to download all the training set from 3DMatch, and script/fuse_fragments_3DMatch.py to fuse rgbd frames into fragments.

And the intermediate file is downloaded from this link

Train the model

python train.py 

All the configuration is in the train.py. When you start training, the train.py and model.py will be saved in the snapshot/ folder and the tensorboard file is saved in tensorboard/.

Evaluate the model

See Geometric Registration for detail

Performance

Model Average Recall
PPF-FoldNet 69.3%
Origin Paper 71.8%
3DMatch 57.3%

The model with best performance is in folder pretrained/

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