-
Authors: Almaz Zinollayev, Zhanseri Ikram
-
Video presentation for ECCV 2020: https://youtu.be/xXqDsPZyZic
-
Competition: https://evalai.cloudcv.org/web/challenges/challenge-page/603/overview
- Linux
- Python 3.6+
- PyTorch 1.3+
- CUDA 9.2+
To install requirements:
pip install -r requirements.txt
First, prepare folds for training
python dataset/create_kfolds.py
To train the model, run this command:
python train.py --config <path_to_config> --data-dir <path_to_data> --gpu <gpu_ids> --fold <fold_id>
List of other parameters can be seen inside train.py
To inference a model, run:
python predict_ensemble.py --data-dir <path_to_data> --label-file <path_to_file_with_sample_names> --save-dir <path_to_save> --gpu <gpu_ids>
Models that should be inferenced are written in predict_ensemble.py.
path_to_file_with_names
is a file with all sample names e.g.S_0/label_0.npy
and etc.
To evaluate model, run:
python validate.py --data-dir <path_to_data> --pred-dir <path_to_predictios> --fold <fold_id>
Predictions from model should be inferenced beforehand
You can download pretrained models here:
- UNet EfficientNet-b7 trained on pseudolabels.
Our models achieve the following performance on:
Model | mIoU |
---|---|
UNet EfficientNet-b7 | 95.15% |
Ensemble of 10 Models | 95.17% |
The reason why the ensemble gives such a small accuracy increase is that most of the models in the ensemble were trained sub-optimally, as we've found out best training pipeline towards the end of the competition.
We thank Selim Seferbekov and Pavel Yakubovskiy for wonderful codebase that we extensively used during competition.