Diff of /README.md [000000] .. [96354c]

Switch to side-by-side view

--- a
+++ b/README.md
@@ -0,0 +1,206 @@
+# MRI Brain Tumor Segmentation and Uncertainty Estimation using 3D-Unet architectures on BraTS'20
+
+This repository contains the code of the work presented in the paper
+[MRI Brain Tumor Segmentation and Uncertainty Estimation using 3D-Unet architectures](https://arxiv.org/abs/2012.15294)
+which is used to participate on the BraTS'20 challenge on Brain Tumor Segmentation, for tasks 1 and 3.
+
+This work proposes the usage of V-Net and 3D-UNet based models for semantic segmentation in 3D-MRI Brain Tumor Segmentation and identifies certain and uncertain predictions at test time.
+
+The original repository can be found [here](https://github.com/LauraMoraB/BrainTumorSegmentation).
+
+## Repository Structure
+    |__ resources/
+        |__ config.ini
+    |__ src/
+        |__ dataset/
+        |__ losses/
+        |__ ensemble/
+        |__ metrics/
+        |__ post_processing/
+        |__ test/
+        |__ train/
+        |__ uncertainty/
+        |__ config.py
+        |__ logging_conf.py
+        |__ train.py
+        |__ inference.py
+        |__ normalize_uncertainty.py
+        |__ run_post_processing.py
+               
+    |__ tests/
+    |__ README.md
+
+## Dataset structure
+
+The dataset used in this repository is the official one provided by BraTS20 for training, validation and test.
+
+For each patient, they provide a folder with the following files (`*_seg.nii.gz` is only provided for the training set)
+```
+BraTS20_Training_001/
+    BraTS20_Training_001_flair.nii.gz
+    BraTS20_Training_001_seg.nii.gz
+    BraTS20_Training_001_t1.nii.gz
+    BraTS20_Training_001_t1ce.nii.gz
+    BraTS20_Training_001_t2.nii.gz
+```
+
+In this project, the data is expected to be separated by the three different sets and by sampling technique
+(in case the sampling may be computed beforehand). As an example:
+```
+* Train: ~/train/source_sampling/BraTS20_Training_00*/*.nii.gz
+* Validation: ~/validation/source_sampling/BraTS20_Training_00*/*.nii.gz
+* Test: ~/test/source_sampling/BraTS20_Training_00*/*.nii.gz
+```
+
+It also requires the `brats20_data.csv` which has the following information:
+
+| ID | Grade | subject_ID | Center | Patch | Size | Train |
+| -- | ----- | ---------- | ------ | ----- | ---- | ----- |
+| 1 | HGG | BraTS20_Training_001 | CBICA | BraTS20_Training_001 | 240x240x155 | train |
+| 2 | LGG | BraTS20_Training_270 | TMC | BraTS20_Training_270 | 240x240x155 | test |
+
+The *Train* column is used to select some samples for testing.
+
+## Installation
+
+```
+pip install -r requirements.txt
+```
+
+## Execution
+
+You can execute several processes, from the training of the model, inference, inference uncertainty, run post processing to the obtained results, compute metrics and compute an ensemble.
+
+All scripts run similarly, as all the required configuration is read from the config.ini file.
+```
+python <script.py> resources/config.ini
+```
+
+However, the `run_post_processing.py` is though to be run with SLURM arrays, so it will need editing in case you don't have a SLURM environment.
+
+### Training
+
+```
+python train.py resources/config.ini
+```
+
+#### Network
+Four Possible Networks:
+* Basic VNet : vnet
+* Deeper VNet: vnet_assym
+* Basic 3DUNet: 3dunet
+* Residual 3DUNet: 3dunet_residual
+
+```ini
+n_epochs: 100
+
+init_features_maps: 32
+network: 3dunet_residual or 3dunet or vnet_asymm or vnet
+
+# unet based
+unet_order: crg
+# cli  -  conv + LeakyReLU + instancenorm
+
+# vnet asymm
+non_linearity: relu
+kernel_size: 3
+padding: 1
+
+# vnet
+use_elu: true
+```
+
+#### Optimizer
+
+Implemented: ADAM or SGD
+```ini
+optimizer: ADAM
+learning_rate: 1e-4
+weight_decay: 1e-5
+# sgd only
+momentum: 0.99
+```
+
+#### Loss
+
+* Loss can be evaluated on ET/TC/WT (`eval_regions: true`) or ED/NCR/ET (`eval_regions: false`)
+* Loss: dice, both_dice (dice eval + dice normal), gdl (not implemented with eval regions), combined (cross-entropy + dice)
+
+```ini
+loss: gdl
+eval_regions: false
+```
+
+### Inference
+
+Run as:
+```
+python inference.py resources/config.ini
+```
+
+#### Segmentation
+
+```ini
+[basics]
+train_flag: false
+compute_patches: false
+resume: false
+
+test_flag: true
+uncertainty_flag: false
+```
+
+#### Uncertainty
+3 Types of uncertainty can be computed:
+* aleatoric `uncertainty_type: tta` and `use_dropout: false`
+* epistemic `uncertainty_type: ttd`
+* both: `uncertainty_type: tta` and `use_dropout: true`
+
+```ini
+[basics]
+train_flag: false
+compute_patches: false
+resume: false
+
+test_flag: true
+uncertainty_flag: true
+
+[uncertainty]
+n_iterations: 20
+uncertainty_type: tta
+use_dropout: false (used if uncertainty_type=tta)
+```
+
+## Model results
+
+### Task 1: Segmentation
+
+| METHOD | DICE WT | DICE TC | DICE ET | HAUSDORFF WT | HAUSDORFF TC | HAUSDORFF ET|
+| ------- | ----   | ---------| -------| ---------     | ---------   | ---------   |
+| Basic V-Net                           | 0.8360	         | 0.7499           | 0.6159 	          | 26.4085          | 13.3398           | 49.7425 |      
+| Basic V-Net + post                    | 0.8463             | 0.7526           | 0.6179              | 20.4073          | 12.1752           | 47.7020 |    
+| Deeper V-Net                     	    | 0,8571	         | 0,7755	        | 0,6866	          | 16,0270	         | 17,6447	         | 44,0950|	       
+| Deeper V-Net + post	                | 0,8611	         | 0,7790	        | 0,6897	          | 14,4988	         | 16,1533	         | 43,5184|	       
+| Basic 3D-UNet                   	    | 0,8411	         | 0,7906	        | 0,6876	          | 13,3658	         | 13,6065	         | 50,9828|	     
+| Basic 3D-UNet +post	                | 0,8052	         | 0,7749	        | 0,6742	          | 13,0969	         | 14,0047	         | 43,8928|	       
+| Residual 3D-UNet	                    | 0,8072	         | 0,7740	        | 0,6955	          | 16,9635	         | 17,5142	         | 39,9172|	       
+| Residual 3D-UNet + post         	    | 0,8142	         | 0,7748	        | 0,7119	          | 11,8505	         | 18,8146	         | 34,9652|
+| Residual 3D-UNet-multiscale       	| 0,8172	         | 0,7664	        | 0,7071	          | 15,5342	         | 13,9380	         | 38,6098|	       
+| Residual 3D-UNet-multiscale  + post	| 0,8246	         | 0,7647	        | 0,7163	          | 12,3372	         | 13,1045	         | 37,4224|	       
+| Ensemble mean	                        | 0,8317	         | 0,7874	        | 0,6951	          | 13,4655	         | 12,9562	         | 47,5703|	       
+| Ensemble mean + post	                | 0,8367	         | 0,7885	        | 0,7194              | 10,9320	         | 12,2427           | 37,9678|	     
+| Ensemble majority	                     | 0,8223	         | 0,7801	        | 0,7003	          | 10,9781	         | 12,6571	         | 41,8566|	       
+| Ensemble majority post	            | 0,8242	         | 0,7801	        | 0,7003	          | 10,0768          | 14,6322	         | 46,6045 |  
+
+
+
+### Task 3: Uncertainty
+
+| MEASURE  | METHOD | AUC DICE WT | AUC DICE TC |AUC DICE ET | FTP RATIO WT | FTP RATIO TC | FTP RATIO ET| FTN RATIO WT | FTM RATIO TC | FTN RATIO ET |
+| ---------| -------| ---------   | ------------| ---------- | ---------    | ----------   | ---------   |  ---------   | ----------   | ---------   |
+|Variance | TTA Residual 3D-UNet-multiscale       | 0,8316   | 0,7715	    | 0,7088	   | 0,0538	     | 0,0449       | 0,0380       | 0,0009	      | 0,0002  | 0,0001 |
+|Variance | TTD Residual 3D-UNet-multiscale       | 0,8300	 | 0,7582	    | 0,7318	   | 0,1646	     | 0,1558	    | 0,0937	   | 0,0024	      | 0,0015	| 0,0004 |
+|Variance | TTA + TTD Residual 3D-UNet-multiscale | 0,8325	 | 0,7632	    | 0,7276	   | 0,1812      | 0,1588	    | 0,0998	   | 0,0036       | 0,0020	| 0,0005 |
+|Entropy  | TTA Residual 3D-UNet-multiscale       | 0,8326	 | 0,7816	    | 0,7138	   | 0,0635	     | 0,0476	    | 0,0362	   | 0,0011	      | 0,0047	|0,0063  |
+|Entropy  | TTD Residual 3D-UNet-multiscale       | 0,8233	 | 0,7797       | 0,7423	   | 0,1512	     | 0,1285	    | 0,0698	   | 0,0021	      | 0,0082	| 0,0122 |
+|Entropy  | TTA + TTD Residual 3D-UNet-multiscale |0,8343	 | 0,7909	    | 0,7710	   | 0,1525	     | 0,1213	    | 0,0664	   | 0,0030	      | 0,0101	| 0,0139 |
\ No newline at end of file