Code for IROS2021 paper SSC: Semantic Scan Context for Large-Scale Place Recognition
@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}}
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
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.
We use the kd-tree to obtain the semantic information of each scan in the KITTI-360 data set.
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).
When using 5 m as the threshold, the top-k recall rate is shown in the figure:
The Precision-Recall curve when α=100:
The Precision-Recall curve when α=10:
Thanks to the source code of some great works such as Scan Context and Intensity Scan Context