• Stars
    star
    121
  • Rank 293,924 (Top 6 %)
  • Language
    Python
  • License
    Other
  • Created almost 4 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[ICRA 2021] This repository contains the code for "Locus: LiDAR-based Place Recognition using Spatiotemporal Higher-Order Pooling".

Locus

This repository is an open-source implementation of the ICRA 2021 paper: Locus: LiDAR-based Place Recognition using Spatiotemporal Higher-Order Pooling.

More information: https://research.csiro.au/robotics/locus-pr/

Paper Pre-print: https://arxiv.org/abs/2011.14497

Method overview.

Locus is a global descriptor for large-scale place recognition using sequential 3D LiDAR point clouds. It encodes topological relationships and temporal consistency of scene components to obtain a discriminative and view-point invariant scene representation.

Usage

Set up environment

This project has been tested on Ubuntu 18.04 (with Open3D 0.11, tensorflow 1.8.0, pcl 1.8.1 and python-pcl 0.3.0). Set up the requirments as follows:

  • Create conda environment with open3d and tensorflow-1.8 with python 3.6:
conda create --name locus_env python=3.6
conda activate locus_env
pip install -r requirements.txt
  • Set up python-pcl. See utils/setup_python_pcl.txt. For further instructions, see here.
  • Segment feature extraction uses the pre-trained model from ethz-asl/segmap. Download and copy the relevant content in segmap_data into ~/.segmap/:
./utils/get_segmap_data.bash

Descriptor Generation

Segment and generate Locus descriptor for each scan in a selected sequence (e.g., KITTI sequence 06):

python main.py --seq '06'

The following flags can be used with main.py:

  • --seq: KITTI dataset sequence number.
  • --aug_type: Scan augmentation type (optional for robustness tests).
  • --aug_param: Parameter corresponding to above augmentation.

Evaluation

Sequence-wise place-recognition using extracted descriptors:

python ./evaluation/place_recognition.py  --seq  '06' 

Evaluation of place-recognition performance using Precision-Recall curves (multiple sequences):

python ./evaluation/pr_curve.py 

Additional scripts

Robustness tests:

Code of the robustness tests carried out in section V.C in paper. Extract Locus descriptors from scans of select augmentation:

python main.py --seq '06' --aug_type 'rot' --aug_param 180 # Rotate about z-axis by random angle between 0-180 degrees. 
python main.py --seq '06' --aug_type 'occ' --aug_param 90 # Occlude sector of 90 degrees about random heading. 

Evaluation is done as before. For vizualization, set config.yml->segmentation->visualize to True.

Testing individual modules:

python ./segmentation/extract_segments.py # Extract and save Euclidean segments (S).
python ./segmentation/extract_segment_features.py # Extract and save SegMap-CNN features (Fa) for given S.
python ./descriptor_generation/spatial_pooling.py # Generate and save spatial segment features for given S and Fa.
python ./descriptor_generation/temporal_pooling.py # Generate and save temporal segment features for given S and Fa.
python ./descriptor_generation/locus_descriptor.py # Generate and save Locus global descriptor using above.

Citation

If you find this work usefull in your research, please consider citing:

@inproceedings{vid2021locus,
  title={Locus: LiDAR-based Place Recognition using Spatiotemporal Higher-Order Pooling},
  author={Vidanapathirana, Kavisha and Moghadam, Peyman and Harwood, Ben and Zhao, Muming and Sridharan, Sridha and Fookes, Clinton},
  booktitle={IEEE International Conference on Robotics and Automation (ICRA)},
  year={2021},
  eprint={arXiv preprint arXiv:2011.14497}
}

Acknowledgment

Functions from 3rd party have been acknowledged at the respective function definitions or readme files. This project was mainly inspired by the following: ethz-asl/segmap and irapkaist/scancontext.

Contact

For questions/feedback,

More Repositories

1

ohm

An efficient, extensible occupancy map supporting probabilistic occupancy, normal distribution transforms in CPU and GPU.
C++
176
star
2

syropod_highlevel_controller

OpenSHC: A Versatile Multilegged Robot Controller
C++
164
star
3

LoGG3D-Net

[ICRA 2022] The official repository for "LoGG3D-Net: Locally Guided Global Descriptor Learning for 3D Place Recognition", In 2022 International Conference on Robotics and Automation (ICRA), pp. 2215-2221.
Python
102
star
4

Wild-Places

🏞️ [IEEE ICRA2023] The official repository for paper "Wild-Places: A Large-Scale Dataset for Lidar Place Recognition in Unstructured Natural Environments" To appear in 2023 IEEE International Conference on Robotics and Automation (ICRA)
Python
76
star
5

raycloudtools

C++
66
star
6

Uncertainty-LPR

πŸ“£ [IEEE IROS 2023] Official Repository of IROS 23 paper "Uncertainty-Aware Lidar Place Recognition in Novel Environments"
Python
59
star
7

Forest_Localisation

C++
56
star
8

ElasticLidar-plusplus

Elasticity Meets Continuous-Time: Map-Centric Dense 3D SLAM
55
star
9

TCE

This repository contains the code implementation used in the paper Temporally Coherent Embeddings for Self-Supervised Video Representation Learning (TCE).
Python
52
star
10

InCloud

[IROS2022] Official repository of InCloud: Incremental Learning for Point Cloud Place Recognition, Published in IROS2022 https://arxiv.org/abs/2203.00807
Python
37
star
11

SpectralGV

[RA-L 2023] Official Repository of "Spectral Geometric Verification: Re-Ranking Point Cloud Retrieval for Metric Localization", RA-L, Volume 8, Issue 5, May 2023
Python
35
star
12

WildScenes

[IJRR2024 ACCEPTED] The official repository for the WildScenes: A Benchmark for 2D and 3D Semantic Segmentation in Natural Environments
Python
28
star
13

UPGen

The official repository for the paper: Scalable learning for bridging the species gap in image-based plant phenotyping.
Python
23
star
14

P-GAT

[IEEE RA-L 2024] This repository contains the implementation code for the paper "P-GAT : Pose-Graph Attentional Network for Lidar Place Recognition".
Python
23
star
15

shc_tutorials

Tutorials for using OpenSHC
20
star
16

dynamixel_interface

Fast, scalable driver for controlling dynamixel servo motors
C++
19
star
17

FactoFormer

[TGRS 2024] The official repository for Journal Article β€œFactoFormer: Factorized Hyperspectral Transformers with Self-Supervised Pre-Training”, Accepted to IEEE Transactions on Geoscience and Remote Sensing, December 2023.
Python
17
star
18

deepseagrass

This repository contains the code implementation used in the paper "Multi-species Seagrass Detection and Classification from Underwater Images"
Python
12
star
19

3rdEyeScene

3rd Eye Scene is a generalised visual debugger and debugging aid in the vein of rviz.
C#
10
star
20

agscan3d

This repository contains the code and datasets used in the paper "Canopy Density Estimation in Perennial HorticultureCrops Using 3D Spinning Lidar SLAM" https://onlinelibrary.wiley.com/doi/abs/10.1002/rob.22006
10
star
21

deep-terrain-classification

Source code to run the algorithms presented in the paper titled "Semi-supervised Gated Recurrent Neural Networks for Robotic Terrain Classification"
Jupyter Notebook
10
star
22

iSICE

[CVPR2023] The official repository for paper "Learning Partial Correlation based Deep Visual Representation for Image Classification" To appear in 2023 The IEEE / CVF Computer Vision and Pattern Recognition Conference (CVPR)
Python
8
star
23

ROPIM

[ICLR 2024 Spotlight] πŸš€ The official repository of Self-Supervised Learning method "ROPIM", "Pre-training with Random Orthogonal Projection Image Modeling"
Python
7
star
24

fn_mechanisms

The official repository of IEEE RAL 2022 paper "What's in the Black Box? The False Negative Mechanisms Inside Object Detectors" https://arxiv.org/abs/2203.07662
Python
7
star
25

ohm_assay

This repo is provided to assess the performance of OHM against several other voxel or octree based libraries.
C++
6
star
26

Reg-NF

[ICRA 2024] Official repository of Reg-NF: Efficient Registration of Implicit Surfaces within Neural Fields
Python
5
star
27

treetools

Command line tools for manipulating geometrical descriptions of forests. Used to analyse and process the forest reconstructions primarily from raycloudtools.
C++
4
star
28

3es-core

C++
4
star
29

SDCL

[Neural Networks 2023] The official repository of Neural Networks Journal "Subspace Distillation for Continual Learning"
Python
3
star
30

L3DMC

πŸ€–[MICCAI 2023] The official repository for paper "L3DMC: Lifelong Learning using Distillation via Mixed-Curvature Space"
Python
3
star
31

MDL

πŸ”₯[IEEE TPAMI 2023] Official repository TPAMI 2023 paper "Exploiting Field Dependencies for Learning on Categorical Data"
Python
3
star
32

GRAPE

[Journal of Hazardous Materials 2024] Official repository for Graph Neural Networks-enhanced RelAtion Prediction for Ecotoxicology (GRAPE)
Python
2
star
33

GeoAdapt

The official repository of GeoAdapt paper. The code, checkpoint and training procedure will be release upon acceptance.
2
star
34

syropod_remote

C++
2
star
35

bullet_syropod

CMake
2
star
36

CL3

[J. Imaging 2023] The official repository for paper CL3: Generalization of Contrastive Loss for Lifelong Learning J. Imaging 2023, 9(12), 259; https://doi.org/10.3390/jimaging9120259
Python
2
star
37

UPGen-Webpage

1
star
38

SOFA_mesh_partitioning_tools

C++
1
star
39

Pair-VPR

[Under Review] The official repository for Pair-VPR: Place-Aware Pre-training and Contrastive Pair Classification for Visual Place Recognition with Vision Transformers
1
star