Training

To replicate our results use bob binseg train followed by the model config and the dataset config. Use bob binseg train --help for more information.

Note

We strongly advice training with a GPU (using -d cuda). Depending on the available GPU memory you might have to adjust your batch size (-b).

Default Dataset configs

  1. Vessel:

  • CHASEDB1

  • CHASEDB1TEST

  • COVD-DRIVE

  • COVD-DRIVE_SSL

  • COVD-STARE

  • COVD-STARE_SSL

  • COVD-IOSTARVESSEL

  • COVD-IOSTARVESSEL_SSL

  • COVD-HRF

  • COVD-HRF_SSL

  • COVD-CHASEDB1

  • COVD-CHASEDB1_SSL

  • DRIVE

  • DRIVETEST

  • HRF

  • HRFTEST

  • IOSTARVESSEL

  • IOSTARVESSELTEST

  • STARE

  • STARETEST

  1. Optic Disc and Cup

  • DRIONSDB

  • DRIONSDBTEST

  • DRISHTIGS1OD

  • DRISHTIGS1ODTEST

  • DRISHTIGS1CUP

  • DRISHTIGS1CUPTEST

  • IOSTAROD

  • IOSTARODTEST

  • REFUGECUP

  • REFUGECUPTEST

  • REFUGEOD

  • REFUGEODTEST

  • RIMONER3CUP

  • RIMONER3CUPTEST

  • RIMONER3OD

  • RIMONER3ODTEST

Default Model configs

  • DRIU

  • DRIUBN

  • DRIUSSL

  • DRIUBNSSL

  • DRIUOD

  • HED

  • M2UNet

  • M2UNetSSL

  • UNet

Baseline Benchmarks

#!/bin/bash
# set output directory
outputroot=`pwd`"/output"
mkdir -p $outputroot

#### Global config ####
m2u=M2UNet
hed=HED
driu=DRIU
unet=UNet
m2ussl=M2UNetSSL
driussl=DRIUSSL

#### CHASE_DB 1 ####
dataset=CHASEDB1
output=$outputroot"/"$dataset
mkdir -p $output
# batch sizes
b_m2u=6
b_hed=4
b_driu=4
b_unet=2
# Train
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv
bob binseg train $hed $dataset -b $b_hed -d cuda -o $output"/"$hed -vv
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $unet $dataset -b $b_unet -d cuda -o $output"/"$unet -vv

#### DRIVE ####
dataset=DRIVE
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
b_m2u=16
b_hed=8
b_driu=8
b_unet=4
# Train
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv
bob binseg train $hed $dataset -b $b_hed -d cuda -o $output"/"$hed -vv
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $unet $dataset -b $b_unet -d cuda -o $output"/"$unet -vv

#### HRF ####
dataset=HRF
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
b_m2u=1
b_hed=1
b_driu=1
b_unet=1
# Train
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv
bob binseg train $hed $dataset -b $b_hed -d cuda -o $output"/"$hed -vv
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $unet $dataset -b $b_unet -d cuda -o $output"/"$unet -vv

#### IOSTAR VESSEL ####
dataset=IOSTARVESSEL
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
b_m2u=6
b_hed=4
b_driu=4
b_unet=2
# Train
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv
bob binseg train $hed $dataset -b $b_hed -d cuda -o $output"/"$hed -vv
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $unet $dataset -b $b_unet -d cuda -o $output"/"$unet -vv

#### STARE ####
dataset=STARE
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
b_m2u=6
b_hed=4
b_driu=5
b_unet=2
# Train
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv
bob binseg train $hed $dataset -b $b_hed -d cuda -o $output"/"$hed -vv
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $unet $dataset -b $b_unet -d cuda -o $output"/"$unet -vv

Combined Vessel Dataset (COVD) and Semi-Supervised Learning (SSL)

COVD-:

### COVD-DRIVE ####
dataset=COVD-DRIVE
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIU
m2u=M2UNet
b_driu=4
b_m2u=8
# Train
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

### COVD-STARE ####
dataset=COVD-STARE
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIU
m2u=M2UNet
b_driu=4
b_m2u=4
# Train
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

### COVD-IOSTAR ####
dataset=COVD-IOSTARVESSEL
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIU
m2u=M2UNet
b_driu=2
b_m2u=4
# Train
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

### COVD-CHASEDB1 ####
dataset=COVD-CHASEDB1
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIU
m2u=M2UNet
b_driu=2
b_m2u=4
# Train
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

### COVD-HRF ####
dataset=COVD-HRF
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIU
m2u=M2UNet
b_driu=2
b_m2u=4
# Train
bob binseg train $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg train $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

COVD-SSL:

### COVD-DRIVE_SSL ####
dataset=COVD-DRIVE_SSL
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIUSSL
m2u=M2UNetSSL
b_driu=4
b_m2u=4
# Train
bob binseg ssltrain $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg ssltrain $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

### COVD-STARE_SSL ####
dataset=COVD-STARE_SSL
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIUSSL
m2u=M2UNetSSL
b_driu=4
b_m2u=4
# Train
bob binseg ssltrain $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg ssltrain $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

### COVD-IOSTAR_SSL ####
dataset=COVD-IOSTARVESSEL_SSL
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIUSSL
m2u=M2UNetSSL
b_driu=1
b_m2u=2
# Train
bob binseg ssltrain $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg ssltrain $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

### COVD-CHASEDB1_SSL ####
dataset=COVD-CHASEDB1_SSL
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIUSSL
m2u=M2UNetSSL
b_driu=2
b_m2u=2
# Train
bob binseg ssltrain $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg ssltrain $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv


### COVD-HRF_SSL ####
dataset=COVD-HRF_SSL
output=$outputroot"/"$dataset
mkdir -p $output
# model configs
driu=DRIUSSL
m2u=M2UNetSSL
b_driu=1
b_m2u=2
# Train
bob binseg ssltrain $driu $dataset -b $b_driu -d cuda -o $output"/"$driu -vv
bob binseg ssltrain $m2u $dataset -b $b_m2u -d cuda -o $output"/"$m2u -vv

Using your own configs

Instead of the default configs you can pass the full path of your customized dataset and model config (both in PyTorch format). The default configs are stored under bob.ip.binseg/bob/ip/binseg/configs/.

bob binseg train /path/to/model/config.py /path/to/dataset/config.py