Home

Awesome

SeqOT

The code for our paper accepted by IEEE Transactions on Industrial Electronics:

SeqOT: A Spatial-Temporal Transformer Network for Place Recognition Using Sequential LiDAR Data.

[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.


<img src="https://github.com/BIT-MJY/SeqOT/blob/main/overview.png" width="48%" ><img src="https://github.com/BIT-MJY/SeqOT/blob/main/visualize/SeqOT.gif" width="48%" >
Fig. 1 System overview with Haomo dataset and visualized evaluation on NCLT dataset. It can be seen that SeqOT is robust to driving directions.


News!

[2022-12] Our paper is accepted by IEEE Transactions on Industrial Electronics (TIE)!

Table of Contents

  1. Publication
  2. Dependencies
  3. How to Use
  4. Data Preparation
  5. License

Publication

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}}

Dependencies

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.

How to Use

We provide a training and test tutorial for NCLT sequences in this repository.

Training

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.

Test

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

data_root
training_seqot
gen_sub_descriptors
training_gem
test_gem_prepare
test_seqot

groud_truth_file: ground truth containing correct loops. (link)

viz
gen_training_index

Data Preparation

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.

Range Image Generation

Please use this script to generate range images of NCLT dataset. You need to modify the params including scan_folder and dst_folder.

Training Index Generation

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 

Groud Truth Generation

Please use this script to generate groud truth loops of NCLT dataset.

cd data_prepararion
python ./gen_ground_truth.py 

License

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.