def __init__(self, args): self.args = args self.device = torch.device(args.device) # image transform input_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(cfg.DATASET.MEAN, cfg.DATASET.STD), ]) # dataset and dataloader val_dataset = get_segmentation_dataset(cfg.DATASET.NAME, split='val', mode='testval', transform=input_transform) val_sampler = make_data_sampler(val_dataset, False, args.distributed) val_batch_sampler = make_batch_data_sampler(val_sampler, images_per_batch=cfg.TEST.BATCH_SIZE, drop_last=False) self.val_loader = data.DataLoader(dataset=val_dataset, batch_sampler=val_batch_sampler, num_workers=cfg.DATASET.WORKERS, pin_memory=True) self.classes = val_dataset.classes # create network self.model = get_segmentation_model().to(self.device) if hasattr(self.model, 'encoder') and hasattr(self.model.encoder, 'named_modules') and \ cfg.MODEL.BN_EPS_FOR_ENCODER: logging.info('set bn custom eps for bn in encoder: {}'.format(cfg.MODEL.BN_EPS_FOR_ENCODER)) self.set_batch_norm_attr(self.model.encoder.named_modules(), 'eps', cfg.MODEL.BN_EPS_FOR_ENCODER) if args.distributed: self.model = nn.parallel.DistributedDataParallel(self.model, device_ids=[args.local_rank], output_device=args.local_rank, find_unused_parameters=True) self.model.to(self.device) self.metric = SegmentationMetric(val_dataset.num_class, args.distributed)
def __init__(self, args): self.args = args self.device = torch.device(args.device) self.n_bins = 15 self.ece_folder = "eceData" # self.postfix="foggy_conv13_CityScapes_GPU" self.postfix = "foggy_zurich_conv13" # self.postfix="Foggy_1_conv13_PascalVOC_GPU" self.temp = 1.5 # self.useCRF=False self.useCRF = True self.ece_criterion = metrics.IterativeECELoss() self.ece_criterion.make_bins(n_bins=self.n_bins) # image transform input_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(cfg.DATASET.MEAN, cfg.DATASET.STD), ]) # dataset and dataloader val_dataset = get_segmentation_dataset(cfg.DATASET.NAME, split='val', mode='testval', transform=input_transform) val_sampler = make_data_sampler(val_dataset, False, args.distributed) val_batch_sampler = make_batch_data_sampler( val_sampler, images_per_batch=cfg.TEST.BATCH_SIZE, drop_last=False) self.val_loader = data.DataLoader(dataset=val_dataset, batch_sampler=val_batch_sampler, num_workers=cfg.DATASET.WORKERS, pin_memory=True) self.dataset = val_dataset self.classes = val_dataset.classes print(args.distributed) self.metric = SegmentationMetric(val_dataset.num_class, args.distributed) self.model = get_segmentation_model().to(self.device) if hasattr(self.model, 'encoder') and hasattr(self.model.encoder, 'named_modules') and \ cfg.MODEL.BN_EPS_FOR_ENCODER: logging.info('set bn custom eps for bn in encoder: {}'.format( cfg.MODEL.BN_EPS_FOR_ENCODER)) self.set_batch_norm_attr(self.model.encoder.named_modules(), 'eps', cfg.MODEL.BN_EPS_FOR_ENCODER) if args.distributed: self.model = nn.parallel.DistributedDataParallel( self.model, device_ids=[args.local_rank], output_device=args.local_rank, find_unused_parameters=True) self.model.to(self.device)
def __init__(self, args): self.args = args self.device = torch.device(args.device) # image transform input_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(cfg.DATASET.MEAN, cfg.DATASET.STD), ]) # dataset and dataloader val_dataset = get_segmentation_dataset(cfg.DATASET.NAME, split='val', mode='testval', transform=input_transform) val_sampler = make_data_sampler(val_dataset, False, args.distributed) ##################### # BATCH SIZE is always 1 val_batch_sampler = make_batch_data_sampler(val_sampler, images_per_batch=cfg.TEST.BATCH_SIZE, drop_last=False) self.val_loader = data.DataLoader(dataset=val_dataset, batch_sampler=val_batch_sampler, num_workers=cfg.DATASET.WORKERS, pin_memory=True) self.classes = val_dataset.classes ### Create network ### # Segmentron model # self.model = get_segmentation_model().to(self.device) # MMSeg model mmseg_config_file = "mmseg-configs/deeplabv3plus_r101-d8_512x512_80k_ade20k.py" mmseg_pretrained = "pretrained_weights/deeplabv3plus_r101-d8_512x512_80k_ade20k_20200615_014139-d5730af7.pth" self.model = init_segmentor(mmseg_config_file, mmseg_pretrained) self.model.to(self.device) self.metric = SegmentationMetric(val_dataset.num_class, args.distributed)
def __init__(self, args): self.args = args self.device = torch.device(args.device) # image transform input_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(cfg.DATASET.MEAN, cfg.DATASET.STD), ]) # test dataloader val_dataset = get_segmentation_dataset(cfg.DATASET.NAME, split='test', mode='val', transform=input_transform, base_size=cfg.TRAIN.BASE_SIZE) # validation dataloader # val_dataset = get_segmentation_dataset(cfg.DATASET.NAME, # split='validation', # mode='val', # transform=input_transform, # base_size=cfg.TRAIN.BASE_SIZE) val_sampler = make_data_sampler(val_dataset, shuffle=False, distributed=args.distributed) val_batch_sampler = make_batch_data_sampler( val_sampler, images_per_batch=cfg.TEST.BATCH_SIZE, drop_last=False) self.val_loader = data.DataLoader(dataset=val_dataset, batch_sampler=val_batch_sampler, num_workers=cfg.DATASET.WORKERS, pin_memory=True) logging.info('**** number of images: {}. ****'.format( len(self.val_loader))) self.classes = val_dataset.classes # create network self.model = get_segmentation_model().to(self.device) if hasattr(self.model, 'encoder') and cfg.MODEL.BN_EPS_FOR_ENCODER: logging.info('set bn custom eps for bn in encoder: {}'.format( cfg.MODEL.BN_EPS_FOR_ENCODER)) self.set_batch_norm_attr(self.model.encoder.named_modules(), 'eps', cfg.MODEL.BN_EPS_FOR_ENCODER) if args.distributed: self.model = nn.parallel.DistributedDataParallel( self.model, device_ids=[args.local_rank], output_device=args.local_rank, find_unused_parameters=True) self.model.to(self.device) num_gpu = args.num_gpus # metric of easy and hard images self.metric = SegmentationMetric(val_dataset.num_class, args.distributed, num_gpu) self.metric_easy = SegmentationMetric(val_dataset.num_class, args.distributed, num_gpu) self.metric_hard = SegmentationMetric(val_dataset.num_class, args.distributed, num_gpu) # number of easy and hard images self.count_easy = 0 self.count_hard = 0