Spaces:
Runtime error
Runtime error
| from torchvision.transforms.functional import normalize | |
| import torch.nn as nn | |
| import numpy as np | |
| def denormalize(tensor, mean, std): | |
| mean = np.array(mean) | |
| std = np.array(std) | |
| _mean = -mean/std | |
| _std = 1/std | |
| return normalize(tensor, _mean, _std) | |
| class Denormalize(object): | |
| def __init__(self, mean, std): | |
| mean = np.array(mean) | |
| std = np.array(std) | |
| self._mean = -mean/std | |
| self._std = 1/std | |
| def __call__(self, tensor): | |
| if isinstance(tensor, np.ndarray): | |
| return (tensor - self._mean.reshape(-1,1,1)) / self._std.reshape(-1,1,1) | |
| return normalize(tensor, self._mean, self._std) | |
| def fix_bn(model): | |
| for m in model.modules(): | |
| if isinstance(m, nn.BatchNorm2d): | |
| m.eval() | |
| m.weight.requires_grad = False | |
| m.bias.requires_grad = False | |
| def color_map(dataset): | |
| if dataset=='voc': | |
| return voc_cmap() | |
| elif dataset=='cityscapes': | |
| return cityscapes_cmap() | |
| elif dataset=='ade': | |
| return ade_cmap() | |
| elif dataset =='isaid': | |
| return isaid_cmap() | |
| elif dataset =='SAR2020': | |
| return SAR2020_cmap() | |
| elif dataset =='Unify_single': | |
| return unify_single_cmap() | |
| elif dataset == 'Unify_double': | |
| return unify_cmap() | |
| elif dataset == 'Unify_YIJISAR': | |
| return unify_YIJISAR_cmap() | |
| elif dataset == 'Unify_Vai': | |
| return unify_Vai_cmap() | |
| def unify_Vai_cmap(): | |
| cmap = np.zeros((255, 3), dtype=np.uint8) | |
| colors = [ | |
| [0, 0, 0],#0 | |
| [0, 255, 0], | |
| [255, 255, 255], | |
| [0, 0, 255], | |
| [0, 0, 0], | |
| [255,255,0], | |
| [0, 255, 255], #6 | |
| [255,195,128], | |
| [0, 0, 0], | |
| [255,255,0], | |
| [0, 0, 0], #10 | |
| [0, 0, 0], | |
| [0,0,0],#12 | |
| [0, 0, 0], | |
| [0,0,255], #14 | |
| ] | |
| for i in range(len(colors)): | |
| cmap[i] = colors[i] | |
| return cmap.astype(np.uint8) | |
| def cityscapes_cmap(): | |
| return np.array([(128, 64,128), (244, 35,232), ( 70, 70, 70), (102,102,156), (190,153,153), (153,153,153), (250,170, 30), | |
| (220,220, 0), (107,142, 35), (152,251,152), ( 70,130,180), (220, 20, 60), (255, 0, 0), ( 0, 0,142), | |
| ( 0, 0, 70), ( 0, 60,100), ( 0, 80,100), ( 0, 0,230), (119, 11, 32), ( 0, 0, 0)], | |
| dtype=np.uint8) | |
| def SAR2020_cmap(): | |
| cmap = np.zeros((256, 3), dtype=np.uint8) | |
| colors = [[255,255,255], [255,255,0], [0,0,255], [0, 255,0], [255,0,0], [0,255,255]] | |
| for i in range(len(colors)): | |
| cmap[i] = colors[i] | |
| return cmap.astype(np.uint8) | |
| def isaid_cmap(): | |
| cmap = np.zeros((255, 3), dtype=np.uint8) | |
| colors = [[0, 0, 0], | |
| [0,63,0], | |
| [0,63,191], | |
| [0, 127, 63], | |
| [0, 63, 255], | |
| [0,100,155], | |
| [0, 0, 191], [0, 127, 127], | |
| [0, 127, 255], [0, 191, 127], [0, 0, 63], [0, 191, 127], [0, 127, 191],[0, 63, 63], [0 ,0 ,255], [0,63,127]] | |
| for i in range(len(colors)): | |
| cmap[i] = colors[i] | |
| return cmap.astype(np.uint8) | |
| def unify_cmap(): | |
| cmap = np.zeros((255, 3), dtype=np.uint8) | |
| colors = [ | |
| [0, 0, 0], | |
| [0, 127, 255], | |
| # [0, 0, 191], | |
| [0, 63, 0], | |
| [0, 127, 63], | |
| [0, 63, 255], | |
| [0, 127, 127], | |
| # [0, 0, 127], | |
| [0, 0, 63], | |
| [0, 63, 127], | |
| [0, 63, 191], | |
| [0, 63, 63], | |
| [0, 127, 191], | |
| [0, 191, 127], | |
| [0, 100, 155], | |
| [0, 0, 255], | |
| # [255, 255, 255], #0 | |
| # [0,63,0], #1 | |
| # [0,127,63],#2 | |
| # [0, 63, 255],#3 | |
| # [0, 127, 127],#4 | |
| # [0,128,0], #5, | |
| # [0, 0, 63],#6 | |
| # [0,63,127],#7 | |
| # [0, 63, 191],#8 | |
| # [0, 63, 63],#9 | |
| # [0, 127, 191], #10 | |
| # [0, 191, 127],#11 | |
| # [0,100,155], #12 | |
| # [0, 0, 255], #13 | |
| [0,255,0], #14 | |
| [0,153,204], #15 | |
| [204,204,68], #16 | |
| [255, 204, 51], #17 | |
| [255, 255, 204], #18 | |
| [0, 255, 255], | |
| [255,102,102], #20 | |
| [0,255,0] ,#21 | |
| [255,255,0],#22 | |
| [255,0,0],#23 | |
| [255,195,128],#24 | |
| [153,102,153] | |
| ] | |
| for i in range(len(colors)): | |
| cmap[i] = colors[i] | |
| return cmap.astype(np.uint8) | |
| def unify_YIJISAR_cmap(): | |
| cmap = np.zeros((255, 3), dtype=np.uint8) | |
| colors = [ | |
| [255, 255, 0],#0 | |
| [0, 255, 0], | |
| [0, 63, 0], | |
| [0, 0, 255], | |
| [0, 63, 255], | |
| [255, 0, 0], | |
| [0, 0, 63], | |
| [0, 63, 127], | |
| [0, 63, 191], | |
| [0,255, 255], | |
| [0, 127, 191], | |
| [0, 191, 127], | |
| [0,0,0],#12 | |
| [0, 0, 255], | |
| [0,255,0], #14 | |
| [0,153,204], #15 | |
| [204,204,68], #16 | |
| [255, 204, 51], #17 | |
| [255, 255, 204], #18 | |
| [0, 255, 255], | |
| [255,102,102], #20 | |
| [0,255,0] ,#21 | |
| [255,255,0],#22 | |
| [255,0,0],#23 | |
| [255,195,128],#24 | |
| [153,102,153] | |
| ] | |
| for i in range(len(colors)): | |
| cmap[i] = colors[i] | |
| return cmap.astype(np.uint8) | |
| def unify_single_cmap(): | |
| cmap = np.zeros((255, 3), dtype=np.uint8) | |
| colors = [ | |
| [0, 127, 255],#0 | |
| [0, 0, 0], | |
| [0, 0, 0], | |
| [0, 0, 0], #3 | |
| [0, 0, 0], #4 | |
| [0,255,0], #5 | |
| [0, 0, 0], | |
| [0, 0, 0], # 7 | |
| [0, 0, 0], # 8 | |
| [0, 0, 0], | |
| [0, 0, 0], # 10 | |
| [0, 0, 0], # 11 | |
| [0, 0, 0], | |
| [0, 0, 0], # 13 | |
| [0, 0, 0], # 14 | |
| [0, 0, 0], #15 | |
| [159,129,183], #16 | |
| [0, 0, 0], #17 | |
| [255, 195, 128], #18 | |
| [0, 0, 0], | |
| [255, 0, 0],#20 | |
| [255,255,0], | |
| [0,0,255], #22 | |
| [0, 0, 0], | |
| [0, 0, 0], | |
| [0,0,0] | |
| ] | |
| for i in range(len(colors)): | |
| cmap[i] = colors[i] | |
| return cmap.astype(np.uint8) | |
| def ade_cmap(): | |
| cmap = np.zeros((256, 3), dtype=np.uint8) | |
| colors = [ | |
| [0, 0, 0], | |
| [120, 120, 120], | |
| [180, 120, 120], | |
| [6, 230, 230], | |
| [80, 50, 50], | |
| [4, 200, 3], | |
| [120, 120, 80], | |
| [140, 140, 140], | |
| [204, 5, 255], | |
| [230, 230, 230], | |
| [4, 250, 7], | |
| [224, 5, 255], | |
| [235, 255, 7], | |
| [150, 5, 61], | |
| [120, 120, 70], | |
| [8, 255, 51], | |
| [255, 6, 82], | |
| [143, 255, 140], | |
| [204, 255, 4], | |
| [255, 51, 7], | |
| [204, 70, 3], | |
| [0, 102, 200], | |
| [61, 230, 250], | |
| [255, 6, 51], | |
| [11, 102, 255], | |
| [255, 7, 71], | |
| [255, 9, 224], | |
| [9, 7, 230], | |
| [220, 220, 220], | |
| [255, 9, 92], | |
| [112, 9, 255], | |
| [8, 255, 214], | |
| [7, 255, 224], | |
| [255, 184, 6], | |
| [10, 255, 71], | |
| [255, 41, 10], | |
| [7, 255, 255], | |
| [224, 255, 8], | |
| [102, 8, 255], | |
| [255, 61, 6], | |
| [255, 194, 7], | |
| [255, 122, 8], | |
| [0, 255, 20], | |
| [255, 8, 41], | |
| [255, 5, 153], | |
| [6, 51, 255], | |
| [235, 12, 255], | |
| [160, 150, 20], | |
| [0, 163, 255], | |
| [140, 140, 140], | |
| [250, 10, 15], | |
| [20, 255, 0], | |
| [31, 255, 0], | |
| [255, 31, 0], | |
| [255, 224, 0], | |
| [153, 255, 0], | |
| [0, 0, 255], | |
| [255, 71, 0], | |
| [0, 235, 255], | |
| [0, 173, 255], | |
| [31, 0, 255], | |
| [11, 200, 200], | |
| [255, 82, 0], | |
| [0, 255, 245], | |
| [0, 61, 255], | |
| [0, 255, 112], | |
| [0, 255, 133], | |
| [255, 0, 0], | |
| [255, 163, 0], | |
| [255, 102, 0], | |
| [194, 255, 0], | |
| [0, 143, 255], | |
| [51, 255, 0], | |
| [0, 82, 255], | |
| [0, 255, 41], | |
| [0, 255, 173], | |
| [10, 0, 255], | |
| [173, 255, 0], | |
| [0, 255, 153], | |
| [255, 92, 0], | |
| [255, 0, 255], | |
| [255, 0, 245], | |
| [255, 0, 102], | |
| [255, 173, 0], | |
| [255, 0, 20], | |
| [255, 184, 184], | |
| [0, 31, 255], | |
| [0, 255, 61], | |
| [0, 71, 255], | |
| [255, 0, 204], | |
| [0, 255, 194], | |
| [0, 255, 82], | |
| [0, 10, 255], | |
| [0, 112, 255], | |
| [51, 0, 255], | |
| [0, 194, 255], | |
| [0, 122, 255], | |
| [0, 255, 163], | |
| [255, 153, 0], | |
| [0, 255, 10], | |
| [255, 112, 0], | |
| [143, 255, 0], | |
| [82, 0, 255], | |
| [163, 255, 0], | |
| [255, 235, 0], | |
| [8, 184, 170], | |
| [133, 0, 255], | |
| [0, 255, 92], | |
| [184, 0, 255], | |
| [255, 0, 31], | |
| [0, 184, 255], | |
| [0, 214, 255], | |
| [255, 0, 112], | |
| [92, 255, 0], | |
| [0, 224, 255], | |
| [112, 224, 255], | |
| [70, 184, 160], | |
| [163, 0, 255], | |
| [153, 0, 255], | |
| [71, 255, 0], | |
| [255, 0, 163], | |
| [255, 204, 0], | |
| [255, 0, 143], | |
| [0, 255, 235], | |
| [133, 255, 0], | |
| [255, 0, 235], | |
| [245, 0, 255], | |
| [255, 0, 122], | |
| [255, 245, 0], | |
| [10, 190, 212], | |
| [214, 255, 0], | |
| [0, 204, 255], | |
| [20, 0, 255], | |
| [255, 255, 0], | |
| [0, 153, 255], | |
| [0, 41, 255], | |
| [0, 255, 204], | |
| [41, 0, 255], | |
| [41, 255, 0], | |
| [173, 0, 255], | |
| [0, 245, 255], | |
| [71, 0, 255], | |
| [122, 0, 255], | |
| [0, 255, 184], | |
| [0, 92, 255], | |
| [184, 255, 0], | |
| [0, 133, 255], | |
| [255, 214, 0], | |
| [25, 194, 194], | |
| [102, 255, 0], | |
| [92, 0, 255] | |
| ] | |
| for i in range(len(colors)): | |
| cmap[i] = colors[i] | |
| return cmap.astype(np.uint8) | |
| def voc_cmap(N=256, normalized=False): | |
| def bitget(byteval, idx): | |
| return ((byteval & (1 << idx)) != 0) | |
| dtype = 'float32' if normalized else 'uint8' | |
| cmap = np.zeros((N, 3), dtype=dtype) | |
| for i in range(N): | |
| r = g = b = 0 | |
| c = i | |
| for j in range(8): | |
| r = r | (bitget(c, 0) << 7-j) | |
| g = g | (bitget(c, 1) << 7-j) | |
| b = b | (bitget(c, 2) << 7-j) | |
| c = c >> 3 | |
| cmap[i] = np.array([r, g, b]) | |
| cmap = cmap/255 if normalized else cmap | |
| return cmap | |
| class Label2Color(object): | |
| def __init__(self, cmap): | |
| self.cmap = cmap | |
| def __call__(self, lbls): | |
| return self.cmap[lbls] | |
| def convert_bn2gn(module): | |
| mod = module | |
| if isinstance(module, nn.modules.batchnorm._BatchNorm): | |
| num_features = module.num_features | |
| num_groups = num_features//16 | |
| mod = nn.GroupNorm(num_groups=num_groups, num_channels=num_features) | |
| for name, child in module.named_children(): | |
| mod.add_module(name, convert_bn2gn(child)) | |
| del module | |
| return mod | |