This repository contains the code implementation used in the paper Wild-Places: A Large-Scale Dataset for Lidar Place Recognition in Unstructured Natural Environments, which has been accepted for publication at ICRA2023.
If you find this dataset helpful for your research, please cite our paper using the following reference:
@inproceedings{2023wildplaces,
title={Wild-Places: A Large-Scale Dataset for Lidar Place Recognition in Unstructured Natural Environments},
author={Knights, Joshua and Vidanapathirana, Kavisha and Ramezani, Milad and Sridharan, Sridha and Fookes, Clinton and Moghadam, Peyman},
year={2023},
booktitle={IEEE International Conference on Robotics and Automation (ICRA)},
eprint={arXiv preprint arXiv:2211.12732}
}
Our dataset can be downloaded through The CSIRO Data Access Portal. Detailed instructions for downloading the dataset can be found in the README file provided on the data access portal page.
To create a python environment to use the scripts in this repository run the following command:
conda env create -f scripts/Wild-Places.yaml -n Wild-Places
A code snippet to load a pointcloud file from our dataset can be found in eval/load_pointcloud.py
In this repository we provide several scripts for partitioning our dataset into splits for training and evaluation.
The output of these scripts are pickle files containing training and evaluation splits in a format compatible with existing repositories such as PointNetVLAD, MinkLoc3D(v2), TransLoc3D and PPT.
To generate the training splits run the following command:
python scripts/generate_splits/training_sets.py --dataset_root $_PATH_TO_DATASET --save_folder --$_SAVE_FOLDER_PATH
Where $_PATH_TO_DATASET
is the path to the downloaded dataset, and $_SAVE_FOLDER_PATH
is the path to the directory where the generated files will be saved.
To generate the testing splits run the following command:
python scripts/generate_splits/testing_sets.py --dataset_root $_PATH_TO_DATASET --save_folder --$_SAVE_FOLDER_PATH
This script will generate seperate testing pickles for the inter-run and intra-run evaluation modes on each environment. The inter-run pickles will produce query and database files for each testing environment, while the intra-run pickles will produce a seperate training pickle for each individual point cloud sequence.
We provide evaluation scripts for both inter and intra-run evaluation on our dataset.
database_features
and query_features
. Then, use the evaluation instructions provided below:To perform inter-run evaluation on the Wild-Places dataset, run the following command:
python eval/inter-sequence.py \
--queries $_PATH_TO_QUERIES_PICKLES \
--databases $_PATH_TO_DATABASES_PICKLES \
--query_features $_PATH_TO_QUERY_FEATURES \
--database_features $_PATH_TO_DATABASE_FEATURES \
--location_names $_LOCATION_NAMES \
Where:
$_PATH_TO_QUERIES_PICKLES
is a string pointing to the location of the generated query set pickle for an environment$_PATH_TO_DATABASES_PICKLES
is a string pointing to the location of the generated database set pickle for an environment$_PATH_TO_QUERY_FEATURES
is a string pointing towards a pickle file containing the query set features to be used in evaluation. These features should be a list of Nxd numpy arrays or tensors, where N is the number of point cloud frames in the query set of each sequence in the environment.$_PATH_TO_DATABASE_FEATURES
is a string pointing towards a pickle file containing the database set features to be used in evaluation. These features should be a list of Nxd numpy arrays or tensors, where N is the number of point cloud frames in the database set of each sequence in the environment.$_LOCATION_NAMES
is a string containing the name of the environment being evaluatedTo perform intra-run evaluation on the Wild-Places dataset, run the following command:
python eval/intra-sequence.py \
--databases $_PATH_TO_DATABASES_PICKLES \
--database_features $_PATH_TO_DATABASE_FEATURES \
--run_names $_LOCATION_NAMES \
Where:
$_PATH_TO_DATABASES_PICKLES
is a string pointing to the location of the generated database set pickle for a single sequence$_PATH_TO_DATABASE_FEATURES
is a string pointing towards a pickle file containing the run features to be used in evaluation. These features should be a single Nxd numpy array or tensor, where N is the number of point cloud frames in that sequence$_LOCATION_NAMES
is a string containing the name of the sequence being evaluated Special thanks to the authors of the PointNetVLAD and MinkLoc3D, whose excellent code was used as a basis for the generation and evaluation scripts used in this repository.