Course Project for the Computational Intelligence Lab (CIL) 2023 at ETH Zurich focusing on satelite road segmentation.
Name | Github | |
---|---|---|
Alexander Spiridonov | aspiridonov@ethz.ch | aspiridon0v |
Alexander Veicht | veichta@ethz.ch | veichta |
András Strausz | strausza@ethz.ch | strausza |
Richard Danis | richdanis@ethz.ch | richdanis |
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install git+https://github.com/bruel-gabrielsson/TopologyLayer.git
pip install -e .
Name | URL | #images |
---|---|---|
CIL | https://www.kaggle.com/competitions/cil-road-segmentation-2022 | 144 |
EPFL | https://www.aicrowd.com/challenges/epfl-ml-road-segmentation | 339 |
RoadTracer | https://paperswithcode.com/dataset/roadtracer | 4976 |
The preprocessed data can be downloaded using the following command:
wget https://polybox.ethz.ch/index.php/s/KhsD19D0iLEmyTH/download -O data.zip
The data is expected to have the following structure:
data
├── images
│ ├── 000000_cil.jpg
│ ├── 000000_epfl.jpg
│ ├── 000000_roadtracer.jpg
│ ├── 000001_cil.jpg
│ ├── ...
├── masks
│ ├── 000000_cil.png
│ ├── 000000_epfl.png
│ ├── 000000_roadtracer.png
│ ├── 000001_cil.png
│ ├── ...
└── weights
├── 000000_cil.png
├── 000000_epfl.png
├── 000000_roadtracer.png
├── 000001_cil.png
├── ...
This can be achieved by running the following commands:
unzip data.zip
In order to split the data into train, val and test sets, run the following command:
python src/preprocessing/split_dataset.py --dataset data
This will create folder for each split containing images
, masks
and weights
folders.
The training can be started by running the following command:
python main.py --datasets <list of dataset> --model <model name> --device <device>
For a full list of arguments, run:
python main.py --help
The baseline results can be reproduced by running the following commands:
python main.py --data_path data --datasets cil --epochs 300 --lr 0.001 --model unet++ --patience 40
python main.py --data_path data --datasets cil --epochs 300 --lr 0.001 --model spin --patience 40
python main.py --data_path data --datasets cil --epochs 300 --lr 3e-4 --model upernet-t --patience 40 --miou_weight 1 --focal_weight 1 --mse_weight 1