The code for our paper accepted by IEEE Transactions on Industrial Electronics:
[IEEE Xplore TIE 2022] [arXiv]
SeqOT is a sequence-enhanced LiDAR-based place recognition method based on our previous work OverlapTransformer (OT) for RAL/IROS 2022.
Developed by Junyi Ma and Xieyuanli Chen.


Fig. 1 System overview with Haomo dataset and visualized evaluation on NCLT dataset. It can be seen that SeqOT is robust to driving directions.
[2022-12] Our paper is accepted by IEEE Transactions on Industrial Electronics (TIE)!
If you use the code in your work, please cite our paper:
@ARTICLE{ma2022tie,
author={Ma, Junyi and Chen, Xieyuanli and Xu, Jingyi and Xiong, Guangming},
journal={IEEE Transactions on Industrial Electronics},
title={SeqOT: A Spatial-Temporal Transformer Network for Place Recognition Using Sequential LiDAR Data},
year={2022},
doi={10.1109/TIE.2022.3229385}}
We use pytorch-gpu for neural networks.
An nvidia GPU is needed for faster retrival.
To use a GPU, first you need to install the nvidia driver and CUDA.
CUDA Installation guide: link
We use CUDA 11.3 in our work. Other versions of CUDA are also supported but you should choose the corresponding torch version in the following Torch dependences.
System dependencies:
bash
sudo apt-get update
sudo apt-get install -y python3-pip python3-tk
sudo -H pip3 install --upgrade pip
- Torch dependences:
Following this link, you can download Torch dependences by pip:
bash
pip3 install torch==1.10.2+cu113 torchvision==0.11.3+cu113 torchaudio==0.10.2+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
or by conda:
bash
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
bash
sudo -H pip3 install -r requirements.txt
We provide a training and test tutorial for NCLT sequences in this repository.
You can start the two-step training with
cd train
python training_seqot.py
python gen_sub_descriptors.py
python training_gem.py
Note that we only train our model using the oldest sequence of NCLT dataset (2012-01-08), to prove that our model works well for long time spans even if seeing limited data.
The sub-descriptors of the database and query sequence have already been generated by python gen_sub_descriptors.py above. Here you can test SeqOT by
cd test
python test_gem_prepare.py
python test_seqot.py
Before training and test, please modify the params in the config.yml
groud_truth_file: ground truth containing correct loops. (link)
Please use the following commands to prepare data. We have uploaded all the necessary files mentioned above except the range images which you can generate easily following our instruction.
Please use this script to generate range images of NCLT dataset. You need to modify the params including scan_folder and dst_folder.
Please use this script to generate training indices of NCLT dataset. You need to modify the params including poses_database, poses_query, and scan_database_root.
cd data_prepararion
python ./gen_training_index.py
Please use this script to generate groud truth loops of NCLT dataset.
cd data_prepararion
python ./gen_ground_truth.py
Copyright 2022, Junyi Ma, Xieyuanli Chen, Jingyi Xu, Guangming Xiong, Beijing Institute of Technology.
This project is free software made available under the MIT License. For more details see the LICENSE file.
$ claude mcp add SeqOT \
-- python -m otcore.mcp_server <graph>