fcchit / OverlapNetVLAD

42 stars 3 forks source link

OverlapNetVLAD

This repository represents the official implementation of the paper:

OverlapNetVLAD: A Coarse-to-Fine Framework for LiDAR-based Place Recognition

OverlapNetVLAD is a coase-to-fine framework for LiARD-based place recognition, which use global descriptors to propose place candidates, and use overlap prediction to determine the final match.

[Paper]

Instructions

This code has been tested on Ubuntu 18.04 (PyTorch 1.12.1, CUDA 10.2, GeForce GTX 1080Ti).

Pretrained models in here.

Requirments

We use spconv-cu102=2.1.25, other version may report error.

The rest requirments are comman and easy to handle.

conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch
pip install spconv-cu102==2.1.25
pip install pyymal tqdm open3d tensorboardX

Extract features

python tools/utils/gen_bev_features.py

Train

The training of backbone network and overlap estimation network please refs to BEVNet. Here is the training of global descriptor generation network.

python train/train_netvlad.py

Evalute

python evaluate/evaluate.py

the function evaluate_vlad is the evaluation of the coarse seaching method using global descriptors.

Acknowledgement

Thanks to the source code of some great works such as pointnetvlad, PointNetVlad-Pytorch , OverlapTransformer and so on.

Citation

If you find this repo is helpful, please cite:

@InProceedings{Fu_2023_OverlapNetVLAD,
author = {Fu, Chencan and Li, Lin and Peng, Linpeng and Ma, Yukai and Zhao, Xiangrui and Liu, Yong},
title = {OverlapNetVLAD: A Coarse-to-Fine Framework for LiDAR-based Place Recognition},
journal={arXiv preprint arXiv:2303.06881},
year={2023}
}

Todo