This repository holds the source code for LaneATT, a novel state-of-the-art lane detection model proposed in the paper "Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection", by Lucas Tabelini, Rodrigo Berriel, Thiago M. Paixão, Claudine Badue, Alberto F. De Souza, and Thiago Oliveira-Santos.
News (2021-03-01): Our paper presenting LaneATT has been accepted to CVPR'21.
requirements.txt
The versions described here were the lowest the code was tested with. Therefore, it may also work in other earlier versions, but it is not guaranteed (e.g., the code might run, but with different outputs).
Conda is not necessary for the installation, as you can see, I only use it for PyTorch and Torchvision. Nevertheless, the installation process here is described using it.
conda create -n laneatt python=3.8 -y
conda activate laneatt
conda install pytorch==1.6 torchvision -c pytorch
pip install -r requirements.txt
cd lib/nms; python setup.py install; cd -
For a guide on how to download and setup each dataset, see DATASETS.md.
Train a model:
python main.py train --exp_name example --cfg example.yml
For example, to train LaneATT with the ResNet-34 backbone on TuSimple, run:
python main.py train --exp_name laneatt_r34_tusimple --cfg cfgs/laneatt_tusimple_resnet34.yml
After running this command, a directory experiments
should be created (if it does not already exists). Another
directory laneatt_r34_tusimple
will be inside it, containing data related to that experiment (e.g., model checkpoints, logs, evaluation results, etc)
Evaluate a model:
python main.py test --exp_name example
This command will evaluate the model saved in the last checkpoint of the experiment example
(inside experiments
).
If you want to evaluate another checkpoint, the --epoch
flag can be used. For other flags, please see python main.py -h
. To visualize the predictions, run the above command with the additional flag --view all
.
gdown "https://drive.google.com/uc?id=1R638ou1AMncTCRvrkQY6I-11CPwZy23T" # main experiments on TuSimple, CULane and LLAMAS (1.3 GB)
unzip laneatt_experiments.zip
python main.py test --exp_name $EXP_NAME
Replace $EXP_NAME
with the name of a directory inside experiments/
. For instance, if you want to reproduce the results using the ResNet-34 backbone on the TuSimple dataset, run:
python main.py test --exp_name laneatt_r34_tusimple
The results on TuSimple and LLAMAS should match exactly the ones reported in the paper. The results on CULane will deviate in the order of 0.1% (as shown in the CULane table below), since the metric reported on the paper was computed with the official code (C++), while this script will compute it using our implementation (which is much faster and in Python). The official metric implementation is available here.
Backbone | F1, official impl. (%) | F1, our impl. (%) | FPS |
---|---|---|---|
ResNet-18 | 75.13 | 75.08 | 250 |
ResNet-34 | 76.68 | 76.66 | 171 |
ResNet-122 | 77.02 | 77.02 | 26 |
"F1, official impl." refers to the official CULane metric implementation in C++. "F1, our impl" refers to our implementation of the metric in Python. The results reported in the paper were computed using the official metric implementation
(requires OpenCV 2.4).
Backbone | Accuracy (%) | FDR (%) | FNR (%) | F1 (%) | FPS |
---|---|---|---|---|---|
ResNet-18 | 95.57 | 3.56 | 3.01 | 96.71 | 250 |
ResNet-34 | 95.63 | 3.53 | 2.92 | 96.77 | 171 |
ResNet-122 | 96.10 | 4.64 | 2.17 | 96.06 | 26 |
Since the TuSimple dataset is not sequential, no qualitative video is available.
Backbone | F1 (%) | Precision (%) | Recall (%) | FPS |
---|---|---|---|---|
ResNet-18 | 93.46 | 96.92 | 90.24 | 250 |
ResNet-34 | 93.74 | 96.79 | 90.88 | 171 |
ResNet-122 | 93.54 | 96.82 | 90.47 | 26 |
Additional results can be seen in the paper.
LaneDatasetLoader
into a format usable by the modelIf you use this code in your research, please cite:
@InProceedings{tabelini2021cvpr,
author = {Lucas Tabelini
and Rodrigo Berriel
and Thiago M. Paix\~ao
and Claudine Badue
and Alberto Ferreira De Souza
and Thiago Oliveira-Santos},
title = {{Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection}},
booktitle = {Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2021}
}