├── .gitignore ├── LICENSE ├── Pionono_model.png ├── README.md ├── config.yaml ├── dataset_dependent ├── arvaniti_tma │ ├── data_configs │ │ ├── data_config_crossval0.yaml │ │ ├── data_config_crossval1.yaml │ │ ├── data_config_crossval2.yaml │ │ └── data_config_crossval3.yaml │ └── experiments │ │ └── cross_validation │ │ ├── confmat_global │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── confmat_pixel │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── pionono │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── punet │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── run.sh │ │ ├── sup_a1 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ └── sup_a2 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ └── exp_config.yaml │ │ ├── cval1 │ │ └── exp_config.yaml │ │ ├── cval2 │ │ └── exp_config.yaml │ │ ├── cval3 │ │ └── exp_config.yaml │ │ └── run.sh ├── breast_tnbc │ ├── data_configs │ │ └── data_config_val0.yaml │ └── experiments │ │ └── validation │ │ ├── confmat_global │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── confmat_pixel │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── pionono │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── punet │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ ├── sup_expert │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ │ └── sup_staple │ │ ├── base_config.yaml │ │ ├── cval0 │ │ └── exp_config.yaml │ │ ├── cval1 │ │ └── exp_config.yaml │ │ ├── cval2 │ │ └── exp_config.yaml │ │ ├── cval3 │ │ └── exp_config.yaml │ │ └── run.sh └── gleason19 │ ├── data_configs │ ├── data_config_crossval0.yaml │ ├── data_config_crossval1.yaml │ ├── data_config_crossval2.yaml │ ├── data_config_crossval3.yaml │ └── data_config_external_testing.yaml │ └── experiments │ ├── ablation_studies │ ├── pionono_dim_16 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_dim_4 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_kl_0_0001 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_kl_0_001 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_s_post_16 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_s_post_4 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_s_prior_1 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_s_prior_4 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_vgg16 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_zlr_0_01 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono_zlr_0_04 │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ └── run.sh │ ├── cross_validation │ ├── confmat_global │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── confmat_pixel │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── pionono │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── punet │ │ ├── base_config.yaml │ │ ├── cval0 │ │ │ └── exp_config.yaml │ │ ├── cval1 │ │ │ └── exp_config.yaml │ │ ├── cval2 │ │ │ └── exp_config.yaml │ │ ├── cval3 │ │ │ └── exp_config.yaml │ │ └── run.sh │ ├── run.sh │ └── sup_staple │ │ ├── base_config.yaml │ │ ├── cval0 │ │ └── exp_config.yaml │ │ ├── cval1 │ │ └── exp_config.yaml │ │ ├── cval2 │ │ └── exp_config.yaml │ │ ├── cval3 │ │ └── exp_config.yaml │ │ └── run.sh │ └── external_testing │ ├── confmat_global │ ├── base_config.yaml │ ├── cval0 │ │ └── exp_config.yaml │ ├── cval1 │ │ └── exp_config.yaml │ ├── cval2 │ │ └── exp_config.yaml │ ├── cval3 │ │ └── exp_config.yaml │ └── run.sh │ ├── confmat_pixel │ ├── base_config.yaml │ ├── cval0 │ │ └── exp_config.yaml │ ├── cval1 │ │ └── exp_config.yaml │ ├── cval2 │ │ └── exp_config.yaml │ ├── cval3 │ │ └── exp_config.yaml │ └── run.sh │ ├── pionono │ ├── base_config.yaml │ ├── cval0 │ │ └── exp_config.yaml │ ├── cval1 │ │ └── exp_config.yaml │ ├── cval2 │ │ └── exp_config.yaml │ ├── cval3 │ │ └── exp_config.yaml │ ├── run.sh │ └── run2.sh │ ├── punet │ ├── base_config.yaml │ ├── cval0 │ │ └── exp_config.yaml │ ├── cval1 │ │ └── exp_config.yaml │ ├── cval2 │ │ └── exp_config.yaml │ ├── cval3 │ │ └── exp_config.yaml │ └── run.sh │ ├── run.sh │ └── sup_staple │ ├── base_config.yaml │ ├── cval0 │ └── exp_config.yaml │ ├── cval1 │ └── exp_config.yaml │ ├── cval2 │ └── exp_config.yaml │ ├── cval3 │ └── exp_config.yaml │ └── run.sh ├── environment.yaml ├── requirements.txt └── src ├── Probabilistic_Unet_Pytorch ├── .gitignore ├── LICENSE ├── README.md ├── __init__.py ├── load_LIDC_data.py ├── probabilistic_unet.py ├── train_model.py ├── unet.py ├── unet_blocks.py └── utils.py ├── __init__.py ├── data.py ├── main.py ├── model_handler.py ├── postprocessing_tools ├── __init__.py ├── agreement_plot.png ├── calculate_results.py ├── dist_plot.png ├── dist_plot1.png ├── plot_agreement.py ├── plot_distributions.py └── resize_images.py ├── preprocessing_tools ├── __init__.py ├── convert_masks_to_rgb.py ├── copy_val_maps.py ├── find_common_val_maps.py ├── preprocess_gleason19.py ├── preprocess_tma_arvaniti.py └── preprocessing_utils.py └── utils ├── __init__.py ├── dice_losses.py ├── globals.py ├── initialize_model.py ├── initialize_optimization.py ├── loss.py ├── mlflow_logger.py ├── model_confusionmatrix.py ├── model_headless.py ├── model_pionono.py ├── model_supervised.py ├── preprocessing.py ├── saving.py ├── segmentation_backbone.py └── test_helpers.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Custom 2 | output/** 3 | 4 | 5 | # Byte-compiled / optimized / DLL files 6 | __pycache__/ 7 | *.py[cod] 8 | *$py.class 9 | 10 | # C extensions 11 | *.so 12 | 13 | # Distribution / packaging 14 | .Python 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | wheels/ 27 | pip-wheel-metadata/ 28 | share/python-wheels/ 29 | *.egg-info/ 30 | .installed.cfg 31 | *.egg 32 | MANIFEST 33 | 34 | # PyInstaller 35 | # Usually these files are written by a python script from a template 36 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 37 | *.manifest 38 | *.spec 39 | 40 | # Installer logs 41 | pip-log.txt 42 | pip-delete-this-directory.txt 43 | 44 | # Unit test / coverage reports 45 | htmlcov/ 46 | .tox/ 47 | .nox/ 48 | .coverage 49 | .coverage.* 50 | .cache 51 | nosetests.xml 52 | coverage.xml 53 | *.cover 54 | *.py,cover 55 | .hypothesis/ 56 | .pytest_cache/ 57 | 58 | # Translations 59 | *.mo 60 | *.pot 61 | 62 | # Django stuff: 63 | *.log 64 | local_settings.py 65 | db.sqlite3 66 | db.sqlite3-journal 67 | 68 | # Flask stuff: 69 | instance/ 70 | .webassets-cache 71 | 72 | # Scrapy stuff: 73 | .scrapy 74 | 75 | # Sphinx documentation 76 | docs/_build/ 77 | 78 | # PyBuilder 79 | target/ 80 | 81 | # Jupyter Notebook 82 | .ipynb_checkpoints 83 | 84 | # IPython 85 | profile_default/ 86 | ipython_config.py 87 | 88 | # pyenv 89 | .python-version 90 | 91 | # pipenv 92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 95 | # install all needed dependencies. 96 | #Pipfile.lock 97 | 98 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 99 | __pypackages__/ 100 | 101 | # Celery stuff 102 | celerybeat-schedule 103 | celerybeat.pid 104 | 105 | # SageMath parsed files 106 | *.sage.py 107 | 108 | # Environments 109 | .env 110 | .venv 111 | env/ 112 | venv/ 113 | ENV/ 114 | env.bak/ 115 | venv.bak/ 116 | 117 | # Spyder project settings 118 | .spyderproject 119 | .spyproject 120 | 121 | # Rope project settings 122 | .ropeproject 123 | 124 | # mkdocs documentation 125 | /site 126 | 127 | # mypy 128 | .mypy_cache/ 129 | .dmypy.json 130 | dmypy.json 131 | 132 | # Pyre type checker 133 | .pyre/ 134 | -------------------------------------------------------------------------------- /Pionono_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/Pionono_model.png -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | load_only_state_dict: False 5 | batch_size: 3 6 | optimizer: adam # sgd_mom, adam 7 | epochs: 100 8 | loss: gdice # ce, dice, gdice, focal 9 | learning_rate: 0.0001 10 | lr_decay_after_epoch: 40 11 | lr_decay_param: 0.1 12 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 13 | encoder: 14 | backbone: resnet34 15 | weights: imagenet # imagenet or None 16 | decoder: 17 | activation: softmax # softmax or None 18 | method: pionono # supervised, prob_unet, conf_matrix, pionono 19 | pionono_config: 20 | mc_samples: 5 21 | no_head_layers: 3 22 | kl_factor: 0.0005 23 | reg_factor: 0.00001 24 | latent_dim: 8 25 | gold_annotators: 26 | - 0 27 | always_goldpred: False 28 | z_learning_rate: 0.02 29 | z_prior_sigma: 2.0 30 | z_posterior_init_sigma: 8.0 31 | prob_unet_config: 32 | original_backbone: False # use original prob-unet backbone (overwrites above configuration of backbone) 33 | kl_factor: 1.0 34 | reg_factor: 0.00001 35 | latent_dim: 6 36 | conf_matrix_config: 37 | level: global # 'global', 'pixel' 38 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 39 | activate_min_trace_epoch: 1 # epoch of activating trace minimization, before maximize, -1 to deactivate 40 | cmlayer_learning_rate: 0.01 41 | alpha: 1.0 42 | 43 | logging: 44 | interval: 10 45 | artifact_interval: 9999 # steps of artifact (e.g. visualization) logging (in number of epochs) 46 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 47 | tags: 48 | stage: initial 49 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/data_configs/data_config_crossval1.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | dataset_name: arvaniti_tma_crowdsourcing 3 | class_no: 5 4 | image_resolution: 512 5 | class_names: ['NC', 'GG3', 'GG4', 'GG5', 'other'] 6 | class_weights: [1., 1., 1., 1., 1.] 7 | ignore_last_class: False # set True if last class will be ignored during training and testing 8 | ignore_last_class_only_for_testing: True # set True if last class will be ignored during testing 9 | path: /home/arne/data/Arvaniti_TMA/resized_dataset_512/ 10 | train: 11 | images: Crossval1/train 12 | masks: 13 | - Maps/Maps1_T 14 | - Maps/Maps2_T 15 | val: 16 | images: Crossval1/train 17 | masks: 18 | - Maps/Maps1_T 19 | - Maps/Maps2_T 20 | test: 21 | images: Crossval1/val 22 | masks: 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | repeat_train_images: 26 | - 'ZT80_38_B_1_2.png' 27 | - 'ZT80_38_B_7_4.png' 28 | - 'ZT80_38_A_7_1.png' 29 | - 'ZT80_38_A_3_7.png' 30 | - 'ZT80_38_C_7_10.png' 31 | - 'ZT80_38_A_6_5.png' 32 | - 'ZT80_38_B_2_1.png' 33 | - 'ZT80_38_B_2_2.png' 34 | - 'ZT80_38_B_2_12.png' 35 | - 'ZT80_38_A_6_7.png' 36 | - 'ZT80_38_C_5_8.png' 37 | - 'ZT80_38_A_1_11.png' 38 | - 'ZT80_38_C_2_1.png' 39 | - 'ZT80_38_B_1_9.png' 40 | - 'ZT80_38_C_4_1.png' 41 | - 'ZT80_38_A_1_8.png' 42 | - 'ZT80_38_A_1_7.png' 43 | repeat_factor: 4 44 | visualize_images: 45 | train: 46 | - 'ZT80_38_B_1_2.png' 47 | - 'ZT80_38_B_7_4.png' 48 | - 'ZT80_38_A_7_1.png' 49 | - 'ZT80_38_A_3_7.png' 50 | val: 51 | - 'ZT80_38_A_8_3.png' 52 | - 'ZT80_38_A_4_3.png' 53 | - 'ZT80_38_B_7_7.png' 54 | - 'ZT80_38_A_8_2.png' 55 | - 'ZT80_38_C_1_10.png' 56 | - 'ZT80_38_B_3_1.png' 57 | test: 58 | - 'ZT80_38_A_8_3.png' 59 | - 'ZT80_38_A_4_3.png' 60 | - 'ZT80_38_B_7_7.png' 61 | - 'ZT80_38_A_8_2.png' 62 | - 'ZT80_38_C_1_10.png' 63 | - 'ZT80_38_B_3_1.png' 64 | normalization: False 65 | augmentation: 66 | use_augmentation: True # switch everything off and on, if True automatically flips and 90 degree rotations are used in this case 67 | gaussian_blur_kernel: 2 # range 3-7 68 | brightness_limit: 0.1 69 | contrast_limit: 0.1 70 | hue_shift_limit: 10 71 | sat_shift_limit: 10 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/data_configs/data_config_crossval2.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | dataset_name: arvaniti_tma_crowdsourcing 3 | class_no: 5 4 | image_resolution: 512 5 | class_names: ['NC', 'GG3', 'GG4', 'GG5', 'other'] 6 | class_weights: [1., 1., 1., 1., 1.] 7 | ignore_last_class: False # set True if last class will be ignored during training and testing 8 | ignore_last_class_only_for_testing: True # set True if last class will be ignored during testing 9 | path: /home/arne/data/Arvaniti_TMA/resized_dataset_512/ 10 | train: 11 | images: Crossval2/train 12 | masks: 13 | - Maps/Maps1_T 14 | - Maps/Maps2_T 15 | val: 16 | images: Crossval2/train 17 | masks: 18 | - Maps/Maps1_T 19 | - Maps/Maps2_T 20 | test: 21 | images: Crossval2/val 22 | masks: 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | repeat_train_images: 26 | - 'ZT80_38_B_1_2.png' 27 | - 'ZT80_38_B_7_4.png' 28 | - 'ZT80_38_A_7_1.png' 29 | - 'ZT80_38_A_3_7.png' 30 | - 'ZT80_38_C_7_10.png' 31 | - 'ZT80_38_A_6_5.png' 32 | - 'ZT80_38_A_8_3.png' 33 | - 'ZT80_38_A_4_3.png' 34 | - 'ZT80_38_B_7_7.png' 35 | - 'ZT80_38_A_8_2.png' 36 | - 'ZT80_38_C_1_10.png' 37 | - 'ZT80_38_B_3_1.png' 38 | - 'ZT80_38_C_2_1.png' 39 | - 'ZT80_38_B_1_9.png' 40 | - 'ZT80_38_C_4_1.png' 41 | - 'ZT80_38_A_1_8.png' 42 | - 'ZT80_38_A_1_7.png' 43 | repeat_factor: 4 44 | visualize_images: 45 | train: 46 | - 'ZT80_38_B_1_2.png' 47 | - 'ZT80_38_B_7_4.png' 48 | - 'ZT80_38_A_7_1.png' 49 | - 'ZT80_38_A_3_7.png' 50 | val: 51 | - 'ZT80_38_B_2_1.png' 52 | - 'ZT80_38_B_2_2.png' 53 | - 'ZT80_38_B_2_12.png' 54 | - 'ZT80_38_A_6_7.png' 55 | - 'ZT80_38_C_5_8.png' 56 | - 'ZT80_38_A_1_11.png' 57 | test: 58 | - 'ZT80_38_B_2_1.png' 59 | - 'ZT80_38_B_2_2.png' 60 | - 'ZT80_38_B_2_12.png' 61 | - 'ZT80_38_A_6_7.png' 62 | - 'ZT80_38_C_5_8.png' 63 | - 'ZT80_38_A_1_11.png' 64 | normalization: False 65 | augmentation: 66 | use_augmentation: True # switch everything off and on, if True automatically flips and 90 degree rotations are used in this case 67 | gaussian_blur_kernel: 2 # range 3-7 68 | brightness_limit: 0.1 69 | contrast_limit: 0.1 70 | hue_shift_limit: 10 71 | sat_shift_limit: 10 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/data_configs/data_config_crossval3.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | dataset_name: arvaniti_tma_crowdsourcing 3 | class_no: 5 4 | image_resolution: 512 5 | class_names: ['NC', 'GG3', 'GG4', 'GG5', 'other'] 6 | class_weights: [1., 1., 1., 1., 1.] 7 | ignore_last_class: False # set True if last class will be ignored during training and testing 8 | ignore_last_class_only_for_testing: True # set True if last class will be ignored during testing 9 | path: /home/arne/data/Arvaniti_TMA/resized_dataset_512/ 10 | train: 11 | images: Crossval2/train 12 | masks: 13 | - Maps/Maps1_T 14 | - Maps/Maps2_T 15 | val: 16 | images: Crossval2/train 17 | masks: 18 | - Maps/Maps1_T 19 | - Maps/Maps2_T 20 | test: 21 | images: Crossval2/val 22 | masks: 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | repeat_train_images: 26 | - 'ZT80_38_B_1_2.png' 27 | - 'ZT80_38_B_7_4.png' 28 | - 'ZT80_38_A_7_1.png' 29 | - 'ZT80_38_A_3_7.png' 30 | - 'ZT80_38_C_7_10.png' 31 | - 'ZT80_38_A_6_5.png' 32 | - 'ZT80_38_A_8_3.png' 33 | - 'ZT80_38_A_4_3.png' 34 | - 'ZT80_38_B_7_7.png' 35 | - 'ZT80_38_A_8_2.png' 36 | - 'ZT80_38_C_1_10.png' 37 | - 'ZT80_38_B_3_1.png' 38 | - 'ZT80_38_B_2_1.png' 39 | - 'ZT80_38_B_2_2.png' 40 | - 'ZT80_38_B_2_12.png' 41 | - 'ZT80_38_A_6_7.png' 42 | - 'ZT80_38_C_5_8.png' 43 | - 'ZT80_38_A_1_11.png' 44 | repeat_factor: 4 45 | visualize_images: 46 | train: 47 | - 'ZT80_38_B_1_2.png' 48 | - 'ZT80_38_B_7_4.png' 49 | - 'ZT80_38_A_7_1.png' 50 | - 'ZT80_38_A_3_7.png' 51 | val: 52 | - 'ZT80_38_C_2_1.png' 53 | - 'ZT80_38_B_1_9.png' 54 | - 'ZT80_38_C_4_1.png' 55 | - 'ZT80_38_A_1_8.png' 56 | - 'ZT80_38_A_1_7.png' 57 | test: 58 | - 'ZT80_38_C_2_1.png' 59 | - 'ZT80_38_B_1_9.png' 60 | - 'ZT80_38_C_4_1.png' 61 | - 'ZT80_38_A_1_8.png' 62 | - 'ZT80_38_A_1_7.png' 63 | normalization: False 64 | augmentation: 65 | use_augmentation: True # switch everything off and on, if True automatically flips and 90 degree rotations are used in this case 66 | gaussian_blur_kernel: 2 # range 3-7 67 | brightness_limit: 0.1 68 | contrast_limit: 0.1 69 | hue_shift_limit: 10 70 | sat_shift_limit: 10 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_global/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: global # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 10 # steps of train logging (in number of batches) 27 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_global/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_global/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_global/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_global/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_global/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval0.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/cval0 2 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval1.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/cval1 3 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval2.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/cval2 4 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval3.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/ -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_pixel/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet18 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: pixel # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 10 # steps of train logging (in number of batches) 27 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/confmat_pixel/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval0.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval0 2 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval1.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval1 3 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval2.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval2 4 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval3.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/ -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/pionono/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 10 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: final 37 | spec: pionono 38 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/pionono/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/pionono/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/pionono/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/pionono/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/pionono/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval0.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/cval0 2 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval1.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/cval1 3 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval2.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/cval2 4 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval3.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/ -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/punet/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: prob_unet # supervised prob_unet, conf_matrix, pionono 18 | prob_unet_config: 19 | original_backbone: False # use original prob-unet backbone (overwrites above configuration of backbone) 20 | kl_factor: 1.0 21 | reg_factor: 0.00001 22 | latent_dim: 6 23 | 24 | logging: 25 | interval: 10 26 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 27 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 28 | tags: 29 | stage: initial 30 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/punet/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/punet/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/punet/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/punet/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/punet/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/punet/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval0.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/punet/cval0 2 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/punet/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval1.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/punet/cval1 3 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/punet/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval2.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/punet/cval2 4 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/punet/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval3.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/punet/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/arvaniti_tma/experiments/cross_validation/punet/ -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/run.sh: -------------------------------------------------------------------------------- 1 | ../../experiments/arvaniti_tma/experiments/cross_validation/pionono/run.sh 2 | ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_global/run.sh 3 | ../../experiments/arvaniti_tma/experiments/cross_validation/confmat_pixel/run.sh 4 | ../../experiments/arvaniti_tma/experiments/cross_validation/punet/run.sh 5 | ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/run.sh 6 | ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/run.sh -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a1/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: supervised # supervised, prob-unet, conf_matrix, pionono 18 | 19 | logging: 20 | interval: 10 21 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 22 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 23 | tags: 24 | stage: final 25 | spec: sup_staple 26 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a1/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps1_T 5 | 6 | model: 7 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a1/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps1_T 5 | 6 | model: 7 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a1/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps1_T 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a1/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps1_T 5 | 6 | model: 7 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a1/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval0.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/cval0 2 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval1.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/cval1 3 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval2.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/cval2 4 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval3.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a1/ -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a2/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: supervised # supervised, prob-unet, conf_matrix, pionono 18 | 19 | logging: 20 | interval: 10 21 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 22 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 23 | tags: 24 | stage: final 25 | spec: sup_staple 26 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a2/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps2_T 5 | 6 | model: 7 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a2/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps2_T 5 | 6 | model: 7 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a2/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps2_T 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a2/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/Maps2_T 5 | 6 | model: 7 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/arvaniti_tma/experiments/cross_validation/sup_a2/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval0.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/cval0 2 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval1.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/cval1 3 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval2.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/cval2 4 | python src/main.py -c ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/base_config.yaml -dc ../../experiments/arvaniti_tma/data_configs/data_config_crossval3.yaml -ef ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/arvaniti_tma/experiments/cross_validation/sup_a2/ -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/data_configs/data_config_val0.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | dataset_name: breast_tnbc 3 | image_resolution: 512 4 | class_no: 5 5 | class_names: ['other', 'tumor', 'stroma', 'inflammation', 'necrosis'] 6 | class_weights: [1., 1., 1., 1., 1.] # [2.69672952, 1.13585435, 0.78206914, 25.60014031, 0.41134248] 7 | ignore_last_class: False # set True if last class will be ignored during training and testing 8 | ignore_last_class_only_for_testing: False # set True if last class will be ignored during testing 9 | path: /data/BasesDeDatos/Structured_Crowdsourced_Segmentation/512/ 10 | train: 11 | images: patches/Train 12 | masks: 13 | - masks/Train/expert 14 | - masks/Train/NP1 15 | - masks/Train/NP2 16 | - masks/Train/NP3 17 | - masks/Train/NP4 18 | - masks/Train/NP5 19 | - masks/Train/NP6 20 | - masks/Train/NP7 21 | - masks/Train/NP8 22 | - masks/Train/NP9 23 | - masks/Train/NP10 24 | - masks/Train/NP11 25 | - masks/Train/NP12 26 | - masks/Train/NP14 27 | - masks/Train/NP15 28 | - masks/Train/NP16 29 | - masks/Train/NP17 30 | - masks/Train/NP18 31 | - masks/Train/NP19 32 | - masks/Train/NP20 33 | - masks/Train/NP21 34 | val: 35 | images: patches/Test 36 | masks: 37 | - masks/Test/expert 38 | test: 39 | images: patches/Test 40 | masks: 41 | - masks/Test/expert 42 | repeat_train_images: 43 | - 'core_A1P4_EW_x_ini_358_y_ini_3580.png' 44 | repeat_factor: 0 45 | visualize_images: 46 | train: 47 | - 'core_A1P4_EW_x_ini_358_y_ini_3580.png' 48 | - 'eval_A73Y_LL_x_ini_1790_y_ini_716.png' 49 | - 'core_A0DA_A7_x_ini_4296_y_ini_4654.png' 50 | - 'core_A3XS_A2_x_ini_5728_y_ini_3222.png' 51 | - 'core_A159_E2_x_ini_5728_y_ini_2506.png' 52 | val: 53 | - 'core_A0CE_A7_x_ini_1790_y_ini_716.png' 54 | - 'core_A0CE_A7_x_ini_1074_y_ini_3580.png' 55 | - 'core_A0CE_A7_x_ini_1790_y_ini_716.png' 56 | - 'core_A1JL_D8_x_ini_4296_y_ini_1432.png' 57 | - 'core_A1JL_D8_x_ini_6086_y_ini_2864.png' 58 | - 'core_A2DB_GM_x_ini_5370_y_ini_1790.png' 59 | - 'core_A2DB_GM_x_ini_5728_y_ini_6086.png' 60 | test: 61 | - 'core_A1EW_BH_x_ini_3580_y_ini_2864.png' 62 | - 'core_A6SB_EW_x_ini_1074_y_ini_2864.png' 63 | - 'core_A12F_AO_x_ini_0_y_ini_716.png' 64 | - 'core_A12F_AO_x_ini_1074_y_ini_0.png' 65 | - 'core_A6SB_EW_x_ini_4296_y_ini_2864.png' 66 | normalization: False 67 | augmentation: 68 | use_augmentation: True # switch everything off and on, if True automatically flips and 90 degree rotations are used in this case 69 | gaussian_blur_kernel: 2 # range 3-7 70 | brightness_limit: 0.1 71 | contrast_limit: 0.1 72 | hue_shift_limit: 10 73 | sat_shift_limit: 10 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_global/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 10 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: global # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 50 # steps of train logging (in number of batches) 27 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_global/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_global/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_global/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_global/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_global/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_global/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_global/cval0 2 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_global/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_global/cval1 3 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_global/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_global/cval2 4 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_global/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_global/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/breast_tnbc/experiments/validation/confmat_global/ -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_pixel/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 10 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet18 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: pixel # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 50 # steps of train logging (in number of batches) 27 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_pixel/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_pixel/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_pixel/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_pixel/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/confmat_pixel/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/cval0 2 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/cval1 3 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/cval2 4 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/breast_tnbc/experiments/validation/confmat_pixel/ -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/pionono/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 10 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: True 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 50 33 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: final 37 | spec: pionono 38 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/pionono/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/pionono/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/pionono/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/pionono/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/pionono/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/pionono/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/pionono/cval0 2 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/pionono/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/pionono/cval1 3 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/pionono/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/pionono/cval2 4 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/pionono/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/pionono/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/breast_tnbc/experiments/validation/pionono/ -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/punet/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 10 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: prob_unet # supervised prob_unet, conf_matrix, pionono 18 | prob_unet_config: 19 | original_backbone: False # use original prob-unet backbone (overwrites above configuration of backbone) 20 | kl_factor: 1.0 21 | reg_factor: 0.00001 22 | latent_dim: 6 23 | 24 | logging: 25 | interval: 50 26 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 27 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 28 | tags: 29 | stage: initial 30 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/punet/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/punet/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/punet/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/punet/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/punet/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/punet/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/punet/cval0 2 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/punet/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/punet/cval1 3 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/punet/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/punet/cval2 4 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/punet/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/punet/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/breast_tnbc/experiments/validation/punet/ -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_expert/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 30 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 10 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: supervised # supervised, prob-unet, conf_matrix, pionono 18 | 19 | logging: 20 | interval: 50 21 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 22 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 23 | tags: 24 | stage: final 25 | spec: sup_staple 26 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_expert/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_expert/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_expert/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_expert/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_expert/run.sh: -------------------------------------------------------------------------------- 1 | #python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval0 2 | #python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval1 3 | #python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval2 4 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval3 5 | 6 | #python src/postprocessing_tools/calculate_results.py -e ../../experiments/breast_tnbc/experiments/validation/sup_staple/ -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_staple/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 10 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: supervised # supervised, prob-unet, conf_matrix, pionono 18 | 19 | logging: 20 | interval: 50 21 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 22 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 23 | tags: 24 | stage: final 25 | spec: sup_staple 26 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_staple/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_staple/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_staple/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_staple/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - masks/Train/STAPLE 5 | 6 | model: 7 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/breast_tnbc/experiments/validation/sup_staple/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval0 2 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval1 3 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval2 4 | python src/main.py -c ../../experiments/breast_tnbc/experiments/validation/sup_staple/base_config.yaml -dc ../../experiments/breast_tnbc/data_configs/data_config_val0.yaml -ef ../../experiments/breast_tnbc/experiments/validation/sup_staple/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ../../experiments/breast_tnbc/experiments/validation/sup_staple/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | dataset_name: gleason19_crowdsourcing 3 | image_resolution: 1024 4 | class_no: 5 5 | class_names: ['NC', 'GG3', 'GG4', 'GG5', 'other'] 6 | class_weights: [1., 1., 1., 1., 1.] # [2.69672952, 1.13585435, 0.78206914, 25.60014031, 0.41134248] 7 | ignore_last_class: False # set True if last class will be ignored during training and testing 8 | ignore_last_class_only_for_testing: True # set True if last class will be ignored during testing 9 | path: /home/arne/data/Gleason_2019/resized_dataset_1024/ 10 | train: 11 | images: Crossval0/train 12 | masks: 13 | - Maps/Maps1_T 14 | - Maps/Maps2_T 15 | - Maps/Maps3_T 16 | - Maps/Maps4_T 17 | - Maps/Maps5_T 18 | - Maps/Maps6_T 19 | val: 20 | images: Crossval0/train 21 | masks: 22 | - Maps/STAPLE 23 | test: 24 | images: Crossval0/val 25 | masks: 26 | - Maps/STAPLE 27 | repeat_train_images: 28 | - 'slide007_core016.png' 29 | - 'slide002_core073.png' 30 | - 'slide002_core144.png' 31 | - 'slide001_core010.png' 32 | - 'slide002_core009.png' 33 | - 'slide005_core092.png' 34 | - 'slide002_core074.png' 35 | - 'slide002_core140.png' 36 | - 'slide002_core143.png' 37 | - 'slide002_core010.png' 38 | - 'slide003_core096.png' 39 | - 'slide007_core043.png' 40 | repeat_factor: 2 41 | visualize_images: 42 | train: 43 | - 'slide001_core041.png' 44 | - 'slide002_core026.png' 45 | - 'slide002_core042.png' 46 | - 'slide005_core041.png' 47 | - 'slide005_core069.png' 48 | - 'slide006_core105.png' 49 | - 'slide006_core110.png' 50 | - 'slide006_core125.png' 51 | val: 52 | - 'slide001_core059.png' 53 | - 'slide002_core017.png' 54 | - 'slide002_core033.png' 55 | - 'slide002_core080.png' 56 | - 'slide005_core063.png' 57 | - 'slide006_core115.png' 58 | - 'slide007_core002.png' 59 | - 'slide007_core044.png' 60 | test: 61 | - 'slide001_core059.png' 62 | - 'slide002_core017.png' 63 | - 'slide002_core033.png' 64 | - 'slide002_core080.png' 65 | - 'slide005_core063.png' 66 | - 'slide006_core115.png' 67 | - 'slide007_core002.png' 68 | - 'slide007_core044.png' 69 | normalization: False 70 | augmentation: 71 | use_augmentation: True # switch everything off and on, if True automatically flips and 90 degree rotations are used in this case 72 | gaussian_blur_kernel: 2 # range 3-7 73 | brightness_limit: 0.1 74 | contrast_limit: 0.1 75 | hue_shift_limit: 10 76 | sat_shift_limit: 10 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /dataset_dependent/gleason19/data_configs/data_config_crossval1.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | dataset_name: gleason19_crowdsourcing 3 | image_resolution: 1024 4 | class_no: 5 5 | class_names: ['NC', 'GG3', 'GG4', 'GG5', 'other'] 6 | class_weights: [1., 1., 1., 1., 1.] 7 | ignore_last_class: False # set True if last class will be ignored during training and testing 8 | ignore_last_class_only_for_testing: True # set True if last class will be ignored during testing 9 | path: /home/arne/data/Gleason_2019/resized_dataset_1024/ 10 | train: 11 | images: Crossval1/train 12 | masks: 13 | - Maps/Maps1_T 14 | - Maps/Maps2_T 15 | - Maps/Maps3_T 16 | - Maps/Maps4_T 17 | - Maps/Maps5_T 18 | - Maps/Maps6_T 19 | val: 20 | images: Crossval1/train 21 | masks: 22 | - Maps/STAPLE 23 | test: 24 | images: Crossval1/val 25 | masks: 26 | - Maps/STAPLE 27 | repeat_train_images: 28 | - 'slide001_core145.png' 29 | - 'slide007_core005.png' 30 | - 'slide007_core044.png' 31 | - 'slide003_core068.png' 32 | - 'slide002_core009.png' 33 | - 'slide005_core092.png' 34 | - 'slide002_core074.png' 35 | - 'slide002_core140.png' 36 | - 'slide002_core143.png' 37 | - 'slide002_core010.png' 38 | - 'slide003_core096.png' 39 | - 'slide007_core043.png' 40 | repeat_factor: 2 41 | visualize_images: 42 | train: 43 | - 'slide001_core005.png' 44 | - 'slide001_core011.png' 45 | - 'slide001_core146.png' 46 | - 'slide001_core156.png' 47 | - 'slide002_core033.png' 48 | - 'slide002_core050.png' 49 | - 'slide002_core072.png' 50 | - 'slide005_core075.png' 51 | - 'slide005_core104.png' 52 | - 'slide007_core146.png' 53 | val: 54 | - 'slide001_core041.png' 55 | - 'slide002_core026.png' 56 | - 'slide002_core042.png' 57 | - 'slide005_core041.png' 58 | - 'slide005_core069.png' 59 | - 'slide006_core105.png' 60 | - 'slide006_core110.png' 61 | - 'slide006_core125.png' 62 | test: 63 | - 'slide001_core041.png' 64 | - 'slide002_core026.png' 65 | - 'slide002_core042.png' 66 | - 'slide005_core041.png' 67 | - 'slide005_core069.png' 68 | - 'slide006_core105.png' 69 | - 'slide006_core110.png' 70 | - 'slide006_core125.png' 71 | normalization: False 72 | augmentation: 73 | use_augmentation: True # switch everything off and on, if True automatically flips and 90 degree rotations are used in this case 74 | gaussian_blur_kernel: 2 # range 3-7 75 | brightness_limit: 0.1 76 | contrast_limit: 0.1 77 | hue_shift_limit: 10 78 | sat_shift_limit: 10 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /dataset_dependent/gleason19/data_configs/data_config_crossval3.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | dataset_name: gleason19_crowdsourcing 3 | image_resolution: 1024 4 | class_no: 5 5 | class_names: ['NC', 'GG3', 'GG4', 'GG5', 'other'] 6 | class_weights: [1., 1., 1., 1., 1.] 7 | ignore_last_class: False # set True if last class will be ignored during training and testing 8 | ignore_last_class_only_for_testing: True # set True if last class will be ignored during testing 9 | path: /home/arne/data/Gleason_2019/resized_dataset_1024/ 10 | train: 11 | images: Crossval3/train 12 | masks: 13 | - Maps/Maps1_T 14 | - Maps/Maps2_T 15 | - Maps/Maps3_T 16 | - Maps/Maps4_T 17 | - Maps/Maps5_T 18 | - Maps/Maps6_T 19 | val: 20 | images: Crossval3/train 21 | masks: 22 | - Maps/STAPLE 23 | test: 24 | images: Crossval3/val 25 | masks: 26 | - Maps/STAPLE 27 | repeat_train_images: 28 | - 'slide001_core145.png' 29 | - 'slide007_core005.png' 30 | - 'slide007_core044.png' 31 | - 'slide003_core068.png' 32 | - 'slide007_core016.png' 33 | - 'slide002_core073.png' 34 | - 'slide002_core144.png' 35 | - 'slide001_core010.png' 36 | - 'slide002_core143.png' 37 | - 'slide002_core010.png' 38 | - 'slide003_core096.png' 39 | - 'slide007_core043.png' 40 | repeat_factor: 2 41 | visualize_images: 42 | train: 43 | - 'slide001_core005.png' 44 | - 'slide001_core011.png' 45 | - 'slide001_core146.png' 46 | - 'slide001_core156.png' 47 | - 'slide002_core033.png' 48 | - 'slide002_core050.png' 49 | - 'slide002_core072.png' 50 | - 'slide005_core075.png' 51 | - 'slide005_core104.png' 52 | - 'slide007_core146.png' 53 | val: 54 | - 'slide001_core159.png' 55 | - 'slide002_core052.png' 56 | - 'slide003_core136.png' 57 | - 'slide006_core011.png' 58 | - 'slide006_core084.png' 59 | - 'slide006_core155.png' 60 | - 'slide007_core043.png' 61 | - 'slide007_core047.png' 62 | test: 63 | - 'slide001_core159.png' 64 | - 'slide002_core052.png' 65 | - 'slide003_core136.png' 66 | - 'slide006_core011.png' 67 | - 'slide006_core084.png' 68 | - 'slide006_core155.png' 69 | - 'slide007_core043.png' 70 | - 'slide007_core047.png' 71 | normalization: False 72 | augmentation: 73 | use_augmentation: True # switch everything off and on, if True automatically flips and 90 degree rotations are used in this case 74 | gaussian_blur_kernel: 2 # range 3-7 75 | brightness_limit: 0.1 76 | contrast_limit: 0.1 77 | hue_shift_limit: 10 78 | sat_shift_limit: 10 79 | 80 | 81 | -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 16 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 4 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0001 22 | reg_factor: 0.00001 23 | latent_dim: 16 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.001 22 | reg_factor: 0.00001 23 | latent_dim: 16 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 16.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 4.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 1.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 4.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_4/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: vgg16 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 1000 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_vgg16/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.01 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.04 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 20 33 | artifact_interval: 20 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs_la/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/ablation_studies/run.sh: -------------------------------------------------------------------------------- 1 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_4/run.sh 2 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_dim_16/run.sh 3 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_001/run.sh 4 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_kl_0_0001/run.sh 5 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_4/run.sh 6 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_post_16/run.sh 7 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_s_prior_1/run.sh 8 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_01/run.sh 9 | ./dataset_dependent/gleason19/experiments/ablation_studies/pionono_zlr_0_04/run.sh 10 | 11 | -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_global/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: global # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 10 # steps of train logging (in number of batches) 27 | artifact_interval: 999 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_global/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet18 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: pixel # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 10 # steps of train logging (in number of batches) 27 | artifact_interval: 999 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/pionono/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: False 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 10 33 | artifact_interval: 9999 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/pionono/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 0 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/pionono/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 1 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/pionono/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 2 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/pionono/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | - Maps/Maps1_T 6 | - Maps/Maps2_T 7 | - Maps/Maps3_T 8 | - Maps/Maps4_T 9 | - Maps/Maps5_T 10 | - Maps/Maps6_T 11 | val: 12 | masks: 13 | - Maps/STAPLE 14 | - Maps/Maps1_T 15 | - Maps/Maps2_T 16 | - Maps/Maps3_T 17 | - Maps/Maps4_T 18 | - Maps/Maps5_T 19 | - Maps/Maps6_T 20 | test: 21 | masks: 22 | - Maps/STAPLE 23 | - Maps/Maps1_T 24 | - Maps/Maps2_T 25 | - Maps/Maps3_T 26 | - Maps/Maps4_T 27 | - Maps/Maps5_T 28 | - Maps/Maps6_T 29 | 30 | model: 31 | seed: 3 32 | pionono_config: 33 | gold_annotators: 34 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/pionono/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/pionono/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/pionono/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/pionono/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/pionono/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/cross_validation/pionono/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/punet/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: prob_unet # supervised prob_unet, conf_matrix, pionono 18 | prob_unet_config: 19 | original_backbone: False # use original prob-unet backbone (overwrites above configuration of backbone) 20 | kl_factor: 1.0 21 | reg_factor: 0.00001 22 | latent_dim: 6 23 | 24 | logging: 25 | interval: 10 26 | artifact_interval: 999 # steps of artifact (e.g. visualization) logging (in number of epochs) 27 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 28 | tags: 29 | stage: initial 30 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/punet/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/punet/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/punet/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/punet/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/punet/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/punet/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/punet/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/punet/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/punet/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/cross_validation/punet/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/run.sh: -------------------------------------------------------------------------------- 1 | ./dataset_dependent/gleason19/experiments/cross_validation/pionono/run.sh 2 | ./dataset_dependent/gleason19/experiments/cross_validation/punet/run.sh 3 | ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/run.sh 4 | ./dataset_dependent/gleason19/experiments/cross_validation/confmat_global/run.sh 5 | ./dataset_dependent/gleason19/experiments/cross_validation/confmat_pixel/run.sh 6 | 7 | -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/sup_staple/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: supervised # supervised, prob-unet, conf_matrix, pionono 18 | 19 | logging: 20 | interval: 10 21 | artifact_interval: 999 # steps of artifact (e.g. visualization) logging (in number of epochs) 22 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 23 | tags: 24 | stage: final 25 | spec: sup_staple 26 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | 6 | model: 7 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Maps/STAPLE 5 | 6 | model: 7 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/cross_validation/sup_staple/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval1.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval2.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_crossval3.yaml -ef ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/cross_validation/sup_staple/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_global/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: global # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 10 # steps of train logging (in number of batches) 27 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_global/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet18 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: conf_matrix # supervised, prob_unet, conf_matrix, pionono 18 | conf_matrix_config: 19 | level: pixel # 'global', 'pixel' 20 | min_trace: False # Switch if minimizing or maximizing trace of conf matrix 21 | activate_min_trace_epoch: -1 # epoch of activating trace minimization, before maximize, -1 to deactivate 22 | cmlayer_learning_rate: 0.01 23 | alpha: 1.0 24 | 25 | logging: 26 | interval: 10 # steps of train logging (in number of batches) 27 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 28 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 29 | tags: 30 | stage: initial 31 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: pionono # supervised, prob-unet, conf_matrix, pionono 18 | pionono_config: 19 | mc_samples: 5 20 | no_head_layers: 3 21 | kl_factor: 0.0005 22 | reg_factor: 0.00001 23 | latent_dim: 8 24 | gold_annotators: 25 | - 0 26 | always_goldpred: True 27 | z_learning_rate: 0.02 28 | z_prior_sigma: 2.0 29 | z_posterior_init_sigma: 8.0 30 | 31 | logging: 32 | interval: 10 33 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 34 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 35 | tags: 36 | stage: initial 37 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/pionono/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | - Gleason_2019/resized_dataset_1024/Maps/Maps1_T 6 | - Gleason_2019/resized_dataset_1024/Maps/Maps2_T 7 | - Gleason_2019/resized_dataset_1024/Maps/Maps3_T 8 | - Gleason_2019/resized_dataset_1024/Maps/Maps4_T 9 | - Gleason_2019/resized_dataset_1024/Maps/Maps5_T 10 | - Gleason_2019/resized_dataset_1024/Maps/Maps6_T 11 | 12 | model: 13 | seed: 0 14 | pionono_config: 15 | gold_annotators: 16 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/pionono/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | - Gleason_2019/resized_dataset_1024/Maps/Maps1_T 6 | - Gleason_2019/resized_dataset_1024/Maps/Maps2_T 7 | - Gleason_2019/resized_dataset_1024/Maps/Maps3_T 8 | - Gleason_2019/resized_dataset_1024/Maps/Maps4_T 9 | - Gleason_2019/resized_dataset_1024/Maps/Maps5_T 10 | - Gleason_2019/resized_dataset_1024/Maps/Maps6_T 11 | 12 | model: 13 | seed: 1 14 | pionono_config: 15 | gold_annotators: 16 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/pionono/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | - Gleason_2019/resized_dataset_1024/Maps/Maps1_T 6 | - Gleason_2019/resized_dataset_1024/Maps/Maps2_T 7 | - Gleason_2019/resized_dataset_1024/Maps/Maps3_T 8 | - Gleason_2019/resized_dataset_1024/Maps/Maps4_T 9 | - Gleason_2019/resized_dataset_1024/Maps/Maps5_T 10 | - Gleason_2019/resized_dataset_1024/Maps/Maps6_T 11 | 12 | model: 13 | seed: 2 14 | pionono_config: 15 | gold_annotators: 16 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/pionono/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | - Gleason_2019/resized_dataset_1024/Maps/Maps1_T 6 | - Gleason_2019/resized_dataset_1024/Maps/Maps2_T 7 | - Gleason_2019/resized_dataset_1024/Maps/Maps3_T 8 | - Gleason_2019/resized_dataset_1024/Maps/Maps4_T 9 | - Gleason_2019/resized_dataset_1024/Maps/Maps5_T 10 | - Gleason_2019/resized_dataset_1024/Maps/Maps6_T 11 | 12 | model: 13 | seed: 3 14 | pionono_config: 15 | gold_annotators: 16 | - 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/pionono/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval1 3 | #python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval2 4 | #python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/external_testing/pionono/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/pionono/run2.sh: -------------------------------------------------------------------------------- 1 | #python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval0 2 | #python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/pionono/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/pionono/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/external_testing/pionono/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/punet/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 3 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: prob_unet # supervised prob_unet, conf_matrix, pionono 18 | prob_unet_config: 19 | original_backbone: False # use original prob-unet backbone (overwrites above configuration of backbone) 20 | kl_factor: 1.0 21 | reg_factor: 0.00001 22 | latent_dim: 6 23 | 24 | logging: 25 | interval: 10 26 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 27 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 28 | tags: 29 | stage: initial 30 | spec: default -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/punet/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/punet/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/punet/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/punet/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/punet/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/punet/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/punet/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/punet/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/punet/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/punet/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/external_testing/punet/ -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/run.sh: -------------------------------------------------------------------------------- 1 | ./dataset_dependent/gleason19/experiments/external_testing/pionono/run.sh 2 | ./dataset_dependent/gleason19/experiments/external_testing/punet/run.sh 3 | ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/run.sh 4 | ./dataset_dependent/gleason19/experiments/external_testing/confmat_global/run.sh 5 | ./dataset_dependent/gleason19/experiments/external_testing/confmat_pixel/run.sh 6 | 7 | -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/sup_staple/base_config.yaml: -------------------------------------------------------------------------------- 1 | model: 2 | seed: 0 3 | load_model: None 4 | batch_size: 2 5 | optimizer: adam # sgd_mom, adam 6 | epochs: 100 7 | loss: gdice # ce, dice, gdice, focal 8 | learning_rate: 0.0001 9 | lr_decay_after_epoch: 40 10 | lr_decay_param: 0.1 11 | backbone: unet # unet, unetpp, deeplabv3p, pspnet, linknet 12 | encoder: 13 | backbone: resnet34 # densenet121, resnet34, resnet18, efficientnet-b1, .. 14 | weights: imagenet # imagenet or None 15 | decoder: 16 | activation: softmax # softmax or None 17 | method: supervised # supervised, prob-unet, conf_matrix, pionono 18 | 19 | logging: 20 | interval: 10 21 | artifact_interval: 10 # steps of artifact (e.g. visualization) logging (in number of epochs) 22 | mlruns_folder: /work/work_arne/mlflow_server # http://127.0.0.1:5002 23 | tags: 24 | stage: final 25 | spec: sup_staple 26 | experiment: crossval -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval0/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | 6 | model: 7 | seed: 0 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval1/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | 6 | model: 7 | seed: 1 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval2/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | 6 | model: 7 | seed: 2 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval3/exp_config.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | train: 3 | masks: 4 | - Gleason_2019/resized_dataset_1024/Maps/STAPLE 5 | 6 | model: 7 | seed: 3 -------------------------------------------------------------------------------- /dataset_dependent/gleason19/experiments/external_testing/sup_staple/run.sh: -------------------------------------------------------------------------------- 1 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval0 2 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval1 3 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval2 4 | python src/main.py -c ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/base_config.yaml -dc ./dataset_dependent/gleason19/data_configs/data_config_external_testing.yaml -ef ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/cval3 5 | 6 | python src/postprocessing_tools/calculate_results.py -e ./dataset_dependent/gleason19/experiments/external_testing/sup_staple/ -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | absl-py==0.15.0 2 | aiohttp==3.8.1 3 | aiosignal==1.2.0 4 | albumentations==1.0.3 5 | alembic==1.7.5 6 | async-timeout==4.0.1 7 | attrs==21.4.0 8 | blinker==1.4 9 | Bottleneck==1.3.2 10 | brotlipy==0.7.0 11 | cachetools==4.2.2 12 | certifi==2021.10.8 13 | cffi==1.15.0 14 | charset-normalizer==2.0.4 15 | click==8.0.3 16 | cloudpickle==2.0.0 17 | cryptography==3.4.8 18 | cycler==0.11.0 19 | cytoolz==0.11.0 20 | dask==2021.10.0 21 | databricks-cli==0.16.2 22 | docker==5.0.3 23 | efficientnet-pytorch==0.6.3 24 | entrypoints==0.3 25 | Flask==2.0.2 26 | fonttools==4.25.0 27 | frozenlist==1.2.0 28 | fsspec==2022.1.0 29 | gitdb==4.0.9 30 | GitPython==3.1.26 31 | google-auth==1.33.0 32 | google-auth-oauthlib==0.4.1 33 | greenlet==1.1.2 34 | grpcio==1.42.0 35 | gunicorn==20.1.0 36 | idna==3.3 37 | imagecodecs==2021.8.26 38 | imageio==2.13.1 39 | imgaug==0.4.0 40 | importlib-metadata==4.8.2 41 | itsdangerous==2.0.1 42 | Jinja2==3.0.3 43 | joblib==1.1.0 44 | kiwisolver==1.3.1 45 | locket==0.2.1 46 | Mako==1.1.6 47 | Markdown==3.3.4 48 | MarkupSafe==2.0.1 49 | matplotlib==3.4.3 50 | mkl-fft==1.3.1 51 | mkl-random==1.2.2 52 | mkl-service==2.4.0 53 | mlflow==1.23.1 54 | multidict==5.2.0 55 | munch==2.5.0 56 | munkres==1.1.4 57 | networkx==2.6.3 58 | numexpr==2.8.1 59 | numpy==1.21.2 60 | oauthlib==3.1.1 61 | olefile==0.46 62 | packaging==21.3 63 | pandas==1.3.4 64 | partd==1.2.0 65 | Pillow==8.4.0 66 | pip==21.2.4 67 | pretrainedmodels==0.7.4 68 | prometheus-client==0.13.0 69 | prometheus-flask-exporter==0.18.7 70 | protobuf==3.19.1 71 | pyasn1==0.4.8 72 | pyasn1-modules==0.2.8 73 | pycparser==2.21 74 | PyJWT==2.1.0 75 | pyOpenSSL==21.0.0 76 | pyparsing==3.0.4 77 | PyQt5==5.12.3 78 | PyQt5_sip==4.19.18 79 | PyQtChart==5.12 80 | PyQtWebEngine==5.12.1 81 | PySocks==1.7.1 82 | python-dateutil==2.8.2 83 | pytz==2021.3 84 | PyWavelets==1.1.1 85 | PyYAML==6.0 86 | querystring-parser==1.2.4 87 | requests==2.27.1 88 | requests-oauthlib==1.3.0 89 | rsa==4.7.2 90 | scikit-image==0.18.3 91 | scikit-learn==1.0.1 92 | scipy==1.7.3 93 | segmentation-models-pytorch==0.2.1 94 | setuptools==58.0.4 95 | Shapely==1.7.1 96 | SimpleITK==2.1.1 97 | six==1.16.0 98 | smmap==5.0.0 99 | SQLAlchemy==1.4.31 100 | sqlparse==0.4.2 101 | tabulate==0.8.9 102 | tensorboard==2.6.0 103 | tensorboard-data-server==0.6.0 104 | tensorboard-plugin-wit==1.6.0 105 | tensorboardX==2.2 106 | threadpoolctl==2.2.0 107 | tifffile==2021.7.2 108 | timm==0.4.12 109 | toolz==0.11.2 110 | torch==1.10.1 111 | torchaudio==0.10.1 112 | torchvision==0.11.2 113 | tornado==6.1 114 | tqdm==4.62.3 115 | typing-extensions==3.10.0.2 116 | urllib3==1.26.7 117 | websocket-client==1.2.3 118 | Werkzeug==2.0.2 119 | wheel==0.37.1 120 | yarl==1.6.3 121 | zipp==3.7.0 122 | -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | data/ 3 | 4 | # Byte-compiled / optimized / DLL files 5 | __pycache__/ 6 | *.py[cod] 7 | *$py.class 8 | 9 | # C extensions 10 | *.so 11 | 12 | # Distribution / packaging 13 | .Python 14 | build/ 15 | develop-eggs/ 16 | dist/ 17 | downloads/ 18 | eggs/ 19 | .eggs/ 20 | lib/ 21 | lib64/ 22 | parts/ 23 | sdist/ 24 | var/ 25 | wheels/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | MANIFEST 30 | 31 | # PyInstaller 32 | # Usually these files are written by a python script from a template 33 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 34 | *.manifest 35 | *.spec 36 | 37 | # Installer logs 38 | pip-log.txt 39 | pip-delete-this-directory.txt 40 | 41 | # Unit test / coverage reports 42 | htmlcov/ 43 | .tox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | 53 | # Translations 54 | *.mo 55 | *.pot 56 | 57 | # Django stuff: 58 | *.log 59 | local_settings.py 60 | db.sqlite3 61 | 62 | # Flask stuff: 63 | instance/ 64 | .webassets-cache 65 | 66 | # Scrapy stuff: 67 | .scrapy 68 | 69 | # Sphinx documentation 70 | docs/_build/ 71 | 72 | # PyBuilder 73 | target/ 74 | 75 | # Jupyter Notebook 76 | .ipynb_checkpoints 77 | 78 | # pyenv 79 | .python-version 80 | 81 | # celery beat schedule file 82 | celerybeat-schedule 83 | 84 | # SageMath parsed files 85 | *.sage.py 86 | 87 | # Environments 88 | .env 89 | .venv 90 | env/ 91 | venv/ 92 | ENV/ 93 | env.bak/ 94 | venv.bak/ 95 | 96 | # Spyder project settings 97 | .spyderproject 98 | .spyproject 99 | 100 | # Rope project settings 101 | .ropeproject 102 | 103 | # mkdocs documentation 104 | /site 105 | 106 | # mypy 107 | .mypy_cache/ 108 | -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/README.md: -------------------------------------------------------------------------------- 1 | # Probabilistic UNet in PyTorch 2 | A Probabilistic U-Net for segmentation of ambiguous images implemented in PyTorch. This is a pytorch implementation of this paper https://arxiv.org/abs/1806.05034, for which the code can be found here: https://github.com/SimonKohl/probabilistic_unet. 3 | 4 | ## Adding KL divergence for Independent distribution 5 | In order to implement an Gaussian distribution with an axis aligned covariance matrix in PyTorch, I needed to wrap a Normal distribution in a Independent distribution. Therefore you need the add the following to the PyTorch source code at torch/distributions/kl.py (source: https://github.com/pytorch/pytorch/issues/13545). 6 | 7 | ``` 8 | def _kl_independent_independent(p, q): 9 | if p.reinterpreted_batch_ndims != q.reinterpreted_batch_ndims: 10 | raise NotImplementedError 11 | result = kl_divergence(p.base_dist, q.base_dist) 12 | return _sum_rightmost(result, p.reinterpreted_batch_ndims) 13 | ``` 14 | 15 | ## Training 16 | In order to train your own Probabilistic UNet in PyTorch, you should first write your own data loader. Then you can use the following code snippet to train the network 17 | 18 | ``` 19 | train_loader = define this yourself 20 | net = ProbabilisticUnet(no_channels,no_classes,filter_list,latent_dim,no_fcomb_convs,beta) 21 | net.to(device) 22 | optimizer = torch.optim.Adam(net.parameters(), lr=1e-4, weight_decay=0) 23 | for epoch in range(epochs): 24 | for step, (patch, mask) in enumerate(train_loader): 25 | patch = patch.to(device) 26 | mask = mask.to(device) 27 | mask = torch.unsqueeze(mask,1) 28 | net.forward(patch, mask, training=True) 29 | elbo = net.elbo(mask) 30 | reg_loss = l2_regularisation(net.posterior) + l2_regularisation(net.prior) + l2_regularisation(net.fcomb.layers) 31 | loss = -elbo + 1e-5 * reg_loss 32 | optimizer.zero_grad() 33 | loss.backward() 34 | optimizer.step() 35 | ``` 36 | 37 | ## Train on LIDC Dataset 38 | One of the datasets used in the original paper is the [LIDC dataset](https://wiki.cancerimagingarchive.net). I've preprocessed this data and stored them in a pickle file, which you can [download here](https://drive.google.com/drive/folders/1xKfKCQo8qa6SAr3u7qWNtQjIphIrvmd5?usp=sharing). After downloading the files you should place them in a folder called 'data'. After that, you can train your own Probabilistic UNet on the LIDC dataset using the simple train script provided in train_model.py. 39 | 40 | -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/Probabilistic_Unet_Pytorch/__init__.py -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/load_LIDC_data.py: -------------------------------------------------------------------------------- 1 | import torch 2 | from torch.utils.data.dataset import Dataset 3 | from torch.utils.data import DataLoader 4 | import numpy as np 5 | import os 6 | import random 7 | import pickle 8 | 9 | class LIDC_IDRI(Dataset): 10 | images = [] 11 | labels = [] 12 | series_uid = [] 13 | 14 | def __init__(self, dataset_location, transform=None): 15 | self.transform = transform 16 | max_bytes = 2**31 - 1 17 | data = {} 18 | for file in os.listdir(dataset_location): 19 | filename = os.fsdecode(file) 20 | if '.pickle' in filename: 21 | print("Loading file", filename) 22 | file_path = dataset_location + filename 23 | bytes_in = bytearray(0) 24 | input_size = os.path.getsize(file_path) 25 | with open(file_path, 'rb') as f_in: 26 | for _ in range(0, input_size, max_bytes): 27 | bytes_in += f_in.read(max_bytes) 28 | new_data = pickle.loads(bytes_in) 29 | data.update(new_data) 30 | 31 | for key, value in data.items(): 32 | self.images.append(value['image'].astype(float)) 33 | self.labels.append(value['masks']) 34 | self.series_uid.append(value['series_uid']) 35 | 36 | assert (len(self.images) == len(self.labels) == len(self.series_uid)) 37 | 38 | for img in self.images: 39 | assert np.max(img) <= 1 and np.min(img) >= 0 40 | for label in self.labels: 41 | assert np.max(label) <= 1 and np.min(label) >= 0 42 | 43 | del new_data 44 | del data 45 | 46 | def __getitem__(self, index): 47 | image = np.expand_dims(self.images[index], axis=0) 48 | 49 | #Randomly select one of the four labels for this image 50 | label = self.labels[index][random.randint(0,3)].astype(float) 51 | if self.transform is not None: 52 | image = self.transform(image) 53 | 54 | series_uid = self.series_uid[index] 55 | 56 | # Convert image and label to torch tensors 57 | image = torch.from_numpy(image) 58 | label = torch.from_numpy(label) 59 | 60 | #Convert uint8 to float tensors 61 | image = image.type(torch.FloatTensor) 62 | label = label.type(torch.FloatTensor) 63 | 64 | return image, label, series_uid 65 | 66 | # Override to give PyTorch size of dataset 67 | def __len__(self): 68 | return len(self.images) -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/train_model.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import numpy as np 3 | from torch.utils.data import DataLoader 4 | from torch.utils.data.sampler import SubsetRandomSampler 5 | from load_LIDC_data import LIDC_IDRI 6 | from probabilistic_unet import ProbabilisticUnet 7 | from utils import l2_regularisation 8 | 9 | device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') 10 | dataset = LIDC_IDRI(dataset_location = 'data/') 11 | dataset_size = len(dataset) 12 | indices = list(range(dataset_size)) 13 | split = int(np.floor(0.1 * dataset_size)) 14 | np.random.shuffle(indices) 15 | train_indices, test_indices = indices[split:], indices[:split] 16 | train_sampler = SubsetRandomSampler(train_indices) 17 | test_sampler = SubsetRandomSampler(test_indices) 18 | train_loader = DataLoader(dataset, batch_size=5, sampler=train_sampler) 19 | test_loader = DataLoader(dataset, batch_size=1, sampler=test_sampler) 20 | print("Number of training/test patches:", (len(train_indices),len(test_indices))) 21 | 22 | net = ProbabilisticUnet(input_channels=1, num_classes=1, num_filters=[32,64,128,192], latent_dim=2, no_convs_fcomb=4, beta=10.0) 23 | net.to(device) 24 | optimizer = torch.optim.Adam(net.parameters(), lr=1e-4, weight_decay=0) 25 | epochs = 10 26 | for epoch in range(epochs): 27 | for step, (patch, mask, _) in enumerate(train_loader): 28 | patch = patch.to(device) 29 | mask = mask.to(device) 30 | mask = torch.unsqueeze(mask,1) 31 | net.forward(patch, mask, training=True) 32 | elbo = net.elbo(mask) 33 | reg_loss = l2_regularisation(net.posterior) + l2_regularisation(net.prior) + l2_regularisation(net.fcomb.layers) 34 | loss = -elbo + 1e-5 * reg_loss 35 | optimizer.zero_grad() 36 | loss.backward() 37 | optimizer.step() -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/unet.py: -------------------------------------------------------------------------------- 1 | from Probabilistic_Unet_Pytorch.unet_blocks import * 2 | import torch.nn.functional as F 3 | 4 | class Unet(nn.Module): 5 | """ 6 | A UNet (https://arxiv.org/abs/1505.04597) implementation. 7 | input_channels: the number of channels in the image (1 for greyscale and 3 for RGB) 8 | num_classes: the number of classes to predict 9 | num_filters: list with the amount of filters per layer 10 | apply_last_layer: boolean to apply last layer or not (not used in Probabilistic UNet) 11 | padidng: Boolean, if true we pad the images with 1 so that we keep the same dimensions 12 | """ 13 | 14 | def __init__(self, input_channels, num_classes, num_filters, initializers, apply_last_layer=True, padding=True): 15 | super(Unet, self).__init__() 16 | self.input_channels = input_channels 17 | self.num_classes = num_classes 18 | self.num_filters = num_filters 19 | self.padding = padding 20 | self.activation_maps = [] 21 | self.apply_last_layer = apply_last_layer 22 | self.contracting_path = nn.ModuleList() 23 | 24 | for i in range(len(self.num_filters)): 25 | input = self.input_channels if i == 0 else output 26 | output = self.num_filters[i] 27 | 28 | if i == 0: 29 | pool = False 30 | else: 31 | pool = True 32 | 33 | self.contracting_path.append(DownConvBlock(input, output, initializers, padding, pool=pool)) 34 | 35 | self.upsampling_path = nn.ModuleList() 36 | 37 | n = len(self.num_filters) - 2 38 | for i in range(n, -1, -1): 39 | input = output + self.num_filters[i] 40 | output = self.num_filters[i] 41 | self.upsampling_path.append(UpConvBlock(input, output, initializers, padding)) 42 | 43 | if self.apply_last_layer: 44 | self.last_layer = nn.Conv2d(output, num_classes, kernel_size=1) 45 | #nn.init.kaiming_normal_(self.last_layer.weight, mode='fan_in',nonlinearity='relu') 46 | #nn.init.normal_(self.last_layer.bias) 47 | 48 | 49 | def forward(self, x, val): 50 | blocks = [] 51 | for i, down in enumerate(self.contracting_path): 52 | x = down(x) 53 | if i != len(self.contracting_path)-1: 54 | blocks.append(x) 55 | 56 | for i, up in enumerate(self.upsampling_path): 57 | x = up(x, blocks[-i-1]) 58 | 59 | del blocks 60 | 61 | #Used for saving the activations and plotting 62 | if val: 63 | self.activation_maps.append(x) 64 | 65 | if self.apply_last_layer: 66 | x = self.last_layer(x) 67 | 68 | return x 69 | -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/unet_blocks.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | from torch.autograd import Variable 4 | import numpy as np 5 | from Probabilistic_Unet_Pytorch.utils import init_weights 6 | 7 | class DownConvBlock(nn.Module): 8 | """ 9 | A block of three convolutional layers where each layer is followed by a non-linear activation function 10 | Between each block we add a pooling operation. 11 | """ 12 | def __init__(self, input_dim, output_dim, initializers, padding, pool=True): 13 | super(DownConvBlock, self).__init__() 14 | layers = [] 15 | 16 | if pool: 17 | layers.append(nn.AvgPool2d(kernel_size=2, stride=2, padding=0, ceil_mode=True)) 18 | 19 | layers.append(nn.Conv2d(input_dim, output_dim, kernel_size=3, stride=1, padding=int(padding))) 20 | layers.append(nn.ReLU(inplace=True)) 21 | layers.append(nn.Conv2d(output_dim, output_dim, kernel_size=3, stride=1, padding=int(padding))) 22 | layers.append(nn.ReLU(inplace=True)) 23 | layers.append(nn.Conv2d(output_dim, output_dim, kernel_size=3, stride=1, padding=int(padding))) 24 | layers.append(nn.ReLU(inplace=True)) 25 | 26 | self.layers = nn.Sequential(*layers) 27 | 28 | self.layers.apply(init_weights) 29 | 30 | def forward(self, patch): 31 | return self.layers(patch) 32 | 33 | 34 | class UpConvBlock(nn.Module): 35 | """ 36 | A block consists of an upsampling layer followed by a convolutional layer to reduce the amount of channels and then a DownConvBlock 37 | If bilinear is set to false, we do a transposed convolution instead of upsampling 38 | """ 39 | def __init__(self, input_dim, output_dim, initializers, padding, bilinear=True): 40 | super(UpConvBlock, self).__init__() 41 | self.bilinear = bilinear 42 | 43 | if not self.bilinear: 44 | self.upconv_layer = nn.ConvTranspose2d(input_dim, output_dim, kernel_size=2, stride=2) 45 | self.upconv_layer.apply(init_weights) 46 | 47 | self.conv_block = DownConvBlock(input_dim, output_dim, initializers, padding, pool=False) 48 | 49 | def forward(self, x, bridge): 50 | if self.bilinear: 51 | up = nn.functional.interpolate(x, mode='bilinear', scale_factor=2, align_corners=True) 52 | else: 53 | up = self.upconv_layer(x) 54 | 55 | assert up.shape[3] == bridge.shape[3] 56 | out = torch.cat([up, bridge], 1) 57 | out = self.conv_block(out) 58 | 59 | return out -------------------------------------------------------------------------------- /src/Probabilistic_Unet_Pytorch/utils.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | from torch.autograd import Variable 4 | import torch.nn.functional as F 5 | import matplotlib.pyplot as plt 6 | 7 | def truncated_normal_(tensor, mean=0, std=1): 8 | size = tensor.shape 9 | tmp = tensor.new_empty(size + (4,)).normal_() 10 | valid = (tmp < 2) & (tmp > -2) 11 | ind = valid.max(-1, keepdim=True)[1] 12 | tensor.data.copy_(tmp.gather(-1, ind).squeeze(-1)) 13 | tensor.data.mul_(std).add_(mean) 14 | 15 | def init_weights(m): 16 | if type(m) == nn.Conv2d or type(m) == nn.ConvTranspose2d: 17 | nn.init.kaiming_normal_(m.weight, mode='fan_in', nonlinearity='relu') 18 | #nn.init.normal_(m.weight, std=0.001) 19 | #nn.init.normal_(m.bias, std=0.001) 20 | truncated_normal_(m.bias, mean=0, std=0.001) 21 | 22 | def init_weights_orthogonal_normal(m): 23 | if type(m) == nn.Conv2d or type(m) == nn.ConvTranspose2d: 24 | nn.init.orthogonal_(m.weight) 25 | truncated_normal_(m.bias, mean=0, std=0.001) 26 | #nn.init.normal_(m.bias, std=0.001) 27 | 28 | def l2_regularisation(m): 29 | l2_reg = None 30 | 31 | for W in m.parameters(): 32 | if l2_reg is None: 33 | l2_reg = W.norm(2) 34 | else: 35 | l2_reg = l2_reg + W.norm(2) 36 | return l2_reg 37 | 38 | def save_mask_prediction_example(mask, pred, iter): 39 | plt.imshow(pred[0,:,:],cmap='Greys') 40 | plt.savefig('images/'+str(iter)+"_prediction.png") 41 | plt.imshow(mask[0,:,:],cmap='Greys') 42 | plt.savefig('images/'+str(iter)+"_mask.png") -------------------------------------------------------------------------------- /src/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/__init__.py -------------------------------------------------------------------------------- /src/main.py: -------------------------------------------------------------------------------- 1 | import os 2 | import argparse 3 | import traceback 4 | 5 | import torch 6 | 7 | import utils.globals 8 | from data import get_data 9 | from utils.globals import init_global_config 10 | from model_handler import ModelHandler 11 | from utils.mlflow_logger import start_logging, log_artifact_folder 12 | 13 | # check training with expert labels 14 | # check ignore last class 15 | # check normalization 16 | 17 | 18 | def main(): 19 | # log metrics and artifacts with mlflow 20 | start_logging() 21 | try: 22 | # load data 23 | trainloader, validate_data, test_data, annotators = get_data() 24 | 25 | # load, train and test the model 26 | model_handler = ModelHandler(annotators) 27 | model_handler.train(trainloader, validate_data) 28 | model_handler.test(test_data) 29 | except Exception as e: # catch the error message to log it to mlflow 30 | f = open(os.path.join(config['logging']['experiment_folder'], 'error_message.txt'), "a") 31 | f.write(str(e)) 32 | f.write(traceback.format_exc()) 33 | f.close() 34 | print(e) 35 | print(traceback.format_exc()) 36 | log_artifact_folder() 37 | 38 | 39 | if __name__ == "__main__": 40 | print('Load configuration') 41 | parser = argparse.ArgumentParser(description="Cancer Classification") 42 | parser.add_argument("--config", "-c", type=str, default="./config.yaml", 43 | help="Config path (yaml file expected) to default config.") 44 | parser.add_argument("--dataset_config", "-dc", type=str, default="./dataset_dependent/gleason19/data_configs/data_config_crossval0.yaml", 45 | help="Config path (yaml file expected) to dataset config. Parameters will override defaults.") 46 | parser.add_argument("--experiment_folder", "-ef", type=str, default="./dataset_dependent/gleason19/experiments/cross_validation/pionono/cval0", 47 | help="Config path to experiment folder. This folder is expected to contain a file called " 48 | "'exp_config.yaml'. Parameters will override defaults. Optional.") 49 | args = parser.parse_args() 50 | init_global_config(args) 51 | config = utils.globals.config 52 | torch.manual_seed(config['model']['seed']) 53 | main() -------------------------------------------------------------------------------- /src/postprocessing_tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/postprocessing_tools/__init__.py -------------------------------------------------------------------------------- /src/postprocessing_tools/agreement_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/postprocessing_tools/agreement_plot.png -------------------------------------------------------------------------------- /src/postprocessing_tools/calculate_results.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import mlflow 4 | import pandas as pd 5 | 6 | parser = argparse.ArgumentParser(description="Calculate mean and s.e. of cross validation.") 7 | parser.add_argument("--exp_dir", "-e", type=str, 8 | default="../../experiments/arvaniti_tma/experiments/cross_validation/punet/", 9 | help="Input directory of dataset.") 10 | args = parser.parse_args() 11 | 12 | mlruns_folder = '/work/work_arne/mlflow_server' 13 | 14 | exp_dir = args.exp_dir 15 | cv_folders = ["cval0/", "cval1/", "cval2/", "cval3/"] 16 | results_path = 'test/quantitative_results/results.csv' 17 | output_file = 'crossval_results.csv' 18 | 19 | df = pd.DataFrame() 20 | 21 | failed_cvs = [] 22 | 23 | if not os.path.isdir(exp_dir): 24 | raise Exception('Directory not found!') 25 | 26 | for cv in range(len(cv_folders)): 27 | path_input_results = exp_dir + cv_folders[cv] + results_path 28 | if os.path.isfile(path_input_results): 29 | cv_df = pd.read_csv(path_input_results, header=None, index_col=0) 30 | df = pd.concat([df, cv_df], axis=1) 31 | else: 32 | failed_cvs.append(cv_folders[cv]) 33 | 34 | mean = df.mean(axis='columns').rename('test_{}_mean'.format) 35 | se = df.sem(axis='columns').rename('test_{}_se'.format) 36 | 37 | mlflow.set_tracking_uri(mlruns_folder) 38 | 39 | # derive dataset 40 | if 'gleason19' in exp_dir: 41 | dataset_name = 'gleason19_crowdsourcing' 42 | elif 'arvaniti_tma' in exp_dir: 43 | dataset_name = 'arvaniti_tma_crowdsourcing' 44 | else: 45 | dataset_name = 'breast_tnbc' 46 | mlflow.set_experiment(experiment_name=dataset_name) 47 | 48 | # derive run name 49 | run_name = exp_dir.split("/")[-3] + '_' + exp_dir.split("/")[-2] + '_crossval_results' 50 | mlflow.start_run(run_name=run_name) 51 | 52 | # todo: save to mlflow 53 | mlflow.log_metrics(mean) 54 | mlflow.log_metrics(se) 55 | mlflow.set_tag('mode', 'results') 56 | 57 | print(mean) 58 | print(se) 59 | 60 | mlflow.log_param('failed_cvs', failed_cvs) 61 | print('Failed cvs:') 62 | print(failed_cvs) -------------------------------------------------------------------------------- /src/postprocessing_tools/dist_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/postprocessing_tools/dist_plot.png -------------------------------------------------------------------------------- /src/postprocessing_tools/dist_plot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/postprocessing_tools/dist_plot1.png -------------------------------------------------------------------------------- /src/postprocessing_tools/plot_agreement.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is a script to plot the agreement of the raters in terms of Cohens Kappa. 3 | """ 4 | 5 | import numpy as np 6 | import matplotlib 7 | import matplotlib.pyplot as plt 8 | import matplotlib.lines as mlines 9 | 10 | matplotlib.rcParams.update({'font.size': 11}) 11 | # r1_ag = [0.36, 0.41, 0.48, 0.45, 0.48, 0.592, 0.6] 12 | # r2_ag = [0.36, 0.46, 0.53, 0.53, 0.64, 0.369, 0.26] 13 | # r3_ag = [0.41, 0.46, 0.69, 0.72, 0.60, 0.666, 0.642] 14 | # r4_ag = [0.48, 0.53, 0.69, 0.72, 0.60, 0.673, 0.681] 15 | # r5_ag = [0.45, 0.53, 0.72, 0.67, 0.58, 0.724, 0.741] 16 | # r6_ag = [0.48, 0.64, 0.60, 0.58, 0.65, 0.629, 0.627] 17 | 18 | 19 | # In each row: agreement to each other rater, 0.0 (later filled with mean), Pionono agreement 20 | r1_ag = [0.36, 0.41, 0.48, 0.45, 0.48, 0.0, 0.6] 21 | r2_ag = [0.36, 0.46, 0.53, 0.53, 0.64, 0.0, 0.26] 22 | r3_ag = [0.41, 0.46, 0.69, 0.72, 0.60, 0.0, 0.642] 23 | r4_ag = [0.48, 0.53, 0.69, 0.67, 0.58, 0.0, 0.681] 24 | r5_ag = [0.45, 0.53, 0.72, 0.67, 0.65, 0.0, 0.741] 25 | r6_ag = [0.48, 0.64, 0.60, 0.58, 0.65, 0.0, 0.627] 26 | 27 | all_r = np.array([r1_ag, r2_ag, r3_ag, r4_ag, r5_ag, r6_ag]) 28 | 29 | fig, ax = plt.subplots(figsize=(4, 4.2)) 30 | 31 | labels = ['r=1', 'r=2', 'r=3', 'r=4', 'r=5', 'r=6', 'r-mean', 'Pionono'] 32 | colors = ['tab:orange', 'tab:blue', 'tab:red', 'tab:purple', 'tab:cyan', 'tab:green', 'k', 'k'] 33 | markers = ['o', 'o', 'o', 'o', 'o', 'o', 'o', '*'] 34 | markersizes = [10,10,10,10,10,10,14,14] 35 | indices = range(8) 36 | 37 | for i in range(all_r.shape[0]): 38 | x = all_r[i] 39 | x[5] = np.mean(x[0:5]) 40 | label_indices = [y for k, y in enumerate(indices) if k!=i] 41 | 42 | for j in range(x.shape[0]): 43 | idx = label_indices[j] 44 | 45 | ax.plot(x[j], i + 1, color=colors[idx], marker=markers[idx], markersize=markersizes[idx], 46 | linestyle='None', alpha=0.8) 47 | 48 | 49 | legend_list = [] 50 | for i in [5,4,3,2,1,0]: 51 | legend_list.append(mlines.Line2D([], [], color=colors[i], marker=markers[i], linestyle='None', 52 | markersize=markersizes[i], label=labels[i])) 53 | 54 | for i in [6,7]: 55 | legend_list.append(mlines.Line2D([], [], color=colors[i], marker=markers[i], linestyle='None', 56 | markersize=markersizes[i], label=labels[i])) 57 | 58 | plt.legend(handles=legend_list) 59 | plt.ylabel('Rater') 60 | plt.xlabel("Unweighted Cohen\'s Kappa") 61 | ax.grid(axis='y') 62 | plt.tight_layout() 63 | # ax.legend(numpoints=1) 64 | # plt.legend() 65 | plt.savefig("agreement_plot.png") 66 | 67 | -------------------------------------------------------------------------------- /src/postprocessing_tools/resize_images.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | from PIL import Image 3 | import os, sys 4 | 5 | path = "/home/arne/Documents/Research/Submissions/Pionono/images/examples/intra-observer_variability/" 6 | # path = "/home/arne/Documents/Research/Submissions/Pionono/images/examples/inter-observer_variability/" 7 | # path = "/home/arne/Documents/Research/Submissions/Pionono/images/examples/uncertainty" 8 | dirs = os.listdir( path ) 9 | print(dirs) 10 | 11 | def resize(): 12 | for item in dirs: 13 | if os.path.isfile(path+item): 14 | im = Image.open(path+item) 15 | f, e = os.path.splitext(path+item) 16 | imResize = im.resize((200,200), Image.ANTIALIAS) 17 | imResize.save(f+ '.png', 'PNG') 18 | 19 | resize() -------------------------------------------------------------------------------- /src/preprocessing_tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/preprocessing_tools/__init__.py -------------------------------------------------------------------------------- /src/preprocessing_tools/convert_masks_to_rgb.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import cv2 4 | import shutil 5 | import random 6 | import numpy as np 7 | from scipy import stats 8 | from utils.saving import CLASS_COLORS_BGR 9 | 10 | 11 | parser = argparse.ArgumentParser(description="Resize Images of prostate TMA") 12 | parser.add_argument("--input_dir", "-i", type=str, 13 | default="/data/BasesDeDatos/Gleason_2019/resized_dataset_1024/", 14 | help="Input directory of dataset.") 15 | parser.add_argument("--output_dir", "-o", type=str, 16 | default="/data/BasesDeDatos/Gleason_2019/resized_dataset_1024/rgb_masks/", 17 | help="Output directory of converted masks.") 18 | args = parser.parse_args() 19 | 20 | map_dir = 'Maps/' 21 | map_annotator_dirs = ['Maps1_T/', 'Maps2_T/', 'Maps3_T/', 'Maps4_T/', 'Maps5_T/', 'Maps6_T/', 'STAPLE/', 'MV/'] 22 | 23 | os.makedirs(args.output_dir, exist_ok=True) 24 | for m in range(len(map_annotator_dirs)): 25 | map_annotator_dir = map_annotator_dirs[m] 26 | in_dir = args.input_dir + map_dir + map_annotator_dir 27 | out_dir = args.output_dir + map_dir + map_annotator_dir 28 | os.makedirs(out_dir, exist_ok=True) 29 | img_file_list = os.listdir(in_dir) 30 | print(map_annotator_dir) 31 | print('Images found:' + str(len(img_file_list))) 32 | resolution_list = [] 33 | for img_file in img_file_list: 34 | img_path_in = in_dir + img_file 35 | img_path_out = out_dir + img_file 36 | 37 | image = cv2.imread(img_path_in) 38 | print('Image: ' + img_file + ' Shape: ' + str(image.shape)) 39 | 40 | # classes : 0 (normal tissue), 1 (GG3), 2 (GG4), 3 (GG5), 4 (background) 41 | ones = np.ones_like(image) 42 | 43 | for c in range(len(CLASS_COLORS_BGR)): 44 | image = np.where(image==c, ones*CLASS_COLORS_BGR[c], image) 45 | 46 | assert np.all(image >= 0) 47 | assert np.all(image <= 255) 48 | 49 | cv2.imwrite(img_path_out, image) -------------------------------------------------------------------------------- /src/preprocessing_tools/copy_val_maps.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import shutil 4 | import yaml 5 | 6 | parser = argparse.ArgumentParser( 7 | description="This code copies the validation masks of each annotator that are used for visualization") 8 | parser.add_argument("--input_dir", "-i", type=str, 9 | default="/home/arne/datasets/Gleason_2019/resized_dataset_1024/", 10 | help="Input directory of dataset.") 11 | parser.add_argument("--dataset_config", "-d", type=str, 12 | default="/home/arne/projects/segmentation_crowdsourcing/dev_branch/segmentation_crowdsourcing/dataset_dependent/gleason19/dataset_config_crowd_crossval0.yaml", 13 | help="Input directory of dataset config.") 14 | parser.add_argument("--output_dir", "-o", type=str, 15 | default="/home/arne/datasets/Gleason_2019/resized_dataset_1024/rgb_images/val_masks/", 16 | help="Output directory of validation masks.") 17 | args = parser.parse_args() 18 | 19 | train_img_dir = 'Train_imgs/' 20 | test_img_dir = 'Test_imgs/' 21 | map_annotator_dirs = ['Maps1_T/', 'Maps2_T/', 'Maps3_T/', 'Maps4_T/', 'Maps5_T/', 'Maps6_T/', 'STAPLE', 'MV'] 22 | rgg_masks_dir = 'rgb_images/' 23 | 24 | with open(args.dataset_config) as file: 25 | config = yaml.full_load(file) 26 | 27 | masks = config['data']['visualize_images']['val'] 28 | 29 | for a in range(len(map_annotator_dirs)): 30 | map_annotator_dir = map_annotator_dirs[a] 31 | print(map_annotator_dir) 32 | for m in range(len(masks)): 33 | mask_name = masks[m] 34 | 35 | mask_path_in = args.input_dir + rgg_masks_dir + map_annotator_dir + mask_name 36 | if os.path.exists(mask_path_in): 37 | dir_path_out = args.output_dir + map_annotator_dir 38 | os.makedirs(dir_path_out, exist_ok=True) 39 | mask_path_out = dir_path_out + mask_name 40 | shutil.copy(mask_path_in, mask_path_out) 41 | 42 | -------------------------------------------------------------------------------- /src/preprocessing_tools/find_common_val_maps.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import shutil 4 | import yaml 5 | import numpy as np 6 | 7 | parser = argparse.ArgumentParser( 8 | description="This code copies the validation masks of each annotator that are used for visualization") 9 | parser.add_argument("--input_dir", "-i", type=str, 10 | default="/home/arne/datasets/Gleason_2019/resized_dataset_1024/", 11 | help="Input directory of dataset.") 12 | parser.add_argument("--output_dir", "-o", type=str, 13 | default="/home/arne/datasets/Gleason_2019/resized_dataset_1024/rgb_images/common_masks/", 14 | help="Output directory of validation masks.") 15 | args = parser.parse_args() 16 | 17 | train_img_dir = 'Train_imgs/' 18 | test_img_dir = 'Test_imgs/' 19 | map_annotator_dirs = ['Maps1_T/', 'Maps2_T/', 'Maps3_T/', 'Maps4_T/', 'Maps5_T/', 'Maps6_T/'] 20 | rgb_masks_dir = 'rgb_images/' 21 | crossval_dirs = ['Crossval0/', 'Crossval1/', 'Crossval2/', 'Crossval3/'] 22 | 23 | os.makedirs(args.output_dir, exist_ok=True) 24 | 25 | intersect_maps = np.array([]) 26 | # Create list of all common masks 27 | for a in range(len(map_annotator_dirs)): 28 | map_annotator_dir = map_annotator_dirs[a] 29 | mask_path_dir = args.input_dir + rgb_masks_dir + map_annotator_dir 30 | a_maps = np.array(os.listdir(mask_path_dir)) 31 | if a == 0: # init as all maps of first annotator 32 | intersect_maps = a_maps 33 | else: 34 | intersect_maps = np.intersect1d(a_maps, intersect_maps) 35 | 36 | # create list for logging for all crossvalid splits 37 | for c in range(len(crossval_dirs)): 38 | crossval_dir = args.input_dir + crossval_dirs[c] + 'val/' 39 | c_maps = np.array(os.listdir(crossval_dir)) 40 | c_intersect_maps = np.intersect1d(c_maps, intersect_maps) 41 | 42 | c_out_dir = args.output_dir + crossval_dirs[c] 43 | os.makedirs(c_out_dir, exist_ok=True) 44 | with open(c_out_dir + '/validation_images.txt', 'w') as f: 45 | for m in range(len(c_intersect_maps)): 46 | print("- '" + c_intersect_maps[m] + "'", file=f) 47 | for a in range(len(map_annotator_dirs)): 48 | mask_path_in = args.input_dir + rgb_masks_dir + map_annotator_dirs[a] + c_intersect_maps[m] 49 | if os.path.exists(mask_path_in): 50 | dir_path_out = args.output_dir + crossval_dirs[c] + map_annotator_dirs[a] 51 | os.makedirs(dir_path_out, exist_ok=True) 52 | mask_path_out = dir_path_out + c_intersect_maps[m] 53 | shutil.copy(mask_path_in, mask_path_out) 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /src/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/arneschmidt/pionono_segmentation/a542dedf7a91ae9c1b9b45cb28f9c012d1c11259/src/utils/__init__.py -------------------------------------------------------------------------------- /src/utils/globals.py: -------------------------------------------------------------------------------- 1 | import collections 2 | import yaml 3 | import os 4 | import warnings 5 | import shutil 6 | 7 | config = {} 8 | 9 | def config_update(orig_dict, new_dict): 10 | for key, val in new_dict.items(): 11 | if isinstance(val, collections.Mapping): 12 | tmp = config_update(orig_dict.get(key, { }), val) 13 | orig_dict[key] = tmp 14 | elif isinstance(val, list): 15 | orig_dict[key] = val 16 | else: 17 | orig_dict[key] = new_dict[key] 18 | return orig_dict 19 | 20 | def init_global_config(args): 21 | global config 22 | 23 | # load default config 24 | with open(args.config) as file: 25 | config = yaml.full_load(file) 26 | 27 | # load dataset config, overwrite parameters if double 28 | with open(args.dataset_config) as file: 29 | config_data_dependent = yaml.full_load(file) 30 | config = config_update(config, config_data_dependent) 31 | 32 | # load experiment config, overwrite parameters if double 33 | if args.experiment_folder != 'None': 34 | experiment_config = os.path.join(args.experiment_folder, 'exp_config.yaml') 35 | if os.path.exists(experiment_config): 36 | with open(experiment_config) as file: 37 | exp_config = yaml.full_load(file) 38 | config = config_update(config, exp_config) 39 | config['logging']['experiment_folder'] = args.experiment_folder 40 | exp_fold = args.experiment_folder.split("/")[-3:] 41 | exp_fold = "_".join(exp_fold) 42 | config['logging']['run_name'] = exp_fold 43 | else: 44 | out_dir = './output/' 45 | os.makedirs(out_dir, exist_ok=True) 46 | warnings.warn("No experiment folder was given. Use ./output folder to store experiment results.") 47 | config['logging']['experiment_folder'] = out_dir 48 | config['logging']['run_name'] = 'default' 49 | 50 | for f in os.listdir(config['logging']['experiment_folder']): 51 | path = os.path.join(config['logging']['experiment_folder'], f) 52 | 53 | if os.path.isfile(path) and f != 'exp_config.yaml': 54 | os.remove(path) 55 | elif os.path.isdir(path): 56 | shutil.rmtree(os.path.join(config['logging']['experiment_folder'], f)) 57 | -------------------------------------------------------------------------------- /src/utils/initialize_optimization.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import utils.globals as globals 3 | from segmentation_models_pytorch.losses import FocalLoss , DiceLoss 4 | from utils.dice_losses import GeneralizedDiceLoss 5 | 6 | def init_optimization(model): 7 | config = globals.config 8 | learning_rate = config['model']['learning_rate'] 9 | c_weights = config['data']['class_weights'] 10 | class_weights = torch.FloatTensor(c_weights).cuda() 11 | 12 | if config['model']['method'] == 'pionono': 13 | opt_params = [ 14 | {'params': model.unet.parameters()}, 15 | {'params': model.head.parameters()}, 16 | {'params': model.z.parameters(), 'lr': config['model']['pionono_config']['z_learning_rate']} 17 | ] 18 | elif config['model']['method'] == 'conf_matrix': 19 | opt_params = [ 20 | {'params': model.seg_model.parameters()}, 21 | {'params': model.cm_head.parameters(), 'lr': config['model']['conf_matrix_config']['cmlayer_learning_rate']} 22 | ] 23 | else: 24 | opt_params = [{'params': model.parameters()}] 25 | 26 | if config['model']['optimizer'] == 'adam': 27 | optimizer = torch.optim.Adam(opt_params, lr=learning_rate) 28 | elif config['model']['optimizer'] == 'sgd_mom': 29 | optimizer = torch.optim.SGD(opt_params, lr=learning_rate, momentum=0.9, nesterov=True) 30 | else: 31 | raise Exception('Choose valid optimizer!') 32 | 33 | if config['data']['ignore_last_class']: 34 | ignore_index = int(config['data']['class_no']) # deleted class is always set to the last index 35 | else: 36 | ignore_index = -100 # this means no index ignored 37 | 38 | loss_mode = config['model']['loss'] 39 | if loss_mode == 'ce': 40 | loss_fct = torch.nn.CrossEntropyLoss(weight=class_weights, ignore_index=ignore_index) 41 | elif loss_mode == 'dice': 42 | loss_fct = DiceLoss(ignore_index=ignore_index, mode='multiclass', from_logits=True) 43 | # loss_fct = DiceLoss(weight=class_weights, normalization='softmax', ignore_index=ignore_index) 44 | elif loss_mode == 'gdice': 45 | loss_fct = GeneralizedDiceLoss(normalization='softmax') 46 | elif loss_mode == 'focal': 47 | loss_fct = FocalLoss(reduction='mean', ignore_index=ignore_index, mode='multiclass') 48 | else: 49 | raise Exception('Choose valid loss function!') 50 | 51 | return optimizer, loss_fct -------------------------------------------------------------------------------- /src/utils/loss.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import utils.globals as globals 3 | import torch.nn as nn 4 | import torch.nn.functional as F 5 | torch.backends.cudnn.deterministic = True 6 | # ======================================= 7 | 8 | from segmentation_models_pytorch.losses import DiceLoss, FocalLoss 9 | 10 | eps=1e-7 11 | 12 | def noisy_label_loss(pred, cms, labels, loss_fct, min_trace = False, alpha=0.1): 13 | """ This function defines the proposed trace regularised loss function, suitable for either binary 14 | or multi-class segmentation task. Essentially, each pixel has a confusion matrix. 15 | Args: 16 | pred (torch.tensor): output tensor of the last layer of the segmentation network without Sigmoid or Softmax 17 | cms (list): a list of output tensors for each noisy label, each item contains all of the modelled confusion matrix for each spatial location 18 | labels (torch.tensor): labels 19 | alpha (double): a hyper-parameter to decide the strength of regularisation 20 | Returns: 21 | loss (double): total loss value, sum between main_loss and regularisation 22 | main_loss (double): main segmentation loss 23 | regularisation (double): regularisation loss 24 | """ 25 | b, c, h, w = pred.size() 26 | 27 | # normalise the segmentation output tensor along dimension 1 28 | pred_norm = pred 29 | 30 | # b x c x h x w ---> b*h*w x c x 1 31 | pred_norm = pred_norm.view(b, c, h*w).permute(0, 2, 1).contiguous().view(b*h*w, c, 1) 32 | 33 | 34 | # cm: learnt confusion matrix for each noisy label, b x c**2 x h x w 35 | # label_noisy: noisy label, b x h x w 36 | 37 | # b x c**2 x h x w ---> b*h*w x c x c 38 | cm = cms.view(b, c ** 2, h * w).permute(0, 2, 1).contiguous().view(b * h * w, c * c).view(b * h * w, c, c) 39 | cm = cm / cm.sum(1, keepdim=True) # normalization 40 | # matrix multiplication to calculate the predicted noisy segmentation: 41 | # cm: b*h*w x c x c 42 | # pred_noisy: b*h*w x c x 1 43 | # print(cm.shape, pred_norm.shape) 44 | pred_noisy = torch.bmm(cm, pred_norm).view(b*h*w, c) 45 | pred_noisy = pred_noisy.view(b, h*w, c).permute(0, 2, 1).contiguous().view(b, c, h, w) 46 | log_likelihood_loss = loss_fct(pred_noisy, labels.view(b, h, w).long()) 47 | # regularization 48 | regularisation = torch.trace(torch.transpose(torch.sum(cm, dim=0), 0, 1)).sum() / (b * h * w) 49 | regularisation = alpha * regularisation 50 | 51 | if min_trace: 52 | loss = log_likelihood_loss + regularisation 53 | else: 54 | loss = log_likelihood_loss - regularisation 55 | 56 | return loss, log_likelihood_loss, regularisation 57 | -------------------------------------------------------------------------------- /src/utils/model_headless.py: -------------------------------------------------------------------------------- 1 | import torch 2 | from utils.segmentation_backbone import create_segmentation_backbone 3 | 4 | 5 | class UnetHeadless(torch.nn.Module): 6 | def __init__(self): 7 | super().__init__() 8 | seg_model = create_segmentation_backbone() 9 | self.seg_encoder = seg_model.encoder 10 | self.seg_decoder = seg_model.decoder 11 | 12 | def forward(self, x): 13 | x = self.seg_encoder(x) 14 | x = self.seg_decoder(*x) 15 | # x = self.seg_model(x) 16 | return x -------------------------------------------------------------------------------- /src/utils/model_supervised.py: -------------------------------------------------------------------------------- 1 | import torch 2 | from utils.segmentation_backbone import create_segmentation_backbone 3 | 4 | class SupervisedSegmentationModel(torch.nn.Module): 5 | def __init__(self): 6 | super().__init__() 7 | self.seg_model = create_segmentation_backbone() 8 | self.activation = torch.nn.Softmax(dim=1) 9 | 10 | def forward(self, x, use_softmax=True): 11 | x = self.seg_model(x) 12 | if use_softmax: 13 | y = self.activation(x) 14 | else: 15 | y = x 16 | return y 17 | 18 | def train_step(self, images, labels, loss_fct, ann_ids): 19 | y_pred = self.forward(images, use_softmax=False) 20 | loss = loss_fct(y_pred, labels) 21 | return loss, y_pred 22 | -------------------------------------------------------------------------------- /src/utils/preprocessing.py: -------------------------------------------------------------------------------- 1 | import functools 2 | import numpy as np 3 | 4 | def preprocess_input( 5 | x, mean=None, std=None, input_space="RGB", input_range=None, **kwargs 6 | ): 7 | 8 | if input_space == "BGR": 9 | x = x[..., ::-1].copy() 10 | 11 | if input_range is not None: 12 | if x.max() > 1 and input_range[1] == 1: 13 | x = x / 255.0 14 | 15 | if mean is not None: 16 | mean = np.array(mean) 17 | x = x - mean 18 | 19 | if std is not None: 20 | std = np.array(std) 21 | x = x / std 22 | 23 | return x 24 | 25 | 26 | def get_preprocessing_params(): 27 | formatted_settings = {} 28 | formatted_settings["input_range"] = (0,1) 29 | formatted_settings["input_space"] = "RGB" 30 | formatted_settings["mean"] = None 31 | formatted_settings["std"] = None 32 | return formatted_settings 33 | 34 | 35 | def get_preprocessing_fn_without_normalization(): 36 | params = get_preprocessing_params() 37 | return functools.partial(preprocess_input, **params) --------------------------------------------------------------------------------