This repo provides a reference implementation of "UDF: Uncertainty-Aware Dual-Memory Fusion for Video Lane Detection."
Video Lane Detection aims to enhance detection accuracy and robustness by exploiting temporal information in continuous driving scenarios. While existing methods have made efforts in temporal information processing and integration, they exhibit two critical limitations: (i) they often apply a uniform management strategy to both short-term dynamics and long-term structures, failing to address their distinct temporal properties; and (ii) they rely on primitive fusion operations that are incapable of arbitrating conflicts or assessing the reliability of information from different temporal sources. To address these challenges, we propose Uncertainty-aware Dual-memory Fusion (UDF), featuring two key innovations. First, UDF introduces a dual-memory management schema to process temporal information. It combines an attention-based short-term memory, which captures recent dynamic changes, with a novel surprise-based long-term memory to maintain stable scene structures. Second, UDF pioneers an uncertainty-aware fusion framework. It leverages Evidential Learning to quantify the uncertainty of each temporal source and then employs Dempster-Shafer theory for robust temporal integration. This allows UDF to dynamically down-weight unreliable sources and manage conflicts between them, ensuring the final prediction favors consistent and trustworthy information. Extensive evaluations on two benchmarks demonstrate that UDF sets a new state-of-the-art, while operating with superior computational efficiency.
Download the preprocessed data from the RVLD repository (Recursive Video Lane Detection) and put it into the ROOT directory.
All experiments are conducted on an NVIDIA GeForce RTX 4090 GPU with 128GB RAM and Intel i9-14900K CPU, using Python 3.7, PyTorch 1.13.1, and CUDA 11.6.
Step 1: Install Anaconda
Step 2: Create a virtual environment and install the required packages
# create a new environment
conda create -n UDF python=3.7
# activate environment
conda activate UDF
# install Pytorch
pip install torch torchvision torchaudio
# install other required packages
pip install -r requirements.txtSet the dataset you want to train on (DATASET_NAME), then parse your dataset path into the -dataset_dir argument.
$ cd ROOT/DATASET_NAME/code/
$ python main.py --run_mode train --pre_dir ROOT/preprocessed/DATASET_NAME/ --dataset_dir /your_dataset_path
Set the dataset you want to train on (DATASET_NAME), then parse your dataset path into the -dataset_dir argument.
$ cd ROOT/DATASET_NAME/code/
$ python main.py --run_mode test --pre_dir ROOT/preprocessed/DATASET_NAME/ --dataset_dir /your_dataset_path
To evaluate on VIL-100, you will need to install the official CULane evaluation tools. The official metric implementation is available in the MMA-Net repository (VIL-100: A New Dataset and A Baseline Model for Video Instance Lane Detection
). Download the tools into ROOT/VIL-100/code/evaluation/culane/ and compile them.
$ cd ROOT/VIL-100/code/evaluation/culane/
$ make
| Method | Pub. | Image-Level | Video-Level | Efficiency | |||||
|---|---|---|---|---|---|---|---|---|---|
| mIoU ↑ |
|
|
|
|
|
# Para. ↓ | FPS ↑ | ||
| LaneNet | IV'18 | 0.633 | 0.721 | 0.222 | / | / | / | / | / |
| SCNN | AAAI'18 | 0.517 | 0.491 | 0.134 | / | / | / | / | / |
| ENet-SAD | ICCV'19 | 0.616 | 0.755 | 0.205 | / | / | / | / | / |
| LSTR | WACV'21 | 0.573 | 0.703 | 0.131 | / | / | / | / | / |
| LaneATT | CVPR'21 | 0.664 | 0.823 | 0.246 | / | / | / | / | / |
| GAM | CVPR'19 | 0.602 | 0.703 | 0.316 | 0.414 | 0.721 | 0.568 | / | / |
| RVOS | CVPR'19 | 0.294 | 0.519 | 0.182 | 0.251 | 0.251 | 0.251 | / | / |
| STM | ICCV'19 | 0.597 | 0.756 | 0.327 | 0.656 | 0.743 | 0.656 | / | / |
| TVOS | CVPR'20 | 0.157 | 0.240 | 0.037 | 0.255 | 0.257 | 0.255 | / | / |
| Cutie | CVPR'24 | 0.623 | 0.730 | 0.334 | 0.663 | 0.737 | 0.685 | / | / |
| MMA-Net | ICCV'21 | 0.705 | 0.839 | 0.458 | 0.679 | 0.848 | 0.764 | 59.62M | 41 |
| TGC-Net | MM'22 | 0.738 | 0.892 | 0.469 | 0.727 | 0.891 | 0.809 | 37.25M | 58 |
| RVLD | ICCV'23 | 0.787 | 0.924 | 0.582 | 0.734 | 0.883 | 0.756 | 17.16M | 67 |
| OMR | ECCV'24 | 0.774 | 0.936 | 0.614 | 0.725 | 0.874 | 0.748 | 15.69M | 60 |
| LaneTCA | TCSVT'25 | 0.796 | 0.933 | 0.621 | 0.742 | 0.884 | 0.815 | 17.25M | 52 |
| UDF (Ours) | -- | 0.814 | 0.947 | 0.665 | 0.776 | 0.915 | 0.841 | 14.38M | 74 |