diff --git a/bob/ip/binseg/configs/datasets/allvessel544.py b/bob/ip/binseg/configs/datasets/allvessel544.py deleted file mode 100644 index 9044cebccd11a8ffd1873fa58d19123d7baefe43..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/allvessel544.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -from bob.db.drive import Database as DRIVE -from bob.db.stare import Database as STARE -from bob.db.chasedb1 import Database as CHASEDB1 -from bob.db.iostar import Database as IOSTAR -from bob.db.hrf import Database as HRF -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset -import torch - -# Target size: 544x544 (DRIVE) - -defaulttransforms = [RandomHFlip() - ,RandomVFlip() - ,RandomRotation() - ,ColorJitter() - ,ToTensor()] - - -# DRIVE -transforms_drive = Compose([ - CenterCrop((544,544)) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_drive = DRIVE(protocol = 'default') - -# PyTorch dataset -torch_drive = BinSegDataset(bobdb_drive, split='train', transform=transforms_drive) - - -# CHASE_DB1 -transforms_chase = Compose([ - Resize(544) - ,Crop(0,12,544,544) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_chase = CHASEDB1(protocol = 'default') - -# PyTorch dataset -torch_chase = BinSegDataset(bobdb_chase, split='train', transform=transforms_chase) - - -# IOSTAR VESSEL -transforms_iostar = Compose([ - Resize(544) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_iostar = IOSTAR(protocol='default_vessel') - -# PyTorch dataset -torch_iostar = BinSegDataset(bobdb_iostar, split='train', transform=transforms_iostar) - -# STARE -transforms = Compose([ - Resize(471) - ,Pad((0,37,0,36)) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_stare = STARE(protocol = 'default') - -# PyTorch dataset -torch_stare = BinSegDataset(bobdb_stare, split='train', transform=transforms) - - -# HRF -transforms_hrf = Compose([ - Resize((363)) - ,Pad((0,90,0,91)) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_hrf = HRF(protocol = 'default') - -# PyTorch dataset -torch_hrf = BinSegDataset(bobdb_hrf, split='train', transform=transforms_hrf) - - - -# Merge -dataset = torch.utils.data.ConcatDataset([torch_drive,torch_stare, torch_chase, torch_iostar, torch_hrf]) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/allvessel544test.py b/bob/ip/binseg/configs/datasets/allvessel544test.py deleted file mode 100644 index 55994e9e045311db031290d63c45f6326eb4436a..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/allvessel544test.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -from bob.db.drive import Database as DRIVE -from bob.db.stare import Database as STARE -from bob.db.chasedb1 import Database as CHASEDB1 -from bob.db.iostar import Database as IOSTAR -from bob.db.hrf import Database as HRF -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset -import torch - -# Target size: 544x544 (DRIVE) - -defaulttransforms = [ToTensor()] - - -# DRIVE -transforms_drive = Compose([ - CenterCrop((544,544)) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_drive = DRIVE(protocol = 'default') - -# PyTorch dataset -torch_drive = BinSegDataset(bobdb_drive, split='test', transform=transforms_drive) - - -# CHASE_DB1 -transforms_chase = Compose([ - Resize(544) - ,Crop(0,12,544,544) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_chase = CHASEDB1(protocol = 'default') - -# PyTorch dataset -torch_chase = BinSegDataset(bobdb_chase, split='test', transform=transforms_chase) - - -# IOSTAR VESSEL -transforms_iostar = Compose([ - Resize(544) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_iostar = IOSTAR(protocol='default_vessel') - -# PyTorch dataset -torch_iostar = BinSegDataset(bobdb_iostar, split='test', transform=transforms_iostar) - -# STARE -transforms = Compose([ - Resize(471) - ,Pad((0,37,0,36)) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_stare = STARE(protocol = 'default') - -# PyTorch dataset -torch_stare = BinSegDataset(bobdb_stare, split='test', transform=transforms) - - -# HRF -transforms_hrf = Compose([ - Resize((363)) - ,Pad((0,90,0,91)) - ,*defaulttransforms - ]) - -# bob.db.dataset init -bobdb_hrf = HRF(protocol = 'default') - -# PyTorch dataset -torch_hrf = BinSegDataset(bobdb_hrf, split='test', transform=transforms_hrf) - - - -# Merge -dataset = torch.utils.data.ConcatDataset([torch_drive,torch_stare, torch_chase, torch_iostar, torch_hrf]) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/chasedb1544.py b/bob/ip/binseg/configs/datasets/chasedb1544.py index 9d94cd3ca6e9e1504aaba5bbb78422f547e102c2..9632d53996d343deecd0e021fb2140153df9edc0 100644 --- a/bob/ip/binseg/configs/datasets/chasedb1544.py +++ b/bob/ip/binseg/configs/datasets/chasedb1544.py @@ -8,11 +8,11 @@ from bob.ip.binseg.data.binsegdataset import BinSegDataset #### Config #### transforms = Compose([ - RandomRotation() - ,Resize(544) + Resize(544) ,Crop(0,12,544,544) ,RandomHFlip() ,RandomVFlip() + ,RandomRotation() ,ColorJitter() ,ToTensor() ]) diff --git a/bob/ip/binseg/configs/datasets/chasedb1544test.py b/bob/ip/binseg/configs/datasets/chasedb1608.py similarity index 50% rename from bob/ip/binseg/configs/datasets/chasedb1544test.py rename to bob/ip/binseg/configs/datasets/chasedb1608.py index aa5d00a55e68bf8d025ba338cbeb59289ce3c70a..9a475cae5d7fb5be49a28ae6e479dd3fe41760ed 100644 --- a/bob/ip/binseg/configs/datasets/chasedb1544test.py +++ b/bob/ip/binseg/configs/datasets/chasedb1608.py @@ -7,9 +7,13 @@ from bob.ip.binseg.data.binsegdataset import BinSegDataset #### Config #### -transforms = Compose([ - Resize(544) - ,Crop(0,12,544,544) +transforms = Compose([ + RandomRotation() + ,CenterCrop((829,960)) + ,Resize(608) + ,RandomHFlip() + ,RandomVFlip() + ,ColorJitter() ,ToTensor() ]) @@ -17,4 +21,4 @@ transforms = Compose([ bobdb = CHASEDB1(protocol = 'default') # PyTorch dataset -dataset = BinSegDataset(bobdb, split='test', transform=transforms) \ No newline at end of file +dataset = BinSegDataset(bobdb, split='train', transform=transforms) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/drive1024ssliostar.py b/bob/ip/binseg/configs/datasets/drive1024ssliostar.py deleted file mode 100644 index 0158c4a9c4595c9baf558afa6dd97d5ee1ca64b6..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/drive1024ssliostar.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from bob.db.drive import Database as DRIVE -from bob.db.iostar import Database as IOSTAR -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset, SSLBinSegDataset, UnLabeledBinSegDataset - -#### Config #### - -#### Unlabeled IOSTAR TRAIN #### -unlabeled_transforms = Compose([ - RandomHFlip() - ,RandomVFlip() - ,RandomRotation() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -sslbobdb = IOSTAR(protocol = 'default_vessel') - -# PyTorch dataset -unlabeled_dataset = UnLabeledBinSegDataset(sslbobdb, split='train', transform=unlabeled_transforms) - - -#### Labeled #### -labeled_transforms = Compose([ - CenterCrop((540,540)) - ,Resize(1024) - ,RandomHFlip() - ,RandomVFlip() - ,RandomRotation() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -bobdb = DRIVE(protocol = 'default') - -# PyTorch dataset -dataset = SSLBinSegDataset(bobdb, unlabeled_dataset, split='train', transform=labeled_transforms) diff --git a/bob/ip/binseg/configs/datasets/drive1168sslhrf.py b/bob/ip/binseg/configs/datasets/drive1168sslhrf.py deleted file mode 100644 index 75f742d4a07882d979cd9a09fe498dbeaee04665..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/drive1168sslhrf.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from bob.db.drive import Database as DRIVE -from bob.db.hrf import Database as HRF -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset, SSLBinSegDataset, UnLabeledBinSegDataset - -#### Config #### - -#### Unlabeled HRF TRAIN #### -unlabeled_transforms = Compose([ - Crop(0,108,2336,3296) - ,Resize(1168) - ,RandomHFlip() - ,RandomVFlip() - ,RandomRotation() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -hrfbobdb = HRF(protocol = 'default') - -# PyTorch dataset -unlabeled_dataset = UnLabeledBinSegDataset(hrfbobdb, split='train', transform=unlabeled_transforms) - - -#### Labeled #### -labeled_transforms = Compose([ - Crop(75,10,416,544) - ,Pad((21,0,22,0)) - ,Resize(1168) - ,RandomHFlip() - ,RandomVFlip() - ,RandomRotation() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -bobdb = DRIVE(protocol = 'default') -labeled_dataset = BinSegDataset(bobdb, split='train', transform=labeled_transforms) - -# SSL Dataset - -dataset = SSLBinSegDataset(labeled_dataset, unlabeled_dataset) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/drive2336sslhrf.py b/bob/ip/binseg/configs/datasets/drive2336sslhrf.py deleted file mode 100644 index 9b6102ffc533f0088ffba7d228a008a081922259..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/drive2336sslhrf.py +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from bob.db.drive import Database as DRIVE -from bob.db.hrf import Database as HRF -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset, SSLBinSegDataset, UnLabeledBinSegDataset - -#### Config #### - -#### Unlabeled HRF TRAIN #### -unlabeled_transforms = Compose([ - Crop(0,108,2336,3296) - ,RandomHFlip() - ,RandomVFlip() - ,RandomRotation() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -hrfbobdb = HRF(protocol = 'default') - -# PyTorch dataset -unlabeled_dataset = UnLabeledBinSegDataset(hrfbobdb, split='train', transform=unlabeled_transforms) - - -#### Labeled #### -labeled_transforms = Compose([ - Crop(75,10,416,544) - ,Pad((21,0,22,0)) - ,Resize(2336) - ,RandomHFlip() - ,RandomVFlip() - ,RandomRotation() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -bobdb = DRIVE(protocol = 'default') -labeled_dataset = BinSegDataset(bobdb, split='train', transform=labeled_transforms) - -# SSL Dataset - -dataset = SSLBinSegDataset(labeled_dataset, unlabeled_dataset) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/drive2336test.py b/bob/ip/binseg/configs/datasets/drive2336test.py deleted file mode 100644 index 9ce3b6491c47379abe09886bd9d904afde1ccc00..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/drive2336test.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from bob.db.drive import Database as DRIVE -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset - -#### Config #### - -transforms = Compose([ - Crop(75,10,416,544) - ,Pad((21,0,22,0)) - ,Resize(2336) - ,ToTensor() - ]) - -# bob.db.dataset init -bobdb = DRIVE(protocol = 'default') - -# PyTorch dataset -dataset = BinSegDataset(bobdb, split='test', transform=transforms) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/drivechasedb1iostarhrf608.py b/bob/ip/binseg/configs/datasets/drivechasedb1iostarhrf608.py new file mode 100644 index 0000000000000000000000000000000000000000..5ab57b8ad4e34d700e4667138b6111f19b4a488a --- /dev/null +++ b/bob/ip/binseg/configs/datasets/drivechasedb1iostarhrf608.py @@ -0,0 +1,10 @@ +from bob.ip.binseg.configs.datasets.drive608 import dataset as drive +from bob.ip.binseg.configs.datasets.chasedb1608 import dataset as chase +from bob.ip.binseg.configs.datasets.iostarvessel608 import dataset as iostar +from bob.ip.binseg.configs.datasets.hrf608 import dataset as hrf +import torch + +#### Config #### + +# PyTorch dataset +dataset = torch.utils.data.ConcatDataset([drive,chase,iostar,hrf]) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/drivechasedb1iostarhrf608sslstare.py b/bob/ip/binseg/configs/datasets/drivechasedb1iostarhrf608sslstare.py new file mode 100644 index 0000000000000000000000000000000000000000..928452f4209d4526e66028457a3ababcd04fda8b --- /dev/null +++ b/bob/ip/binseg/configs/datasets/drivechasedb1iostarhrf608sslstare.py @@ -0,0 +1,34 @@ +from bob.ip.binseg.configs.datasets.drive608 import dataset as drive +from bob.ip.binseg.configs.datasets.chasedb1608 import dataset as chase +from bob.ip.binseg.configs.datasets.iostarvessel608 import dataset as iostar +from bob.ip.binseg.configs.datasets.hrf608 import dataset as hrf +from bob.db.stare import Database as STARE +from bob.ip.binseg.data.transforms import * +import torch +from bob.ip.binseg.data.binsegdataset import BinSegDataset, SSLBinSegDataset, UnLabeledBinSegDataset + + +#### Config #### + +# PyTorch dataset +labeled_dataset = torch.utils.data.ConcatDataset([drive,chase,iostar,hrf]) + +#### Unlabeled STARE TRAIN #### +unlabeled_transforms = Compose([ + Pad((2,1,2,2)) + ,RandomHFlip() + ,RandomVFlip() + ,RandomRotation() + ,ColorJitter() + ,ToTensor() + ]) + +# bob.db.dataset init +starebobdb = STARE(protocol = 'default') + +# PyTorch dataset +unlabeled_dataset = UnLabeledBinSegDataset(starebobdb, split='train', transform=unlabeled_transforms) + +# SSL Dataset + +dataset = SSLBinSegDataset(labeled_dataset, unlabeled_dataset) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/drivestarechasedb1hrfl1024_all.py b/bob/ip/binseg/configs/datasets/drivestarechasedb1hrfl1024_all.py new file mode 100644 index 0000000000000000000000000000000000000000..5d2b345669dbc334e061780a349af69ce4fe3fe3 --- /dev/null +++ b/bob/ip/binseg/configs/datasets/drivestarechasedb1hrfl1024_all.py @@ -0,0 +1,14 @@ +from bob.ip.binseg.configs.datasets.drive1024all import dataset as drive +from bob.ip.binseg.configs.datasets.stare1024all import dataset as stare +from bob.ip.binseg.configs.datasets.hrf1024all import dataset as hrf +from bob.ip.binseg.configs.datasets.chasedb11024all import dataset as chasedb +from bob.db.iostar import Database as IOSTAR +from bob.ip.binseg.data.transforms import * +import torch + + +#### Config #### + +# PyTorch dataset +dataset = torch.utils.data.ConcatDataset([drive,stare,hrf,chasedb]) + diff --git a/bob/ip/binseg/configs/datasets/drivestarechasedb1iostar1168_all.py b/bob/ip/binseg/configs/datasets/drivestarechasedb1iostar1168_all.py new file mode 100644 index 0000000000000000000000000000000000000000..dcf35d87f4bbe9048b82b611e2014e80cbe01d66 --- /dev/null +++ b/bob/ip/binseg/configs/datasets/drivestarechasedb1iostar1168_all.py @@ -0,0 +1,13 @@ +from bob.ip.binseg.configs.datasets.drive1168all import dataset as drive +from bob.ip.binseg.configs.datasets.stare1168all import dataset as stare +from bob.ip.binseg.configs.datasets.chasedb11168all import dataset as chasedb +from bob.ip.binseg.configs.datasets.iostarvessel1168all import dataset as iostar +from bob.db.hrf import Database as HRF +from bob.ip.binseg.data.transforms import * +import torch + + +#### Config #### + +# PyTorch dataset +dataset = torch.utils.data.ConcatDataset([drive,stare,iostar,chasedb]) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/drivestareiostarhrf960.py b/bob/ip/binseg/configs/datasets/drivestareiostarhrf960.py new file mode 100644 index 0000000000000000000000000000000000000000..9343cf22c62a0cf9ad02d767b24ca576b00fd4d1 --- /dev/null +++ b/bob/ip/binseg/configs/datasets/drivestareiostarhrf960.py @@ -0,0 +1,10 @@ +from bob.ip.binseg.configs.datasets.drive960 import dataset as drive +from bob.ip.binseg.configs.datasets.stare960 import dataset as stare +from bob.ip.binseg.configs.datasets.hrf960 import dataset as hrf +from bob.ip.binseg.configs.datasets.iostarvessel960 import dataset as iostar +import torch + +#### Config #### + +# PyTorch dataset +dataset = torch.utils.data.ConcatDataset([drive,stare,hrf,iostar]) diff --git a/bob/ip/binseg/configs/datasets/drivestareiostarhrf960_all.py b/bob/ip/binseg/configs/datasets/drivestareiostarhrf960_all.py new file mode 100644 index 0000000000000000000000000000000000000000..cedbea744f1c0843a8d010c99d2a5f7c9692928c --- /dev/null +++ b/bob/ip/binseg/configs/datasets/drivestareiostarhrf960_all.py @@ -0,0 +1,14 @@ +from bob.ip.binseg.configs.datasets.drive960all import dataset as drive +from bob.ip.binseg.configs.datasets.stare960all import dataset as stare +from bob.ip.binseg.configs.datasets.hrf960all import dataset as hrf +from bob.ip.binseg.configs.datasets.iostarvessel960all import dataset as iostar +from bob.db.chasedb1 import Database as CHASE +from bob.db.hrf import Database as HRF +from bob.ip.binseg.data.transforms import * +import torch + + +#### Config #### + +# PyTorch dataset +dataset = torch.utils.data.ConcatDataset([drive,stare,hrf,iostar]) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/hrf544.py b/bob/ip/binseg/configs/datasets/hrf544.py new file mode 100644 index 0000000000000000000000000000000000000000..0e2cc05152aa20e4c75ffcb464cd8fd90f89e7bd --- /dev/null +++ b/bob/ip/binseg/configs/datasets/hrf544.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from bob.db.hrf import Database as HRF +from bob.ip.binseg.data.transforms import * +from bob.ip.binseg.data.binsegdataset import BinSegDataset + +#### Config #### + +transforms = Compose([ + Resize((363)) + ,Pad((0,90,0,91)) + ,RandomRotation() + ,RandomHFlip() + ,RandomVFlip() + ,ColorJitter() + ,ToTensor() + ]) + +# bob.db.dataset init +bobdb = HRF(protocol = 'default') + +# PyTorch dataset +dataset = BinSegDataset(bobdb, split='train', transform=transforms) diff --git a/bob/ip/binseg/configs/datasets/hrf608.py b/bob/ip/binseg/configs/datasets/hrf608.py new file mode 100644 index 0000000000000000000000000000000000000000..b26e772a0793d043af6e59f18caab5943805d929 --- /dev/null +++ b/bob/ip/binseg/configs/datasets/hrf608.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from bob.db.hrf import Database as HRF +from bob.ip.binseg.data.transforms import * +from bob.ip.binseg.data.binsegdataset import BinSegDataset + +#### Config #### + +transforms = Compose([ + Pad((0,345,0,345)) + ,Resize(608) + ,RandomRotation() + ,RandomHFlip() + ,RandomVFlip() + ,ColorJitter() + ,ToTensor() + ]) + +# bob.db.dataset init +bobdb = HRF(protocol = 'default') + +# PyTorch dataset +dataset = BinSegDataset(bobdb, split='train', transform=transforms) diff --git a/bob/ip/binseg/configs/datasets/drive2336.py b/bob/ip/binseg/configs/datasets/iostarvessel544.py similarity index 71% rename from bob/ip/binseg/configs/datasets/drive2336.py rename to bob/ip/binseg/configs/datasets/iostarvessel544.py index 30ec9af8400daa56bece1318ca8a07a56254a8c4..aa03abe2feb64a084fb76e6f60c69afc7499961f 100644 --- a/bob/ip/binseg/configs/datasets/drive2336.py +++ b/bob/ip/binseg/configs/datasets/iostarvessel544.py @@ -1,16 +1,14 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from bob.db.drive import Database as DRIVE +from bob.db.iostar import Database as IOSTAR from bob.ip.binseg.data.transforms import * from bob.ip.binseg.data.binsegdataset import BinSegDataset #### Config #### transforms = Compose([ - Crop(75,10,416,544) - ,Pad((21,0,22,0)) - ,Resize(2336) + Resize(544) ,RandomHFlip() ,RandomVFlip() ,RandomRotation() @@ -19,7 +17,7 @@ transforms = Compose([ ]) # bob.db.dataset init -bobdb = DRIVE(protocol = 'default') +bobdb = IOSTAR(protocol='default_vessel') # PyTorch dataset dataset = BinSegDataset(bobdb, split='train', transform=transforms) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/iostarvessel608.py b/bob/ip/binseg/configs/datasets/iostarvessel608.py new file mode 100644 index 0000000000000000000000000000000000000000..7fce4507cd090555a2e0bac7f575dfd9d9f85c3d --- /dev/null +++ b/bob/ip/binseg/configs/datasets/iostarvessel608.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from bob.db.iostar import Database as IOSTAR +from bob.ip.binseg.data.transforms import * +from bob.ip.binseg.data.binsegdataset import BinSegDataset + +#### Config #### + +transforms = Compose([ + Pad((81,0,81,0)) + ,Resize(608) + ,RandomHFlip() + ,RandomVFlip() + ,RandomRotation() + ,ColorJitter() + ,ToTensor() + ]) + +# bob.db.dataset init +bobdb = IOSTAR(protocol='default_vessel') + +# PyTorch dataset +dataset = BinSegDataset(bobdb, split='train', transform=transforms) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/stare1168sslhrf.py b/bob/ip/binseg/configs/datasets/stare1168sslhrf.py deleted file mode 100644 index a7e3e201464c8262dc946e4ba114635299223295..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/stare1168sslhrf.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from bob.db.stare import Database as STARE -from bob.db.hrf import Database as HRF -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset, SSLBinSegDataset, UnLabeledBinSegDataset - -#### Config #### - -#### Unlabeled HRF TRAIN #### -unlabeled_transforms = Compose([ - RandomRotation() - ,Crop(0,108,2336,3296) - ,Resize(1168) - ,RandomHFlip() - ,RandomVFlip() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -hrfbobdb = HRF(protocol = 'default') - -# PyTorch dataset -unlabeled_dataset = UnLabeledBinSegDataset(hrfbobdb, split='train', transform=unlabeled_transforms) - - -#### Labeled #### -labeled_transforms = Compose([ - RandomRotation() - ,Crop(50,0,500,705) - ,Resize(1168) - ,Pad((1,0,1,0)) - ,RandomHFlip() - ,RandomVFlip() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -bobdb = STARE(protocol = 'default') -labeled_dataset = BinSegDataset(bobdb, split='train', transform=labeled_transforms) - -# SSL Dataset - -dataset = SSLBinSegDataset(labeled_dataset, unlabeled_dataset) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/stare1168sslhrfrefuge.py b/bob/ip/binseg/configs/datasets/stare1168sslhrfrefuge.py deleted file mode 100644 index a116997a8e63a3ac38e9b4fb2b43d0115fc56251..0000000000000000000000000000000000000000 --- a/bob/ip/binseg/configs/datasets/stare1168sslhrfrefuge.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from bob.db.stare import Database as STARE -from bob.db.refuge import Database as REFUGE -from bob.db.hrf import Database as HRF -from bob.ip.binseg.data.transforms import * -from bob.ip.binseg.data.binsegdataset import BinSegDataset, SSLBinSegDataset, UnLabeledBinSegDataset -import torch -#### Config #### - -#### Unlabeled HRF TRAIN #### -unlabeled_transforms = Compose([ - RandomRotation() - ,Crop(0,108,2336,3296) - ,Resize(1168) - ,RandomHFlip() - ,RandomVFlip() - ,ColorJitter() - ,ToTensor() - ]) - -#### Unlabeled REFUGE Test #### - -unlabeled_transforms_refuge = Compose([ - RandomRotation() - ,Crop(220,11,1150,1623) - ,Resize(1168) - ,RandomHFlip() - ,RandomVFlip() - ,ColorJitter() - ,ToTensor() - ]) - -## bob.db.dataset init -# hrf -hrfbobdb = HRF(protocol = 'default') -# refuge -refugebobdb = REFUGE() - - -# PyTorch dataset -unlabeled_dataset_1 = UnLabeledBinSegDataset(hrfbobdb, split='train', transform=unlabeled_transforms) - -unlabeled_dataset_2 = UnLabeledBinSegDataset(refugebobdb, split='test', transform=unlabeled_transforms_refuge) - -# Compose -unlabeled_dataset = torch.utils.data.ConcatDataset([unlabeled_dataset_1,unlabeled_dataset_2]) - - -#### Labeled #### -labeled_transforms = Compose([ - RandomRotation() - ,Crop(50,0,500,705) - ,Resize(1168) - ,Pad((1,0,1,0)) - ,RandomHFlip() - ,RandomVFlip() - ,ColorJitter() - ,ToTensor() - ]) - -# bob.db.dataset init -bobdb = STARE(protocol = 'default') -labeled_dataset = BinSegDataset(bobdb, split='train', transform=labeled_transforms) - -# SSL Dataset - -dataset = SSLBinSegDataset(labeled_dataset, unlabeled_dataset) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/stare544.py b/bob/ip/binseg/configs/datasets/stare544.py index 08c2ad4fb8f4610d6213cb3357d0e4bd491a4f3f..f03fcefbe6fef80ef1e6a7ec97d2b6c1df221024 100644 --- a/bob/ip/binseg/configs/datasets/stare544.py +++ b/bob/ip/binseg/configs/datasets/stare544.py @@ -14,7 +14,6 @@ transforms = Compose([ RandomRotation() ,RandomVFlip() ,ColorJitter() ,ToTensor() - ,ToTensor() ]) # bob.db.dataset init diff --git a/bob/ip/binseg/configs/datasets/starechasedb1iostarhrf544.py b/bob/ip/binseg/configs/datasets/starechasedb1iostarhrf544.py new file mode 100644 index 0000000000000000000000000000000000000000..72349b3bd6370c0b996edf90e96403df54ec27af --- /dev/null +++ b/bob/ip/binseg/configs/datasets/starechasedb1iostarhrf544.py @@ -0,0 +1,10 @@ +from bob.ip.binseg.configs.datasets.stare544 import dataset as stare +from bob.ip.binseg.configs.datasets.chasedb1544 import dataset as chase +from bob.ip.binseg.configs.datasets.iostarvessel544 import dataset as iostar +from bob.ip.binseg.configs.datasets.hrf544 import dataset as hrf +import torch + +#### Config #### + +# PyTorch dataset +dataset = torch.utils.data.ConcatDataset([stare,chase,hrf,iostar]) \ No newline at end of file diff --git a/bob/ip/binseg/configs/datasets/starechasedb1iostarhrf544ssldrive.py b/bob/ip/binseg/configs/datasets/starechasedb1iostarhrf544ssldrive.py new file mode 100644 index 0000000000000000000000000000000000000000..3a5e3008f73cea8d1163030783d70736fad6ef9f --- /dev/null +++ b/bob/ip/binseg/configs/datasets/starechasedb1iostarhrf544ssldrive.py @@ -0,0 +1,34 @@ +from bob.ip.binseg.configs.datasets.stare544 import dataset as stare +from bob.ip.binseg.configs.datasets.chasedb1544 import dataset as chase +from bob.ip.binseg.configs.datasets.iostarvessel544 import dataset as iostar +from bob.ip.binseg.configs.datasets.hrf544 import dataset as hrf +from bob.db.drive import Database as DRIVE +from bob.ip.binseg.data.transforms import * +import torch +from bob.ip.binseg.data.binsegdataset import BinSegDataset, SSLBinSegDataset, UnLabeledBinSegDataset + + +#### Config #### + +# PyTorch dataset +labeled_dataset = torch.utils.data.ConcatDataset([stare,chase,iostar,hrf]) + +#### Unlabeled STARE TRAIN #### +unlabeled_transforms = Compose([ + CenterCrop((544,544)) + ,RandomHFlip() + ,RandomVFlip() + ,RandomRotation() + ,ColorJitter() + ,ToTensor() + ]) + +# bob.db.dataset init +drivebobdb = DRIVE(protocol = 'default') + +# PyTorch dataset +unlabeled_dataset = UnLabeledBinSegDataset(drivebobdb, split='train', transform=unlabeled_transforms) + +# SSL Dataset + +dataset = SSLBinSegDataset(labeled_dataset, unlabeled_dataset) \ No newline at end of file diff --git a/bob/ip/binseg/configs/models/m2unetssl0703.py b/bob/ip/binseg/configs/models/driussl.py similarity index 80% rename from bob/ip/binseg/configs/models/m2unetssl0703.py rename to bob/ip/binseg/configs/models/driussl.py index d5a160821deaea8436d533938c69b9f535fc763d..39afd4a03f956b24aeeb078c297fb026cdc369b5 100644 --- a/bob/ip/binseg/configs/models/m2unetssl0703.py +++ b/bob/ip/binseg/configs/models/driussl.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- from torch.optim.lr_scheduler import MultiStepLR -from bob.ip.binseg.modeling.m2u import build_m2unet +from bob.ip.binseg.modeling.driu import build_driu import torch.optim as optim from torch.nn import BCEWithLogitsLoss from bob.ip.binseg.utils.model_zoo import modelurls @@ -23,17 +23,17 @@ scheduler_milestones = [900] scheduler_gamma = 0.1 # model -model = build_m2unet() +model = build_driu() # pretrained backbone -pretrained_backbone = modelurls['mobilenetv2'] +pretrained_backbone = modelurls['vgg16'] # optimizer optimizer = AdaBound(model.parameters(), lr=lr, betas=betas, final_lr=final_lr, gamma=gamma, eps=eps, weight_decay=weight_decay, amsbound=amsbound) - + # criterion -criterion = MixJacLoss(lambda_u=0.3, jacalpha=0.7, unlabeledjacalpha=0.3) +criterion = MixJacLoss(lambda_u=0.05, jacalpha=0.7) # scheduler scheduler = MultiStepLR(optimizer, milestones=scheduler_milestones, gamma=scheduler_gamma) diff --git a/bob/ip/binseg/configs/models/m2unetssl.py b/bob/ip/binseg/configs/models/m2unetssl.py index 8280e52f8d94de8b43cc1f4da6e8afb0b4f42878..3497cea26b03c44b682cfd3beb167afce3015e43 100644 --- a/bob/ip/binseg/configs/models/m2unetssl.py +++ b/bob/ip/binseg/configs/models/m2unetssl.py @@ -33,7 +33,7 @@ optimizer = AdaBound(model.parameters(), lr=lr, betas=betas, final_lr=final_lr, eps=eps, weight_decay=weight_decay, amsbound=amsbound) # criterion -criterion = MixJacLoss(lambda_u=0.05, jacalpha=0.7, unlabeledjacalpha=0.3) +criterion = MixJacLoss(lambda_u=0.05, jacalpha=0.7) # scheduler scheduler = MultiStepLR(optimizer, milestones=scheduler_milestones, gamma=scheduler_gamma) diff --git a/bob/ip/binseg/modeling/losses.py b/bob/ip/binseg/modeling/losses.py index bb6578af297893252e06f7cfdafe4d950da3790a..7bcde8503fdb2334fea0a2f2ce9cc1b0c8253343 100644 --- a/bob/ip/binseg/modeling/losses.py +++ b/bob/ip/binseg/modeling/losses.py @@ -171,7 +171,7 @@ class MixJacLoss(_Loss): lambda_u : int determines the weighting of SoftJaccard and BCE. """ - def __init__(self, lambda_u=100, jacalpha=0.7, unlabeledjacalpha=0.3, size_average=None, reduce=None, reduction='mean', pos_weight=None): + def __init__(self, lambda_u=100, jacalpha=0.7, size_average=None, reduce=None, reduction='mean', pos_weight=None): super(MixJacLoss, self).__init__(size_average, reduce, reduction) self.lambda_u = lambda_u self.labeled_loss = SoftJaccardBCELogitsLoss(alpha=jacalpha) diff --git a/doc/benchmarkresults.rst b/doc/benchmarkresults.rst new file mode 100644 index 0000000000000000000000000000000000000000..fb30961cb203ea3f2fe1f83f96c34d99e26d2403 --- /dev/null +++ b/doc/benchmarkresults.rst @@ -0,0 +1,25 @@ +.. -*- coding: utf-8 -*- +.. _bob.ip.binseg.benchmarkresults: + + +================== +Benchmark Results +================== + +Dice Scores +=========== + +* Benchmark results for models: DRIU, HED, M2UNet and U-Net. +* Train-Test split as indicated in :ref:`bob.ip.binseg.datasets` + ++--------+----------+--------+---------+--------+--------+ +| | CHASEDB1 | DRIVE | HRF1168 | IOSTAR | STARE | ++--------+----------+--------+---------+--------+--------+ +| DRIU | 0.8114 | 0.8226 | 0.7865 | 0.8273 | 0.8286 | ++--------+----------+--------+---------+--------+--------+ +| HED | 0.8111 | 0.8192 | 0.7868 | 0.8275 | 0.8250 | ++--------+----------+--------+---------+--------+--------+ +| M2UNet | 0.8035 | 0.8051 | 0.7838 | 0.8194 | 0.8174 | ++--------+----------+--------+---------+--------+--------+ +| UNet | 0.8136 | 0.8237 | 0.7941 | 0.8203 | 0.8306 | ++--------+----------+--------+---------+--------+--------+ diff --git a/doc/datasets.rst b/doc/datasets.rst index 67939144b975ed25b1b01d996b656d9aa4c2fe6e..0704149b9ca841371fa59f7b3d5c9b48a0a4ea26 100644 --- a/doc/datasets.rst +++ b/doc/datasets.rst @@ -1,31 +1,33 @@ .. -*- coding: utf-8 -*- .. _bob.ip.binseg.datasets: - ================== -Supported Datasets +Supported Datasets ================== -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| # | Name | H x W | # imgs | Train | Test | Mask | Vessel | OD | Cup | Ethnicity | -+===+=============+====================+========+=======+======+======+========+====+=====+===========================+ -| 1 | DRIVE | 584 x 565 | 40 | 20 | 20 | x | x | | | Dutch (adult) | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 2 | STARE | 605 x 700 | 20 | 10 | 10 | | x | | | White American (adult) | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 3 | CHASE_DB1 | 960 x 999 | 28 | 8 | 20 | | x | | | British (child) | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 4 | HRF | 2336 x 3504 | 45 | 15 | 30 | x | x | | | | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 5 | IOSTAR | 1024 x 1024 | 30 | 20 | 10 | x | x | x | | | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 6 | DRIONS-DB | 400 x 600 | 110 | 60 | 50 | | | x | | | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 7 | RIM-ONE r3 | 1424 x 1072 | 159 | 99 | 60 | | | x | x | | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 8 | Drishti-GS1 | varying | 101 | 50 | 51 | | | x | x | | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 9 | REFUGE train| 2056 x 2124 | 400 | 400 | | | | x | x | | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ -| 9 | REFUGE val | 1634 x 1634 | 400 | | 400 | | | x | x | | -+---+-------------+--------------------+--------+-------+------+------+--------+----+-----+---------------------------+ ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| # | Name | H x W | # imgs | Train | Test | Mask | Vessel | OD | Cup | Train-Test split reference | ++=====+===============+=============+========+=======+======+======+========+=====+=====+============================+ +| 1 | Drive_ | 584 x 565 | 40 | 20 | 20 | x | x | | | `Staal et al. (2004)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 2 | STARE_ | 605 x 700 | 20 | 10 | 10 | | x | | | `Maninis et al. (2016)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 3 | CHASEDB1_ | 960 x 999 | 28 | 8 | 20 | | x | | | `Fraz et al. (2012)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 4 | HRF_ | 2336 x 3504 | 45 | 15 | 30 | x | x | | | `Orlando et al. (2016)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 5 | IOSTAR_ | 1024 x 1024 | 30 | 20 | 10 | x | x | x | | `Meyer et al. (2017)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 6 | DRIONS-DB_ | 400 x 600 | 110 | 60 | 50 | | | x | | `Maninis et al. (2016)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 7 | RIM-ONEr3_ | 1424 x 1072 | 159 | 99 | 60 | | | x | x | `Maninis et al. (2016)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 8 | Drishti-GS1_ | varying | 101 | 50 | 51 | | | x | x | `Sivaswamy et al. (2014)`_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 9 | REFUGE_ train | 2056 x 2124 | 400 | 400 | | | | x | x | REFUGE_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ +| 9 | REFUGE_ val | 1634 x 1634 | 400 | | 400 | | | x | x | REFUGE_ | ++-----+---------------+-------------+--------+-------+------+------+--------+-----+-----+----------------------------+ + + +.. include:: links.rst \ No newline at end of file diff --git a/doc/index.rst b/doc/index.rst index fe6cf753734f6167476572120efa5ad3283073f7..c19b48eaba56c1d134694231dded4a3c4fe34d04 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -15,6 +15,7 @@ Users Guide :maxdepth: 2 datasets + benchmarkresults api references diff --git a/doc/links.rst b/doc/links.rst index d8a696c481b35c7360d2da0cf30ab2f392fada20..2398e1c87eeebc3a0e8aba0d27ee8b3a1231acfd 100644 --- a/doc/links.rst +++ b/doc/links.rst @@ -6,4 +6,48 @@ .. _bob: http://www.idiap.ch/software/bob .. _installation: https://www.idiap.ch/software/bob/install .. _mailing list: https://www.idiap.ch/software/bob/discuss -.. _torchvision package: https://github.com/pytorch/vision \ No newline at end of file +.. _torchvision package: https://github.com/pytorch/vision + +.. DRIVE + +.. _drive: https://doi.org/10.1109/TMI.2004.825627 +.. _staal et al. (2004): https://doi.org/10.1109/TMI.2004.825627 + +.. STARE + +.. _stare: https://doi.org/10.1109/42.845178 +.. _maninis et al. (2016): https://doi.org/10.1007/978-3-319-46723-8_17 + +.. HRF + +.. _hrf: http://dx.doi.org/10.1155/2013/154860 +.. _orlando et al. (2016): https://doi.org/10.1109/TBME.2016.2535311 + +.. IOSTAR + +.. _iostar: https://doi.org/10.1109/TMI.2016.2587062 +.. _meyer et al. (2017): https://doi.org/10.1007/978-3-319-59876-5_56 + +.. CHASEDB1 + +.. _chasedb1: https://doi.org/10.1109/TBME.2012.2205687 +.. _fraz et al. (2012): https://doi.org/10.1109/TBME.2012.2205687 + +.. DRIONSDB + +.. _drions-db: http://dx.doi.org/10.1016/j.artmed.2008.04.005 +.. _maninis et al. (2016): https://doi.org/10.1007/978-3-319-46723-8_17 + +.. RIM-ONE r3 + +.. _rim-oner3: https://dspace5.zcu.cz/bitstream/11025/29670/1/Fumero.pdf +.. _maninis et al. (2016): https://doi.org/10.1007/978-3-319-46723-8_17 + +.. Drishti-GS1 + +.. _drishti-gs1: https://doi.org/10.1109/ISBI.2014.6867807 +.. _sivaswamy et al. (2014): https://doi.org/10.1109/ISBI.2014.6867807 + +.. REFUGE + +.. _refuge: http://ai.baidu.com/broad/download?dataset=gon diff --git a/setup.py b/setup.py index 8b82e9b20a4badd7c8af70a37dea541e41d9fb56..593a4d782a66fee45bd3f236d63340858aefacc9 100644 --- a/setup.py +++ b/setup.py @@ -58,6 +58,7 @@ setup( #bob hed train configurations 'bob.ip.binseg.config': [ 'DRIU = bob.ip.binseg.configs.models.driu', + 'DRIUSSL = bob.ip.binseg.configs.models.driussl' 'DRIUOD = bob.ip.binseg.configs.models.driuod', 'HED = bob.ip.binseg.configs.models.hed', 'M2UNet = bob.ip.binseg.configs.models.m2unet',