This repository provides the Keras implementation of the paper "Uncertainty quantification using Bayesian neural networks in classification: Application to biomedical image segmentation" at the Computational Statistics and Data Analysis. This paper extends the paper accepted at the MIDL 2018. In case you want to cite this work, please cite the extended version.
In this repo, we demonstrate the proposed method using the two biomedical imaging segmentation datasets: the ISLES and the DRIVE datasets. For more detailed information, please see the ISLES and DRIVE.
I also strongly recommend to see the good implementation using the DRIVE dataset by Walter de Back. [notebook].
Once you have a trained Bayesian neural network, the proposed uncertainty quantification method is simple !!! In a binary segmentaion, a numpy array p_hat
with dimension (number of estimates, dimension of features), then the epistemic and aleatoric uncertainties can be obtained by the following code.
epistemic = np.mean(p_hat**2, axis=0) - np.mean(p_hat, axis=0)**2
aleatoric = np.mean(p_hat*(1-p_hat), axis=0)
.
├── ischemic
│ ├── input
│ │ └── (train/test datasets)
│ └── src
│ ├── configs (empty)
│ ├── data.py
│ ├── models.py
│ ├── settings.py
│ ├── train.py
│ ├── utils.py
│ └── weights (empty)
├── README.md
└── retina
├── fig
├── input
│ └── (train/test datasets)
├── model.py
├── UQ_DRIVE_stochastic_sample_2000.ipynb
├── UQ_DRIVE_stochastic_sample_200.ipynb
├── utils.py
└── weights (empty)
Yongchan Kwon, Ph.D. student, Department of Statistics, Seoul National University