Skip to content

Leveraging Inlier Correspondences Proportion for Point Cloud Registration. https://arxiv.org/abs/2201.12094.

License

Notifications You must be signed in to change notification settings

zhulf0804/GCNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c010dcf · Mar 28, 2023

History

15 Commits
Mar 3, 2022
Jul 20, 2022
Jul 22, 2022
Aug 5, 2022
Mar 3, 2022
Jul 21, 2022
Mar 4, 2022
Mar 3, 2022
Jul 21, 2022
Jul 22, 2022
Mar 3, 2022
Mar 4, 2022
Mar 28, 2023
Aug 5, 2022
Jul 21, 2022
Mar 3, 2022
Mar 3, 2022
Jul 20, 2022
Mar 3, 2022

Repository files navigation

PWC PWC PWC

Paper "Neighborhood-aware Geometric Encoding Network for Point Cloud Registration" was renamed to "Leveraging Inlier Correspondences Proportion for Point Cloud Registration" (NgeNet -> GCNet).

Results (saved in reg_results/3DMatch*-pred)

  • Recall on 3DMatch and 3DLoMatch (correspondences RMSE below 0.2)

    Dataset npairs Scene Recall (%) Pair Recall (%)
    3DMatch 1279 92.9 93.9
    3DLoMatch 1726 71.9 74.5
  • Recall on 3DMatch and 3DLoMatch (under 0.3m && 15 degrees)

    Dataset npairs Pair Recall (%)
    3DMatch 1623 95.0
    3DLoMatch 1781 75.1
  • Results on Odometry KITTI

    Dataset RTE(cm) RRE(°) Recall (%)
    Odometry KITTI 6.1 0.26 99.8
  • Results on MVP-RG

    Dataset RRE(°) RTE RMSE
    MVP-RG 7.99 0.048 0.093

Environments

  • All experiments were run on a RTX 3090 GPU with an Intel 8255C CPU at 2.50GHz CPU. Dependencies can be found in requirements.txt.

  • Compile python bindings

    # Compile
    
    cd NgeNet/cpp_wrappers
    sh compile_wrappers.sh
    

[Pretrained weights (Optional)]

Download pretrained weights for 3DMatch, 3DLoMatch, Odometry KITTI and MVP-RG from GoogleDrive or BaiduDisk (pwd: vr9g).

[3DMatch and 3DLoMatch]

1.1 dataset

We adopt the 3DMatch and 3DLoMatch provided from PREDATOR, and download it here [936.1MB]. Unzip it, then we should get the following directories structure:

| -- indoor
    | -- train (#82, cats: #54)
        | -- 7-scenes-chess
        | -- 7-scenes-fire
        | -- ...
        | -- sun3d-mit_w20_athena-sc_athena_oct_29_2012_scan1_erika_4
    | -- test (#8, cats: #8)
        | -- 7-scenes-redkitchen
        | -- sun3d-home_md-home_md_scan9_2012_sep_30
        | -- ...
        | -- sun3d-mit_lab_hj-lab_hj_tea_nov_2_2012_scan1_erika

1.2 train

## Reconfigure configs/threedmatch.yaml by updating the following values based on your dataset.

# exp_dir: your_saved_path for checkpoints and summary.
# root: your_data_path for the 3dMatch dataset.

cd NgeNet
python train.py configs/threedmatch.yaml

# note: The code `torch.cuda.empty_cache()` in `train.py` has some impact on the training speed.
# You can remove it or change its postion according to your GPU memory. 

1.3 evaluate and visualize

cd NgeNet

python eval_3dmatch.py --benchmark 3DMatch --data_root your_path/indoor --checkpoint your_path/3dmatch.pth --saved_path work_dirs/3dmatch [--vis] [--no_cuda]

python eval_3dmatch.py --benchmark 3DLoMatch --data_root your_path/indoor --checkpoint your_path/3dmatch.pth --saved_path work_dirs/3dlomatch [--vis] [--no_cuda]

[Odometry KITTI]

2.1 dataset

Download odometry kitti here with [velodyne laser data, 80 GB] and [ground truth poses (4 MB)], then unzip and organize in the following format.

| -- kitti
    | -- dataset
        | -- poses (#11 txt)
        | -- sequences (#11 / #22)
    | -- icp (generated automatically when training and testing)
        | -- 0_0_11.npy
        | -- ...
        | -- 9_992_1004.npy

2.2 train

## Reconfigure configs/kitti.yaml by updating the following values based on your dataset.

# exp_dir: your_saved_path for checkpoints and summary.
# root: your_data_path for the Odometry KITTI.

cd NgeNet
python train.py configs/kitti.yaml

2.3 evaluate and visualize

cd NgeNet
python eval_kitti.py --data_root your_path/kitti --checkpoint your_path/kitti.pth [--vis] [--no_cuda]

[MVP-RG]

3.1 dataset

Download MVP-RG dataset here, then organize in the following format.

| -- mvp_rg
    | -- MVP_Train_RG.h5
    | -- MVP_Test_RG.h5

3.2 train

## Reconfigure configs/mvp_rg.yaml by updating the following values based on your dataset.

# exp_dir: your_saved_path for checkpoints and summary.
# root: your_data_path for the MVP-RG.

python train.py configs/mvp_rg.yaml

# note: The code `torch.cuda.empty_cache()` in `train.py` has some impact on the training speed.
# You can remove it or change its postion according to your GPU memory. 

3.3 evaluate and visualize

python eval_mvp_rg.py --data_root your_path/mvp_rg --checkpoint your_path/mvp_rg.pth [--vis] [--no_cuda]

[Demo]

4.1 3DMatch

python demo.py --src_path demo_data/cloud_bin_21.pth --tgt_path demo_data/cloud_bin_34.pth --checkpoint your_path/3dmatch.pth --voxel_size 0.025 --npts 5000

4.2 Personal data (with the same voxel size as 3DMatch)

python demo.py --src_path demo_data/src1.ply --tgt_path demo_data/tgt1.ply --checkpoint your_path/3dmatch.pth  --voxel_size 0.025 --npts 20000

4.3 Personal data (with different voxel size from 3DMatch)

python demo.py --src_path demo_data/src2.ply  --tgt_path demo_data/tgt2.ply --checkpoint your_path/3dmatch.pth --voxel_size 3 --npts 20000

Set an appropriate voxel_size for your test data. If you want to test on point cloud pair with large amount of points, please set a large voxel_size according to your data.

Citation

@article{zhu2022leveraging,
  title={Leveraging Inlier Correspondences Proportion for Point Cloud Registration},
  author={Zhu, Lifa and Guan, Haining and Lin, Changwei and Han, Renmin},
  journal={arXiv preprint arXiv:2201.12094},
  year={2022}
}

Acknowledgements

Thanks for the open source code OverlapPredator, KPConv-PyTorch, KPConv.pytorch, FCGF, D3Feat.pytorch, MVP_Benchmark and ROPNet.

About

Leveraging Inlier Correspondences Proportion for Point Cloud Registration. https://arxiv.org/abs/2201.12094.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages