def __init__(self, opt):
        super(CreateMixedDataset, self).__init__()
        self.opt = opt

        img_source_paths, self.img_source_size = make_dataset(
            opt, opt.img_source_dir)  # img_source_dir = '^/trainA'
        lab_source_paths, self.lab_source_size = make_dataset(
            opt, opt.lab_source_dir)  # img_source_dir = '^/trainA_depth'

        img_target_paths, self.img_target_size = make_dataset(
            opt, opt.img_target_dir)  # img_source_dir = '^/trainB'
        lab_target_paths, self.lab_target_size = make_dataset(
            opt, opt.lab_target_dir)  # img_source_dir = '^/trainB_depth'

        for i in img_target_paths:
            img_source_paths.append(i)

        for t in lab_target_paths:
            lab_source_paths.append(t)

        self.img_source_paths = img_source_paths
        self.lab_source_paths = lab_source_paths

        self.transform_augment = self._make_transform(opt, True)
        self.transform_no_augment = self._make_transform(opt,
                                                         False)  # for label

        self.transform_no_augment_depth = self._make_transform(
            opt, False, True)  # for label
Esempio n. 2
0
    def random_image(self):
        """Random load the test image"""

        # read random mask
        if self.opt.mask_file != "none":
            mask_paths, mask_size = make_dataset(self.opt.mask_file)
            item = random.randint(0, mask_size - 1)
            self.mname = mask_paths[item]

        image_paths, image_size = make_dataset(self.opt.img_file)
        item = random.randint(0, image_size - 1)
        self.fname = image_paths[item]
        self.showImage(self.fname)
    def __init__(self, opt):
        super(CreateUnlabeledDataset, self).__init__()
        self.opt = opt

        self.img_target_paths, self.img_target_size = make_dataset(
            opt, opt.img_target_dir)  # img_source_dir = '^/trainB'
        self.lab_target_paths, self.lab_target_size = make_dataset(
            opt, opt.lab_target_dir)  # img_source_dir = '^/trainB_depth'

        self.transform_augment = self._make_transform(opt, True)
        self.transform_no_augment = self._make_transform(opt,
                                                         False)  # for label

        self.transform_no_augment_depth = self._make_transform(
            opt, False, True)  # for label
Esempio n. 4
0
    def initialize(self,opt):
        self.opt = opt
        self.root = opt.dataroot
        self.dir_A = os.path.join(opt.dataroot,opt.phase + 'A')
        self.dir_B = os.path.join(opt.dataroot,opt.phase + 'B')

        self.A_paths = make_dataset(self.dir_A)
        self.B_paths = make_dataset(self.dir_B)

        self.A_paths = sorted(self.A_paths)
        self.B_paths = sorted(self.B_paths)
        self.A_size = len(self.A_paths)
        self.B_size = len(self.B_paths)

        self.transform_Image = get_transform(opt,True)
        self.transform_depth = get_transform(opt,False)
Esempio n. 5
0
def load_indoor_depth(file_path):
    depths = []
    dataset = make_dataset(file_path)
    for data in dataset:
        depth = Image.open(data)
        depth = depth.resize((425, 425), Image.BICUBIC)
        depth = np.array(depth)
        depth = depth.astype(np.float32) / 255 * 8.0
        depths.append(depth)
    return depths
    def __init__(self, opt):
        super(CreateFullDataset, self).__init__()
        self.opt = opt

        self.img_source_paths, self.img_source_size = make_dataset(
            opt, opt.img_source_dir)  # img_source_dir = '^/trainA'
        self.img_target_paths, self.img_target_size = make_dataset(
            opt, opt.img_target_dir)  # img_source_dir = '^/trainB'

        self.lab_source_paths, self.lab_source_size = make_dataset(
            opt, opt.lab_source_dir)  # img_source_dir = '^/trainA_depth'
        # for visual results, not for training
        self.lab_target_paths, self.lab_target_size = make_dataset(
            opt, opt.lab_target_dir)  # img_source_dir = '^/trainB_depth'

        if self.opt.isTrain:
            self.lab_source_paths, self.lab_source_size = make_dataset(
                opt, opt.lab_source_dir)  # img_source_dir = '^/trainA_depth'
            # for visual results, not for training
            self.lab_target_paths, self.lab_target_size = make_dataset(
                opt, opt.lab_target_dir)  # img_source_dir = '^/trainB_depth'

        self.transform_augment = self._make_transform(opt, True)
        self.transform_no_augment = self._make_transform(opt,
                                                         False)  # for label

        self.transform_no_augment_depth = self._make_transform(
            opt, False, True)  # for label
Esempio n. 7
0
def load_depth(file_path, split, max_depth):
    depths = []
    dataset, _ = make_dataset(file_path)
    for data in dataset:
        depth = Image.open(data)
        if split == 'eigen':
            depth = np.array(depth)  #[:,:,0]
            depth = depth.astype(np.float32) / 255 * max_depth
        elif split == 'indoor':
            depth = np.array(depth)  #[:,:,0]
            depth = depth.astype(np.float32) / 255 * max_depth
            # depth = (depth - depth.mean()) / depth.std()
        depths.append(depth)
    return depths
    def initialize(self, opt):
        self.opt = opt
        self.opt.sample_Ps = range(*opt.sample_Ps)
        self.root = opt.dataroot

        self.color_dir = os.path.join(opt.dataroot, 'color')
        self.color_paths = make_dataset(self.color_dir)
        self.color_paths = sorted(self.color_paths)

        folder = ['line']
        self.category = os.listdir(os.path.join(opt.dataroot, 'line'))
        idx1 = 0
        self.line_dir = dict()
        self.line_paths = dict()
        for key in self.category:
            dir = os.path.join(folder[idx1], key)
            self.line_dir[key] = os.path.join(opt.dataroot, dir)
            self.line_paths[key] = make_dataset(self.line_dir[key])
            self.line_paths[key] = sorted(self.line_paths[key])

        self.transform = get_transform(opt)
        if self.opt.hsv_aug > 0:
            self.hsv_augmenter = transforms.ColorJitter(hue=(-self.opt.hsv_aug,
                                                             self.opt.hsv_aug))
def get_normalize_value(opt):
    from tqdm import tqdm
    opt = opt
    root = opt.dataroot

    color_dir = os.path.join(root, 'color/')
    color_paths = make_dataset(color_dir)
    color_paths = sorted(color_paths)

    transform = transforms.ToTensor()

    mean_ = []
    min_ = []
    max_ = []

    for path in tqdm(color_paths):
        color_img = Image.open(path).convert('RGB')
        color_img = transform(color_img).unsqueeze(0)
        numpy_img = color_img[0, :, :, :].numpy()

        img_mean = np.mean(numpy_img, axis=(1, 2))
        img_min = np.min(numpy_img, axis=(1, 2))
        img_max = np.max(numpy_img, axis=(1, 2))

        mean_.append(img_mean)
        min_.append(img_min)
        max_.append(img_max)

    mean_ = np.array(mean_).mean(axis=0)
    min_ = np.array(min_).min(axis=0)
    max_ = np.array(max_).max(axis=0)

    var_ = []
    mean4var = np.reshape(mean_, (3, 1, 1))
    for path in tqdm(color_paths):
        color_img = Image.open(path).convert('RGB')
        color_img = transform(color_img).unsqueeze(0)
        numpy_img = util.rgb2lab(color_img, opt)[0, :, :, :].numpy()
        # Should divide by N-1 for sample var, but just use N. N is large enough.
        img_var = np.mean((numpy_img-mean4var)**2, axis=(1, 2))
        var_.append(img_var)

    std_ = np.sqrt(np.array(var_).mean(axis=0))

    return mean_, std_, min_, max_
Esempio n. 10
0
    def random_image(self):
        """Random load the test image"""
        value = self.comboBox.currentIndex()
        if value == 0:
            return
        # read random mask
        if self.opt.mask_file != "none":
            mask_paths, mask_size = make_dataset(self.opt.mask_file)
            item = random.randint(0, mask_size - 1)
            self.mname = mask_paths[item]

        item = random.randint(0, self.image_size - 1)
        self.fname = self.image_paths[item]
        if self.firstly:
            #self.fname = './datasets/CUB_200_2011\\images/042.Vermilion_Flycatcher/Vermilion_Flycatcher_0045_42219.jpg'
            self.fname = './datasets/CUB_200_2011\\images/169.Magnolia_Warbler/Magnolia_Warbler_0063_166121.jpg'

            self.firstly = False
        self.showImage(self.fname)
        print(self.fname)

        img_name = os.path.basename(self.fname)
        caption = sorted(self.captions[img_name], key=lambda x: len(x))[-1]
        self.textEdit.setText(caption)
Esempio n. 11
0
    def load_model(self):
        """Load different kind models for different datasets and mask types"""
        value = self.comboBox.currentIndex()
        if value == 0:
            raise NotImplementedError("Please choose a model")
        else:
            # define the model type and dataset type
            index = value - 1
            self.opt.name = self.model_name[index]
            self.opt.text_config = self.config_name[index]
            self.opt.img_file = self.img_root + self.img_files[index % len(
                self.img_files)]
        self.model = create_model(self.opt)

        self.image_paths, self.image_size = make_dataset(self.opt.img_file)

        text_config = TextConfig(self.opt.text_config)
        self.max_length = text_config.MAX_TEXT_LENGTH
        if 'coco' in text_config.CAPTION.lower():
            self.num_captions = 5
        elif 'place' in text_config.CAPTION.lower():
            self.num_captions = 1
        else:
            self.num_captions = 10

        # load caption file
        with open(text_config.CAPTION, 'r') as f:
            self.captions = json.load(f)
        with open(text_config.CATE_IMAGE_TRAIN, 'r') as f:
            self.category_images_train = json.load(f)
        with open(text_config.IMAGE_CATE_TRAIN, 'r') as f:
            self.images_category = json.load(f)

        x = pickle.load(open(text_config.VOCAB, 'rb'))
        self.ixtoword = x[2]
        self.wordtoix = x[3]
Esempio n. 12
0
        PSNR = 100
    else:
        PSNR = 20 * math.log10(255.0 / math.sqrt(mse))

    # TV
    gx = pre - np.roll(pre, -1, axis=1)
    gy = pre - np.roll(pre, -1, axis=0)
    grad_norm2 = gx**2 + gy**2
    TV = np.mean(np.sqrt(grad_norm2))

    return l1, PSNR, TV


if __name__ == "__main__":

    gt_paths, gt_size = make_dataset(args.gt_path)
    #pre_paths, pre_size = make_dataset(args.save_path)

    # for i in range(20000):
    #     print(i)
    #     name = gt_paths[i].split("/")[-1]
    #     path = os.path.join(args.save_path,name)
    #     try:
    #         image = Image.open(path)
    #     except:
    #         print (path)

    # assert gt_size == pre_size
    #
    iters = int(20000 / args.num_test)
Esempio n. 13
0
    PSNR = compare_psnr(ground_truth, pre,  data_range=1)
    SSIM = compare_ssim(ground_truth, pre, multichannel=True, data_range=pre.max()-pre.min(), sigma=1.5)
    l1 = compare_mae(ground_truth, pre)
    # TV
    gx = pre - np.roll(pre, -1, axis=1)
    gy = pre - np.roll(pre, -1, axis=0)
    grad_norm2 = gx ** 2 + gy ** 2
    TV = np.mean(np.sqrt(grad_norm2))

    return l1, PSNR, TV, SSIM


if __name__ == "__main__":

    ground_truth_paths, ground_truth_size = make_dataset(args.ground_truth_path)

    iters = int(ground_truth_size/args.batch_test)

    l1_loss = np.zeros(iters, np.float32)
    PSNR = np.zeros(iters, np.float32)
    TV = np.zeros(iters, np.float32)
    SSIM = np.zeros(iters, np.float32)

    for i in tqdm(range(0, iters)):
        # calculate one batch of test data
        l1_batch = np.zeros(args.batch_test, np.float32)
        PSNR_batch = np.zeros(args.batch_test, np.float32)
        TV_batch = np.zeros(args.batch_test, np.float32)
        SSIM_batch = np.zeros(args.batch_test, np.float32)
    # Now compute the mean kl-div
    scores = []

    for i in range(splits):
        part = preds[(i * preds.shape[0] //
                      splits):((i + 1) * preds.shape[0] // splits), :]
        kl = part * (np.log(part) -
                     np.log(np.expand_dims(np.mean(part, 0), 0)))
        kl = np.mean(np.sum(kl, 1))
        scores.append(np.exp(kl))

    return np.mean(scores), np.std(scores)


if __name__ == '__main__':
    img_paths, img_size = make_dataset(args.save_path)

    iters = int(10000 / args.num_test)

    u = np.zeros(iters, np.float32)
    sigma = np.zeros(iters, np.float32)

    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    ])

    for i in range(iters):
        all_samples = []
        num = i * args.num_test