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
Rank 1st in Argoverse Motion Forecasting Competition
Table of Contents
Install Dependancy
You need to install following packages in order to run the code:
- 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
- [Optional but Recommended] Install Horovod and
mpi4py
for distributed training. Horovod is more efficient thannn.DataParallel
for mulit-gpu training and easier to use thannn.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)
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.