An inofficial PyTorch implementation of PREDATOR based on KPConv.
The code has been tested on Ubuntu 16.4, Python 3.7, PyTorch (1.7.1+cu101), torchvision (0.8.2+cu101), GCC 5.4.0 and Open3D (0.9 or 0.13).
All experiments were run on a Tesla V100 GPU with an Intel 6133CPU at 2.50GHz CPU.
We adopted the 3DMatch provided from PREDATOR, and download it from here [5.17G]. 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
Compile python bindings and Reconfigure
# Compile cd PREDATOR/cpp_wrappers sh compile_wrappers.sh cd .. # Reconfigure configs/threedmatch.yaml by updating the following values based on your dataset. exp_dir: your_saved_path for checkpoints and summary. checkpoint: your_ckpt_path; it's just required during evaluating and visualizing. root: your_data_path for the indoor.
cd PREDATOR python train.py
(Optional) Download pretrained weights
Download pretrained weights [baidu disk, 28.36M] with password
0zfl for the following evaluation and visualization.
cd PREDATOR python evaluate.py
cd PREDATOR python vis.py
Results on 3DMatch
|npoints||Inlier Ratio||Feature Match Recall||Registration Recall||Weighted Registration Recall|
Note: We calculate
Registration Recall and
Weighted Registration Recall based on equation (3) in PREDATOR Supplementary. It’s a little different from implementation in OverlapPredator, which is reported in the paper.