Home

Awesome

PointCLM: A Contrastive Learning-based Framework for Multi-instance Point Cloud Registration (ECCV2022)

This repository represents the official implementation of the paper: PointCLM: A Contrastive Learning-based Framework for Multi-instance Point Cloud Registration

Instructions

This code has been tested on

Requirements

To create a virtual environment and install the required dependences please run:

git clone https://github.com/phdymz/PointCLM.git
conda create --name PointCLM python=3.8
conda activate PointCLM
pip install -r requirements.txt

Make dataset

ModelNet40

When calling code data/modelnet40.py, the dataset ModelNet40 will be automatically downloaded to the path 'DATA_DIR'. No need for extra complex processing.

Scan2CAD

You need to pre-download dataset ScanNet, ShapeNet and Scan2CAD.

  1. Offline computing benchmark.
python make_dataset/make_scan2cad.py --scan2cad <root_scan2cad>/full_annotations.json --output <root_output> --scannet <root_scannet> --shapenet <root_shapenet>
  1. Extracting features using fun-tuned FCGF. The details of fun-tuning are illustrated in our paper.
python make_dataset/extract_feature.py --output <above_raw_output> --weight <fun-tuned parameter> --save_root <output_data_contains_feature>
  1. Computing correspondences using extracted features.
python make_dataset/make_correspondence.py --save_root <above_calculated_feature>

Train on ModelNet40

After creating the virtual environment and downloading the datasets, PointCLM can be trained using:

python train_modelnet40.py

Train on Scan2CAD

After creating the virtual environment and processing the datasets, PointCLM can be trained using:

python train_scan2cad.py

Inference

The trained model can be evaluated by:

ModelNet40

We provide a pre-trained weight on ModelNet40 for PointCLM in BaiDuyun, Password: eccv.

python eval_modelnet40.py --checkpoint_root <weight_root>

Scan2CAD

We also provide a pre-trained weight on Scan2CAD for PointCLM in BaiDuyun, Password: eccv.

python eval_scan2cad.py --checkpoint_root <weight_root>

Citation

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

@article{yuan2022pointclm,
  title={PointCLM: A Contrastive Learning-based Framework for Multi-instance Point Cloud Registration},
  author={Yuan, Mingzhi and Li, Zhihao and Jin, Qiuye and Chen, Xinrong and Wang, Manning},
  journal={arXiv preprint arXiv:2209.00219},
  year={2022}
}

Acknowledgments

In this project we use (parts of) the official implementations of the followin works:

We thank the respective authors for open sourcing their methods.