Skip to content

Latest commit

 

History

History
102 lines (80 loc) · 5.76 KB

File metadata and controls

102 lines (80 loc) · 5.76 KB

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

Source code of 3D Registration with Maximal Cliques.

News

  • 2024-08-13 -> TPAMI version of the paper is available!
  • 2024-09-15 -> igraph 0.9.9 has a memory leak issue. Support for version 0.10.6 has been added. Please refer to the Linux version for details.
  • 2024-11-6 -> Our new work ''MAC++: Going Further with Maximal Cliques for 3D Registration'' is accepted by 3DV 2025.

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, 0.10.6). 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}
}
@article{yang2024mac,
  title={MAC: Maximal Cliques for 3D Registration},
  author={Yang, Jiaqi and Zhang, Xiyu and Wang, Peng and Guo, Yulan and Sun, Kun and Wu, Qiao and Zhang, Shikun and Zhang, Yanning},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  year={2024},
  publisher={IEEE}
}