Home

Awesome

SSC

Code for IROS2021 paper SSC: Semantic Scan Context for Large-Scale Place Recognition

pipeline

Citation

@INPROCEEDINGS{9635904,
  author={Li, Lin and Kong, Xin and Zhao, Xiangrui and Huang, Tianxin and Li, Wanlong and Wen, Feng and Zhang, Hongbo and Liu, Yong},
  booktitle={2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, 
  title={{SSC}: Semantic Scan Context for Large-Scale Place Recognition}, 
  year={2021},
  volume={},
  number={},
  pages={2092-2099},
  doi={10.1109/IROS51168.2021.9635904}}

@article{Li2022,
  author = {Li, Lin and Kong, Xin and Zhao, Xiangrui and Huang, Tianxin and Liu, Yong},
  doi = {10.1007/s10514-022-10037-w},
  issn = {1573-7527},
  journal = {Autonomous Robots},
  publisher = {Springer US},
  title = {{Semantic scan context : a novel semantic-based loop-closure method for LiDAR SLAM}},
  url = {https://doi.org/10.1007/s10514-022-10037-w},
  year = {2022}}

Requirements

OpenCV
PCL
yaml-cpp

Usage

Build the code:

    mkdir build && cd build && cmake .. && make -j5

Modify the configuration file.

A simple example:

    cd ../bin
    ./eval_pair

Precision-Recall:

    cd ../bin
    ./eval_seq

Top-k Recall:

    cd ../bin
    ./eval_top1

plot curve

Data

Pair Lists

Lists of evaluation samples. We select all positive samples, and randomly select some negative samples according to a fixed ratio for evaluation. This folder contains lists of evaluation samples we used for the KITTI dataset (pairs_kitti) and KITTI-360 dataset (pairs_kitti360). The naming rule of the parent folder of the lists is "neg_ratio". For example, "neg_10" means that the number of negative samples is ten times that of positive samples.

Semantic label for KITTI-360

We use the kd-tree to obtain the semantic information of each scan in the KITTI-360 data set.

Raw Data

We provide the raw data of the tables and curves in the paper. For the fairness of the experiment, make sure that your results are also based on the same evaluation samples when citing the provided data.

We provide the results of all the methods mentioned in the paper on the KITTI and KITTI-360 datasets. The first column of each data file is the similarity score, and the second column is the ground truth. We also provide a python script to draw curves.

Our latest code has been further optimized and has better performance than the original code used in our paper. If you want to reproduce the results in our paper, please use this old version code (note that the CMakeKists.txt file in the root directory has some problems and needs simple modification).

Results

KITTI

Top-k Recall

When using 5 m as the threshold, the top-k recall rate is shown in the figure:

recall

Precision-Recall Curve

The Precision-Recall curve when α=100:

pr

KITTI-360

Precision-Recall Curve

The Precision-Recall curve when α=10:

pr

Acknowledgement

Thanks to the source code of some great works such as Scan Context and Intensity Scan Context