@article{cai2021autoplace,
title={AutoPlace: Robust Place Recognition with Low-cost Single-chip Automotive Radar},
author={Cai, Kaiwen and Wang, Bing and Lu, Chris Xiaoxuan},
booktitle={2022 IEEE International Conference on Robotics and Automation (ICRA)},
pages={3475--3481},
year={2022},
organization={IEEE}
}
- Ubuntu 18.04, python 3.8, A100
- PyTorch 1.8.1 + CUDA 11.1
- nuscenes-devkit 1.1.1
pip install --upgrade pip
pip install -r requirements.txt
Go to the nuscenes-devkit package directory (depends on which python you are using), and override the function from_file_multisweep(...)
in site-packages/nuscenes/utils/data_classes.py
with the function provided in autoplace/nuscenes-devkit_override.py
.
You may need to download nuScenes dataset (radar) from nutonomy/nuscenes-devkit.
cd autoplace/preprocess
./gene_woDTR.sh
./gene_wDTR.sh
the generated processed dataset folder should be like:
dataset
├── 7n5s_xy11
│ ├── pcl_parameter.json
│ ├── img
│ ├── pcl
│ ├── rcs
│ ├── nuscenes_test.mat
│ ├── nuscenes_train.mat
│ ├── nuscenes_val.mat
│ ├── database.csv
│ ├── train.csv
│ └── test.csv
└── 7n5s_xy11_remove
├── ...
to save you time on downloading/preprocessing the nuScenes dataset, you may as well download my processed dataset from Dropbox and then arrange it in the above way.
-
train SpatialEncoder (se)
cd autoplace python train.py --nEpochs=50 --output_dim=9216 --seqLen=1 --encoder_dim=256 --net=autoplace --logsPath=logs_autoplace --cGPU=0 --split=val --imgDir='dataset/7n5s_xy11/img' --structDir='dataset/7n5s_xy11'
-
train SpatialEncoder+DPR (se_dpr)
cd autoplace python train.py --nEpochs=50 --output_dim=9216 --seqLen=1 --encoder_dim=256 --net=autoplace --logsPath=logs_autoplace --cGPU=0 --split=val --imgDir='dataset/7n5s_xy11_removal/img' --structDir='dataset/7n5s_xy11'
-
train SpatialEncoder+TemporalEncoder (se_te)
cd autoplace python train.py --nEpochs=50 --output_dim=4096 --seqLen=3 --encoder_dim=256 --net=autoplace --logsPath=logs_autoplace --cGPU=0 --split=val --imgDir='dataset/7n5s_xy11/img' --structDir='dataset/7n5s_xy11'
-
train SpatialEncoder+TemporalEncoder+DPR (se_te_dpr)
cd autoplace python train.py --nEpochs=50 --output_dim=4096 --seqLen=3 --encoder_dim=256 --net=autoplace --logsPath=logs_autoplace --cGPU=0 --split=val --imgDir='dataset/7n5s_xy11_removal/img' --structDir='dataset/7n5s_xy11'
-
evaluate a model
cd autoplace python train.py --mode='evaluate' --cGPU=0 --split=test --resume=[logs_folder]
-
apply
RCSHR
onSpatialEncoder+TemporalEncoder+DPR
model (You may need to evaluate SpatialEncoder+TemporalEncoder+DPR model first): modify the pathse_te_dpr
inautoplace/postprocess/parse/resume_path.json
to [logs_folder], thencd autoplace/postprocess/parse python parse.py --rcshr --model=se_te_dpr
-
To generate (1) Reall@N curve, (2) PR curve, (3) F1 Score and (4) Average Precision
cd autoplace/postprocess/vis python ablation_figure.py python ablation_score.py