The-Learning-And-Vision-Atelier-LAVA / SpinNet

Licence: MIT license
[CVPR 2021] SpinNet: Learning a General Surface Descriptor for 3D Point Cloud Registration

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
matlab
3953 projects

Projects that are alternatives of or similar to SpinNet

D3Feat.pytorch
[PyTorch] Official Implementation of CVPR'20 oral paper - D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features https://arxiv.org/abs/2003.03164
Stars: ✭ 99 (-45.3%)
Mutual labels:  descriptor, registration, pointcloud
CovGT-3DRegistration-matlab
A 3D Scene Registration Method via Covariance Descriptors and an Evolutionary Stable Strategy Game Theory Solver
Stars: ✭ 20 (-88.95%)
Mutual labels:  descriptor, registration, pointcloud
D3feat
[TensorFlow] Implementation of CVPR'20 oral paper - D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features https://arxiv.org/abs/2003.03164
Stars: ✭ 143 (-20.99%)
Mutual labels:  registration, pointcloud
Cpd
C++ implementation of the Coherent Point Drift point set registration algorithm.
Stars: ✭ 260 (+43.65%)
Mutual labels:  registration, pointcloud
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+3137.57%)
Mutual labels:  registration, pointcloud
Deepglobalregistration
[CVPR 2020 Oral] A differentiable framework for 3D registration
Stars: ✭ 222 (+22.65%)
Mutual labels:  registration, pointcloud
continuous-fusion
(ROS) Sensor fusion algorithm for camera+lidar.
Stars: ✭ 26 (-85.64%)
Mutual labels:  pointcloud, kitti
Tools Merge Image PointCloud
Project the PointCloud to the image & Generate the LiDAR PointCloud with color.
Stars: ✭ 39 (-78.45%)
Mutual labels:  pointcloud, kitti
tldr
TLDR is an unsupervised dimensionality reduction method that combines neighborhood embedding learning with the simplicity and effectiveness of recent self-supervised learning losses
Stars: ✭ 95 (-47.51%)
Mutual labels:  pytorch-implementation
ffhqr-dataset
FFHQR -- the first large-scale retouching dataset for computer vision research.
Stars: ✭ 85 (-53.04%)
Mutual labels:  large-scale
Pruning filters for efficient convnets
PyTorch implementation of "Pruning Filters For Efficient ConvNets"
Stars: ✭ 96 (-46.96%)
Mutual labels:  pytorch-implementation
django-slack-oauth
Handles OAuth and stores slack token
Stars: ✭ 51 (-71.82%)
Mutual labels:  registration
GenerateDynamicCustomForm
You can generate a dynamic form view in a few minutes for a signup, add a record. Creating a form is very easy.
Stars: ✭ 18 (-90.06%)
Mutual labels:  registration
gan-vae-pretrained-pytorch
Pretrained GANs + VAEs + classifiers for MNIST/CIFAR in pytorch.
Stars: ✭ 134 (-25.97%)
Mutual labels:  pytorch-implementation
ANTsR
Advanced Normalization Tools in R
Stars: ✭ 101 (-44.2%)
Mutual labels:  registration
Symfony-4-by-Samples
Symfony 4 by Samples is a personal project in which I will be creating small demos with tutorial in which to learn the symfony framework 4. Each of the samples contains a README.md file that indicates the purpose of the sample plus an step by step guide to reproduce it. Basic topics, login and register form, authentication, webpack encore, sass…
Stars: ✭ 40 (-77.9%)
Mutual labels:  registration
HipHop 2D3Dregistration
2D/3D registration between CT/MRI or STL models and X-ray images (November 2018)
Stars: ✭ 91 (-49.72%)
Mutual labels:  registration
Registrations-for-WooCommerce
Add a registration product type to your WooCommerce installation.
Stars: ✭ 38 (-79.01%)
Mutual labels:  registration
DSIN
Deep Image Compression using Decoder Side Information (ECCV 2020)
Stars: ✭ 39 (-78.45%)
Mutual labels:  kitti
extrapolate
generalize counter-examples of property-based testing
Stars: ✭ 13 (-92.82%)
Mutual labels:  generalization

PWC License CC BY-NC-SA 4.0 arXiv

SpinNet: Learning a General Surface Descriptor for 3D Point Cloud Registration (CVPR 2021)

This is the official repository of SpinNet, a conceptually simple neural architecture to extract local features which are rotationally invariant whilst sufficiently informative to enable accurate registration. For technical details, please refer to:

SpinNet: Learning a General Surface Descriptor for 3D Point Cloud Registration
Sheng Ao*, Qingyong Hu*, Bo Yang, Andrew Markham, Yulan Guo.
(* indicates equal contribution)

[Paper] [Video] [Project page]

(1) Overview

(2) Setup

This code has been tested with Python 3.6, Pytorch 1.6.0, CUDA 10.2 on Ubuntu 18.04.

  • Clone the repository
git clone https://github.com/QingyongHu/SpinNet && cd SpinNet
  • Setup conda virtual environment
conda create -n spinnet python=3.6
source activate spinnet
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch
conda install -c open3d-admin open3d==0.11.1
pip install "git+git://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib"

(3) 3DMatch

Download the processed dataset from Google Drive, Baidu Yun (Verification code:d1vn) and put the folder into data. Then the structure should be as follows:

--data--3DMatch--fragments
              |--intermediate-files-real
              |--patches

Training

Training SpinNet on the 3DMatch dataset:

cd ./ThreeDMatch/Train
python train.py

Testing

Evaluate the performance of the trained models on the 3DMatch dataset:

cd ./ThreeDMatch/Test
python preparation.py

The learned descriptors for each point will be saved in ThreeDMatch/Test/SpinNet_{timestr}/ folder. Then the Feature Matching Recall(FMR) and Inlier Ratio(IR) can be calculated by running:

python evaluate.py [timestr]

The ground truth poses have been put in the ThreeDMatch/Test/gt_result folder. The Registration Recall can be calculated by running the evaluate.m in ThreeDMatch/Test/3dmatch which are provided by 3DMatch. Note that, you need to modify the descriptorName to SpinNet_{timestr} in the ThreeDMatch/Test/3dmatch/evaluate.m file.

(4) KITTI

Download the processed dataset from Google Drive, Baidu Yun (Verification code:d1vn), and put the folder into data. Then the structure is as follows:

--data--KITTI--dataset
            |--icp
            |--patches

Training

Training SpinNet on the KITTI dataset:

cd ./KITTI/Train/
python train.py

Testing

Evaluate the performance of the trained models on the KITTI dataset:

cd ./KITTI/Test/
python test_kitti.py

(5) ETH

The test set can be downloaded from here, and put the folder into data, then the structure is as follows:

--data--ETH--gazebo_summer
          |--gazebo_winter
          |--wood_autmn
          |--wood_summer

(6) Generalization across Unseen Datasets

3DMatch to ETH

Generalization from 3DMatch dataset to ETH dataset:

cd ./generalization/ThreeDMatch-to-ETH
python preparation.py

The descriptors for each point will be generated and saved in the generalization/ThreeDMatch-to-ETH/SpinNet_{timestr}/ folder. Then the Feature Matching Recall and inlier ratio can be caluclated by running

python evaluate.py [timestr]

3DMatch to KITTI

Generalization from 3DMatch dataset to KITTI dataset:

cd ./generalization/ThreeDMatch-to-KITTI
python test.py

KITTI to 3DMatch

Generalization from KITTI dataset to 3DMatch dataset:

cd ./generalization/KITTI-to-ThreeDMatch
python preparation.py

The descriptors for each point will be generated and saved in generalization/KITTI-to-3DMatch/SpinNet_{timestr}/ folder. Then the Feature Matching Recall and inlier ratio can be caluclated by running

python evaluate.py [timestr]

Acknowledgement

In this project, we use (parts of) the implementations of the following works:

Citation

If you find our work useful in your research, please consider citing:

@inproceedings{ao2020SpinNet,
  title={SpinNet: Learning a General Surface Descriptor for 3D Point Cloud Registration},
  author={Ao, Sheng and Hu, Qingyong and Yang, Bo and Markham, Andrew and Guo, Yulan},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  year={2021}
}

References

[1] 3DMatch: Learning Local Geometric Descriptors from RGB-D Reconstructions, Andy Zeng, Shuran Song, Matthias Nießner, Matthew Fisher, Jianxiong Xiao, and Thomas Funkhouser, CVPR 2017.

Updates

  • 03/04/2021: The code is released!
  • 01/03/2021: This paper has been accepted by CVPR 2021!
  • 25/11/2020: Initial release!

Related Repos

  1. RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds GitHub stars
  2. SoTA-Point-Cloud: Deep Learning for 3D Point Clouds: A Survey GitHub stars
  3. 3D-BoNet: Learning Object Bounding Boxes for 3D Instance Segmentation on Point Clouds GitHub stars
  4. SensatUrban: Learning Semantics from Urban-Scale Photogrammetric Point Clouds GitHub stars
  5. SQN: Weakly-Supervised Semantic Segmentation of Large-Scale 3D Point Clouds with 1000x Fewer Labels GitHub stars
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].