10th-place solution code for https://www.kaggle.com/c/aptos2019-blindness-detection/overview. This repository contains my solution code and provided as is.
This repository is not maintained
pip install --quiet -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" git+https://github.com/NVIDIA/apex
pip install git+https://github.com/mapillary/inplace_abn.git@v1.0.3
Experiment name | CV score | LB score | Encoder | Extra data | Note | Args |
---|---|---|---|---|---|---|
Baseline classification | 0.9077 ± 0.0045 | 0.625 | Resnet18 | No | 4 folds | - |
Baseline regression | 0.9093 ± 0.0033 | 0.646 | Resnet18 | No | 4 folds | - |
-------------------------- | ----------------- | ------------ | ----------------------- | ---------------- | --------- | - |
Baseline classification | 0.9213 ± 0.0033 | 0.772 | SEResnext50 | No | 4 folds | - |
Baseline regression | 0.9225 ± 0.0022 | 0.787 | SEResnext50 | No | 2 folds | - |
Baseline regression | 0.9176 ± 0.0080 | 0.763 | SEResnext101 | No | 4 folds, Multi-pooling | - |
Baseline classification | 0.8055 ± 0.0065 | 0.714 (?1) | cls_resnext50_gap | Yes | 4 folds | - |
Baseline regression | 0.9234 ± 0.0035 | 0.791 | reg_resnext50_rms | No | 4 folds | - |
Baseline regression | 0.9129 ± 0.0099 | 0.804 | reg_resnext50_rms | Yes | 4 folds | - |
Baseline regression | 0.9200 ± 0.0044 | 0.803 | reg_resnext50_rms | Yes | 4 folds (768) | - |
-------------------------- | ----------------- | ------------ | ----------------------- | ---------------- | --------- | - |
Baseline regression | 0.9128 ± 0.0066 | 0.799 | reg_seresnext50_rms | Yes | 4 folds | - |
Baseline regression | 0.8992 ± 0.0041 | reg_seresnext101_rms | Yes | 4 folds | - | |
Baseline regression | 0.9018 ± 0.0079 | 0.774 | reg_densenet201_rms | Yes | 4 folds | - |
Baseline regression | 0.9053 ± 0.0053 | 0.761 | reg_inceptionv4_rms | Yes | 4 folds | - |
-------------------------- | ----------------- | ------------ | ----------------------- | ---------------- | --------- | - |
Regression with aux loss | 0.9170 ± 0.0049 | 0.787 | reg_seresnext50_rms | Yes | 4 folds | -m reg_seresnext50_rms -a medium -f 0 -f 1 -f 2 -f 3 -b 60 -l clipped_mse --fp16 -o Adam -d 0.5 -s multistep -lr 1e-4 -wd 1e-4 -e 100 -v --use-idrid --use-messidor --use-aptos2019 --warmup 10 |
-------------------------- | ----------------- | ------------ | ----------------------- | ---------------- | --------- | - |
Regression with aux loss | 0.9244 ± 0.0060 | 0.752 | reg_seresnext50_rms | Aptos2015 | 4 folds | train_regression_baseline.py -m reg_seresnext50_rms -a medium -f 0 -f 1 -f 2 -f 3 -b 60 --fp16 -o Adam -d 0.5 -s multistep -lr 1e-4 -e 100 -es 20 -v --use-aptos2019 --warmup 10 |
Regression with aux loss | 0.8737 ± 0.0214 | 0.668 | reg_seresnext50_rms | IDRID | 4 folds | train_regression_baseline.py -m reg_seresnext50_rms -a medium -f 0 -f 1 -f 2 -f 3 -b 60 --fp16 -o Adam -d 0.5 -s multistep -lr 1e-4 -e 100 -es 20 -v --use-idrid --warmup 10 |
Regression with aux loss | 0.9006 ± 0.0141 | 0.554 | reg_seresnext50_rms | Messidor | 4 folds | train_regression_baseline.py -m reg_seresnext50_rms -a medium -f 0 -f 1 -f 2 -f 3 -b 60 --fp16 -o Adam -d 0.5 -s multistep -lr 1e-4 -e 100 -es 20 -v --use-messidor --warmup 10 |
Regression with aux loss | 0.9134 ± 0.0044 | 0.779 | reg_seresnext50_rms | A15, ID, MD | 4 folds | train_regression_baseline.py -m reg_seresnext50_rms -a medium -f 0 -f 1 -f 2 -f 3 -b 60 --fp16 -o Adam -d 0.5 -s multistep -lr 1e-4 -e 100 -es 20 -v --use-messidor --warmup 10 |
-------------------------- | ----------------- | ------------ | ----------------------- | ---------------- | --------- | - |
Regression with aux loss | 0.9231 ± 0.0043 | 0.813 | seresnextd50_gwap | A15, ID, MD | 4 folds | train_regression_baseline.py -m seresnext50d_gwap -a medium -f 0 -f 1 -f 2 -f 3 -b 60 --size 512 --fp16 -o AdamW -wd 1e-4 -s multistep -lr 3e-4 -e 50 --use-idrid --use-messidor --use-aptos2019 -v --criterion-cls focal_kappa -l1 2e-4 |
Regression with aux loss | 0.9216 ± 0.0035 | 0.809 | seresnextd50_gap | A15, ID, MD | 4 folds | train_regression_baseline.py -m seresnext50d_gap -a medium -f 0 -f 1 -f 2 -f 3 -b 60 --size 512 --fp16 -o AdamW -wd 1e-4 -s multistep -lr 3e-4 -e 50 --use-idrid --use-messidor --use-aptos2019 -v --criterion-cls focal_kappa -l1 2e-4 |
-------------------------- | ----------------- | ------------ | ----------------------- | ---------------- | --------- | - |
Finetuned 806_813 | 0.9680 ± 0.0037 | 0.803 | ||||
zen_golick | 0.9142 ± 0.0049 | 0.770 | ||||
zen_golick_T | 0.9419 ± 0.0066 | 0.784 | ||||
-------------------------- | ----------------- | ------------ | ----------------------- | ---------------- | --------- | - |
|--------------------------------|-----------------|------------|-----------------------|----------------|---------|-| | happy_shirley | 0.8148 ± 0.0020 | 0.758 | eager_wright | | 0.771 | goofy_heyrovsky | | 0.785 |--------------------------------|-----------------|------------|-----------------------|----------------|---------|-|
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| ablation_study_seresnext50d_max_hard | 0.782 |
| ablation_study_seresnext50d_max_medium | 0.787 |
| ablation_study_seresnext50d_max_light | 0.765 |
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| ablation_study_seresnext50d_gwap_hard | 0.778 |
| ablation_study_seresnext50d_gwap_medium | 0.794 |
| ablation_study_seresnext50d_gwap_light | 0.795 |
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| ablation_study_seresnext50d_gap_hard | 0.797 |
| ablation_study_seresnext50d_gap_medium | 0.802 |
| ablation_study_seresnext50d_gap_light | 0.801 |
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| ablation_study_seresnext50d_gwap_uda_medium| 0.787 |
| ablation_study_seresnext50d_rank_medium | 0.765 |
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| youthful_mccarthy | 0.791 | 0.9045 ± 0.0042 |
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| heuristic_sinoussi (seresnext50) | 0.823 | 0.9162 ± 0.0055 |
| heuristic_sinoussi_finetune | 0.822 | 0.9170 ± 0.0055 |
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| modest_williams | 0.828 | 0.9198 ± 0.0032 |
| modest_williams (finetune) | 0.828 | 0.9204 ± 0.0032 |
| modest_williams + heuristic_sinoussi | 0.832 | |
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| modest_williams + heuristic_sinoussi | 0.834 | | optimized thresholds on OOF [0.52704163, 1.47657166, 2.42753601, 3.3937439]
| modest_williams + heuristic_sinoussi | 0.836 | | optimized thresholds on Aptos15? [0.52704163, 1.47657166, 2.42753601, 3.3937439 ]
| modest_williams + heuristic_sinoussi | 0.836 | | optimized thresholds on Aptos15? [0.52704163, 1.47657166, 2.42753601, 3.3937439 ]
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| inceptionv4_gap_happy_wright | 0.827 | 0.9154 ± 0.0044
| inceptionv4_gwap_cranky_torvalds | 0.824 | 0.9066 ± 0.0053
| seresnext50_rnn_clever_roentgen | 0.831 | 0.9118 ± 0.0057
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| modest_williams+heuristic_sinoussi+happy_wright | 0.843 |
| modest_williams+heuristic_sinoussi+happy_wright | 0.844 | FlipLR
| modest_williams+heuristic_sinoussi+happy_wright | 0.844 | Flip4, mean |
| modest_williams+heuristic_sinoussi+happy_wright | 0.844 | FlipLR, median |
| modest_williams+heuristic_sinoussi+happy_wright | 0.842 | Truncated mean
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| heuristic_sinoussi+modest_williams++happy_wright+clever_roentgen | |
| heuristic_sinoussi+modest_williams++happy_wright+clever_roentgen | 0.802 | logistic_regression
| seresnet152-sad-ardinghelli | 0.816 |
| happy_wright | 0.802 |
| seresnext101_fpn_512_practical_wright | 806 | 0.9142 0.0064 | warmup FPN from
| resnet34_gap_jovial_turing | 809 | 0.9088 0.0043
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
|inceptionv4_gap_512_medium_aptos2019_messidor_idrid_pl1_fold0_wizardly_mestorf_main.pth | 823
|inceptionv4_gap_512_medium_aptos2019_messidor_idrid_pl1_fold0_wizardly_mestorf_warmup.pth |841
|seresnext50_gap_512_medium_fold0_vibrant_johnson.pth | 825 |
|seresnext50_gap_512_medium_fold0_vibrant_johnson.pth | 822 | Non-optimal thresholds
|--------------------------------------------------|------------|-----------------------|----------------|---------|-|
| inceptionv4_gap_512_medium_pl1_epic_shaw | 843 | 0.9747 ± 0.0002 | warmup
| inceptionv4_gap_512_medium_pl1_epic_shaw | 830 | ??? | main (fold 1,2,3)
| seresnext101_gap_pl1_sad_neumann | 829 | 0.9747 ± 0.0002
| modest_williams+heuristic_sinoussi+happy_wright+shaw | |
| inceptionv4_gap_512_medium_pl1_epic_shaw | | | warmup, normal + clahe
- https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5961805/
- https://www.slideshare.net/EducacionMolina/diabetic-retinopathy-71884270
- http://defauw.ai/diabetic-retinopathy-detection/
- https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4944099/
- http://eyesteve.com/diabetic-retinopathy-grading/
- http://eyesteve.com/diabetic-retinopathy-grading/
- https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0139148
- https://mlwave.com/kaggle-ensembling-guide/
- https://www.kaggle.com/amrmahmoud123/1-guide-to-ensembling-methods
- http://blog.kaggle.com/2016/12/27/a-kagglers-guide-to-model-stacking-in-practice/
- https://github.com/MLWave/Kaggle-Ensemble-Guide/blob/master/src/correlations.py
- https://jamanetwork.com/journals/jamaophthalmology/fullarticle/2734990
Train on Aptos 2019
Validation on IDRID + MESSIDOR: 0.6325 / 0.6291 messidor TTA None Mean 0.5497315432994327 std 0.020016714451918216 MeanAvg 0.5370538498582897 idrid TTA None Mean 0.7221154799857236 std 0.02454628058174581 MeanAvg 0.7603479511540748 aptos2019 TTA None Mean 0.9720265955567333 std 0.0024721825621897855 MeanAvg 0.9873314014864271 aptos2015 TTA None Mean 0.471382231210149 std 0.02805589901308936 MeanAvg 0.4984512005316677