# SIMPL
**Repository Path**: xin_guipeng/SIMPL
## Basic Information
- **Project Name**: SIMPL
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-04-01
- **Last Updated**: 2024-04-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving
## Introduction
This is the project page of the paper
* Lu Zhang, Peiliang Li, Sikang Liu, and Shaojie Shen, "SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving", arXiv preprint arXiv:2402.02519 (2024), (Corresponding author: Lu ZHANG, lzhangbz@connect.ust.hk),
which is accepted for publication in the IEEE Robotics and Automation Letters (RA-L), 2024.
**Preprint:** [arXiv](https://arxiv.org/abs/2402.02519)
**Video:** [YouTube](https://youtu.be/_8-6ccopZMM)
## Qualitative Results
* On Argoverse 1 motion forecasting dataset
* On Argoverse 2 motion forecasting dataset
----
## Todo List
- [x] Release code for Argoverse 2 dataset
- [x] Release training and evaluation scripts for DDP
- [x] First release
## Gettting Started
### Install dependencies
- Create a new conda virtual env
```
conda create --name simpl python=3.8
conda activate simpl
```
- Install PyTorch according to your CUDA version. We recommend CUDA >= 11.1, PyTorch >= 1.8.0.
```
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.6 -c pytorch -c conda-forge
```
- Install Argoverse 1 & 2 APIs, please follow [argoverse-api](https://github.com/argoai/argoverse-api) and [av2-api](https://argoverse.github.io/user-guide/getting_started.html).
- Install other dependencies
```
pip install scikit-image IPython tqdm ipdb tensorboard
```
### Play with pretrained models (Argoverse 1)
Generate a subset of the dataset for testing using the script. It will generate 1k samples to `data_argo/features/`:
```
sh scripts/argo_preproc_small.sh
```
The dataset directory should be organized as follows:
```
data_argo
├── features
│ ├── train
│ │ ├── 100001.pkl
│ │ ├── 100144.pkl
│ │ ├── 100189.pkl
...
│ └── val
│ ├── 10018.pkl
│ ├── 10080.pkl
│ ├── 10164.pkl
...
```
The pre-trained weights are located at `saved_models/`. Use the script below to visualize prediction results:
```
sh scripts/simpl_av1_vis.sh
```
Since we store each sequence as a single file, the system may raise error `OSError: [Erron 24] Too many open files` during evaluation and training. You may use the command below to solve this issue:
```
ulimit -SHn 51200
ulimit -s unlimited
```
To evaluate the trained models:
```
sh scripts/simpl_av1_eval.sh
```
You are supposed to get:
```
Validation set finish, cost 289.01 secs
-- minade_1: 1.428 minfde_1: 3.240 mr_1: 0.512 brier_fde_1: 3.240 minade_k: 0.658 minfde_k: 0.947 mr_k: 0.081 brier_fde_k: 1.558
```
### Train from scratch
- Preprocess full Argoverse 1 motion forecasting dataset using the script:
```
sh scripts/argo_preproc_all.sh
```
The preprocessed dataset will cost about 15 GB storage, please reserve enough space for preprocessing.
- Launch training using the script:
```
# single-GPU
sh scripts/simpl_av1_train.sh
# multi-GPU based on DDP
sh scripts/simpl_av1_train_ddp.sh
```
- For model evaluation, please refer to the following scripts:
```
# single-GPU
sh scripts/simpl_av1_eval.sh
# multi-GPU based on DDP
sh scripts/simpl_av1_eval_ddp.sh
```
### Train/Evaluate/Visualize SIMPL using Argoverse 2
Please refer to the scripts in the directory `scripts/`, and the usage is similar to scripts for the Argoverse 1 dataset. If you have any questions, please feel free to raise an issue or contact us via email.
## Acknowledgment
We would like to express sincere thanks to the authors of the following packages and tools:
- [LaneGCN](https://github.com/uber-research/LaneGCN)
- [HiVT](https://github.com/ZikangZhou/HiVT)
- [DSP](https://github.com/HKUST-Aerial-Robotics/DSP)
## License
This repository is licensed under [MIT license](https://github.com/HKUST-Aerial-Robotics/SIMPL/blob/main/LICENSE).