@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}
}
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
on SpatialEncoder+TemporalEncoder+DPR
model (You may need to evaluate SpatialEncoder+TemporalEncoder+DPR model first): modify the path se_te_dpr
in autoplace/postprocess/parse/resume_path.json
to [logs_folder], then
cd 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