Code Monkey home page Code Monkey logo

3d-registration-with-maximal-cliques's Introduction

3D Registration with Maximal Cliques (CVPR23 best student paper award)

Source code of 3D Registration with Maximal Cliques.

Introduction

In this paper, we present a 3D registration method with maximal cliques (MAC). The key insight is to loosen the previous maximum clique constraint, and mine more local consensus information in a graph for accurate pose hypotheses generation: 1) A compatibility graph is constructed to render the affinity relationship between initial correspondences. 2) We search for maximal cliques in the graph, each of which represents a consensus set. We perform node-guided clique selection then, where each node corresponds to the maximal clique with the greatest graph weight. 3) Transformation hypotheses are computed for the selected cliques by the SVD algorithm and the best hypothesis is used to perform registration. Extensive experiments on U3M, 3DMatch, 3DLoMatch and KITTI demonstrate that MAC effectively increases registration accuracy, outperforms various state-of-the-art methods and boosts the performance of deep-learned methods. MAC combined with deep-learned methods achieves stateof-the-art registration recall of 95.7% / 78.9% on 3DMatch / 3DLoMatch.

Repository layout

The repository contains a set of subfolders:

  • Linux - source code for Linux platform.
  • Windows - source code for Windows platform.
  • Python_implement - python implementation of basic MAC.
  • demo - test point clouds.

Build

MAC depends on PCL (>= 1.10.1, version 1.10.1 is recommended) and igraph(=0.9.9). Please install these libraries first.

To build MAC, you need CMake (>= 3.23) and, of course, a compiler that supports >= C++11. The code in this repository has been tested on Windows (MSVC =2022 x64), and Linux (GCC =10.4.0). Machines nowadays typically provide higher support, so you should be able to build MAC on almost all platforms.

Windows version

Please refer to Compiling on Windows for details.

Linux version

Please refer to Compiling on Linux for details.

Python implementation

We provide a simple demo in python, please refer to Python_implement for details.

Usage:

  • --help list all usages.
  • --demo run the demo.

Required args:

  • --output_path output path for saving results.
  • --input_path input data path.
  • --dataset_name[3dmatch/3dlomatch/KITTI/ETH/U3M] dataset name.
  • --descriptor[fpfh/fcgf/spinnet/predator] descriptor name.
  • --start_index(begin from 0) run from given index.

Optional args:

  • --no_logs forbid generation of log files.

Datasets

All tested datasets can be found at this link, password:1234.

Results

U3M

3DMatch & 3DLoMatch

Benchmark RR(%) RE(°) TE(cm)
3DMatch+FPFH+MAC 84.10 1.96 6.18
3DMatch+FCGF+MAC 93.72 1.89 6.03
3DLoMatch+FPFH+MAC 40.88 3.66 9.45
3DLoMatch+FCGF+MAC 59.85 3.50 9.75

KITTI

Benchmark RR(%) RE(°) TE(cm)
FPFH+MAC 99.46 0.40 8.46
FCGF+MAC 97.84 0.34 19.34

Performance boosting

Projects using MAC

Citation

If you find this code useful for your work or use it in your project, please consider citing:

@inproceedings{zhang20233d,
  title={3D Registration with Maximal Cliques},
  author={Zhang, Xiyu and Yang, Jiaqi and Zhang, Shikun and Zhang, Yanning},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={17745--17754},
  year={2023}
}

3d-registration-with-maximal-cliques's People

Contributors

zhangxy0517 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.