From e2a219fa299bbf9a8271955f9c327fc6e5fcd9e9 Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Sat, 18 Dec 2021 22:24:31 +0530 Subject: [PATCH 1/9] Update ade20k_loader.py --- ptsemseg/loader/ade20k_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ptsemseg/loader/ade20k_loader.py b/ptsemseg/loader/ade20k_loader.py index 8a37bed3..1ff9566a 100644 --- a/ptsemseg/loader/ade20k_loader.py +++ b/ptsemseg/loader/ade20k_loader.py @@ -46,7 +46,7 @@ def __getitem__(self, index): img_path = self.files[self.split][index].rstrip() lbl_path = img_path[:-4] + "_seg.png" - img = m.imread(img_path) + img = plt.imread(img_path) img = np.array(img, dtype=np.uint8) lbl = m.imread(lbl_path) From c3f4f9f2b9b844683eaadd2854aade3d5d0ae6d3 Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Sat, 18 Dec 2021 23:50:21 +0530 Subject: [PATCH 2/9] Update ade20k_loader.py --- ptsemseg/loader/ade20k_loader.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ptsemseg/loader/ade20k_loader.py b/ptsemseg/loader/ade20k_loader.py index 1ff9566a..93051e36 100644 --- a/ptsemseg/loader/ade20k_loader.py +++ b/ptsemseg/loader/ade20k_loader.py @@ -2,6 +2,7 @@ import torch import torchvision import numpy as np +import cv2 import scipy.misc as m import matplotlib.pyplot as plt @@ -46,10 +47,10 @@ def __getitem__(self, index): img_path = self.files[self.split][index].rstrip() lbl_path = img_path[:-4] + "_seg.png" - img = plt.imread(img_path) + img = cv2.imread(img_path) img = np.array(img, dtype=np.uint8) - lbl = m.imread(lbl_path) + lbl = cv2.imread(lbl_path) lbl = np.array(lbl, dtype=np.int32) if self.augmentations is not None: @@ -61,7 +62,7 @@ def __getitem__(self, index): return img, lbl def transform(self, img, lbl): - img = m.imresize(img, (self.img_size[0], self.img_size[1])) # uint8 with RGB mode + img = cv2.resize(img, (self.img_size[0], self.img_size[1])) # uint8 with RGB mode img = img[:, :, ::-1] # RGB -> BGR img = img.astype(np.float64) img -= self.mean @@ -75,7 +76,7 @@ def transform(self, img, lbl): lbl = self.encode_segmap(lbl) classes = np.unique(lbl) lbl = lbl.astype(float) - lbl = m.imresize(lbl, (self.img_size[0], self.img_size[1]), "nearest", mode="F") + lbl = cv2.resize(lbl, (self.img_size[0], self.img_size[1]), "nearest", mode="F") lbl = lbl.astype(int) assert np.all(classes == np.unique(lbl)) From 339f5d1d94cdb1f3314c22c37cfaad94163491ab Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Sat, 18 Dec 2021 23:58:29 +0530 Subject: [PATCH 3/9] Update ade20k_loader.py --- ptsemseg/loader/ade20k_loader.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ptsemseg/loader/ade20k_loader.py b/ptsemseg/loader/ade20k_loader.py index 93051e36..eb0bf2c0 100644 --- a/ptsemseg/loader/ade20k_loader.py +++ b/ptsemseg/loader/ade20k_loader.py @@ -46,6 +46,8 @@ def __len__(self): def __getitem__(self, index): img_path = self.files[self.split][index].rstrip() lbl_path = img_path[:-4] + "_seg.png" + print("img_path",img_path) + print("lbl_path",lbl_path) img = cv2.imread(img_path) img = np.array(img, dtype=np.uint8) From 9a6bbb0e1ca69786aa7c17f207a71d61c1d6aa0b Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Sun, 19 Dec 2021 01:56:50 +0530 Subject: [PATCH 4/9] Update ade20k_loader.py --- ptsemseg/loader/ade20k_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ptsemseg/loader/ade20k_loader.py b/ptsemseg/loader/ade20k_loader.py index eb0bf2c0..c43c70b5 100644 --- a/ptsemseg/loader/ade20k_loader.py +++ b/ptsemseg/loader/ade20k_loader.py @@ -45,7 +45,7 @@ def __len__(self): def __getitem__(self, index): img_path = self.files[self.split][index].rstrip() - lbl_path = img_path[:-4] + "_seg.png" + lbl_path = img_path[:-4] + ".png" print("img_path",img_path) print("lbl_path",lbl_path) From b91db429a84aeff6161f4d02283330cbdc7d9ce9 Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Sun, 19 Dec 2021 21:36:57 +0530 Subject: [PATCH 5/9] Update frrn.py --- ptsemseg/models/frrn.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ptsemseg/models/frrn.py b/ptsemseg/models/frrn.py index e2ec72b0..23eaf384 100644 --- a/ptsemseg/models/frrn.py +++ b/ptsemseg/models/frrn.py @@ -26,7 +26,7 @@ class frrn(nn.Module): 2) TF implementation by @kiwonjoon: https://github.com/hiwonjoon/tf-frrn """ - def __init__(self, n_classes=21, model_type="B", group_norm=False, n_groups=16): + def __init__(self, n_classes=150, model_type="B", group_norm=False, n_groups=16): super(frrn, self).__init__() self.n_classes = n_classes self.model_type = model_type From 3cff5ee52dadc080bb07383da2b9e1d9bbcc1505 Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Mon, 20 Dec 2021 11:49:36 +0530 Subject: [PATCH 6/9] Update frrn.py --- ptsemseg/models/frrn.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ptsemseg/models/frrn.py b/ptsemseg/models/frrn.py index 23eaf384..6053af99 100644 --- a/ptsemseg/models/frrn.py +++ b/ptsemseg/models/frrn.py @@ -144,7 +144,7 @@ def forward(self, x): for n_blocks, channels, scale in self.decoder_frru_specs: # bilinear upsample smaller feature map upsample_size = torch.Size([_s * 2 for _s in y.size()[-2:]]) - y_upsampled = F.upsample(y, size=upsample_size, mode="bilinear", align_corners=True) + y_upsampled = F.interpolate(y, size=upsample_size, mode="bilinear", align_corners=True) # pass through decoding FRRUs for block in range(n_blocks): key = "_".join(map(str, ["decoding_frru", n_blocks, channels, scale, block])) @@ -155,7 +155,7 @@ def forward(self, x): # merge streams x = torch.cat( - [F.upsample(y, scale_factor=2, mode="bilinear", align_corners=True), z], dim=1 + [F.interpolate(y, scale_factor=2, mode="bilinear", align_corners=True), z], dim=1 ) x = self.merge_conv(x) From 8d1d37df69ee7d415a084c66ba1775a9923ed8a2 Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Thu, 23 Dec 2021 11:14:40 +0530 Subject: [PATCH 7/9] Update utils.py --- ptsemseg/models/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ptsemseg/models/utils.py b/ptsemseg/models/utils.py index ec24bba0..679d3fb0 100644 --- a/ptsemseg/models/utils.py +++ b/ptsemseg/models/utils.py @@ -401,7 +401,7 @@ def forward(self, y, z): x = self.conv_res(y_prime) upsample_size = torch.Size([_s * self.scale for _s in y_prime.shape[-2:]]) - x = F.upsample(x, size=upsample_size, mode="nearest") + x = F.interpolate(x, size=upsample_size, mode="nearest") z_prime = z + x return y_prime, z_prime @@ -482,14 +482,14 @@ def __init__(self, channels, up_scale_high, up_scale_low, high_shape, low_shape) self.conv_low = nn.Conv2d(low_shape[1], channels, kernel_size=3) def forward(self, x_high, x_low): - high_upsampled = F.upsample( + high_upsampled = F.interpolate( self.conv_high(x_high), scale_factor=self.up_scale_high, mode="bilinear" ) if x_low is None: return high_upsampled - low_upsampled = F.upsample( + low_upsampled = F.interpolate( self.conv_low(x_low), scale_factor=self.up_scale_low, mode="bilinear" ) From d637ceb24712290a1e1de2a97a86bedc0da8ff21 Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Mon, 27 Dec 2021 07:27:59 +0530 Subject: [PATCH 8/9] Update ade20k_loader.py Add assertion check, on line 27, to see if split contains intended splits i.e. 'training' and 'validation'. Added a better way to read files of the intended split, on lines 45 and 46. Changed label path on line 57, which previously didn't point to the 'annotations' directory. Changed 'm.imread' to 'cv2.imread', on lines 59 and 62. Changed 'm.imresize' to 'cv2.resize', on lines 74 and 89. Removed assertion check on line 91. --- ptsemseg/loader/ade20k_loader.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/ptsemseg/loader/ade20k_loader.py b/ptsemseg/loader/ade20k_loader.py index c43c70b5..60d0af3d 100644 --- a/ptsemseg/loader/ade20k_loader.py +++ b/ptsemseg/loader/ade20k_loader.py @@ -3,6 +3,7 @@ import torchvision import numpy as np import cv2 +from pathlib import Path import scipy.misc as m import matplotlib.pyplot as plt @@ -23,7 +24,8 @@ def __init__( test_mode=False, ): self.root = root - self.split = split + assert split in ['training', 'validation'] + self.split = 'training' if split == 'training' else 'validation' self.is_transform = is_transform self.augmentations = augmentations self.img_norm = img_norm @@ -31,23 +33,28 @@ def __init__( self.n_classes = 150 self.img_size = img_size if isinstance(img_size, tuple) else (img_size, img_size) self.mean = np.array([104.00699, 116.66877, 122.67892]) + """ self.files = collections.defaultdict(list) - if not self.test_mode: for split in ["training", "validation"]: file_list = recursive_glob( rootdir=self.root + "images/" + self.split + "/", suffix=".jpg" ) self.files[split] = file_list + """ + img_path = Path(self.root + 'images/' + self.split) + self.files = list(img_path.glob('*.jpg')) + + if not self.files: + raise Exception(f"No images found in {img_path}") + print(f"Found {len(self.files)} {split} images.") def __len__(self): - return len(self.files[self.split]) + return len(self.files) def __getitem__(self, index): img_path = self.files[self.split][index].rstrip() - lbl_path = img_path[:-4] + ".png" - print("img_path",img_path) - print("lbl_path",lbl_path) + lbl_path = img_path.replace('images','annotations')[:-4] + ".png" img = cv2.imread(img_path) img = np.array(img, dtype=np.uint8) @@ -78,9 +85,10 @@ def transform(self, img, lbl): lbl = self.encode_segmap(lbl) classes = np.unique(lbl) lbl = lbl.astype(float) - lbl = cv2.resize(lbl, (self.img_size[0], self.img_size[1]), "nearest", mode="F") + #lbl = cv2.resize(lbl, (self.img_size[0], self.img_size[1]), "nearest", mode="F") + lbl = cv2.resize(lbl, (self.img_size[0], self.img_size[1])) lbl = lbl.astype(int) - assert np.all(classes == np.unique(lbl)) + #assert np.all(classes == np.unique(lbl)) img = torch.from_numpy(img).float() lbl = torch.from_numpy(lbl).long() From 02a3f697cd6859a8110929bf772f6ae60822f28f Mon Sep 17 00:00:00 2001 From: Moaz <32312009+MOAZ47@users.noreply.github.com> Date: Mon, 27 Dec 2021 07:38:26 +0530 Subject: [PATCH 9/9] Update ade20k_loader.py Changed nun classes on line 33 --- ptsemseg/loader/ade20k_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ptsemseg/loader/ade20k_loader.py b/ptsemseg/loader/ade20k_loader.py index 60d0af3d..92894660 100644 --- a/ptsemseg/loader/ade20k_loader.py +++ b/ptsemseg/loader/ade20k_loader.py @@ -30,7 +30,7 @@ def __init__( self.augmentations = augmentations self.img_norm = img_norm self.test_mode = test_mode - self.n_classes = 150 + self.n_classes = img_size[0] if isinstance(img_size, tuple) else img_size self.img_size = img_size if isinstance(img_size, tuple) else (img_size, img_size) self.mean = np.array([104.00699, 116.66877, 122.67892]) """