Ultra-Fast-Lane-Detection
The implementation of the paper "Ultra Fast Structure-aware Deep Lane Detection".
Updates: Our paper has been accepted by ECCV2020.
The evaluation code is modified from SCNN and Tusimple Benchmark.
Demo
Install
a. Clone the project
git clone https://github.com/cfzd/Ultra-Fast-Lane-Detection
cd Ultra-Fast-Lane-Detection
b. Create a conda virtual environment and activate it
conda create -n lane-det python=3.7 -y
conda activate lane-det
c. Install dependencies
# If you don't have pytorch
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
pip install -r requirements.txt
d. Install CULane evaluation tools. This tools requires OpenCV C++. Please follow here to install OpenCV C++. When you build OpenCV, remove the paths of anaconda from PATH or it will be failed.
# First you need to install OpenCV C++.
# After installation, make a soft link of OpenCV include path.
ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/opencv2
cd evaluation/culane
make
e. Data preparation
Download CULane and Tusimple. Then extract them to $CULANEROOT
and $TUSIMPLEROOT
. For Tusimple, the segmentation annotation is not provided, hence we need to generate segmentation from the json annotation.
cd $TUSIMPLEROOT
python scripts/convert_tusimple.py --root $TUSIMPLEROOT
# this will generate segmentations and 2 list files train_gt.txt test.txt
Get Started
Copy a config from configs/culane.py
or configs/tusimple.py
, then
modifiy data_root
, log_path
and other settings in your config.
For single gpu training, run
python train.py configs/path_to_your_config
For multi-gpu training, run
sh launch_training.sh
# If there is no pretrained torchvision model, multi-gpu training may result in multiple downloading. You can first download the corresponding models manually, and then restart the multi-gpu training.
or
python -m torch.distributed.launch --nproc_per_node=$NGPUS train.py configs/path_to_your_config
Besides config style settings, we also support command line style one. You can override a setting like
python train.py configs/path_to_your_config --batch_size 8
The batch_size
will be set to 8 during training.
To visualize the log with tensorboard, run
tensorboard --logdir log_path --bind_all
Trained models
We provide two trained Res-18 models on CULane and Tusimple.
Dataset | Metric paper | Metric This repo | Avg FPS on GTX 1080Ti | Model |
---|---|---|---|---|
Tusimple | 95.87 | 95.82 | 306 | GoogleDrive/BaiduDrive(code:bghd) |
CULane | 68.4 | 69.7 | 324 | GoogleDrive/BaiduDrive(code:w9tw) |
For evaluation, run
mkdir tmp
python test.py configs/culane.py --test_model path_to_culane_18.pth --test_work_dir ./tmp
python test.py configs/tusimple.py --test_model path_to_tusimple_18.pth --test_work_dir ./tmp
Same as training, multi-gpu evaluation is also supported.
Citation
@InProceedings{qin2020ultra,
author = {Qin, Zequn and Wang, Huanyu and Li, Xi},
title = {Ultra Fast Structure-aware Deep Lane Detection},
booktitle = {The European Conference on Computer Vision (ECCV)},
year = {2020}
}