def visualize_images_to_folder(output_folder, batch_idx, image, target, output, dataset): for i in range(image.shape[0]): outpath = os.path.join(output_folder, '{0}_{1:04d}_{2:02d}.png') scipy.misc.imsave(outpath.format('img', batch_idx, i), np.transpose(image[i, :, :, :], axes=[1, 2, 0])) scipy.misc.imsave( outpath.format('tgt', batch_idx, i), map_segmentation_to_colors(target[i, :, :], dataset)) scipy.misc.imsave( outpath.format('prd', batch_idx, i), map_segmentation_to_colors(output[i, :, :], dataset))
def test_gradients(): from utils.loss import SegmentationLosses import numpy as np from dataloaders import make_dataloader from torch.utils.data import DataLoader import matplotlib.pyplot as plt from dataloaders.utils import map_segmentation_to_colors import sys kwargs = {'pin_memory': True, 'init_set': 'set_dummy.txt'} _, train_loader, _, _, num_classes = make_dataloader('active_cityscapes_region', 513, 513, 1, True, **kwargs) model = DeepLab(backbone='mobilenet', output_stride=16, mc_dropout=False) train_params = [{'params': model.get_1x_lr_params(), 'lr': 0.001}, {'params': model.get_10x_lr_params(), 'lr': 0.001 * 10}] optimizer = torch.optim.SGD(train_params, momentum=0.9, weight_decay=5e-4, nesterov=False) criterion = SegmentationLosses(weight=None, cuda=True).build_loss(mode='ce') model = model.cuda() model.eval() for name, param in model.named_parameters(): if param.requires_grad: print(name) print(param) break display = False for i, sample in enumerate(train_loader): image, target = sample['image'], sample['label'] image, target = image.cuda(), target.cuda() if display: gt_colored = map_segmentation_to_colors(np.array(target[0].cpu().numpy()).astype(np.uint8), 'cityscapes') image_unnormalized = ((np.transpose(image[0].cpu().numpy(), axes=[1, 2, 0]) * (0.229, 0.224, 0.225) + (0.485, 0.456, 0.406)) * 255).astype(np.uint8) plt.figure() plt.title('display') plt.subplot(211) plt.imshow(image_unnormalized) plt.subplot(212) plt.imshow(gt_colored) plt.show() optimizer.zero_grad() output = model(image) loss = criterion(output, target) loss.backward() for name, param in model.named_parameters(): if param.requires_grad: print(name) print(param.grad) input() optimizer.step() sys.exit(0)
def _visualize_entropy(image_normalized, entropy_map, prediction): import matplotlib import matplotlib.pyplot as plt image_unnormalized = ((np.transpose(image_normalized, axes=[1, 2, 0]) * (0.229, 0.224, 0.225) + (0.485, 0.456, 0.406)) * 255).astype(np.uint8) prediction_mapped = map_segmentation_to_colors( prediction.astype(np.uint8), 'cityscapes') norm = matplotlib.colors.Normalize(vmin=np.min(entropy_map), vmax=np.max(entropy_map), clip=False) plt.figure() plt.title('display') plt.subplot(1, 3, 1) plt.imshow(image_unnormalized) plt.subplot(1, 3, 2) plt.imshow(prediction_mapped) plt.subplot(1, 3, 3) plt.imshow(entropy_map, norm=norm, cmap='gray') plt.show(block=True)
num_workers=0) active_selector = ActiveSelectionMCDropout(19, cityscapes_train.env, crop_size, 2) print('Before Expansion', len(dataloader)) cityscapes_train.expand_training_set( active_selector.get_random_uncertainity( cityscapes_train.remaining_image_paths, 10)) print('After Expansion', len(dataloader)) for i, sample in enumerate(dataloader, 0): for j in range(sample['image'].size()[0]): image = sample['image'].numpy() gt = sample['label'].numpy() print(gt.shape) gt_colored = map_segmentation_to_colors( np.array(gt[j]).astype(np.uint8), 'cityscapes') image_unnormalized = ((np.transpose(image[j], axes=[1, 2, 0]) * (0.229, 0.224, 0.225) + (0.485, 0.456, 0.406)) * 255).astype( np.uint8) plt.figure() plt.title('display') plt.subplot(211) plt.imshow(image_unnormalized) plt.subplot(212) plt.imshow(gt_colored) if i == 1: break plt.show(block=True)
if __name__ == "__main__": from torch.utils.data import DataLoader import matplotlib.pyplot as plt from dataloaders.utils import map_segmentation_to_colors path = os.path.join(constants.DATASET_ROOT, 'pascal') crop_size = -1 base_size = 512 split = 'train' pascal_train = ActivePascalRegion(path, base_size, crop_size, split, 'set_dummy.txt') pascal_train.expand_training_set({pascal_train.image_paths[299]: [(36, 100, 127, 127)]}, 0) dataloader = DataLoader(pascal_train, batch_size=1, shuffle=False, num_workers=0) for i, sample in enumerate(dataloader): for j in range(sample['image'].size()[0]): image = sample['image'].numpy() gt = sample['label'].numpy() gt_colored = map_segmentation_to_colors(np.array(gt[j]).astype(np.uint8), 'pascal') image_unnormalized = ((np.transpose(image[j], axes=[1, 2, 0]) * (0.229, 0.224, 0.225) + (0.485, 0.456, 0.406)) * 255).astype(np.uint8) plt.figure() plt.title('display') plt.subplot(211) plt.imshow(image_unnormalized) plt.subplot(212) plt.imshow(gt_colored) plt.show(block=True)