Skip to content

Implementation for the paper: AutoPlace: Robust Place Recognition with Single-chip Automotive Radar

Notifications You must be signed in to change notification settings

ramdrop/autoplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fbf6467 · Apr 6, 2022

History

11 Commits
Apr 6, 2022
Feb 8, 2022
Feb 8, 2022
Apr 6, 2022
Feb 8, 2022
Feb 8, 2022
Apr 6, 2022
Feb 8, 2022
Sep 20, 2021
Feb 8, 2022
Feb 8, 2022
Feb 8, 2022
Apr 6, 2022
Apr 5, 2022
Feb 8, 2022
Feb 8, 2022
Feb 8, 2022

Repository files navigation

[ICRA2022] AutoPlace: Robust Place Recognition with Single-Chip Automotive Radar

arxiv GitHub YouTube

demo

@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}  
}

0. Environment Setup ⚙️

  • 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.

1. Dataset preprocessing 📥

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.

2. AutoPlace 🚗

  1. 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'
  2. 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'
  3. 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'
  4. 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'
    
  5. evaluate a model

    cd autoplace
    
    python train.py --mode='evaluate'  --cGPU=0  --split=test --resume=[logs_folder]
  6. 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
  7. 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 

About

Implementation for the paper: AutoPlace: Robust Place Recognition with Single-chip Automotive Radar

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published