### On uncertainty estimation in active learning for image segmentation 

<br /> This repository provides the implementation for our paper [**On uncertainty estimation in active learning for image segmentation** (Bo Li, Tommy Sonne Alstrøm)](https://arxiv.org/abs/2007.06364). We experimentally show that the region based active learning strategy can lead to higher segmentation accuracy and better calibrated model much faster than full image acquisition:

![performance](DATA/first_figure.jpg)

#### Installation and preparation 

1. Clone and enter this repo:

   ```bash
   git clone https://lab.compute.dtu.dk/papers/on-uncertainty-estimation-in-active-learning.git
   cd region_active_learning
   chmod +x requirement.sh
   chmod +x produce_figure.sh
   ```

2. Create a virtual env with the required packages

   ```bash
   conda env create -f active_learning.yaml
   source activate act
   ```


2. Prepare the Dataset and pertained resnet-50 ckpt 

   ```bash
   ./requirement.sh
   ```


#### Evaluate the model

In order to evaluate the model at each acquisition step, run

``` python
python3 -c 'import Test as te;te.running_test_for_single_acquisition_step(model_dir)'
Args:
  model_dir: the directory that saves the model ckpt
```

#### Train the model

- For full image based active learning, run

  ```python
  python3 -c 'import Train_Active_Full_Im as tafi;tafi.running_loop_active_learning_full_image(stage)'
  Args:
    stage: int, 0:random, 1:VarRatio, 2:Entropy, 3:BALD
  ```

- For region based active learning, run
    
  ```python
  python3 -c 'import Train_Active_Region_Im as tari;tari.running_loop_active_learning_region(stage)'
  Args:
    stage: int, 0:random, 1:VarRatio, 2:Entropy, 3:BALD
  ```

#### Reproduce figures

The statistics that are used for reproducing the figures are saved in folder *Exp_Stat*. In order to reproduce the figures in the paper, run

```bash
./produce_figure.sh
```