Home

Awesome

SG_PR

Code for IROS2020 paper Semantic Graph Based Place Recognition for 3D Point Clouds

Pipeline overview.

Citation

If you think this work is useful for your research, please consider citing:

@inproceedings{kong2020semantic,
  title={Semantic Graph based Place Recognition for Point Clouds},
  author={Kong, Xin and Yang, Xuemeng and Zhai, Guangyao and Zhao, Xiangrui and Zeng, Xianfang and Wang, Mengmeng and Liu, Yong and Li, Wanlong and Wen, Feng},
  booktitle={2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={8216--8223},
  year={2020},
  organization={IEEE}
}

Requirements

We recommend python3.6. You can install required dependencies by:

pip install -r requirements.txt

Training

Data structure

The data structure is:

data
    |---00
    |    |---000000.json   
    |    |---000001.json
    |    |---...
    |
    |---01
    |    |---000000.json
    |    |---000001.json
    |    |---...
    |
    |---...
    |
    |---00.txt
    |---01.txt
    |---...

You can download the provided preprocessed data. Or you can refer to the 'data_process' dir for details of generating graphs.

Configuration file

Before training the model, you need to modify the configuration file in ./config according to your needs. The main parameters are as follows:

Training model

After preparing the data and modifying the configuration file, you can start training. Just run:

python main_sg.py

Testing

eval_pair

This example takes a pair of graphs as input and output their similarity score. To run this example, you need to set the following parameters:

Then just run:

python eval_pair.py

eval_batch

This example tests a sequence, the results are it's PR curve and F1 max score. To run this example, you need to set the following parameters:

Then just run:

python eval_batch.py

Raw Data

We provide the raw data of the tables and curves in the paper, including compared methods M2DP, PointNetVLAD, Scan Context.

We recommend users refer the work SSC for a fair comparison with recent methods in the same data distribution.

Other methods

PointNetVLAD

Please refer to our modified repo for training and testing PointNetVLAD on KITTI dataset, which is mentioned in our paper as PV_KITTI.

<!-- Todo #### Scan Context ##### Ford 1. Generate feature database by 'gen_SC_db_ford.py' 2. Compute distance and plot PR curve by 'eval_SC_list_Ford.py' #### M2DP ##### Ford 1. Generate feature database by 'evaluate_Ford.m' 2. Compute distance and plot PR curve by 'eval_SC_list_Ford.py' -->

TODO

Acknowledgement

Thanks to the source code of some great works such as SIMGNN, DGCNN.