/LaneGCN

[ECCV2020 Oral] Learning Lane Graph Representations for Motion Forecasting

Primary LanguagePythonOtherNOASSERTION

LaneGCN: Learning Lane Graph Representations for Motion Forecasting

Paper | Slides | Project Page | ECCV 2020 Oral Video

Ming Liang, Bin Yang, Rui Hu, Yun Chen, Renjie Liao, Song Feng, Raquel Urtasun

Modified by Carlos Gómez-Huélamo

Rank 1st in Argoverse Motion Forecasting Competition

img

Table of Contents

Install Dependancy

You need to install following packages in order to run the code:

  1. Following is an example of create environment from scratch with anaconda, you can use pip as well:
conda create --name lanegcn python=3.7
conda activate lanegcn
conda install pytorch==1.5.1 torchvision cudatoolkit=10.2 -c pytorch # pytorch=1.5.1 when the code is release

# install argoverse api
pip install  git+https://github.com/argoai/argoverse-api.git

# install others dependancy
pip install scikit-image IPython tqdm ipdb
  1. [Optional but Recommended] Install Horovod and mpi4py for distributed training. Horovod is more efficient than nn.DataParallel for mulit-gpu training and easier to use than nn.DistributedDataParallel. Before install horovod, make sure you have openmpi installed (sudo apt-get install -y openmpi-bin).
pip install mpi4py

# install horovod with GPU support, this may take a while
HOROVOD_GPU_OPERATIONS=NCCL pip install horovod==0.19.4

# if you have only SINGLE GPU, install for code-compatibility
pip install horovod

if you have any issues regarding horovod, please refer to horovod github

Prepare Data: Argoverse Motion Forecasting

You could check the scripts, and download the processed data instead of running it for hours.

bash get_data.sh

Training

[Recommended] Training with Horovod-multigpus

# single node with 4 gpus
horovodrun -np 4 -H localhost:4 python /path/to/train.py -m lanegcn

# 2 nodes, each with 4 gpus
horovodrun -np 8 -H serverA:4,serverB:4 python /path/to/train.py -m lanegcn

It takes 8 hours to train the model in 4 GPUS (RTX 5000) with horovod.

We also supply training log for you to debug.

[Recommended] Training/Debug with Horovod in single gpu

python train.py -m lanegcn

Testing

You can download pretrained model from here

Inference test set for submission

python test.py -m lanegcn --weight=/absolute/path/to/36.000.ckpt --split=test

Inference validation set for metrics

python test.py -m lanegcn --weight=36.000.ckpt --split=val

Qualitative results

Labels(Red) Prediction (Green) Other agents(Blue)


Quantitative results img

Licence

check LICENSE

Citation

If you use our source code, please consider citing the following:

@InProceedings{liang2020learning,
  title={Learning lane graph representations for motion forecasting},
  author={Liang, Ming and Yang, Bin and Hu, Rui and Chen, Yun and Liao, Renjie and Feng, Song and Urtasun, Raquel},
  booktitle = {ECCV},
  year={2020}
}

If you have any questions regarding the code, please open an issue and @chenyuntc.