Xingang Pan, Jianping Shi, Ping Luo, Xiaogang Wang, Xiaoou Tang. "Spatial As Deep: Spatial CNN for Traffic Scene Understanding", AAAI2018
This code is modified from fb.resnet.torch.
Demo video is available here.
Clone the SCNN repository
git clone https://github.com/XingangPan/SCNN.git
We'll call the directory that you cloned SCNN as $SCNN_ROOT
Download CULane dataset
mkdir -p data/CULane
cd data/CULane
Download CULane dataset and extract here. (Note: If you have downloaded the dataset before 16th April 2018, please update the raw annotations of train&val set as described in the dataset website.)
You should have structure like this:
$SCNN_ROOT/data/CULane/driver_xx_xxframe # data folders x6
$SCNN_ROOT/data/CULane/laneseg_label_w16 # lane segmentation labels
$SCNN_ROOT/data/CULane/list # data lists
Download our pre-trained models to ./experiments/pretrained
cd $SCNN_ROOT/experiments/pretrained
Download our best performed model here.
Run test script
cd $SCNN_ROOT
sh ./experiments/test.sh
Testing results (probability map of lane markings) are saved in experiments/predicts/
by default.
Get curve line from probability map
cd tools/prob2lines
matlab -nodisplay -r "main;exit" # or you may simply run main.m from matlab interface
The generated line coordinates would be saved in tools/prob2lines/output/
by default.
Calculate precision, recall, and F-measure
cd $SCNN_ROOT/tools/lane_evaluation
make
sh Run.sh # it may take over 30min to evaluate
Note: Run.sh
evaluate each scenario separately while run.sh
evaluate the whole. You may use calTotal.m
to calculate overall performance from all senarios.
By now, you should be able to reproduce our result in the paper.
cd $SCNN_ROOT/experiments/models
Download VGG16 model here and move it to $SCNN_ROOT/experiments/models/vgg
.
th SCNN-gen.lua
The generated model will be saved in ./vgg_SCNN_DULR9_w9
by default.
cd $SCNN_ROOT
sh ./experiments/train.sh
The training process should start and trained models would be saved in $SCNN_ROOT/experiments/models/vgg_SCNN_DULR_w9
by default.
Then you can test the trained model following the Testing steps above. If your model position or name is changed, remember to set them to yours accordingly.
Tensorflow implementation reproduced by cardwing: https://github.com/cardwing/Codes-for-Lane-Detection.
[new!] Pytorch implementation reproduced by voldemortX: https://github.com/voldemortX/pytorch-auto-drive.
@inproceedings{pan2018SCNN,
author = {Xingang Pan, Jianping Shi, Ping Luo, Xiaogang Wang, and Xiaoou Tang},
title = {Spatial As Deep: Spatial CNN for Traffic Scene Understanding},
booktitle = {AAAI Conference on Artificial Intelligence (AAAI)},
month = {February},
year = {2018}
}
Most work for building CULane dataset is done by Xiaohang Zhan, Jun Li, and Xudong Cao. We thank them for their helpful contribution.