├── README.md ├── data ├── JigsawLoader.py ├── StandardDataset.py ├── __init__.py ├── __pycache__ │ ├── JigsawLoader.cpython-36.pyc │ ├── StandardDataset.cpython-36.pyc │ ├── __init__.cpython-36.pyc │ ├── concat_dataset.cpython-36.pyc │ └── data_helper.cpython-36.pyc ├── concat_dataset.py ├── correct_txt_lists │ ├── CALTECH_test.txt │ ├── CALTECH_train.txt │ ├── LABELME_test.txt │ ├── LABELME_train.txt │ ├── PASCAL_test.txt │ ├── PASCAL_train.txt │ ├── SUN_test.txt │ ├── SUN_train.txt │ ├── art_full.txt │ ├── art_painting_crossval_kfold.txt │ ├── art_painting_test_kfold.txt │ ├── art_painting_train_kfold.txt │ ├── cartoon_crossval_kfold.txt │ ├── cartoon_test_kfold.txt │ ├── cartoon_train_kfold.txt │ ├── clip_full.txt │ ├── photo_crossval_kfold.txt │ ├── photo_test_kfold.txt │ ├── photo_train_kfold.txt │ ├── product_full.txt │ ├── real_full.txt │ ├── sketch_crossval_kfold.txt │ ├── sketch_test_kfold.txt │ └── sketch_train_kfold.txt └── data_helper.py ├── logs └── test │ └── art_painting-cartoon-sketch_to_['photo'] │ └── eps30_bs64_lr0.001_class7_jigClass30_jigWeight0.7_TAll_bias0.9_28 │ └── events.out.tfevents.1630035028.uqmm522 ├── models ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-36.pyc │ ├── augnet.cpython-36.pyc │ ├── caffenet.cpython-36.pyc │ ├── model_factory.cpython-36.pyc │ └── resnet.cpython-36.pyc ├── augnet.py ├── caffenet.py ├── model_factory.py ├── model_utils.py └── resnet.py ├── run_main_PACS.sh ├── train.py └── utils ├── Logger.py ├── __pycache__ ├── Logger.cpython-36.pyc ├── contrastive_loss.cpython-36.pyc ├── tf_logger.cpython-36.pyc └── util.cpython-36.pyc ├── contrastive_loss.py ├── tf_logger.py └── util.py /README.md: -------------------------------------------------------------------------------- 1 | # Learning_to_diversify 2 | This is the official code repository for ICCV2021 'Learning to Diversify for Single Domain Generalization'. 3 | 4 | Paper Link: http://arxiv.org/abs/2108.11726 5 | 6 | ## Update: Single DG with Resnet-18 7 | Recently, we receive increasing enquiry about single DG on PACS with Resnet-18 Backbone. (In the paper, we reported Alexnet result) 8 | Please try hyperparameters lr=0.002 and e=50, to start your experiment. 9 | 10 | We report the following single DG result on PACS, with resnet-18 as the backbone network: 11 | 12 | |Src. domain | P | A | C | S |avg. | 13 | |--- | ------- |-------|-------| -----| --- | 14 | | Avg. Tar. Acc. | 52.29 | 76.91 | 77.88 | 53.66|65.18| 15 | 16 | 17 | ## Quick start: (Generalizing from art, cartoon, sketch to photo domain with ResNet-18) 18 | 1. Install the required packages. 19 | 2. Download PACS dataset. 20 | 3. Execute the following code. 21 | ``` 22 | bash run_main_PACS.sh 23 | ``` 24 | 25 | ## Change dataset 26 | In line 266-300 of train.py, we provide 3 different datasets settings (PACS, VLCS, OFFICE-HOME). 27 | You can simply uncomment it to start your own experiment. It may require hyper-parameter fine tuning for some of the tasks. 28 | 29 | 30 | -------------------------------------------------------------------------------- /data/JigsawLoader.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import torch.utils.data as data 4 | import torchvision 5 | import torchvision.transforms as transforms 6 | from PIL import Image 7 | from random import sample, random 8 | 9 | 10 | def get_random_subset(names, labels, percent): 11 | """ 12 | 13 | :param names: list of names 14 | :param labels: list of labels 15 | :param percent: 0 < float < 1 16 | :return: 17 | """ 18 | samples = len(names) 19 | amount = int(samples * percent) 20 | random_index = sample(range(samples), amount) 21 | name_val = [names[k] for k in random_index] 22 | name_train = [v for k, v in enumerate(names) if k not in random_index] 23 | labels_val = [labels[k] for k in random_index] 24 | labels_train = [v for k, v in enumerate(labels) if k not in random_index] 25 | return name_train, name_val, labels_train, labels_val 26 | 27 | 28 | def _dataset_info(txt_labels): 29 | with open(txt_labels, 'r') as f: 30 | images_list = f.readlines() 31 | 32 | file_names = [] 33 | labels = [] 34 | for row in images_list: 35 | row = row.split(' ') 36 | file_names.append(row[0]) 37 | labels.append(int(row[1])) 38 | 39 | return file_names, labels 40 | 41 | 42 | def get_split_dataset_info(txt_list, val_percentage): 43 | names, labels = _dataset_info(txt_list) 44 | return get_random_subset(names, labels, val_percentage) 45 | 46 | 47 | class JigsawDataset(data.Dataset): 48 | def __init__(self, names, labels, jig_classes=100, img_transformer=None, tile_transformer=None, patches=True, bias_whole_image=None): 49 | self.data_path = "" 50 | self.names = names 51 | self.labels = labels 52 | 53 | self.N = len(self.names) 54 | self.permutations = self.__retrieve_permutations(jig_classes) 55 | self.grid_size = 3 56 | self.bias_whole_image = bias_whole_image 57 | if patches: 58 | self.patch_size = 64 59 | self._image_transformer = img_transformer 60 | self._augment_tile = tile_transformer 61 | if patches: 62 | self.returnFunc = lambda x: x 63 | else: 64 | def make_grid(x): 65 | return torchvision.utils.make_grid(x, self.grid_size, padding=0) 66 | self.returnFunc = make_grid 67 | 68 | def get_tile(self, img, n): 69 | w = float(img.size[0]) / self.grid_size 70 | y = int(n / self.grid_size) 71 | x = n % self.grid_size 72 | tile = img.crop([x * w, y * w, (x + 1) * w, (y + 1) * w]) 73 | tile = self._augment_tile(tile) 74 | return tile 75 | 76 | def get_image(self, index): 77 | framename = self.data_path + '/' + self.names[index] 78 | img = Image.open(framename).convert('RGB') 79 | return self._image_transformer(img) 80 | 81 | def __getitem__(self, index): 82 | img = self.get_image(index) 83 | n_grids = self.grid_size ** 2 84 | tiles = [None] * n_grids 85 | for n in range(n_grids): 86 | tiles[n] = self.get_tile(img, n) 87 | 88 | order = np.random.randint(len(self.permutations) + 1) # added 1 for class 0: unsorted 89 | if self.bias_whole_image: 90 | if self.bias_whole_image > random(): 91 | order = 0 92 | if order == 0: 93 | data = tiles 94 | else: 95 | data = [tiles[self.permutations[order - 1][t]] for t in range(n_grids)] 96 | 97 | data = torch.stack(data, 0) 98 | return self.returnFunc(data), int(order), int(self.labels[index]) 99 | 100 | def __len__(self): 101 | return len(self.names) 102 | 103 | def __retrieve_permutations(self, classes): 104 | all_perm = np.load('permutations_%d.npy' % (classes)) 105 | # from range [1,9] to [0,8] 106 | if all_perm.min() == 1: 107 | all_perm = all_perm - 1 108 | 109 | return all_perm 110 | 111 | 112 | class JigsawTestDataset(JigsawDataset): 113 | def __init__(self, *args, **xargs): 114 | super().__init__(*args, **xargs) 115 | 116 | def __getitem__(self, index): 117 | framename = self.data_path + '/' + self.names[index] 118 | img = Image.open(framename).convert('RGB') 119 | return self._image_transformer(img), 0, int(self.labels[index]) 120 | 121 | 122 | class JigsawTestDatasetMultiple(JigsawDataset): 123 | def __init__(self, *args, **xargs): 124 | super().__init__(*args, **xargs) 125 | self._image_transformer = transforms.Compose([ 126 | transforms.Resize(255, Image.BILINEAR), 127 | ]) 128 | self._image_transformer_full = transforms.Compose([ 129 | transforms.Resize(225, Image.BILINEAR), 130 | transforms.ToTensor(), 131 | transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 132 | ]) 133 | self._augment_tile = transforms.Compose([ 134 | transforms.Resize((75, 75), Image.BILINEAR), 135 | transforms.ToTensor(), 136 | transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 137 | ]) 138 | 139 | def __getitem__(self, index): 140 | framename = self.data_path + '/' + self.names[index] 141 | _img = Image.open(framename).convert('RGB') 142 | img = self._image_transformer(_img) 143 | 144 | w = float(img.size[0]) / self.grid_size 145 | n_grids = self.grid_size ** 2 146 | images = [] 147 | jig_labels = [] 148 | tiles = [None] * n_grids 149 | for n in range(n_grids): 150 | y = int(n / self.grid_size) 151 | x = n % self.grid_size 152 | tile = img.crop([x * w, y * w, (x + 1) * w, (y + 1) * w]) 153 | tile = self._augment_tile(tile) 154 | tiles[n] = tile 155 | for order in range(0, len(self.permutations)+1, 3): 156 | if order==0: 157 | data = tiles 158 | else: 159 | data = [tiles[self.permutations[order-1][t]] for t in range(n_grids)] 160 | data = self.returnFunc(torch.stack(data, 0)) 161 | images.append(data) 162 | jig_labels.append(order) 163 | images = torch.stack(images, 0) 164 | jig_labels = torch.LongTensor(jig_labels) 165 | return images, jig_labels, int(self.labels[index]) 166 | 167 | 168 | class JigsawNewDataset(data.Dataset): 169 | def __init__(self, args, names, labels, jig_classes=100, img_transformer=None, tile_transformer=None, patches=True, 170 | bias_whole_image=None): 171 | self.task = args.task 172 | if self.task == 'PACS': 173 | self.data_path = "/home/data1/PACS/kfold" 174 | elif self.task == 'VLCS': 175 | self.data_path = "/home/data1/VLCS" 176 | elif self.task == 'HOME': 177 | self.data_path = "" 178 | else: 179 | raise NotImplementedError 180 | self.names = names 181 | self.labels = labels 182 | 183 | self.N = len(self.names) 184 | # self.permutations = self.__retrieve_permutations(jig_classes) 185 | self.grid_size = 3 186 | self.bias_whole_image = bias_whole_image 187 | if patches: 188 | self.patch_size = 64 189 | self._image_transformer = img_transformer 190 | self._augment_tile = tile_transformer 191 | if patches: 192 | self.returnFunc = lambda x: x 193 | else: 194 | def make_grid(x): 195 | return torchvision.utils.make_grid(x, self.grid_size, padding=0) 196 | 197 | self.returnFunc = make_grid 198 | 199 | def get_tile(self, img, n): 200 | w = float(img.size[0]) / self.grid_size 201 | y = int(n / self.grid_size) 202 | x = n % self.grid_size 203 | tile = img.crop([x * w, y * w, (x + 1) * w, (y + 1) * w]) 204 | tile = self._augment_tile(tile) 205 | return tile 206 | 207 | def get_image(self, index): 208 | framename = self.data_path + '/' + self.names[index] 209 | img = Image.open(framename).convert('RGB') 210 | return self._image_transformer(img) 211 | 212 | def __getitem__(self, index): 213 | framename = self.data_path + '/' + self.names[index] 214 | img = Image.open(framename).convert('RGB') 215 | if self.task == 'PACS': 216 | return self._image_transformer(img), 0, int(self.labels[index] - 1) 217 | elif self.task == 'VLCS' or self.task == 'HOME': 218 | return self._image_transformer(img), 0, int(self.labels[index]) 219 | # return self._image_transformer(img), 0, int(self.labels[index]) 220 | 221 | # img = self.get_image(index) 222 | # n_grids = self.grid_size ** 2 223 | # tiles = [None] * n_grids 224 | # for n in range(n_grids): 225 | # tiles[n] = self.get_tile(img, n) 226 | # 227 | # order = np.random.randint(len(self.permutations) + 1) # added 1 for class 0: unsorted 228 | # if self.bias_whole_image: 229 | # if self.bias_whole_image > random(): 230 | # order = 0 231 | # if order == 0: 232 | # data = tiles 233 | # else: 234 | # data = [tiles[self.permutations[order - 1][t]] for t in range(n_grids)] 235 | # 236 | # data = torch.stack(data, 0) 237 | # return self.returnFunc(data), int(order), int(self.labels[index]) 238 | 239 | def __len__(self): 240 | return len(self.names) 241 | 242 | def __retrieve_permutations(self, classes): 243 | all_perm = np.load('permutations_%d.npy' % (classes)) 244 | # from range [1,9] to [0,8] 245 | if all_perm.min() == 1: 246 | all_perm = all_perm - 1 247 | 248 | return all_perm 249 | 250 | class JigsawTestNewDataset(JigsawNewDataset): 251 | def __init__(self, *args, **xargs): 252 | super().__init__(*args, **xargs) 253 | 254 | def __getitem__(self, index): 255 | framename = self.data_path + '/' + self.names[index] 256 | img = Image.open(framename).convert('RGB') 257 | if self.task == 'PACS': 258 | return self._image_transformer(img), 0, int(self.labels[index] - 1) 259 | elif self.task == 'VLCS' or self.task == 'HOME': 260 | return self._image_transformer(img), 0, int(self.labels[index]) 261 | -------------------------------------------------------------------------------- /data/StandardDataset.py: -------------------------------------------------------------------------------- 1 | from torchvision import datasets 2 | from torchvision import transforms 3 | 4 | 5 | def get_dataset(path, mode, image_size): 6 | if mode == "train": 7 | img_transform = transforms.Compose([ 8 | transforms.RandomResizedCrop(image_size, scale=(0.7, 1.0)), 9 | transforms.RandomHorizontalFlip(), 10 | transforms.ToTensor(), 11 | transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[1/256., 1/256., 1/256.]) # std=[1/256., 1/256., 1/256.] #[0.229, 0.224, 0.225] 12 | ]) 13 | else: 14 | img_transform = transforms.Compose([ 15 | transforms.Resize(image_size), 16 | # transforms.CenterCrop(image_size), 17 | transforms.ToTensor(), 18 | transforms.Normalize([0.485, 0.456, 0.406], std=[1/256., 1/256., 1/256.]) # std=[1/256., 1/256., 1/256.] 19 | ]) 20 | return datasets.ImageFolder(path, transform=img_transform) 21 | -------------------------------------------------------------------------------- /data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/data/__init__.py -------------------------------------------------------------------------------- /data/__pycache__/JigsawLoader.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/data/__pycache__/JigsawLoader.cpython-36.pyc -------------------------------------------------------------------------------- /data/__pycache__/StandardDataset.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/data/__pycache__/StandardDataset.cpython-36.pyc -------------------------------------------------------------------------------- /data/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/data/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /data/__pycache__/concat_dataset.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/data/__pycache__/concat_dataset.cpython-36.pyc -------------------------------------------------------------------------------- /data/__pycache__/data_helper.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/data/__pycache__/data_helper.cpython-36.pyc -------------------------------------------------------------------------------- /data/concat_dataset.py: -------------------------------------------------------------------------------- 1 | import bisect 2 | import warnings 3 | 4 | from torch.utils.data import Dataset 5 | 6 | # This is a small variant of the ConcatDataset class, which also returns dataset index 7 | from data.JigsawLoader import JigsawTestDatasetMultiple 8 | 9 | 10 | class ConcatDataset(Dataset): 11 | """ 12 | Dataset to concatenate multiple datasets. 13 | Purpose: useful to assemble different existing datasets, possibly 14 | large-scale datasets as the concatenation operation is done in an 15 | on-the-fly manner. 16 | 17 | Arguments: 18 | datasets (sequence): List of datasets to be concatenated 19 | """ 20 | 21 | @staticmethod 22 | def cumsum(sequence): 23 | r, s = [], 0 24 | for e in sequence: 25 | l = len(e) 26 | r.append(l + s) 27 | s += l 28 | return r 29 | 30 | def isMulti(self): 31 | return isinstance(self.datasets[0], JigsawTestDatasetMultiple) 32 | 33 | def __init__(self, datasets): 34 | super(ConcatDataset, self).__init__() 35 | assert len(datasets) > 0, 'datasets should not be an empty iterable' 36 | self.datasets = list(datasets) 37 | self.cumulative_sizes = self.cumsum(self.datasets) 38 | 39 | def __len__(self): 40 | return self.cumulative_sizes[-1] 41 | 42 | def __getitem__(self, idx): 43 | dataset_idx = bisect.bisect_right(self.cumulative_sizes, idx) 44 | if dataset_idx == 0: 45 | sample_idx = idx 46 | else: 47 | sample_idx = idx - self.cumulative_sizes[dataset_idx - 1] 48 | return self.datasets[dataset_idx][sample_idx], dataset_idx, sample_idx 49 | 50 | @property 51 | def cummulative_sizes(self): 52 | warnings.warn("cummulative_sizes attribute is renamed to " 53 | "cumulative_sizes", DeprecationWarning, stacklevel=2) 54 | return self.cumulative_sizes 55 | -------------------------------------------------------------------------------- /data/correct_txt_lists/CALTECH_test.txt: -------------------------------------------------------------------------------- 1 | CALTECH/test/0/test_imgs_1.jpg 0 2 | CALTECH/test/0/test_imgs_10.jpg 0 3 | CALTECH/test/0/test_imgs_11.jpg 0 4 | CALTECH/test/0/test_imgs_12.jpg 0 5 | CALTECH/test/0/test_imgs_13.jpg 0 6 | CALTECH/test/0/test_imgs_14.jpg 0 7 | CALTECH/test/0/test_imgs_15.jpg 0 8 | CALTECH/test/0/test_imgs_16.jpg 0 9 | CALTECH/test/0/test_imgs_17.jpg 0 10 | CALTECH/test/0/test_imgs_18.jpg 0 11 | CALTECH/test/0/test_imgs_19.jpg 0 12 | CALTECH/test/0/test_imgs_2.jpg 0 13 | CALTECH/test/0/test_imgs_20.jpg 0 14 | CALTECH/test/0/test_imgs_21.jpg 0 15 | CALTECH/test/0/test_imgs_22.jpg 0 16 | CALTECH/test/0/test_imgs_23.jpg 0 17 | CALTECH/test/0/test_imgs_24.jpg 0 18 | CALTECH/test/0/test_imgs_25.jpg 0 19 | CALTECH/test/0/test_imgs_26.jpg 0 20 | CALTECH/test/0/test_imgs_27.jpg 0 21 | CALTECH/test/0/test_imgs_28.jpg 0 22 | CALTECH/test/0/test_imgs_29.jpg 0 23 | CALTECH/test/0/test_imgs_3.jpg 0 24 | CALTECH/test/0/test_imgs_30.jpg 0 25 | CALTECH/test/0/test_imgs_31.jpg 0 26 | CALTECH/test/0/test_imgs_32.jpg 0 27 | CALTECH/test/0/test_imgs_33.jpg 0 28 | CALTECH/test/0/test_imgs_34.jpg 0 29 | CALTECH/test/0/test_imgs_35.jpg 0 30 | CALTECH/test/0/test_imgs_36.jpg 0 31 | CALTECH/test/0/test_imgs_37.jpg 0 32 | CALTECH/test/0/test_imgs_38.jpg 0 33 | CALTECH/test/0/test_imgs_39.jpg 0 34 | CALTECH/test/0/test_imgs_4.jpg 0 35 | CALTECH/test/0/test_imgs_40.jpg 0 36 | CALTECH/test/0/test_imgs_41.jpg 0 37 | CALTECH/test/0/test_imgs_42.jpg 0 38 | CALTECH/test/0/test_imgs_43.jpg 0 39 | CALTECH/test/0/test_imgs_44.jpg 0 40 | CALTECH/test/0/test_imgs_45.jpg 0 41 | CALTECH/test/0/test_imgs_46.jpg 0 42 | CALTECH/test/0/test_imgs_47.jpg 0 43 | CALTECH/test/0/test_imgs_48.jpg 0 44 | CALTECH/test/0/test_imgs_49.jpg 0 45 | CALTECH/test/0/test_imgs_5.jpg 0 46 | CALTECH/test/0/test_imgs_50.jpg 0 47 | CALTECH/test/0/test_imgs_51.jpg 0 48 | CALTECH/test/0/test_imgs_52.jpg 0 49 | CALTECH/test/0/test_imgs_53.jpg 0 50 | CALTECH/test/0/test_imgs_54.jpg 0 51 | CALTECH/test/0/test_imgs_55.jpg 0 52 | CALTECH/test/0/test_imgs_56.jpg 0 53 | CALTECH/test/0/test_imgs_57.jpg 0 54 | CALTECH/test/0/test_imgs_58.jpg 0 55 | CALTECH/test/0/test_imgs_59.jpg 0 56 | CALTECH/test/0/test_imgs_6.jpg 0 57 | CALTECH/test/0/test_imgs_60.jpg 0 58 | CALTECH/test/0/test_imgs_61.jpg 0 59 | CALTECH/test/0/test_imgs_62.jpg 0 60 | CALTECH/test/0/test_imgs_63.jpg 0 61 | CALTECH/test/0/test_imgs_64.jpg 0 62 | CALTECH/test/0/test_imgs_65.jpg 0 63 | CALTECH/test/0/test_imgs_66.jpg 0 64 | CALTECH/test/0/test_imgs_67.jpg 0 65 | CALTECH/test/0/test_imgs_68.jpg 0 66 | CALTECH/test/0/test_imgs_69.jpg 0 67 | CALTECH/test/0/test_imgs_7.jpg 0 68 | CALTECH/test/0/test_imgs_70.jpg 0 69 | CALTECH/test/0/test_imgs_71.jpg 0 70 | CALTECH/test/0/test_imgs_8.jpg 0 71 | CALTECH/test/0/test_imgs_9.jpg 0 72 | CALTECH/test/1/test_imgs_100.jpg 1 73 | CALTECH/test/1/test_imgs_101.jpg 1 74 | CALTECH/test/1/test_imgs_102.jpg 1 75 | CALTECH/test/1/test_imgs_103.jpg 1 76 | CALTECH/test/1/test_imgs_104.jpg 1 77 | CALTECH/test/1/test_imgs_105.jpg 1 78 | CALTECH/test/1/test_imgs_106.jpg 1 79 | CALTECH/test/1/test_imgs_107.jpg 1 80 | CALTECH/test/1/test_imgs_108.jpg 1 81 | CALTECH/test/1/test_imgs_72.jpg 1 82 | CALTECH/test/1/test_imgs_73.jpg 1 83 | CALTECH/test/1/test_imgs_74.jpg 1 84 | CALTECH/test/1/test_imgs_75.jpg 1 85 | CALTECH/test/1/test_imgs_76.jpg 1 86 | CALTECH/test/1/test_imgs_77.jpg 1 87 | CALTECH/test/1/test_imgs_78.jpg 1 88 | CALTECH/test/1/test_imgs_79.jpg 1 89 | CALTECH/test/1/test_imgs_80.jpg 1 90 | CALTECH/test/1/test_imgs_81.jpg 1 91 | CALTECH/test/1/test_imgs_82.jpg 1 92 | CALTECH/test/1/test_imgs_83.jpg 1 93 | CALTECH/test/1/test_imgs_84.jpg 1 94 | CALTECH/test/1/test_imgs_85.jpg 1 95 | CALTECH/test/1/test_imgs_86.jpg 1 96 | CALTECH/test/1/test_imgs_87.jpg 1 97 | CALTECH/test/1/test_imgs_88.jpg 1 98 | CALTECH/test/1/test_imgs_89.jpg 1 99 | CALTECH/test/1/test_imgs_90.jpg 1 100 | CALTECH/test/1/test_imgs_91.jpg 1 101 | CALTECH/test/1/test_imgs_92.jpg 1 102 | CALTECH/test/1/test_imgs_93.jpg 1 103 | CALTECH/test/1/test_imgs_94.jpg 1 104 | CALTECH/test/1/test_imgs_95.jpg 1 105 | CALTECH/test/1/test_imgs_96.jpg 1 106 | CALTECH/test/1/test_imgs_97.jpg 1 107 | CALTECH/test/1/test_imgs_98.jpg 1 108 | CALTECH/test/1/test_imgs_99.jpg 1 109 | CALTECH/test/2/test_imgs_109.jpg 2 110 | CALTECH/test/2/test_imgs_110.jpg 2 111 | CALTECH/test/2/test_imgs_111.jpg 2 112 | CALTECH/test/2/test_imgs_112.jpg 2 113 | CALTECH/test/2/test_imgs_113.jpg 2 114 | CALTECH/test/2/test_imgs_114.jpg 2 115 | CALTECH/test/2/test_imgs_115.jpg 2 116 | CALTECH/test/2/test_imgs_116.jpg 2 117 | CALTECH/test/2/test_imgs_117.jpg 2 118 | CALTECH/test/2/test_imgs_118.jpg 2 119 | CALTECH/test/2/test_imgs_119.jpg 2 120 | CALTECH/test/2/test_imgs_120.jpg 2 121 | CALTECH/test/2/test_imgs_121.jpg 2 122 | CALTECH/test/2/test_imgs_122.jpg 2 123 | CALTECH/test/2/test_imgs_123.jpg 2 124 | CALTECH/test/2/test_imgs_124.jpg 2 125 | CALTECH/test/2/test_imgs_125.jpg 2 126 | CALTECH/test/2/test_imgs_126.jpg 2 127 | CALTECH/test/2/test_imgs_127.jpg 2 128 | CALTECH/test/2/test_imgs_128.jpg 2 129 | CALTECH/test/2/test_imgs_129.jpg 2 130 | CALTECH/test/2/test_imgs_130.jpg 2 131 | CALTECH/test/2/test_imgs_131.jpg 2 132 | CALTECH/test/2/test_imgs_132.jpg 2 133 | CALTECH/test/2/test_imgs_133.jpg 2 134 | CALTECH/test/2/test_imgs_134.jpg 2 135 | CALTECH/test/2/test_imgs_135.jpg 2 136 | CALTECH/test/2/test_imgs_136.jpg 2 137 | CALTECH/test/2/test_imgs_137.jpg 2 138 | CALTECH/test/2/test_imgs_138.jpg 2 139 | CALTECH/test/2/test_imgs_139.jpg 2 140 | CALTECH/test/2/test_imgs_140.jpg 2 141 | CALTECH/test/2/test_imgs_141.jpg 2 142 | CALTECH/test/2/test_imgs_142.jpg 2 143 | CALTECH/test/2/test_imgs_143.jpg 2 144 | CALTECH/test/3/test_imgs_144.jpg 3 145 | CALTECH/test/3/test_imgs_145.jpg 3 146 | CALTECH/test/3/test_imgs_146.jpg 3 147 | CALTECH/test/3/test_imgs_147.jpg 3 148 | CALTECH/test/3/test_imgs_148.jpg 3 149 | CALTECH/test/3/test_imgs_149.jpg 3 150 | CALTECH/test/3/test_imgs_150.jpg 3 151 | CALTECH/test/3/test_imgs_151.jpg 3 152 | CALTECH/test/3/test_imgs_152.jpg 3 153 | CALTECH/test/3/test_imgs_153.jpg 3 154 | CALTECH/test/3/test_imgs_154.jpg 3 155 | CALTECH/test/3/test_imgs_155.jpg 3 156 | CALTECH/test/3/test_imgs_156.jpg 3 157 | CALTECH/test/3/test_imgs_157.jpg 3 158 | CALTECH/test/3/test_imgs_158.jpg 3 159 | CALTECH/test/3/test_imgs_159.jpg 3 160 | CALTECH/test/3/test_imgs_160.jpg 3 161 | CALTECH/test/3/test_imgs_161.jpg 3 162 | CALTECH/test/3/test_imgs_162.jpg 3 163 | CALTECH/test/3/test_imgs_163.jpg 3 164 | CALTECH/test/4/test_imgs_164.jpg 4 165 | CALTECH/test/4/test_imgs_165.jpg 4 166 | CALTECH/test/4/test_imgs_166.jpg 4 167 | CALTECH/test/4/test_imgs_167.jpg 4 168 | CALTECH/test/4/test_imgs_168.jpg 4 169 | CALTECH/test/4/test_imgs_169.jpg 4 170 | CALTECH/test/4/test_imgs_170.jpg 4 171 | CALTECH/test/4/test_imgs_171.jpg 4 172 | CALTECH/test/4/test_imgs_172.jpg 4 173 | CALTECH/test/4/test_imgs_173.jpg 4 174 | CALTECH/test/4/test_imgs_174.jpg 4 175 | CALTECH/test/4/test_imgs_175.jpg 4 176 | CALTECH/test/4/test_imgs_176.jpg 4 177 | CALTECH/test/4/test_imgs_177.jpg 4 178 | CALTECH/test/4/test_imgs_178.jpg 4 179 | CALTECH/test/4/test_imgs_179.jpg 4 180 | CALTECH/test/4/test_imgs_180.jpg 4 181 | CALTECH/test/4/test_imgs_181.jpg 4 182 | CALTECH/test/4/test_imgs_182.jpg 4 183 | CALTECH/test/4/test_imgs_183.jpg 4 184 | CALTECH/test/4/test_imgs_184.jpg 4 185 | CALTECH/test/4/test_imgs_185.jpg 4 186 | CALTECH/test/4/test_imgs_186.jpg 4 187 | CALTECH/test/4/test_imgs_187.jpg 4 188 | CALTECH/test/4/test_imgs_188.jpg 4 189 | CALTECH/test/4/test_imgs_189.jpg 4 190 | CALTECH/test/4/test_imgs_190.jpg 4 191 | CALTECH/test/4/test_imgs_191.jpg 4 192 | CALTECH/test/4/test_imgs_192.jpg 4 193 | CALTECH/test/4/test_imgs_193.jpg 4 194 | CALTECH/test/4/test_imgs_194.jpg 4 195 | CALTECH/test/4/test_imgs_195.jpg 4 196 | CALTECH/test/4/test_imgs_196.jpg 4 197 | CALTECH/test/4/test_imgs_197.jpg 4 198 | CALTECH/test/4/test_imgs_198.jpg 4 199 | CALTECH/test/4/test_imgs_199.jpg 4 200 | CALTECH/test/4/test_imgs_200.jpg 4 201 | CALTECH/test/4/test_imgs_201.jpg 4 202 | CALTECH/test/4/test_imgs_202.jpg 4 203 | CALTECH/test/4/test_imgs_203.jpg 4 204 | CALTECH/test/4/test_imgs_204.jpg 4 205 | CALTECH/test/4/test_imgs_205.jpg 4 206 | CALTECH/test/4/test_imgs_206.jpg 4 207 | CALTECH/test/4/test_imgs_207.jpg 4 208 | CALTECH/test/4/test_imgs_208.jpg 4 209 | CALTECH/test/4/test_imgs_209.jpg 4 210 | CALTECH/test/4/test_imgs_210.jpg 4 211 | CALTECH/test/4/test_imgs_211.jpg 4 212 | CALTECH/test/4/test_imgs_212.jpg 4 213 | CALTECH/test/4/test_imgs_213.jpg 4 214 | CALTECH/test/4/test_imgs_214.jpg 4 215 | CALTECH/test/4/test_imgs_215.jpg 4 216 | CALTECH/test/4/test_imgs_216.jpg 4 217 | CALTECH/test/4/test_imgs_217.jpg 4 218 | CALTECH/test/4/test_imgs_218.jpg 4 219 | CALTECH/test/4/test_imgs_219.jpg 4 220 | CALTECH/test/4/test_imgs_220.jpg 4 221 | CALTECH/test/4/test_imgs_221.jpg 4 222 | CALTECH/test/4/test_imgs_222.jpg 4 223 | CALTECH/test/4/test_imgs_223.jpg 4 224 | CALTECH/test/4/test_imgs_224.jpg 4 225 | CALTECH/test/4/test_imgs_225.jpg 4 226 | CALTECH/test/4/test_imgs_226.jpg 4 227 | CALTECH/test/4/test_imgs_227.jpg 4 228 | CALTECH/test/4/test_imgs_228.jpg 4 229 | CALTECH/test/4/test_imgs_229.jpg 4 230 | CALTECH/test/4/test_imgs_230.jpg 4 231 | CALTECH/test/4/test_imgs_231.jpg 4 232 | CALTECH/test/4/test_imgs_232.jpg 4 233 | CALTECH/test/4/test_imgs_233.jpg 4 234 | CALTECH/test/4/test_imgs_234.jpg 4 235 | CALTECH/test/4/test_imgs_235.jpg 4 236 | CALTECH/test/4/test_imgs_236.jpg 4 237 | CALTECH/test/4/test_imgs_237.jpg 4 238 | CALTECH/test/4/test_imgs_238.jpg 4 239 | CALTECH/test/4/test_imgs_239.jpg 4 240 | CALTECH/test/4/test_imgs_240.jpg 4 241 | CALTECH/test/4/test_imgs_241.jpg 4 242 | CALTECH/test/4/test_imgs_242.jpg 4 243 | CALTECH/test/4/test_imgs_243.jpg 4 244 | CALTECH/test/4/test_imgs_244.jpg 4 245 | CALTECH/test/4/test_imgs_245.jpg 4 246 | CALTECH/test/4/test_imgs_246.jpg 4 247 | CALTECH/test/4/test_imgs_247.jpg 4 248 | CALTECH/test/4/test_imgs_248.jpg 4 249 | CALTECH/test/4/test_imgs_249.jpg 4 250 | CALTECH/test/4/test_imgs_250.jpg 4 251 | CALTECH/test/4/test_imgs_251.jpg 4 252 | CALTECH/test/4/test_imgs_252.jpg 4 253 | CALTECH/test/4/test_imgs_253.jpg 4 254 | CALTECH/test/4/test_imgs_254.jpg 4 255 | CALTECH/test/4/test_imgs_255.jpg 4 256 | CALTECH/test/4/test_imgs_256.jpg 4 257 | CALTECH/test/4/test_imgs_257.jpg 4 258 | CALTECH/test/4/test_imgs_258.jpg 4 259 | CALTECH/test/4/test_imgs_259.jpg 4 260 | CALTECH/test/4/test_imgs_260.jpg 4 261 | CALTECH/test/4/test_imgs_261.jpg 4 262 | CALTECH/test/4/test_imgs_262.jpg 4 263 | CALTECH/test/4/test_imgs_263.jpg 4 264 | CALTECH/test/4/test_imgs_264.jpg 4 265 | CALTECH/test/4/test_imgs_265.jpg 4 266 | CALTECH/test/4/test_imgs_266.jpg 4 267 | CALTECH/test/4/test_imgs_267.jpg 4 268 | CALTECH/test/4/test_imgs_268.jpg 4 269 | CALTECH/test/4/test_imgs_269.jpg 4 270 | CALTECH/test/4/test_imgs_270.jpg 4 271 | CALTECH/test/4/test_imgs_271.jpg 4 272 | CALTECH/test/4/test_imgs_272.jpg 4 273 | CALTECH/test/4/test_imgs_273.jpg 4 274 | CALTECH/test/4/test_imgs_274.jpg 4 275 | CALTECH/test/4/test_imgs_275.jpg 4 276 | CALTECH/test/4/test_imgs_276.jpg 4 277 | CALTECH/test/4/test_imgs_277.jpg 4 278 | CALTECH/test/4/test_imgs_278.jpg 4 279 | CALTECH/test/4/test_imgs_279.jpg 4 280 | CALTECH/test/4/test_imgs_280.jpg 4 281 | CALTECH/test/4/test_imgs_281.jpg 4 282 | CALTECH/test/4/test_imgs_282.jpg 4 283 | CALTECH/test/4/test_imgs_283.jpg 4 284 | CALTECH/test/4/test_imgs_284.jpg 4 285 | CALTECH/test/4/test_imgs_285.jpg 4 286 | CALTECH/test/4/test_imgs_286.jpg 4 287 | CALTECH/test/4/test_imgs_287.jpg 4 288 | CALTECH/test/4/test_imgs_288.jpg 4 289 | CALTECH/test/4/test_imgs_289.jpg 4 290 | CALTECH/test/4/test_imgs_290.jpg 4 291 | CALTECH/test/4/test_imgs_291.jpg 4 292 | CALTECH/test/4/test_imgs_292.jpg 4 293 | CALTECH/test/4/test_imgs_293.jpg 4 294 | CALTECH/test/4/test_imgs_294.jpg 4 295 | CALTECH/test/4/test_imgs_295.jpg 4 296 | CALTECH/test/4/test_imgs_296.jpg 4 297 | CALTECH/test/4/test_imgs_297.jpg 4 298 | CALTECH/test/4/test_imgs_298.jpg 4 299 | CALTECH/test/4/test_imgs_299.jpg 4 300 | CALTECH/test/4/test_imgs_300.jpg 4 301 | CALTECH/test/4/test_imgs_301.jpg 4 302 | CALTECH/test/4/test_imgs_302.jpg 4 303 | CALTECH/test/4/test_imgs_303.jpg 4 304 | CALTECH/test/4/test_imgs_304.jpg 4 305 | CALTECH/test/4/test_imgs_305.jpg 4 306 | CALTECH/test/4/test_imgs_306.jpg 4 307 | CALTECH/test/4/test_imgs_307.jpg 4 308 | CALTECH/test/4/test_imgs_308.jpg 4 309 | CALTECH/test/4/test_imgs_309.jpg 4 310 | CALTECH/test/4/test_imgs_310.jpg 4 311 | CALTECH/test/4/test_imgs_311.jpg 4 312 | CALTECH/test/4/test_imgs_312.jpg 4 313 | CALTECH/test/4/test_imgs_313.jpg 4 314 | CALTECH/test/4/test_imgs_314.jpg 4 315 | CALTECH/test/4/test_imgs_315.jpg 4 316 | CALTECH/test/4/test_imgs_316.jpg 4 317 | CALTECH/test/4/test_imgs_317.jpg 4 318 | CALTECH/test/4/test_imgs_318.jpg 4 319 | CALTECH/test/4/test_imgs_319.jpg 4 320 | CALTECH/test/4/test_imgs_320.jpg 4 321 | CALTECH/test/4/test_imgs_321.jpg 4 322 | CALTECH/test/4/test_imgs_322.jpg 4 323 | CALTECH/test/4/test_imgs_323.jpg 4 324 | CALTECH/test/4/test_imgs_324.jpg 4 325 | CALTECH/test/4/test_imgs_325.jpg 4 326 | CALTECH/test/4/test_imgs_326.jpg 4 327 | CALTECH/test/4/test_imgs_327.jpg 4 328 | CALTECH/test/4/test_imgs_328.jpg 4 329 | CALTECH/test/4/test_imgs_329.jpg 4 330 | CALTECH/test/4/test_imgs_330.jpg 4 331 | CALTECH/test/4/test_imgs_331.jpg 4 332 | CALTECH/test/4/test_imgs_332.jpg 4 333 | CALTECH/test/4/test_imgs_333.jpg 4 334 | CALTECH/test/4/test_imgs_334.jpg 4 335 | CALTECH/test/4/test_imgs_335.jpg 4 336 | CALTECH/test/4/test_imgs_336.jpg 4 337 | CALTECH/test/4/test_imgs_337.jpg 4 338 | CALTECH/test/4/test_imgs_338.jpg 4 339 | CALTECH/test/4/test_imgs_339.jpg 4 340 | CALTECH/test/4/test_imgs_340.jpg 4 341 | CALTECH/test/4/test_imgs_341.jpg 4 342 | CALTECH/test/4/test_imgs_342.jpg 4 343 | CALTECH/test/4/test_imgs_343.jpg 4 344 | CALTECH/test/4/test_imgs_344.jpg 4 345 | CALTECH/test/4/test_imgs_345.jpg 4 346 | CALTECH/test/4/test_imgs_346.jpg 4 347 | CALTECH/test/4/test_imgs_347.jpg 4 348 | CALTECH/test/4/test_imgs_348.jpg 4 349 | CALTECH/test/4/test_imgs_349.jpg 4 350 | CALTECH/test/4/test_imgs_350.jpg 4 351 | CALTECH/test/4/test_imgs_351.jpg 4 352 | CALTECH/test/4/test_imgs_352.jpg 4 353 | CALTECH/test/4/test_imgs_353.jpg 4 354 | CALTECH/test/4/test_imgs_354.jpg 4 355 | CALTECH/test/4/test_imgs_355.jpg 4 356 | CALTECH/test/4/test_imgs_356.jpg 4 357 | CALTECH/test/4/test_imgs_357.jpg 4 358 | CALTECH/test/4/test_imgs_358.jpg 4 359 | CALTECH/test/4/test_imgs_359.jpg 4 360 | CALTECH/test/4/test_imgs_360.jpg 4 361 | CALTECH/test/4/test_imgs_361.jpg 4 362 | CALTECH/test/4/test_imgs_362.jpg 4 363 | CALTECH/test/4/test_imgs_363.jpg 4 364 | CALTECH/test/4/test_imgs_364.jpg 4 365 | CALTECH/test/4/test_imgs_365.jpg 4 366 | CALTECH/test/4/test_imgs_366.jpg 4 367 | CALTECH/test/4/test_imgs_367.jpg 4 368 | CALTECH/test/4/test_imgs_368.jpg 4 369 | CALTECH/test/4/test_imgs_369.jpg 4 370 | CALTECH/test/4/test_imgs_370.jpg 4 371 | CALTECH/test/4/test_imgs_371.jpg 4 372 | CALTECH/test/4/test_imgs_372.jpg 4 373 | CALTECH/test/4/test_imgs_373.jpg 4 374 | CALTECH/test/4/test_imgs_374.jpg 4 375 | CALTECH/test/4/test_imgs_375.jpg 4 376 | CALTECH/test/4/test_imgs_376.jpg 4 377 | CALTECH/test/4/test_imgs_377.jpg 4 378 | CALTECH/test/4/test_imgs_378.jpg 4 379 | CALTECH/test/4/test_imgs_379.jpg 4 380 | CALTECH/test/4/test_imgs_380.jpg 4 381 | CALTECH/test/4/test_imgs_381.jpg 4 382 | CALTECH/test/4/test_imgs_382.jpg 4 383 | CALTECH/test/4/test_imgs_383.jpg 4 384 | CALTECH/test/4/test_imgs_384.jpg 4 385 | CALTECH/test/4/test_imgs_385.jpg 4 386 | CALTECH/test/4/test_imgs_386.jpg 4 387 | CALTECH/test/4/test_imgs_387.jpg 4 388 | CALTECH/test/4/test_imgs_388.jpg 4 389 | CALTECH/test/4/test_imgs_389.jpg 4 390 | CALTECH/test/4/test_imgs_390.jpg 4 391 | CALTECH/test/4/test_imgs_391.jpg 4 392 | CALTECH/test/4/test_imgs_392.jpg 4 393 | CALTECH/test/4/test_imgs_393.jpg 4 394 | CALTECH/test/4/test_imgs_394.jpg 4 395 | CALTECH/test/4/test_imgs_395.jpg 4 396 | CALTECH/test/4/test_imgs_396.jpg 4 397 | CALTECH/test/4/test_imgs_397.jpg 4 398 | CALTECH/test/4/test_imgs_398.jpg 4 399 | CALTECH/test/4/test_imgs_399.jpg 4 400 | CALTECH/test/4/test_imgs_400.jpg 4 401 | CALTECH/test/4/test_imgs_401.jpg 4 402 | CALTECH/test/4/test_imgs_402.jpg 4 403 | CALTECH/test/4/test_imgs_403.jpg 4 404 | CALTECH/test/4/test_imgs_404.jpg 4 405 | CALTECH/test/4/test_imgs_405.jpg 4 406 | CALTECH/test/4/test_imgs_406.jpg 4 407 | CALTECH/test/4/test_imgs_407.jpg 4 408 | CALTECH/test/4/test_imgs_408.jpg 4 409 | CALTECH/test/4/test_imgs_409.jpg 4 410 | CALTECH/test/4/test_imgs_410.jpg 4 411 | CALTECH/test/4/test_imgs_411.jpg 4 412 | CALTECH/test/4/test_imgs_412.jpg 4 413 | CALTECH/test/4/test_imgs_413.jpg 4 414 | CALTECH/test/4/test_imgs_414.jpg 4 415 | CALTECH/test/4/test_imgs_415.jpg 4 416 | CALTECH/test/4/test_imgs_416.jpg 4 417 | CALTECH/test/4/test_imgs_417.jpg 4 418 | CALTECH/test/4/test_imgs_418.jpg 4 419 | CALTECH/test/4/test_imgs_419.jpg 4 420 | CALTECH/test/4/test_imgs_420.jpg 4 421 | CALTECH/test/4/test_imgs_421.jpg 4 422 | CALTECH/test/4/test_imgs_422.jpg 4 423 | CALTECH/test/4/test_imgs_423.jpg 4 424 | CALTECH/test/4/test_imgs_424.jpg 4 425 | -------------------------------------------------------------------------------- /data/correct_txt_lists/LABELME_test.txt: -------------------------------------------------------------------------------- 1 | LABELME/test/0/test_imgs_1.jpg 0 2 | LABELME/test/0/test_imgs_10.jpg 0 3 | LABELME/test/0/test_imgs_11.jpg 0 4 | LABELME/test/0/test_imgs_12.jpg 0 5 | LABELME/test/0/test_imgs_13.jpg 0 6 | LABELME/test/0/test_imgs_14.jpg 0 7 | LABELME/test/0/test_imgs_15.jpg 0 8 | LABELME/test/0/test_imgs_16.jpg 0 9 | LABELME/test/0/test_imgs_17.jpg 0 10 | LABELME/test/0/test_imgs_18.jpg 0 11 | LABELME/test/0/test_imgs_19.jpg 0 12 | LABELME/test/0/test_imgs_2.jpg 0 13 | LABELME/test/0/test_imgs_20.jpg 0 14 | LABELME/test/0/test_imgs_21.jpg 0 15 | LABELME/test/0/test_imgs_22.jpg 0 16 | LABELME/test/0/test_imgs_23.jpg 0 17 | LABELME/test/0/test_imgs_24.jpg 0 18 | LABELME/test/0/test_imgs_3.jpg 0 19 | LABELME/test/0/test_imgs_4.jpg 0 20 | LABELME/test/0/test_imgs_5.jpg 0 21 | LABELME/test/0/test_imgs_6.jpg 0 22 | LABELME/test/0/test_imgs_7.jpg 0 23 | LABELME/test/0/test_imgs_8.jpg 0 24 | LABELME/test/0/test_imgs_9.jpg 0 25 | LABELME/test/1/test_imgs_100.jpg 1 26 | LABELME/test/1/test_imgs_101.jpg 1 27 | LABELME/test/1/test_imgs_102.jpg 1 28 | LABELME/test/1/test_imgs_103.jpg 1 29 | LABELME/test/1/test_imgs_104.jpg 1 30 | LABELME/test/1/test_imgs_105.jpg 1 31 | LABELME/test/1/test_imgs_106.jpg 1 32 | LABELME/test/1/test_imgs_107.jpg 1 33 | LABELME/test/1/test_imgs_108.jpg 1 34 | LABELME/test/1/test_imgs_109.jpg 1 35 | LABELME/test/1/test_imgs_110.jpg 1 36 | LABELME/test/1/test_imgs_111.jpg 1 37 | LABELME/test/1/test_imgs_112.jpg 1 38 | LABELME/test/1/test_imgs_113.jpg 1 39 | LABELME/test/1/test_imgs_114.jpg 1 40 | LABELME/test/1/test_imgs_115.jpg 1 41 | LABELME/test/1/test_imgs_116.jpg 1 42 | LABELME/test/1/test_imgs_117.jpg 1 43 | LABELME/test/1/test_imgs_118.jpg 1 44 | LABELME/test/1/test_imgs_119.jpg 1 45 | LABELME/test/1/test_imgs_120.jpg 1 46 | LABELME/test/1/test_imgs_121.jpg 1 47 | LABELME/test/1/test_imgs_122.jpg 1 48 | LABELME/test/1/test_imgs_123.jpg 1 49 | LABELME/test/1/test_imgs_124.jpg 1 50 | LABELME/test/1/test_imgs_125.jpg 1 51 | LABELME/test/1/test_imgs_126.jpg 1 52 | LABELME/test/1/test_imgs_127.jpg 1 53 | LABELME/test/1/test_imgs_128.jpg 1 54 | LABELME/test/1/test_imgs_129.jpg 1 55 | LABELME/test/1/test_imgs_130.jpg 1 56 | LABELME/test/1/test_imgs_131.jpg 1 57 | LABELME/test/1/test_imgs_132.jpg 1 58 | LABELME/test/1/test_imgs_133.jpg 1 59 | LABELME/test/1/test_imgs_134.jpg 1 60 | LABELME/test/1/test_imgs_135.jpg 1 61 | LABELME/test/1/test_imgs_136.jpg 1 62 | LABELME/test/1/test_imgs_137.jpg 1 63 | LABELME/test/1/test_imgs_138.jpg 1 64 | LABELME/test/1/test_imgs_139.jpg 1 65 | LABELME/test/1/test_imgs_140.jpg 1 66 | LABELME/test/1/test_imgs_141.jpg 1 67 | LABELME/test/1/test_imgs_142.jpg 1 68 | LABELME/test/1/test_imgs_143.jpg 1 69 | LABELME/test/1/test_imgs_144.jpg 1 70 | LABELME/test/1/test_imgs_145.jpg 1 71 | LABELME/test/1/test_imgs_146.jpg 1 72 | LABELME/test/1/test_imgs_147.jpg 1 73 | LABELME/test/1/test_imgs_148.jpg 1 74 | LABELME/test/1/test_imgs_149.jpg 1 75 | LABELME/test/1/test_imgs_150.jpg 1 76 | LABELME/test/1/test_imgs_151.jpg 1 77 | LABELME/test/1/test_imgs_152.jpg 1 78 | LABELME/test/1/test_imgs_153.jpg 1 79 | LABELME/test/1/test_imgs_154.jpg 1 80 | LABELME/test/1/test_imgs_155.jpg 1 81 | LABELME/test/1/test_imgs_156.jpg 1 82 | LABELME/test/1/test_imgs_157.jpg 1 83 | LABELME/test/1/test_imgs_158.jpg 1 84 | LABELME/test/1/test_imgs_159.jpg 1 85 | LABELME/test/1/test_imgs_160.jpg 1 86 | LABELME/test/1/test_imgs_161.jpg 1 87 | LABELME/test/1/test_imgs_162.jpg 1 88 | LABELME/test/1/test_imgs_163.jpg 1 89 | LABELME/test/1/test_imgs_164.jpg 1 90 | LABELME/test/1/test_imgs_165.jpg 1 91 | LABELME/test/1/test_imgs_166.jpg 1 92 | LABELME/test/1/test_imgs_167.jpg 1 93 | LABELME/test/1/test_imgs_168.jpg 1 94 | LABELME/test/1/test_imgs_169.jpg 1 95 | LABELME/test/1/test_imgs_170.jpg 1 96 | LABELME/test/1/test_imgs_171.jpg 1 97 | LABELME/test/1/test_imgs_172.jpg 1 98 | LABELME/test/1/test_imgs_173.jpg 1 99 | LABELME/test/1/test_imgs_174.jpg 1 100 | LABELME/test/1/test_imgs_175.jpg 1 101 | LABELME/test/1/test_imgs_176.jpg 1 102 | LABELME/test/1/test_imgs_177.jpg 1 103 | LABELME/test/1/test_imgs_178.jpg 1 104 | LABELME/test/1/test_imgs_179.jpg 1 105 | LABELME/test/1/test_imgs_180.jpg 1 106 | LABELME/test/1/test_imgs_181.jpg 1 107 | LABELME/test/1/test_imgs_182.jpg 1 108 | LABELME/test/1/test_imgs_183.jpg 1 109 | LABELME/test/1/test_imgs_184.jpg 1 110 | LABELME/test/1/test_imgs_185.jpg 1 111 | LABELME/test/1/test_imgs_186.jpg 1 112 | LABELME/test/1/test_imgs_187.jpg 1 113 | LABELME/test/1/test_imgs_188.jpg 1 114 | LABELME/test/1/test_imgs_189.jpg 1 115 | LABELME/test/1/test_imgs_190.jpg 1 116 | LABELME/test/1/test_imgs_191.jpg 1 117 | LABELME/test/1/test_imgs_192.jpg 1 118 | LABELME/test/1/test_imgs_193.jpg 1 119 | LABELME/test/1/test_imgs_194.jpg 1 120 | LABELME/test/1/test_imgs_195.jpg 1 121 | LABELME/test/1/test_imgs_196.jpg 1 122 | LABELME/test/1/test_imgs_197.jpg 1 123 | LABELME/test/1/test_imgs_198.jpg 1 124 | LABELME/test/1/test_imgs_199.jpg 1 125 | LABELME/test/1/test_imgs_200.jpg 1 126 | LABELME/test/1/test_imgs_201.jpg 1 127 | LABELME/test/1/test_imgs_202.jpg 1 128 | LABELME/test/1/test_imgs_203.jpg 1 129 | LABELME/test/1/test_imgs_204.jpg 1 130 | LABELME/test/1/test_imgs_205.jpg 1 131 | LABELME/test/1/test_imgs_206.jpg 1 132 | LABELME/test/1/test_imgs_207.jpg 1 133 | LABELME/test/1/test_imgs_208.jpg 1 134 | LABELME/test/1/test_imgs_209.jpg 1 135 | LABELME/test/1/test_imgs_210.jpg 1 136 | LABELME/test/1/test_imgs_211.jpg 1 137 | LABELME/test/1/test_imgs_212.jpg 1 138 | LABELME/test/1/test_imgs_213.jpg 1 139 | LABELME/test/1/test_imgs_214.jpg 1 140 | LABELME/test/1/test_imgs_215.jpg 1 141 | LABELME/test/1/test_imgs_216.jpg 1 142 | LABELME/test/1/test_imgs_217.jpg 1 143 | LABELME/test/1/test_imgs_218.jpg 1 144 | LABELME/test/1/test_imgs_219.jpg 1 145 | LABELME/test/1/test_imgs_220.jpg 1 146 | LABELME/test/1/test_imgs_221.jpg 1 147 | LABELME/test/1/test_imgs_222.jpg 1 148 | LABELME/test/1/test_imgs_223.jpg 1 149 | LABELME/test/1/test_imgs_224.jpg 1 150 | LABELME/test/1/test_imgs_225.jpg 1 151 | LABELME/test/1/test_imgs_226.jpg 1 152 | LABELME/test/1/test_imgs_227.jpg 1 153 | LABELME/test/1/test_imgs_228.jpg 1 154 | LABELME/test/1/test_imgs_229.jpg 1 155 | LABELME/test/1/test_imgs_230.jpg 1 156 | LABELME/test/1/test_imgs_231.jpg 1 157 | LABELME/test/1/test_imgs_232.jpg 1 158 | LABELME/test/1/test_imgs_233.jpg 1 159 | LABELME/test/1/test_imgs_234.jpg 1 160 | LABELME/test/1/test_imgs_235.jpg 1 161 | LABELME/test/1/test_imgs_236.jpg 1 162 | LABELME/test/1/test_imgs_237.jpg 1 163 | LABELME/test/1/test_imgs_238.jpg 1 164 | LABELME/test/1/test_imgs_239.jpg 1 165 | LABELME/test/1/test_imgs_240.jpg 1 166 | LABELME/test/1/test_imgs_241.jpg 1 167 | LABELME/test/1/test_imgs_242.jpg 1 168 | LABELME/test/1/test_imgs_243.jpg 1 169 | LABELME/test/1/test_imgs_244.jpg 1 170 | LABELME/test/1/test_imgs_245.jpg 1 171 | LABELME/test/1/test_imgs_246.jpg 1 172 | LABELME/test/1/test_imgs_247.jpg 1 173 | LABELME/test/1/test_imgs_248.jpg 1 174 | LABELME/test/1/test_imgs_249.jpg 1 175 | LABELME/test/1/test_imgs_25.jpg 1 176 | LABELME/test/1/test_imgs_250.jpg 1 177 | LABELME/test/1/test_imgs_251.jpg 1 178 | LABELME/test/1/test_imgs_252.jpg 1 179 | LABELME/test/1/test_imgs_253.jpg 1 180 | LABELME/test/1/test_imgs_254.jpg 1 181 | LABELME/test/1/test_imgs_255.jpg 1 182 | LABELME/test/1/test_imgs_256.jpg 1 183 | LABELME/test/1/test_imgs_257.jpg 1 184 | LABELME/test/1/test_imgs_258.jpg 1 185 | LABELME/test/1/test_imgs_259.jpg 1 186 | LABELME/test/1/test_imgs_26.jpg 1 187 | LABELME/test/1/test_imgs_260.jpg 1 188 | LABELME/test/1/test_imgs_261.jpg 1 189 | LABELME/test/1/test_imgs_262.jpg 1 190 | LABELME/test/1/test_imgs_263.jpg 1 191 | LABELME/test/1/test_imgs_264.jpg 1 192 | LABELME/test/1/test_imgs_265.jpg 1 193 | LABELME/test/1/test_imgs_266.jpg 1 194 | LABELME/test/1/test_imgs_267.jpg 1 195 | LABELME/test/1/test_imgs_268.jpg 1 196 | LABELME/test/1/test_imgs_269.jpg 1 197 | LABELME/test/1/test_imgs_27.jpg 1 198 | LABELME/test/1/test_imgs_270.jpg 1 199 | LABELME/test/1/test_imgs_271.jpg 1 200 | LABELME/test/1/test_imgs_272.jpg 1 201 | LABELME/test/1/test_imgs_273.jpg 1 202 | LABELME/test/1/test_imgs_274.jpg 1 203 | LABELME/test/1/test_imgs_275.jpg 1 204 | LABELME/test/1/test_imgs_276.jpg 1 205 | LABELME/test/1/test_imgs_277.jpg 1 206 | LABELME/test/1/test_imgs_278.jpg 1 207 | LABELME/test/1/test_imgs_279.jpg 1 208 | LABELME/test/1/test_imgs_28.jpg 1 209 | LABELME/test/1/test_imgs_280.jpg 1 210 | LABELME/test/1/test_imgs_281.jpg 1 211 | LABELME/test/1/test_imgs_282.jpg 1 212 | LABELME/test/1/test_imgs_283.jpg 1 213 | LABELME/test/1/test_imgs_284.jpg 1 214 | LABELME/test/1/test_imgs_285.jpg 1 215 | LABELME/test/1/test_imgs_286.jpg 1 216 | LABELME/test/1/test_imgs_287.jpg 1 217 | LABELME/test/1/test_imgs_288.jpg 1 218 | LABELME/test/1/test_imgs_289.jpg 1 219 | LABELME/test/1/test_imgs_29.jpg 1 220 | LABELME/test/1/test_imgs_290.jpg 1 221 | LABELME/test/1/test_imgs_291.jpg 1 222 | LABELME/test/1/test_imgs_292.jpg 1 223 | LABELME/test/1/test_imgs_293.jpg 1 224 | LABELME/test/1/test_imgs_294.jpg 1 225 | LABELME/test/1/test_imgs_295.jpg 1 226 | LABELME/test/1/test_imgs_296.jpg 1 227 | LABELME/test/1/test_imgs_297.jpg 1 228 | LABELME/test/1/test_imgs_298.jpg 1 229 | LABELME/test/1/test_imgs_299.jpg 1 230 | LABELME/test/1/test_imgs_30.jpg 1 231 | LABELME/test/1/test_imgs_300.jpg 1 232 | LABELME/test/1/test_imgs_301.jpg 1 233 | LABELME/test/1/test_imgs_302.jpg 1 234 | LABELME/test/1/test_imgs_303.jpg 1 235 | LABELME/test/1/test_imgs_304.jpg 1 236 | LABELME/test/1/test_imgs_305.jpg 1 237 | LABELME/test/1/test_imgs_306.jpg 1 238 | LABELME/test/1/test_imgs_307.jpg 1 239 | LABELME/test/1/test_imgs_308.jpg 1 240 | LABELME/test/1/test_imgs_309.jpg 1 241 | LABELME/test/1/test_imgs_31.jpg 1 242 | LABELME/test/1/test_imgs_310.jpg 1 243 | LABELME/test/1/test_imgs_311.jpg 1 244 | LABELME/test/1/test_imgs_312.jpg 1 245 | LABELME/test/1/test_imgs_313.jpg 1 246 | LABELME/test/1/test_imgs_314.jpg 1 247 | LABELME/test/1/test_imgs_315.jpg 1 248 | LABELME/test/1/test_imgs_316.jpg 1 249 | LABELME/test/1/test_imgs_317.jpg 1 250 | LABELME/test/1/test_imgs_318.jpg 1 251 | LABELME/test/1/test_imgs_319.jpg 1 252 | LABELME/test/1/test_imgs_32.jpg 1 253 | LABELME/test/1/test_imgs_320.jpg 1 254 | LABELME/test/1/test_imgs_321.jpg 1 255 | LABELME/test/1/test_imgs_322.jpg 1 256 | LABELME/test/1/test_imgs_323.jpg 1 257 | LABELME/test/1/test_imgs_324.jpg 1 258 | LABELME/test/1/test_imgs_325.jpg 1 259 | LABELME/test/1/test_imgs_326.jpg 1 260 | LABELME/test/1/test_imgs_327.jpg 1 261 | LABELME/test/1/test_imgs_328.jpg 1 262 | LABELME/test/1/test_imgs_329.jpg 1 263 | LABELME/test/1/test_imgs_33.jpg 1 264 | LABELME/test/1/test_imgs_330.jpg 1 265 | LABELME/test/1/test_imgs_331.jpg 1 266 | LABELME/test/1/test_imgs_332.jpg 1 267 | LABELME/test/1/test_imgs_333.jpg 1 268 | LABELME/test/1/test_imgs_334.jpg 1 269 | LABELME/test/1/test_imgs_335.jpg 1 270 | LABELME/test/1/test_imgs_336.jpg 1 271 | LABELME/test/1/test_imgs_337.jpg 1 272 | LABELME/test/1/test_imgs_338.jpg 1 273 | LABELME/test/1/test_imgs_339.jpg 1 274 | LABELME/test/1/test_imgs_34.jpg 1 275 | LABELME/test/1/test_imgs_340.jpg 1 276 | LABELME/test/1/test_imgs_341.jpg 1 277 | LABELME/test/1/test_imgs_342.jpg 1 278 | LABELME/test/1/test_imgs_343.jpg 1 279 | LABELME/test/1/test_imgs_344.jpg 1 280 | LABELME/test/1/test_imgs_345.jpg 1 281 | LABELME/test/1/test_imgs_346.jpg 1 282 | LABELME/test/1/test_imgs_347.jpg 1 283 | LABELME/test/1/test_imgs_348.jpg 1 284 | LABELME/test/1/test_imgs_349.jpg 1 285 | LABELME/test/1/test_imgs_35.jpg 1 286 | LABELME/test/1/test_imgs_350.jpg 1 287 | LABELME/test/1/test_imgs_351.jpg 1 288 | LABELME/test/1/test_imgs_352.jpg 1 289 | LABELME/test/1/test_imgs_353.jpg 1 290 | LABELME/test/1/test_imgs_354.jpg 1 291 | LABELME/test/1/test_imgs_355.jpg 1 292 | LABELME/test/1/test_imgs_356.jpg 1 293 | LABELME/test/1/test_imgs_357.jpg 1 294 | LABELME/test/1/test_imgs_358.jpg 1 295 | LABELME/test/1/test_imgs_359.jpg 1 296 | LABELME/test/1/test_imgs_36.jpg 1 297 | LABELME/test/1/test_imgs_360.jpg 1 298 | LABELME/test/1/test_imgs_361.jpg 1 299 | LABELME/test/1/test_imgs_362.jpg 1 300 | LABELME/test/1/test_imgs_363.jpg 1 301 | LABELME/test/1/test_imgs_364.jpg 1 302 | LABELME/test/1/test_imgs_365.jpg 1 303 | LABELME/test/1/test_imgs_366.jpg 1 304 | LABELME/test/1/test_imgs_367.jpg 1 305 | LABELME/test/1/test_imgs_368.jpg 1 306 | LABELME/test/1/test_imgs_369.jpg 1 307 | LABELME/test/1/test_imgs_37.jpg 1 308 | LABELME/test/1/test_imgs_370.jpg 1 309 | LABELME/test/1/test_imgs_371.jpg 1 310 | LABELME/test/1/test_imgs_372.jpg 1 311 | LABELME/test/1/test_imgs_373.jpg 1 312 | LABELME/test/1/test_imgs_374.jpg 1 313 | LABELME/test/1/test_imgs_375.jpg 1 314 | LABELME/test/1/test_imgs_376.jpg 1 315 | LABELME/test/1/test_imgs_377.jpg 1 316 | LABELME/test/1/test_imgs_378.jpg 1 317 | LABELME/test/1/test_imgs_379.jpg 1 318 | LABELME/test/1/test_imgs_38.jpg 1 319 | LABELME/test/1/test_imgs_380.jpg 1 320 | LABELME/test/1/test_imgs_381.jpg 1 321 | LABELME/test/1/test_imgs_382.jpg 1 322 | LABELME/test/1/test_imgs_383.jpg 1 323 | LABELME/test/1/test_imgs_384.jpg 1 324 | LABELME/test/1/test_imgs_385.jpg 1 325 | LABELME/test/1/test_imgs_386.jpg 1 326 | LABELME/test/1/test_imgs_387.jpg 1 327 | LABELME/test/1/test_imgs_39.jpg 1 328 | LABELME/test/1/test_imgs_40.jpg 1 329 | LABELME/test/1/test_imgs_41.jpg 1 330 | LABELME/test/1/test_imgs_42.jpg 1 331 | LABELME/test/1/test_imgs_43.jpg 1 332 | LABELME/test/1/test_imgs_44.jpg 1 333 | LABELME/test/1/test_imgs_45.jpg 1 334 | LABELME/test/1/test_imgs_46.jpg 1 335 | LABELME/test/1/test_imgs_47.jpg 1 336 | LABELME/test/1/test_imgs_48.jpg 1 337 | LABELME/test/1/test_imgs_49.jpg 1 338 | LABELME/test/1/test_imgs_50.jpg 1 339 | LABELME/test/1/test_imgs_51.jpg 1 340 | LABELME/test/1/test_imgs_52.jpg 1 341 | LABELME/test/1/test_imgs_53.jpg 1 342 | LABELME/test/1/test_imgs_54.jpg 1 343 | LABELME/test/1/test_imgs_55.jpg 1 344 | LABELME/test/1/test_imgs_56.jpg 1 345 | LABELME/test/1/test_imgs_57.jpg 1 346 | LABELME/test/1/test_imgs_58.jpg 1 347 | LABELME/test/1/test_imgs_59.jpg 1 348 | LABELME/test/1/test_imgs_60.jpg 1 349 | LABELME/test/1/test_imgs_61.jpg 1 350 | LABELME/test/1/test_imgs_62.jpg 1 351 | LABELME/test/1/test_imgs_63.jpg 1 352 | LABELME/test/1/test_imgs_64.jpg 1 353 | LABELME/test/1/test_imgs_65.jpg 1 354 | LABELME/test/1/test_imgs_66.jpg 1 355 | LABELME/test/1/test_imgs_67.jpg 1 356 | LABELME/test/1/test_imgs_68.jpg 1 357 | LABELME/test/1/test_imgs_69.jpg 1 358 | LABELME/test/1/test_imgs_70.jpg 1 359 | LABELME/test/1/test_imgs_71.jpg 1 360 | LABELME/test/1/test_imgs_72.jpg 1 361 | LABELME/test/1/test_imgs_73.jpg 1 362 | LABELME/test/1/test_imgs_74.jpg 1 363 | LABELME/test/1/test_imgs_75.jpg 1 364 | LABELME/test/1/test_imgs_76.jpg 1 365 | LABELME/test/1/test_imgs_77.jpg 1 366 | LABELME/test/1/test_imgs_78.jpg 1 367 | LABELME/test/1/test_imgs_79.jpg 1 368 | LABELME/test/1/test_imgs_80.jpg 1 369 | LABELME/test/1/test_imgs_81.jpg 1 370 | LABELME/test/1/test_imgs_82.jpg 1 371 | LABELME/test/1/test_imgs_83.jpg 1 372 | LABELME/test/1/test_imgs_84.jpg 1 373 | LABELME/test/1/test_imgs_85.jpg 1 374 | LABELME/test/1/test_imgs_86.jpg 1 375 | LABELME/test/1/test_imgs_87.jpg 1 376 | LABELME/test/1/test_imgs_88.jpg 1 377 | LABELME/test/1/test_imgs_89.jpg 1 378 | LABELME/test/1/test_imgs_90.jpg 1 379 | LABELME/test/1/test_imgs_91.jpg 1 380 | LABELME/test/1/test_imgs_92.jpg 1 381 | LABELME/test/1/test_imgs_93.jpg 1 382 | LABELME/test/1/test_imgs_94.jpg 1 383 | LABELME/test/1/test_imgs_95.jpg 1 384 | LABELME/test/1/test_imgs_96.jpg 1 385 | LABELME/test/1/test_imgs_97.jpg 1 386 | LABELME/test/1/test_imgs_98.jpg 1 387 | LABELME/test/1/test_imgs_99.jpg 1 388 | LABELME/test/2/test_imgs_388.jpg 2 389 | LABELME/test/2/test_imgs_389.jpg 2 390 | LABELME/test/2/test_imgs_390.jpg 2 391 | LABELME/test/2/test_imgs_391.jpg 2 392 | LABELME/test/2/test_imgs_392.jpg 2 393 | LABELME/test/2/test_imgs_393.jpg 2 394 | LABELME/test/2/test_imgs_394.jpg 2 395 | LABELME/test/2/test_imgs_395.jpg 2 396 | LABELME/test/2/test_imgs_396.jpg 2 397 | LABELME/test/2/test_imgs_397.jpg 2 398 | LABELME/test/2/test_imgs_398.jpg 2 399 | LABELME/test/2/test_imgs_399.jpg 2 400 | LABELME/test/2/test_imgs_400.jpg 2 401 | LABELME/test/2/test_imgs_401.jpg 2 402 | LABELME/test/2/test_imgs_402.jpg 2 403 | LABELME/test/2/test_imgs_403.jpg 2 404 | LABELME/test/2/test_imgs_404.jpg 2 405 | LABELME/test/2/test_imgs_405.jpg 2 406 | LABELME/test/2/test_imgs_406.jpg 2 407 | LABELME/test/2/test_imgs_407.jpg 2 408 | LABELME/test/2/test_imgs_408.jpg 2 409 | LABELME/test/2/test_imgs_409.jpg 2 410 | LABELME/test/2/test_imgs_410.jpg 2 411 | LABELME/test/2/test_imgs_411.jpg 2 412 | LABELME/test/2/test_imgs_412.jpg 2 413 | LABELME/test/2/test_imgs_413.jpg 2 414 | LABELME/test/3/test_imgs_414.jpg 3 415 | LABELME/test/3/test_imgs_415.jpg 3 416 | LABELME/test/3/test_imgs_416.jpg 3 417 | LABELME/test/3/test_imgs_417.jpg 3 418 | LABELME/test/3/test_imgs_418.jpg 3 419 | LABELME/test/3/test_imgs_419.jpg 3 420 | LABELME/test/3/test_imgs_420.jpg 3 421 | LABELME/test/3/test_imgs_421.jpg 3 422 | LABELME/test/3/test_imgs_422.jpg 3 423 | LABELME/test/3/test_imgs_423.jpg 3 424 | LABELME/test/3/test_imgs_424.jpg 3 425 | LABELME/test/3/test_imgs_425.jpg 3 426 | LABELME/test/3/test_imgs_426.jpg 3 427 | LABELME/test/4/test_imgs_427.jpg 4 428 | LABELME/test/4/test_imgs_428.jpg 4 429 | LABELME/test/4/test_imgs_429.jpg 4 430 | LABELME/test/4/test_imgs_430.jpg 4 431 | LABELME/test/4/test_imgs_431.jpg 4 432 | LABELME/test/4/test_imgs_432.jpg 4 433 | LABELME/test/4/test_imgs_433.jpg 4 434 | LABELME/test/4/test_imgs_434.jpg 4 435 | LABELME/test/4/test_imgs_435.jpg 4 436 | LABELME/test/4/test_imgs_436.jpg 4 437 | LABELME/test/4/test_imgs_437.jpg 4 438 | LABELME/test/4/test_imgs_438.jpg 4 439 | LABELME/test/4/test_imgs_439.jpg 4 440 | LABELME/test/4/test_imgs_440.jpg 4 441 | LABELME/test/4/test_imgs_441.jpg 4 442 | LABELME/test/4/test_imgs_442.jpg 4 443 | LABELME/test/4/test_imgs_443.jpg 4 444 | LABELME/test/4/test_imgs_444.jpg 4 445 | LABELME/test/4/test_imgs_445.jpg 4 446 | LABELME/test/4/test_imgs_446.jpg 4 447 | LABELME/test/4/test_imgs_447.jpg 4 448 | LABELME/test/4/test_imgs_448.jpg 4 449 | LABELME/test/4/test_imgs_449.jpg 4 450 | LABELME/test/4/test_imgs_450.jpg 4 451 | LABELME/test/4/test_imgs_451.jpg 4 452 | LABELME/test/4/test_imgs_452.jpg 4 453 | LABELME/test/4/test_imgs_453.jpg 4 454 | LABELME/test/4/test_imgs_454.jpg 4 455 | LABELME/test/4/test_imgs_455.jpg 4 456 | LABELME/test/4/test_imgs_456.jpg 4 457 | LABELME/test/4/test_imgs_457.jpg 4 458 | LABELME/test/4/test_imgs_458.jpg 4 459 | LABELME/test/4/test_imgs_459.jpg 4 460 | LABELME/test/4/test_imgs_460.jpg 4 461 | LABELME/test/4/test_imgs_461.jpg 4 462 | LABELME/test/4/test_imgs_462.jpg 4 463 | LABELME/test/4/test_imgs_463.jpg 4 464 | LABELME/test/4/test_imgs_464.jpg 4 465 | LABELME/test/4/test_imgs_465.jpg 4 466 | LABELME/test/4/test_imgs_466.jpg 4 467 | LABELME/test/4/test_imgs_467.jpg 4 468 | LABELME/test/4/test_imgs_468.jpg 4 469 | LABELME/test/4/test_imgs_469.jpg 4 470 | LABELME/test/4/test_imgs_470.jpg 4 471 | LABELME/test/4/test_imgs_471.jpg 4 472 | LABELME/test/4/test_imgs_472.jpg 4 473 | LABELME/test/4/test_imgs_473.jpg 4 474 | LABELME/test/4/test_imgs_474.jpg 4 475 | LABELME/test/4/test_imgs_475.jpg 4 476 | LABELME/test/4/test_imgs_476.jpg 4 477 | LABELME/test/4/test_imgs_477.jpg 4 478 | LABELME/test/4/test_imgs_478.jpg 4 479 | LABELME/test/4/test_imgs_479.jpg 4 480 | LABELME/test/4/test_imgs_480.jpg 4 481 | LABELME/test/4/test_imgs_481.jpg 4 482 | LABELME/test/4/test_imgs_482.jpg 4 483 | LABELME/test/4/test_imgs_483.jpg 4 484 | LABELME/test/4/test_imgs_484.jpg 4 485 | LABELME/test/4/test_imgs_485.jpg 4 486 | LABELME/test/4/test_imgs_486.jpg 4 487 | LABELME/test/4/test_imgs_487.jpg 4 488 | LABELME/test/4/test_imgs_488.jpg 4 489 | LABELME/test/4/test_imgs_489.jpg 4 490 | LABELME/test/4/test_imgs_490.jpg 4 491 | LABELME/test/4/test_imgs_491.jpg 4 492 | LABELME/test/4/test_imgs_492.jpg 4 493 | LABELME/test/4/test_imgs_493.jpg 4 494 | LABELME/test/4/test_imgs_494.jpg 4 495 | LABELME/test/4/test_imgs_495.jpg 4 496 | LABELME/test/4/test_imgs_496.jpg 4 497 | LABELME/test/4/test_imgs_497.jpg 4 498 | LABELME/test/4/test_imgs_498.jpg 4 499 | LABELME/test/4/test_imgs_499.jpg 4 500 | LABELME/test/4/test_imgs_500.jpg 4 501 | LABELME/test/4/test_imgs_501.jpg 4 502 | LABELME/test/4/test_imgs_502.jpg 4 503 | LABELME/test/4/test_imgs_503.jpg 4 504 | LABELME/test/4/test_imgs_504.jpg 4 505 | LABELME/test/4/test_imgs_505.jpg 4 506 | LABELME/test/4/test_imgs_506.jpg 4 507 | LABELME/test/4/test_imgs_507.jpg 4 508 | LABELME/test/4/test_imgs_508.jpg 4 509 | LABELME/test/4/test_imgs_509.jpg 4 510 | LABELME/test/4/test_imgs_510.jpg 4 511 | LABELME/test/4/test_imgs_511.jpg 4 512 | LABELME/test/4/test_imgs_512.jpg 4 513 | LABELME/test/4/test_imgs_513.jpg 4 514 | LABELME/test/4/test_imgs_514.jpg 4 515 | LABELME/test/4/test_imgs_515.jpg 4 516 | LABELME/test/4/test_imgs_516.jpg 4 517 | LABELME/test/4/test_imgs_517.jpg 4 518 | LABELME/test/4/test_imgs_518.jpg 4 519 | LABELME/test/4/test_imgs_519.jpg 4 520 | LABELME/test/4/test_imgs_520.jpg 4 521 | LABELME/test/4/test_imgs_521.jpg 4 522 | LABELME/test/4/test_imgs_522.jpg 4 523 | LABELME/test/4/test_imgs_523.jpg 4 524 | LABELME/test/4/test_imgs_524.jpg 4 525 | LABELME/test/4/test_imgs_525.jpg 4 526 | LABELME/test/4/test_imgs_526.jpg 4 527 | LABELME/test/4/test_imgs_527.jpg 4 528 | LABELME/test/4/test_imgs_528.jpg 4 529 | LABELME/test/4/test_imgs_529.jpg 4 530 | LABELME/test/4/test_imgs_530.jpg 4 531 | LABELME/test/4/test_imgs_531.jpg 4 532 | LABELME/test/4/test_imgs_532.jpg 4 533 | LABELME/test/4/test_imgs_533.jpg 4 534 | LABELME/test/4/test_imgs_534.jpg 4 535 | LABELME/test/4/test_imgs_535.jpg 4 536 | LABELME/test/4/test_imgs_536.jpg 4 537 | LABELME/test/4/test_imgs_537.jpg 4 538 | LABELME/test/4/test_imgs_538.jpg 4 539 | LABELME/test/4/test_imgs_539.jpg 4 540 | LABELME/test/4/test_imgs_540.jpg 4 541 | LABELME/test/4/test_imgs_541.jpg 4 542 | LABELME/test/4/test_imgs_542.jpg 4 543 | LABELME/test/4/test_imgs_543.jpg 4 544 | LABELME/test/4/test_imgs_544.jpg 4 545 | LABELME/test/4/test_imgs_545.jpg 4 546 | LABELME/test/4/test_imgs_546.jpg 4 547 | LABELME/test/4/test_imgs_547.jpg 4 548 | LABELME/test/4/test_imgs_548.jpg 4 549 | LABELME/test/4/test_imgs_549.jpg 4 550 | LABELME/test/4/test_imgs_550.jpg 4 551 | LABELME/test/4/test_imgs_551.jpg 4 552 | LABELME/test/4/test_imgs_552.jpg 4 553 | LABELME/test/4/test_imgs_553.jpg 4 554 | LABELME/test/4/test_imgs_554.jpg 4 555 | LABELME/test/4/test_imgs_555.jpg 4 556 | LABELME/test/4/test_imgs_556.jpg 4 557 | LABELME/test/4/test_imgs_557.jpg 4 558 | LABELME/test/4/test_imgs_558.jpg 4 559 | LABELME/test/4/test_imgs_559.jpg 4 560 | LABELME/test/4/test_imgs_560.jpg 4 561 | LABELME/test/4/test_imgs_561.jpg 4 562 | LABELME/test/4/test_imgs_562.jpg 4 563 | LABELME/test/4/test_imgs_563.jpg 4 564 | LABELME/test/4/test_imgs_564.jpg 4 565 | LABELME/test/4/test_imgs_565.jpg 4 566 | LABELME/test/4/test_imgs_566.jpg 4 567 | LABELME/test/4/test_imgs_567.jpg 4 568 | LABELME/test/4/test_imgs_568.jpg 4 569 | LABELME/test/4/test_imgs_569.jpg 4 570 | LABELME/test/4/test_imgs_570.jpg 4 571 | LABELME/test/4/test_imgs_571.jpg 4 572 | LABELME/test/4/test_imgs_572.jpg 4 573 | LABELME/test/4/test_imgs_573.jpg 4 574 | LABELME/test/4/test_imgs_574.jpg 4 575 | LABELME/test/4/test_imgs_575.jpg 4 576 | LABELME/test/4/test_imgs_576.jpg 4 577 | LABELME/test/4/test_imgs_577.jpg 4 578 | LABELME/test/4/test_imgs_578.jpg 4 579 | LABELME/test/4/test_imgs_579.jpg 4 580 | LABELME/test/4/test_imgs_580.jpg 4 581 | LABELME/test/4/test_imgs_581.jpg 4 582 | LABELME/test/4/test_imgs_582.jpg 4 583 | LABELME/test/4/test_imgs_583.jpg 4 584 | LABELME/test/4/test_imgs_584.jpg 4 585 | LABELME/test/4/test_imgs_585.jpg 4 586 | LABELME/test/4/test_imgs_586.jpg 4 587 | LABELME/test/4/test_imgs_587.jpg 4 588 | LABELME/test/4/test_imgs_588.jpg 4 589 | LABELME/test/4/test_imgs_589.jpg 4 590 | LABELME/test/4/test_imgs_590.jpg 4 591 | LABELME/test/4/test_imgs_591.jpg 4 592 | LABELME/test/4/test_imgs_592.jpg 4 593 | LABELME/test/4/test_imgs_593.jpg 4 594 | LABELME/test/4/test_imgs_594.jpg 4 595 | LABELME/test/4/test_imgs_595.jpg 4 596 | LABELME/test/4/test_imgs_596.jpg 4 597 | LABELME/test/4/test_imgs_597.jpg 4 598 | LABELME/test/4/test_imgs_598.jpg 4 599 | LABELME/test/4/test_imgs_599.jpg 4 600 | LABELME/test/4/test_imgs_600.jpg 4 601 | LABELME/test/4/test_imgs_601.jpg 4 602 | LABELME/test/4/test_imgs_602.jpg 4 603 | LABELME/test/4/test_imgs_603.jpg 4 604 | LABELME/test/4/test_imgs_604.jpg 4 605 | LABELME/test/4/test_imgs_605.jpg 4 606 | LABELME/test/4/test_imgs_606.jpg 4 607 | LABELME/test/4/test_imgs_607.jpg 4 608 | LABELME/test/4/test_imgs_608.jpg 4 609 | LABELME/test/4/test_imgs_609.jpg 4 610 | LABELME/test/4/test_imgs_610.jpg 4 611 | LABELME/test/4/test_imgs_611.jpg 4 612 | LABELME/test/4/test_imgs_612.jpg 4 613 | LABELME/test/4/test_imgs_613.jpg 4 614 | LABELME/test/4/test_imgs_614.jpg 4 615 | LABELME/test/4/test_imgs_615.jpg 4 616 | LABELME/test/4/test_imgs_616.jpg 4 617 | LABELME/test/4/test_imgs_617.jpg 4 618 | LABELME/test/4/test_imgs_618.jpg 4 619 | LABELME/test/4/test_imgs_619.jpg 4 620 | LABELME/test/4/test_imgs_620.jpg 4 621 | LABELME/test/4/test_imgs_621.jpg 4 622 | LABELME/test/4/test_imgs_622.jpg 4 623 | LABELME/test/4/test_imgs_623.jpg 4 624 | LABELME/test/4/test_imgs_624.jpg 4 625 | LABELME/test/4/test_imgs_625.jpg 4 626 | LABELME/test/4/test_imgs_626.jpg 4 627 | LABELME/test/4/test_imgs_627.jpg 4 628 | LABELME/test/4/test_imgs_628.jpg 4 629 | LABELME/test/4/test_imgs_629.jpg 4 630 | LABELME/test/4/test_imgs_630.jpg 4 631 | LABELME/test/4/test_imgs_631.jpg 4 632 | LABELME/test/4/test_imgs_632.jpg 4 633 | LABELME/test/4/test_imgs_633.jpg 4 634 | LABELME/test/4/test_imgs_634.jpg 4 635 | LABELME/test/4/test_imgs_635.jpg 4 636 | LABELME/test/4/test_imgs_636.jpg 4 637 | LABELME/test/4/test_imgs_637.jpg 4 638 | LABELME/test/4/test_imgs_638.jpg 4 639 | LABELME/test/4/test_imgs_639.jpg 4 640 | LABELME/test/4/test_imgs_640.jpg 4 641 | LABELME/test/4/test_imgs_641.jpg 4 642 | LABELME/test/4/test_imgs_642.jpg 4 643 | LABELME/test/4/test_imgs_643.jpg 4 644 | LABELME/test/4/test_imgs_644.jpg 4 645 | LABELME/test/4/test_imgs_645.jpg 4 646 | LABELME/test/4/test_imgs_646.jpg 4 647 | LABELME/test/4/test_imgs_647.jpg 4 648 | LABELME/test/4/test_imgs_648.jpg 4 649 | LABELME/test/4/test_imgs_649.jpg 4 650 | LABELME/test/4/test_imgs_650.jpg 4 651 | LABELME/test/4/test_imgs_651.jpg 4 652 | LABELME/test/4/test_imgs_652.jpg 4 653 | LABELME/test/4/test_imgs_653.jpg 4 654 | LABELME/test/4/test_imgs_654.jpg 4 655 | LABELME/test/4/test_imgs_655.jpg 4 656 | LABELME/test/4/test_imgs_656.jpg 4 657 | LABELME/test/4/test_imgs_657.jpg 4 658 | LABELME/test/4/test_imgs_658.jpg 4 659 | LABELME/test/4/test_imgs_659.jpg 4 660 | LABELME/test/4/test_imgs_660.jpg 4 661 | LABELME/test/4/test_imgs_661.jpg 4 662 | LABELME/test/4/test_imgs_662.jpg 4 663 | LABELME/test/4/test_imgs_663.jpg 4 664 | LABELME/test/4/test_imgs_664.jpg 4 665 | LABELME/test/4/test_imgs_665.jpg 4 666 | LABELME/test/4/test_imgs_666.jpg 4 667 | LABELME/test/4/test_imgs_667.jpg 4 668 | LABELME/test/4/test_imgs_668.jpg 4 669 | LABELME/test/4/test_imgs_669.jpg 4 670 | LABELME/test/4/test_imgs_670.jpg 4 671 | LABELME/test/4/test_imgs_671.jpg 4 672 | LABELME/test/4/test_imgs_672.jpg 4 673 | LABELME/test/4/test_imgs_673.jpg 4 674 | LABELME/test/4/test_imgs_674.jpg 4 675 | LABELME/test/4/test_imgs_675.jpg 4 676 | LABELME/test/4/test_imgs_676.jpg 4 677 | LABELME/test/4/test_imgs_677.jpg 4 678 | LABELME/test/4/test_imgs_678.jpg 4 679 | LABELME/test/4/test_imgs_679.jpg 4 680 | LABELME/test/4/test_imgs_680.jpg 4 681 | LABELME/test/4/test_imgs_681.jpg 4 682 | LABELME/test/4/test_imgs_682.jpg 4 683 | LABELME/test/4/test_imgs_683.jpg 4 684 | LABELME/test/4/test_imgs_684.jpg 4 685 | LABELME/test/4/test_imgs_685.jpg 4 686 | LABELME/test/4/test_imgs_686.jpg 4 687 | LABELME/test/4/test_imgs_687.jpg 4 688 | LABELME/test/4/test_imgs_688.jpg 4 689 | LABELME/test/4/test_imgs_689.jpg 4 690 | LABELME/test/4/test_imgs_690.jpg 4 691 | LABELME/test/4/test_imgs_691.jpg 4 692 | LABELME/test/4/test_imgs_692.jpg 4 693 | LABELME/test/4/test_imgs_693.jpg 4 694 | LABELME/test/4/test_imgs_694.jpg 4 695 | LABELME/test/4/test_imgs_695.jpg 4 696 | LABELME/test/4/test_imgs_696.jpg 4 697 | LABELME/test/4/test_imgs_697.jpg 4 698 | LABELME/test/4/test_imgs_698.jpg 4 699 | LABELME/test/4/test_imgs_699.jpg 4 700 | LABELME/test/4/test_imgs_700.jpg 4 701 | LABELME/test/4/test_imgs_701.jpg 4 702 | LABELME/test/4/test_imgs_702.jpg 4 703 | LABELME/test/4/test_imgs_703.jpg 4 704 | LABELME/test/4/test_imgs_704.jpg 4 705 | LABELME/test/4/test_imgs_705.jpg 4 706 | LABELME/test/4/test_imgs_706.jpg 4 707 | LABELME/test/4/test_imgs_707.jpg 4 708 | LABELME/test/4/test_imgs_708.jpg 4 709 | LABELME/test/4/test_imgs_709.jpg 4 710 | LABELME/test/4/test_imgs_710.jpg 4 711 | LABELME/test/4/test_imgs_711.jpg 4 712 | LABELME/test/4/test_imgs_712.jpg 4 713 | LABELME/test/4/test_imgs_713.jpg 4 714 | LABELME/test/4/test_imgs_714.jpg 4 715 | LABELME/test/4/test_imgs_715.jpg 4 716 | LABELME/test/4/test_imgs_716.jpg 4 717 | LABELME/test/4/test_imgs_717.jpg 4 718 | LABELME/test/4/test_imgs_718.jpg 4 719 | LABELME/test/4/test_imgs_719.jpg 4 720 | LABELME/test/4/test_imgs_720.jpg 4 721 | LABELME/test/4/test_imgs_721.jpg 4 722 | LABELME/test/4/test_imgs_722.jpg 4 723 | LABELME/test/4/test_imgs_723.jpg 4 724 | LABELME/test/4/test_imgs_724.jpg 4 725 | LABELME/test/4/test_imgs_725.jpg 4 726 | LABELME/test/4/test_imgs_726.jpg 4 727 | LABELME/test/4/test_imgs_727.jpg 4 728 | LABELME/test/4/test_imgs_728.jpg 4 729 | LABELME/test/4/test_imgs_729.jpg 4 730 | LABELME/test/4/test_imgs_730.jpg 4 731 | LABELME/test/4/test_imgs_731.jpg 4 732 | LABELME/test/4/test_imgs_732.jpg 4 733 | LABELME/test/4/test_imgs_733.jpg 4 734 | LABELME/test/4/test_imgs_734.jpg 4 735 | LABELME/test/4/test_imgs_735.jpg 4 736 | LABELME/test/4/test_imgs_736.jpg 4 737 | LABELME/test/4/test_imgs_737.jpg 4 738 | LABELME/test/4/test_imgs_738.jpg 4 739 | LABELME/test/4/test_imgs_739.jpg 4 740 | LABELME/test/4/test_imgs_740.jpg 4 741 | LABELME/test/4/test_imgs_741.jpg 4 742 | LABELME/test/4/test_imgs_742.jpg 4 743 | LABELME/test/4/test_imgs_743.jpg 4 744 | LABELME/test/4/test_imgs_744.jpg 4 745 | LABELME/test/4/test_imgs_745.jpg 4 746 | LABELME/test/4/test_imgs_746.jpg 4 747 | LABELME/test/4/test_imgs_747.jpg 4 748 | LABELME/test/4/test_imgs_748.jpg 4 749 | LABELME/test/4/test_imgs_749.jpg 4 750 | LABELME/test/4/test_imgs_750.jpg 4 751 | LABELME/test/4/test_imgs_751.jpg 4 752 | LABELME/test/4/test_imgs_752.jpg 4 753 | LABELME/test/4/test_imgs_753.jpg 4 754 | LABELME/test/4/test_imgs_754.jpg 4 755 | LABELME/test/4/test_imgs_755.jpg 4 756 | LABELME/test/4/test_imgs_756.jpg 4 757 | LABELME/test/4/test_imgs_757.jpg 4 758 | LABELME/test/4/test_imgs_758.jpg 4 759 | LABELME/test/4/test_imgs_759.jpg 4 760 | LABELME/test/4/test_imgs_760.jpg 4 761 | LABELME/test/4/test_imgs_761.jpg 4 762 | LABELME/test/4/test_imgs_762.jpg 4 763 | LABELME/test/4/test_imgs_763.jpg 4 764 | LABELME/test/4/test_imgs_764.jpg 4 765 | LABELME/test/4/test_imgs_765.jpg 4 766 | LABELME/test/4/test_imgs_766.jpg 4 767 | LABELME/test/4/test_imgs_767.jpg 4 768 | LABELME/test/4/test_imgs_768.jpg 4 769 | LABELME/test/4/test_imgs_769.jpg 4 770 | LABELME/test/4/test_imgs_770.jpg 4 771 | LABELME/test/4/test_imgs_771.jpg 4 772 | LABELME/test/4/test_imgs_772.jpg 4 773 | LABELME/test/4/test_imgs_773.jpg 4 774 | LABELME/test/4/test_imgs_774.jpg 4 775 | LABELME/test/4/test_imgs_775.jpg 4 776 | LABELME/test/4/test_imgs_776.jpg 4 777 | LABELME/test/4/test_imgs_777.jpg 4 778 | LABELME/test/4/test_imgs_778.jpg 4 779 | LABELME/test/4/test_imgs_779.jpg 4 780 | LABELME/test/4/test_imgs_780.jpg 4 781 | LABELME/test/4/test_imgs_781.jpg 4 782 | LABELME/test/4/test_imgs_782.jpg 4 783 | LABELME/test/4/test_imgs_783.jpg 4 784 | LABELME/test/4/test_imgs_784.jpg 4 785 | LABELME/test/4/test_imgs_785.jpg 4 786 | LABELME/test/4/test_imgs_786.jpg 4 787 | LABELME/test/4/test_imgs_787.jpg 4 788 | LABELME/test/4/test_imgs_788.jpg 4 789 | LABELME/test/4/test_imgs_789.jpg 4 790 | LABELME/test/4/test_imgs_790.jpg 4 791 | LABELME/test/4/test_imgs_791.jpg 4 792 | LABELME/test/4/test_imgs_792.jpg 4 793 | LABELME/test/4/test_imgs_793.jpg 4 794 | LABELME/test/4/test_imgs_794.jpg 4 795 | LABELME/test/4/test_imgs_795.jpg 4 796 | LABELME/test/4/test_imgs_796.jpg 4 797 | LABELME/test/4/test_imgs_797.jpg 4 798 | -------------------------------------------------------------------------------- /data/correct_txt_lists/SUN_test.txt: -------------------------------------------------------------------------------- 1 | SUN/test/0/test_imgs_1.jpg 0 2 | SUN/test/0/test_imgs_2.jpg 0 3 | SUN/test/0/test_imgs_3.jpg 0 4 | SUN/test/0/test_imgs_4.jpg 0 5 | SUN/test/0/test_imgs_5.jpg 0 6 | SUN/test/0/test_imgs_6.jpg 0 7 | SUN/test/1/test_imgs_10.jpg 1 8 | SUN/test/1/test_imgs_100.jpg 1 9 | SUN/test/1/test_imgs_101.jpg 1 10 | SUN/test/1/test_imgs_102.jpg 1 11 | SUN/test/1/test_imgs_103.jpg 1 12 | SUN/test/1/test_imgs_104.jpg 1 13 | SUN/test/1/test_imgs_105.jpg 1 14 | SUN/test/1/test_imgs_106.jpg 1 15 | SUN/test/1/test_imgs_107.jpg 1 16 | SUN/test/1/test_imgs_108.jpg 1 17 | SUN/test/1/test_imgs_109.jpg 1 18 | SUN/test/1/test_imgs_11.jpg 1 19 | SUN/test/1/test_imgs_110.jpg 1 20 | SUN/test/1/test_imgs_111.jpg 1 21 | SUN/test/1/test_imgs_112.jpg 1 22 | SUN/test/1/test_imgs_113.jpg 1 23 | SUN/test/1/test_imgs_114.jpg 1 24 | SUN/test/1/test_imgs_115.jpg 1 25 | SUN/test/1/test_imgs_116.jpg 1 26 | SUN/test/1/test_imgs_117.jpg 1 27 | SUN/test/1/test_imgs_118.jpg 1 28 | SUN/test/1/test_imgs_119.jpg 1 29 | SUN/test/1/test_imgs_12.jpg 1 30 | SUN/test/1/test_imgs_120.jpg 1 31 | SUN/test/1/test_imgs_121.jpg 1 32 | SUN/test/1/test_imgs_122.jpg 1 33 | SUN/test/1/test_imgs_123.jpg 1 34 | SUN/test/1/test_imgs_124.jpg 1 35 | SUN/test/1/test_imgs_125.jpg 1 36 | SUN/test/1/test_imgs_126.jpg 1 37 | SUN/test/1/test_imgs_127.jpg 1 38 | SUN/test/1/test_imgs_128.jpg 1 39 | SUN/test/1/test_imgs_129.jpg 1 40 | SUN/test/1/test_imgs_13.jpg 1 41 | SUN/test/1/test_imgs_130.jpg 1 42 | SUN/test/1/test_imgs_131.jpg 1 43 | SUN/test/1/test_imgs_132.jpg 1 44 | SUN/test/1/test_imgs_133.jpg 1 45 | SUN/test/1/test_imgs_134.jpg 1 46 | SUN/test/1/test_imgs_135.jpg 1 47 | SUN/test/1/test_imgs_136.jpg 1 48 | SUN/test/1/test_imgs_137.jpg 1 49 | SUN/test/1/test_imgs_138.jpg 1 50 | SUN/test/1/test_imgs_139.jpg 1 51 | SUN/test/1/test_imgs_14.jpg 1 52 | SUN/test/1/test_imgs_140.jpg 1 53 | SUN/test/1/test_imgs_141.jpg 1 54 | SUN/test/1/test_imgs_142.jpg 1 55 | SUN/test/1/test_imgs_143.jpg 1 56 | SUN/test/1/test_imgs_144.jpg 1 57 | SUN/test/1/test_imgs_145.jpg 1 58 | SUN/test/1/test_imgs_146.jpg 1 59 | SUN/test/1/test_imgs_147.jpg 1 60 | SUN/test/1/test_imgs_148.jpg 1 61 | SUN/test/1/test_imgs_149.jpg 1 62 | SUN/test/1/test_imgs_15.jpg 1 63 | SUN/test/1/test_imgs_150.jpg 1 64 | SUN/test/1/test_imgs_151.jpg 1 65 | SUN/test/1/test_imgs_152.jpg 1 66 | SUN/test/1/test_imgs_153.jpg 1 67 | SUN/test/1/test_imgs_154.jpg 1 68 | SUN/test/1/test_imgs_155.jpg 1 69 | SUN/test/1/test_imgs_156.jpg 1 70 | SUN/test/1/test_imgs_157.jpg 1 71 | SUN/test/1/test_imgs_158.jpg 1 72 | SUN/test/1/test_imgs_159.jpg 1 73 | SUN/test/1/test_imgs_16.jpg 1 74 | SUN/test/1/test_imgs_160.jpg 1 75 | SUN/test/1/test_imgs_161.jpg 1 76 | SUN/test/1/test_imgs_162.jpg 1 77 | SUN/test/1/test_imgs_163.jpg 1 78 | SUN/test/1/test_imgs_164.jpg 1 79 | SUN/test/1/test_imgs_165.jpg 1 80 | SUN/test/1/test_imgs_166.jpg 1 81 | SUN/test/1/test_imgs_167.jpg 1 82 | SUN/test/1/test_imgs_168.jpg 1 83 | SUN/test/1/test_imgs_169.jpg 1 84 | SUN/test/1/test_imgs_17.jpg 1 85 | SUN/test/1/test_imgs_170.jpg 1 86 | SUN/test/1/test_imgs_171.jpg 1 87 | SUN/test/1/test_imgs_172.jpg 1 88 | SUN/test/1/test_imgs_173.jpg 1 89 | SUN/test/1/test_imgs_174.jpg 1 90 | SUN/test/1/test_imgs_175.jpg 1 91 | SUN/test/1/test_imgs_176.jpg 1 92 | SUN/test/1/test_imgs_177.jpg 1 93 | SUN/test/1/test_imgs_178.jpg 1 94 | SUN/test/1/test_imgs_179.jpg 1 95 | SUN/test/1/test_imgs_18.jpg 1 96 | SUN/test/1/test_imgs_180.jpg 1 97 | SUN/test/1/test_imgs_181.jpg 1 98 | SUN/test/1/test_imgs_182.jpg 1 99 | SUN/test/1/test_imgs_183.jpg 1 100 | SUN/test/1/test_imgs_184.jpg 1 101 | SUN/test/1/test_imgs_185.jpg 1 102 | SUN/test/1/test_imgs_186.jpg 1 103 | SUN/test/1/test_imgs_187.jpg 1 104 | SUN/test/1/test_imgs_188.jpg 1 105 | SUN/test/1/test_imgs_189.jpg 1 106 | SUN/test/1/test_imgs_19.jpg 1 107 | SUN/test/1/test_imgs_190.jpg 1 108 | SUN/test/1/test_imgs_191.jpg 1 109 | SUN/test/1/test_imgs_192.jpg 1 110 | SUN/test/1/test_imgs_193.jpg 1 111 | SUN/test/1/test_imgs_194.jpg 1 112 | SUN/test/1/test_imgs_195.jpg 1 113 | SUN/test/1/test_imgs_196.jpg 1 114 | SUN/test/1/test_imgs_197.jpg 1 115 | SUN/test/1/test_imgs_198.jpg 1 116 | SUN/test/1/test_imgs_199.jpg 1 117 | SUN/test/1/test_imgs_20.jpg 1 118 | SUN/test/1/test_imgs_200.jpg 1 119 | SUN/test/1/test_imgs_201.jpg 1 120 | SUN/test/1/test_imgs_202.jpg 1 121 | SUN/test/1/test_imgs_203.jpg 1 122 | SUN/test/1/test_imgs_204.jpg 1 123 | SUN/test/1/test_imgs_205.jpg 1 124 | SUN/test/1/test_imgs_206.jpg 1 125 | SUN/test/1/test_imgs_207.jpg 1 126 | SUN/test/1/test_imgs_208.jpg 1 127 | SUN/test/1/test_imgs_209.jpg 1 128 | SUN/test/1/test_imgs_21.jpg 1 129 | SUN/test/1/test_imgs_210.jpg 1 130 | SUN/test/1/test_imgs_211.jpg 1 131 | SUN/test/1/test_imgs_212.jpg 1 132 | SUN/test/1/test_imgs_213.jpg 1 133 | SUN/test/1/test_imgs_214.jpg 1 134 | SUN/test/1/test_imgs_215.jpg 1 135 | SUN/test/1/test_imgs_216.jpg 1 136 | SUN/test/1/test_imgs_217.jpg 1 137 | SUN/test/1/test_imgs_218.jpg 1 138 | SUN/test/1/test_imgs_219.jpg 1 139 | SUN/test/1/test_imgs_22.jpg 1 140 | SUN/test/1/test_imgs_220.jpg 1 141 | SUN/test/1/test_imgs_221.jpg 1 142 | SUN/test/1/test_imgs_222.jpg 1 143 | SUN/test/1/test_imgs_223.jpg 1 144 | SUN/test/1/test_imgs_224.jpg 1 145 | SUN/test/1/test_imgs_225.jpg 1 146 | SUN/test/1/test_imgs_226.jpg 1 147 | SUN/test/1/test_imgs_227.jpg 1 148 | SUN/test/1/test_imgs_228.jpg 1 149 | SUN/test/1/test_imgs_229.jpg 1 150 | SUN/test/1/test_imgs_23.jpg 1 151 | SUN/test/1/test_imgs_230.jpg 1 152 | SUN/test/1/test_imgs_231.jpg 1 153 | SUN/test/1/test_imgs_232.jpg 1 154 | SUN/test/1/test_imgs_233.jpg 1 155 | SUN/test/1/test_imgs_234.jpg 1 156 | SUN/test/1/test_imgs_235.jpg 1 157 | SUN/test/1/test_imgs_236.jpg 1 158 | SUN/test/1/test_imgs_237.jpg 1 159 | SUN/test/1/test_imgs_238.jpg 1 160 | SUN/test/1/test_imgs_239.jpg 1 161 | SUN/test/1/test_imgs_24.jpg 1 162 | SUN/test/1/test_imgs_240.jpg 1 163 | SUN/test/1/test_imgs_241.jpg 1 164 | SUN/test/1/test_imgs_242.jpg 1 165 | SUN/test/1/test_imgs_243.jpg 1 166 | SUN/test/1/test_imgs_244.jpg 1 167 | SUN/test/1/test_imgs_245.jpg 1 168 | SUN/test/1/test_imgs_246.jpg 1 169 | SUN/test/1/test_imgs_247.jpg 1 170 | SUN/test/1/test_imgs_248.jpg 1 171 | SUN/test/1/test_imgs_249.jpg 1 172 | SUN/test/1/test_imgs_25.jpg 1 173 | SUN/test/1/test_imgs_250.jpg 1 174 | SUN/test/1/test_imgs_251.jpg 1 175 | SUN/test/1/test_imgs_252.jpg 1 176 | SUN/test/1/test_imgs_253.jpg 1 177 | SUN/test/1/test_imgs_254.jpg 1 178 | SUN/test/1/test_imgs_255.jpg 1 179 | SUN/test/1/test_imgs_256.jpg 1 180 | SUN/test/1/test_imgs_257.jpg 1 181 | SUN/test/1/test_imgs_258.jpg 1 182 | SUN/test/1/test_imgs_259.jpg 1 183 | SUN/test/1/test_imgs_26.jpg 1 184 | SUN/test/1/test_imgs_260.jpg 1 185 | SUN/test/1/test_imgs_261.jpg 1 186 | SUN/test/1/test_imgs_262.jpg 1 187 | SUN/test/1/test_imgs_263.jpg 1 188 | SUN/test/1/test_imgs_264.jpg 1 189 | SUN/test/1/test_imgs_265.jpg 1 190 | SUN/test/1/test_imgs_266.jpg 1 191 | SUN/test/1/test_imgs_267.jpg 1 192 | SUN/test/1/test_imgs_268.jpg 1 193 | SUN/test/1/test_imgs_269.jpg 1 194 | SUN/test/1/test_imgs_27.jpg 1 195 | SUN/test/1/test_imgs_270.jpg 1 196 | SUN/test/1/test_imgs_271.jpg 1 197 | SUN/test/1/test_imgs_272.jpg 1 198 | SUN/test/1/test_imgs_273.jpg 1 199 | SUN/test/1/test_imgs_274.jpg 1 200 | SUN/test/1/test_imgs_275.jpg 1 201 | SUN/test/1/test_imgs_276.jpg 1 202 | SUN/test/1/test_imgs_277.jpg 1 203 | SUN/test/1/test_imgs_278.jpg 1 204 | SUN/test/1/test_imgs_279.jpg 1 205 | SUN/test/1/test_imgs_28.jpg 1 206 | SUN/test/1/test_imgs_280.jpg 1 207 | SUN/test/1/test_imgs_281.jpg 1 208 | SUN/test/1/test_imgs_282.jpg 1 209 | SUN/test/1/test_imgs_283.jpg 1 210 | SUN/test/1/test_imgs_284.jpg 1 211 | SUN/test/1/test_imgs_285.jpg 1 212 | SUN/test/1/test_imgs_286.jpg 1 213 | SUN/test/1/test_imgs_29.jpg 1 214 | SUN/test/1/test_imgs_30.jpg 1 215 | SUN/test/1/test_imgs_31.jpg 1 216 | SUN/test/1/test_imgs_32.jpg 1 217 | SUN/test/1/test_imgs_33.jpg 1 218 | SUN/test/1/test_imgs_34.jpg 1 219 | SUN/test/1/test_imgs_35.jpg 1 220 | SUN/test/1/test_imgs_36.jpg 1 221 | SUN/test/1/test_imgs_37.jpg 1 222 | SUN/test/1/test_imgs_38.jpg 1 223 | SUN/test/1/test_imgs_39.jpg 1 224 | SUN/test/1/test_imgs_40.jpg 1 225 | SUN/test/1/test_imgs_41.jpg 1 226 | SUN/test/1/test_imgs_42.jpg 1 227 | SUN/test/1/test_imgs_43.jpg 1 228 | SUN/test/1/test_imgs_44.jpg 1 229 | SUN/test/1/test_imgs_45.jpg 1 230 | SUN/test/1/test_imgs_46.jpg 1 231 | SUN/test/1/test_imgs_47.jpg 1 232 | SUN/test/1/test_imgs_48.jpg 1 233 | SUN/test/1/test_imgs_49.jpg 1 234 | SUN/test/1/test_imgs_50.jpg 1 235 | SUN/test/1/test_imgs_51.jpg 1 236 | SUN/test/1/test_imgs_52.jpg 1 237 | SUN/test/1/test_imgs_53.jpg 1 238 | SUN/test/1/test_imgs_54.jpg 1 239 | SUN/test/1/test_imgs_55.jpg 1 240 | SUN/test/1/test_imgs_56.jpg 1 241 | SUN/test/1/test_imgs_57.jpg 1 242 | SUN/test/1/test_imgs_58.jpg 1 243 | SUN/test/1/test_imgs_59.jpg 1 244 | SUN/test/1/test_imgs_60.jpg 1 245 | SUN/test/1/test_imgs_61.jpg 1 246 | SUN/test/1/test_imgs_62.jpg 1 247 | SUN/test/1/test_imgs_63.jpg 1 248 | SUN/test/1/test_imgs_64.jpg 1 249 | SUN/test/1/test_imgs_65.jpg 1 250 | SUN/test/1/test_imgs_66.jpg 1 251 | SUN/test/1/test_imgs_67.jpg 1 252 | SUN/test/1/test_imgs_68.jpg 1 253 | SUN/test/1/test_imgs_69.jpg 1 254 | SUN/test/1/test_imgs_7.jpg 1 255 | SUN/test/1/test_imgs_70.jpg 1 256 | SUN/test/1/test_imgs_71.jpg 1 257 | SUN/test/1/test_imgs_72.jpg 1 258 | SUN/test/1/test_imgs_73.jpg 1 259 | SUN/test/1/test_imgs_74.jpg 1 260 | SUN/test/1/test_imgs_75.jpg 1 261 | SUN/test/1/test_imgs_76.jpg 1 262 | SUN/test/1/test_imgs_77.jpg 1 263 | SUN/test/1/test_imgs_78.jpg 1 264 | SUN/test/1/test_imgs_79.jpg 1 265 | SUN/test/1/test_imgs_8.jpg 1 266 | SUN/test/1/test_imgs_80.jpg 1 267 | SUN/test/1/test_imgs_81.jpg 1 268 | SUN/test/1/test_imgs_82.jpg 1 269 | SUN/test/1/test_imgs_83.jpg 1 270 | SUN/test/1/test_imgs_84.jpg 1 271 | SUN/test/1/test_imgs_85.jpg 1 272 | SUN/test/1/test_imgs_86.jpg 1 273 | SUN/test/1/test_imgs_87.jpg 1 274 | SUN/test/1/test_imgs_88.jpg 1 275 | SUN/test/1/test_imgs_89.jpg 1 276 | SUN/test/1/test_imgs_9.jpg 1 277 | SUN/test/1/test_imgs_90.jpg 1 278 | SUN/test/1/test_imgs_91.jpg 1 279 | SUN/test/1/test_imgs_92.jpg 1 280 | SUN/test/1/test_imgs_93.jpg 1 281 | SUN/test/1/test_imgs_94.jpg 1 282 | SUN/test/1/test_imgs_95.jpg 1 283 | SUN/test/1/test_imgs_96.jpg 1 284 | SUN/test/1/test_imgs_97.jpg 1 285 | SUN/test/1/test_imgs_98.jpg 1 286 | SUN/test/1/test_imgs_99.jpg 1 287 | SUN/test/2/test_imgs_287.jpg 2 288 | SUN/test/2/test_imgs_288.jpg 2 289 | SUN/test/2/test_imgs_289.jpg 2 290 | SUN/test/2/test_imgs_290.jpg 2 291 | SUN/test/2/test_imgs_291.jpg 2 292 | SUN/test/2/test_imgs_292.jpg 2 293 | SUN/test/2/test_imgs_293.jpg 2 294 | SUN/test/2/test_imgs_294.jpg 2 295 | SUN/test/2/test_imgs_295.jpg 2 296 | SUN/test/2/test_imgs_296.jpg 2 297 | SUN/test/2/test_imgs_297.jpg 2 298 | SUN/test/2/test_imgs_298.jpg 2 299 | SUN/test/2/test_imgs_299.jpg 2 300 | SUN/test/2/test_imgs_300.jpg 2 301 | SUN/test/2/test_imgs_301.jpg 2 302 | SUN/test/2/test_imgs_302.jpg 2 303 | SUN/test/2/test_imgs_303.jpg 2 304 | SUN/test/2/test_imgs_304.jpg 2 305 | SUN/test/2/test_imgs_305.jpg 2 306 | SUN/test/2/test_imgs_306.jpg 2 307 | SUN/test/2/test_imgs_307.jpg 2 308 | SUN/test/2/test_imgs_308.jpg 2 309 | SUN/test/2/test_imgs_309.jpg 2 310 | SUN/test/2/test_imgs_310.jpg 2 311 | SUN/test/2/test_imgs_311.jpg 2 312 | SUN/test/2/test_imgs_312.jpg 2 313 | SUN/test/2/test_imgs_313.jpg 2 314 | SUN/test/2/test_imgs_314.jpg 2 315 | SUN/test/2/test_imgs_315.jpg 2 316 | SUN/test/2/test_imgs_316.jpg 2 317 | SUN/test/2/test_imgs_317.jpg 2 318 | SUN/test/2/test_imgs_318.jpg 2 319 | SUN/test/2/test_imgs_319.jpg 2 320 | SUN/test/2/test_imgs_320.jpg 2 321 | SUN/test/2/test_imgs_321.jpg 2 322 | SUN/test/2/test_imgs_322.jpg 2 323 | SUN/test/2/test_imgs_323.jpg 2 324 | SUN/test/2/test_imgs_324.jpg 2 325 | SUN/test/2/test_imgs_325.jpg 2 326 | SUN/test/2/test_imgs_326.jpg 2 327 | SUN/test/2/test_imgs_327.jpg 2 328 | SUN/test/2/test_imgs_328.jpg 2 329 | SUN/test/2/test_imgs_329.jpg 2 330 | SUN/test/2/test_imgs_330.jpg 2 331 | SUN/test/2/test_imgs_331.jpg 2 332 | SUN/test/2/test_imgs_332.jpg 2 333 | SUN/test/2/test_imgs_333.jpg 2 334 | SUN/test/2/test_imgs_334.jpg 2 335 | SUN/test/2/test_imgs_335.jpg 2 336 | SUN/test/2/test_imgs_336.jpg 2 337 | SUN/test/2/test_imgs_337.jpg 2 338 | SUN/test/2/test_imgs_338.jpg 2 339 | SUN/test/2/test_imgs_339.jpg 2 340 | SUN/test/2/test_imgs_340.jpg 2 341 | SUN/test/2/test_imgs_341.jpg 2 342 | SUN/test/2/test_imgs_342.jpg 2 343 | SUN/test/2/test_imgs_343.jpg 2 344 | SUN/test/2/test_imgs_344.jpg 2 345 | SUN/test/2/test_imgs_345.jpg 2 346 | SUN/test/2/test_imgs_346.jpg 2 347 | SUN/test/2/test_imgs_347.jpg 2 348 | SUN/test/2/test_imgs_348.jpg 2 349 | SUN/test/2/test_imgs_349.jpg 2 350 | SUN/test/2/test_imgs_350.jpg 2 351 | SUN/test/2/test_imgs_351.jpg 2 352 | SUN/test/2/test_imgs_352.jpg 2 353 | SUN/test/2/test_imgs_353.jpg 2 354 | SUN/test/2/test_imgs_354.jpg 2 355 | SUN/test/2/test_imgs_355.jpg 2 356 | SUN/test/2/test_imgs_356.jpg 2 357 | SUN/test/2/test_imgs_357.jpg 2 358 | SUN/test/2/test_imgs_358.jpg 2 359 | SUN/test/2/test_imgs_359.jpg 2 360 | SUN/test/2/test_imgs_360.jpg 2 361 | SUN/test/2/test_imgs_361.jpg 2 362 | SUN/test/2/test_imgs_362.jpg 2 363 | SUN/test/2/test_imgs_363.jpg 2 364 | SUN/test/2/test_imgs_364.jpg 2 365 | SUN/test/2/test_imgs_365.jpg 2 366 | SUN/test/2/test_imgs_366.jpg 2 367 | SUN/test/2/test_imgs_367.jpg 2 368 | SUN/test/2/test_imgs_368.jpg 2 369 | SUN/test/2/test_imgs_369.jpg 2 370 | SUN/test/2/test_imgs_370.jpg 2 371 | SUN/test/2/test_imgs_371.jpg 2 372 | SUN/test/2/test_imgs_372.jpg 2 373 | SUN/test/2/test_imgs_373.jpg 2 374 | SUN/test/2/test_imgs_374.jpg 2 375 | SUN/test/2/test_imgs_375.jpg 2 376 | SUN/test/2/test_imgs_376.jpg 2 377 | SUN/test/2/test_imgs_377.jpg 2 378 | SUN/test/2/test_imgs_378.jpg 2 379 | SUN/test/2/test_imgs_379.jpg 2 380 | SUN/test/2/test_imgs_380.jpg 2 381 | SUN/test/2/test_imgs_381.jpg 2 382 | SUN/test/2/test_imgs_382.jpg 2 383 | SUN/test/2/test_imgs_383.jpg 2 384 | SUN/test/2/test_imgs_384.jpg 2 385 | SUN/test/2/test_imgs_385.jpg 2 386 | SUN/test/2/test_imgs_386.jpg 2 387 | SUN/test/2/test_imgs_387.jpg 2 388 | SUN/test/2/test_imgs_388.jpg 2 389 | SUN/test/2/test_imgs_389.jpg 2 390 | SUN/test/2/test_imgs_390.jpg 2 391 | SUN/test/2/test_imgs_391.jpg 2 392 | SUN/test/2/test_imgs_392.jpg 2 393 | SUN/test/2/test_imgs_393.jpg 2 394 | SUN/test/2/test_imgs_394.jpg 2 395 | SUN/test/2/test_imgs_395.jpg 2 396 | SUN/test/2/test_imgs_396.jpg 2 397 | SUN/test/2/test_imgs_397.jpg 2 398 | SUN/test/2/test_imgs_398.jpg 2 399 | SUN/test/2/test_imgs_399.jpg 2 400 | SUN/test/2/test_imgs_400.jpg 2 401 | SUN/test/2/test_imgs_401.jpg 2 402 | SUN/test/2/test_imgs_402.jpg 2 403 | SUN/test/2/test_imgs_403.jpg 2 404 | SUN/test/2/test_imgs_404.jpg 2 405 | SUN/test/2/test_imgs_405.jpg 2 406 | SUN/test/2/test_imgs_406.jpg 2 407 | SUN/test/2/test_imgs_407.jpg 2 408 | SUN/test/2/test_imgs_408.jpg 2 409 | SUN/test/2/test_imgs_409.jpg 2 410 | SUN/test/2/test_imgs_410.jpg 2 411 | SUN/test/2/test_imgs_411.jpg 2 412 | SUN/test/2/test_imgs_412.jpg 2 413 | SUN/test/2/test_imgs_413.jpg 2 414 | SUN/test/2/test_imgs_414.jpg 2 415 | SUN/test/2/test_imgs_415.jpg 2 416 | SUN/test/2/test_imgs_416.jpg 2 417 | SUN/test/2/test_imgs_417.jpg 2 418 | SUN/test/2/test_imgs_418.jpg 2 419 | SUN/test/2/test_imgs_419.jpg 2 420 | SUN/test/2/test_imgs_420.jpg 2 421 | SUN/test/2/test_imgs_421.jpg 2 422 | SUN/test/2/test_imgs_422.jpg 2 423 | SUN/test/2/test_imgs_423.jpg 2 424 | SUN/test/2/test_imgs_424.jpg 2 425 | SUN/test/2/test_imgs_425.jpg 2 426 | SUN/test/2/test_imgs_426.jpg 2 427 | SUN/test/2/test_imgs_427.jpg 2 428 | SUN/test/2/test_imgs_428.jpg 2 429 | SUN/test/2/test_imgs_429.jpg 2 430 | SUN/test/2/test_imgs_430.jpg 2 431 | SUN/test/2/test_imgs_431.jpg 2 432 | SUN/test/2/test_imgs_432.jpg 2 433 | SUN/test/2/test_imgs_433.jpg 2 434 | SUN/test/2/test_imgs_434.jpg 2 435 | SUN/test/2/test_imgs_435.jpg 2 436 | SUN/test/2/test_imgs_436.jpg 2 437 | SUN/test/2/test_imgs_437.jpg 2 438 | SUN/test/2/test_imgs_438.jpg 2 439 | SUN/test/2/test_imgs_439.jpg 2 440 | SUN/test/2/test_imgs_440.jpg 2 441 | SUN/test/2/test_imgs_441.jpg 2 442 | SUN/test/2/test_imgs_442.jpg 2 443 | SUN/test/2/test_imgs_443.jpg 2 444 | SUN/test/2/test_imgs_444.jpg 2 445 | SUN/test/2/test_imgs_445.jpg 2 446 | SUN/test/2/test_imgs_446.jpg 2 447 | SUN/test/2/test_imgs_447.jpg 2 448 | SUN/test/2/test_imgs_448.jpg 2 449 | SUN/test/2/test_imgs_449.jpg 2 450 | SUN/test/2/test_imgs_450.jpg 2 451 | SUN/test/2/test_imgs_451.jpg 2 452 | SUN/test/2/test_imgs_452.jpg 2 453 | SUN/test/2/test_imgs_453.jpg 2 454 | SUN/test/2/test_imgs_454.jpg 2 455 | SUN/test/2/test_imgs_455.jpg 2 456 | SUN/test/2/test_imgs_456.jpg 2 457 | SUN/test/2/test_imgs_457.jpg 2 458 | SUN/test/2/test_imgs_458.jpg 2 459 | SUN/test/2/test_imgs_459.jpg 2 460 | SUN/test/2/test_imgs_460.jpg 2 461 | SUN/test/2/test_imgs_461.jpg 2 462 | SUN/test/2/test_imgs_462.jpg 2 463 | SUN/test/2/test_imgs_463.jpg 2 464 | SUN/test/2/test_imgs_464.jpg 2 465 | SUN/test/2/test_imgs_465.jpg 2 466 | SUN/test/2/test_imgs_466.jpg 2 467 | SUN/test/2/test_imgs_467.jpg 2 468 | SUN/test/2/test_imgs_468.jpg 2 469 | SUN/test/2/test_imgs_469.jpg 2 470 | SUN/test/2/test_imgs_470.jpg 2 471 | SUN/test/2/test_imgs_471.jpg 2 472 | SUN/test/2/test_imgs_472.jpg 2 473 | SUN/test/2/test_imgs_473.jpg 2 474 | SUN/test/2/test_imgs_474.jpg 2 475 | SUN/test/2/test_imgs_475.jpg 2 476 | SUN/test/2/test_imgs_476.jpg 2 477 | SUN/test/2/test_imgs_477.jpg 2 478 | SUN/test/2/test_imgs_478.jpg 2 479 | SUN/test/2/test_imgs_479.jpg 2 480 | SUN/test/2/test_imgs_480.jpg 2 481 | SUN/test/2/test_imgs_481.jpg 2 482 | SUN/test/2/test_imgs_482.jpg 2 483 | SUN/test/2/test_imgs_483.jpg 2 484 | SUN/test/2/test_imgs_484.jpg 2 485 | SUN/test/2/test_imgs_485.jpg 2 486 | SUN/test/2/test_imgs_486.jpg 2 487 | SUN/test/2/test_imgs_487.jpg 2 488 | SUN/test/2/test_imgs_488.jpg 2 489 | SUN/test/2/test_imgs_489.jpg 2 490 | SUN/test/2/test_imgs_490.jpg 2 491 | SUN/test/2/test_imgs_491.jpg 2 492 | SUN/test/2/test_imgs_492.jpg 2 493 | SUN/test/2/test_imgs_493.jpg 2 494 | SUN/test/2/test_imgs_494.jpg 2 495 | SUN/test/2/test_imgs_495.jpg 2 496 | SUN/test/2/test_imgs_496.jpg 2 497 | SUN/test/2/test_imgs_497.jpg 2 498 | SUN/test/2/test_imgs_498.jpg 2 499 | SUN/test/2/test_imgs_499.jpg 2 500 | SUN/test/2/test_imgs_500.jpg 2 501 | SUN/test/2/test_imgs_501.jpg 2 502 | SUN/test/2/test_imgs_502.jpg 2 503 | SUN/test/2/test_imgs_503.jpg 2 504 | SUN/test/2/test_imgs_504.jpg 2 505 | SUN/test/2/test_imgs_505.jpg 2 506 | SUN/test/2/test_imgs_506.jpg 2 507 | SUN/test/2/test_imgs_507.jpg 2 508 | SUN/test/2/test_imgs_508.jpg 2 509 | SUN/test/2/test_imgs_509.jpg 2 510 | SUN/test/2/test_imgs_510.jpg 2 511 | SUN/test/2/test_imgs_511.jpg 2 512 | SUN/test/2/test_imgs_512.jpg 2 513 | SUN/test/2/test_imgs_513.jpg 2 514 | SUN/test/2/test_imgs_514.jpg 2 515 | SUN/test/2/test_imgs_515.jpg 2 516 | SUN/test/2/test_imgs_516.jpg 2 517 | SUN/test/2/test_imgs_517.jpg 2 518 | SUN/test/2/test_imgs_518.jpg 2 519 | SUN/test/2/test_imgs_519.jpg 2 520 | SUN/test/2/test_imgs_520.jpg 2 521 | SUN/test/2/test_imgs_521.jpg 2 522 | SUN/test/2/test_imgs_522.jpg 2 523 | SUN/test/2/test_imgs_523.jpg 2 524 | SUN/test/2/test_imgs_524.jpg 2 525 | SUN/test/2/test_imgs_525.jpg 2 526 | SUN/test/2/test_imgs_526.jpg 2 527 | SUN/test/2/test_imgs_527.jpg 2 528 | SUN/test/2/test_imgs_528.jpg 2 529 | SUN/test/2/test_imgs_529.jpg 2 530 | SUN/test/2/test_imgs_530.jpg 2 531 | SUN/test/2/test_imgs_531.jpg 2 532 | SUN/test/2/test_imgs_532.jpg 2 533 | SUN/test/2/test_imgs_533.jpg 2 534 | SUN/test/2/test_imgs_534.jpg 2 535 | SUN/test/2/test_imgs_535.jpg 2 536 | SUN/test/2/test_imgs_536.jpg 2 537 | SUN/test/2/test_imgs_537.jpg 2 538 | SUN/test/2/test_imgs_538.jpg 2 539 | SUN/test/2/test_imgs_539.jpg 2 540 | SUN/test/2/test_imgs_540.jpg 2 541 | SUN/test/2/test_imgs_541.jpg 2 542 | SUN/test/2/test_imgs_542.jpg 2 543 | SUN/test/2/test_imgs_543.jpg 2 544 | SUN/test/2/test_imgs_544.jpg 2 545 | SUN/test/2/test_imgs_545.jpg 2 546 | SUN/test/2/test_imgs_546.jpg 2 547 | SUN/test/2/test_imgs_547.jpg 2 548 | SUN/test/2/test_imgs_548.jpg 2 549 | SUN/test/2/test_imgs_549.jpg 2 550 | SUN/test/2/test_imgs_550.jpg 2 551 | SUN/test/2/test_imgs_551.jpg 2 552 | SUN/test/2/test_imgs_552.jpg 2 553 | SUN/test/2/test_imgs_553.jpg 2 554 | SUN/test/2/test_imgs_554.jpg 2 555 | SUN/test/2/test_imgs_555.jpg 2 556 | SUN/test/2/test_imgs_556.jpg 2 557 | SUN/test/2/test_imgs_557.jpg 2 558 | SUN/test/2/test_imgs_558.jpg 2 559 | SUN/test/2/test_imgs_559.jpg 2 560 | SUN/test/2/test_imgs_560.jpg 2 561 | SUN/test/2/test_imgs_561.jpg 2 562 | SUN/test/2/test_imgs_562.jpg 2 563 | SUN/test/2/test_imgs_563.jpg 2 564 | SUN/test/2/test_imgs_564.jpg 2 565 | SUN/test/2/test_imgs_565.jpg 2 566 | SUN/test/2/test_imgs_566.jpg 2 567 | SUN/test/2/test_imgs_567.jpg 2 568 | SUN/test/2/test_imgs_568.jpg 2 569 | SUN/test/2/test_imgs_569.jpg 2 570 | SUN/test/2/test_imgs_570.jpg 2 571 | SUN/test/2/test_imgs_571.jpg 2 572 | SUN/test/2/test_imgs_572.jpg 2 573 | SUN/test/2/test_imgs_573.jpg 2 574 | SUN/test/2/test_imgs_574.jpg 2 575 | SUN/test/2/test_imgs_575.jpg 2 576 | SUN/test/2/test_imgs_576.jpg 2 577 | SUN/test/2/test_imgs_577.jpg 2 578 | SUN/test/2/test_imgs_578.jpg 2 579 | SUN/test/2/test_imgs_579.jpg 2 580 | SUN/test/2/test_imgs_580.jpg 2 581 | SUN/test/2/test_imgs_581.jpg 2 582 | SUN/test/2/test_imgs_582.jpg 2 583 | SUN/test/2/test_imgs_583.jpg 2 584 | SUN/test/2/test_imgs_584.jpg 2 585 | SUN/test/2/test_imgs_585.jpg 2 586 | SUN/test/2/test_imgs_586.jpg 2 587 | SUN/test/2/test_imgs_587.jpg 2 588 | SUN/test/2/test_imgs_588.jpg 2 589 | SUN/test/2/test_imgs_589.jpg 2 590 | SUN/test/2/test_imgs_590.jpg 2 591 | SUN/test/2/test_imgs_591.jpg 2 592 | SUN/test/2/test_imgs_592.jpg 2 593 | SUN/test/2/test_imgs_593.jpg 2 594 | SUN/test/2/test_imgs_594.jpg 2 595 | SUN/test/2/test_imgs_595.jpg 2 596 | SUN/test/2/test_imgs_596.jpg 2 597 | SUN/test/2/test_imgs_597.jpg 2 598 | SUN/test/3/test_imgs_598.jpg 3 599 | SUN/test/3/test_imgs_599.jpg 3 600 | SUN/test/3/test_imgs_600.jpg 3 601 | SUN/test/3/test_imgs_601.jpg 3 602 | SUN/test/3/test_imgs_602.jpg 3 603 | SUN/test/3/test_imgs_603.jpg 3 604 | SUN/test/3/test_imgs_604.jpg 3 605 | SUN/test/3/test_imgs_605.jpg 3 606 | SUN/test/3/test_imgs_606.jpg 3 607 | SUN/test/4/test_imgs_607.jpg 4 608 | SUN/test/4/test_imgs_608.jpg 4 609 | SUN/test/4/test_imgs_609.jpg 4 610 | SUN/test/4/test_imgs_610.jpg 4 611 | SUN/test/4/test_imgs_611.jpg 4 612 | SUN/test/4/test_imgs_612.jpg 4 613 | SUN/test/4/test_imgs_613.jpg 4 614 | SUN/test/4/test_imgs_614.jpg 4 615 | SUN/test/4/test_imgs_615.jpg 4 616 | SUN/test/4/test_imgs_616.jpg 4 617 | SUN/test/4/test_imgs_617.jpg 4 618 | SUN/test/4/test_imgs_618.jpg 4 619 | SUN/test/4/test_imgs_619.jpg 4 620 | SUN/test/4/test_imgs_620.jpg 4 621 | SUN/test/4/test_imgs_621.jpg 4 622 | SUN/test/4/test_imgs_622.jpg 4 623 | SUN/test/4/test_imgs_623.jpg 4 624 | SUN/test/4/test_imgs_624.jpg 4 625 | SUN/test/4/test_imgs_625.jpg 4 626 | SUN/test/4/test_imgs_626.jpg 4 627 | SUN/test/4/test_imgs_627.jpg 4 628 | SUN/test/4/test_imgs_628.jpg 4 629 | SUN/test/4/test_imgs_629.jpg 4 630 | SUN/test/4/test_imgs_630.jpg 4 631 | SUN/test/4/test_imgs_631.jpg 4 632 | SUN/test/4/test_imgs_632.jpg 4 633 | SUN/test/4/test_imgs_633.jpg 4 634 | SUN/test/4/test_imgs_634.jpg 4 635 | SUN/test/4/test_imgs_635.jpg 4 636 | SUN/test/4/test_imgs_636.jpg 4 637 | SUN/test/4/test_imgs_637.jpg 4 638 | SUN/test/4/test_imgs_638.jpg 4 639 | SUN/test/4/test_imgs_639.jpg 4 640 | SUN/test/4/test_imgs_640.jpg 4 641 | SUN/test/4/test_imgs_641.jpg 4 642 | SUN/test/4/test_imgs_642.jpg 4 643 | SUN/test/4/test_imgs_643.jpg 4 644 | SUN/test/4/test_imgs_644.jpg 4 645 | SUN/test/4/test_imgs_645.jpg 4 646 | SUN/test/4/test_imgs_646.jpg 4 647 | SUN/test/4/test_imgs_647.jpg 4 648 | SUN/test/4/test_imgs_648.jpg 4 649 | SUN/test/4/test_imgs_649.jpg 4 650 | SUN/test/4/test_imgs_650.jpg 4 651 | SUN/test/4/test_imgs_651.jpg 4 652 | SUN/test/4/test_imgs_652.jpg 4 653 | SUN/test/4/test_imgs_653.jpg 4 654 | SUN/test/4/test_imgs_654.jpg 4 655 | SUN/test/4/test_imgs_655.jpg 4 656 | SUN/test/4/test_imgs_656.jpg 4 657 | SUN/test/4/test_imgs_657.jpg 4 658 | SUN/test/4/test_imgs_658.jpg 4 659 | SUN/test/4/test_imgs_659.jpg 4 660 | SUN/test/4/test_imgs_660.jpg 4 661 | SUN/test/4/test_imgs_661.jpg 4 662 | SUN/test/4/test_imgs_662.jpg 4 663 | SUN/test/4/test_imgs_663.jpg 4 664 | SUN/test/4/test_imgs_664.jpg 4 665 | SUN/test/4/test_imgs_665.jpg 4 666 | SUN/test/4/test_imgs_666.jpg 4 667 | SUN/test/4/test_imgs_667.jpg 4 668 | SUN/test/4/test_imgs_668.jpg 4 669 | SUN/test/4/test_imgs_669.jpg 4 670 | SUN/test/4/test_imgs_670.jpg 4 671 | SUN/test/4/test_imgs_671.jpg 4 672 | SUN/test/4/test_imgs_672.jpg 4 673 | SUN/test/4/test_imgs_673.jpg 4 674 | SUN/test/4/test_imgs_674.jpg 4 675 | SUN/test/4/test_imgs_675.jpg 4 676 | SUN/test/4/test_imgs_676.jpg 4 677 | SUN/test/4/test_imgs_677.jpg 4 678 | SUN/test/4/test_imgs_678.jpg 4 679 | SUN/test/4/test_imgs_679.jpg 4 680 | SUN/test/4/test_imgs_680.jpg 4 681 | SUN/test/4/test_imgs_681.jpg 4 682 | SUN/test/4/test_imgs_682.jpg 4 683 | SUN/test/4/test_imgs_683.jpg 4 684 | SUN/test/4/test_imgs_684.jpg 4 685 | SUN/test/4/test_imgs_685.jpg 4 686 | SUN/test/4/test_imgs_686.jpg 4 687 | SUN/test/4/test_imgs_687.jpg 4 688 | SUN/test/4/test_imgs_688.jpg 4 689 | SUN/test/4/test_imgs_689.jpg 4 690 | SUN/test/4/test_imgs_690.jpg 4 691 | SUN/test/4/test_imgs_691.jpg 4 692 | SUN/test/4/test_imgs_692.jpg 4 693 | SUN/test/4/test_imgs_693.jpg 4 694 | SUN/test/4/test_imgs_694.jpg 4 695 | SUN/test/4/test_imgs_695.jpg 4 696 | SUN/test/4/test_imgs_696.jpg 4 697 | SUN/test/4/test_imgs_697.jpg 4 698 | SUN/test/4/test_imgs_698.jpg 4 699 | SUN/test/4/test_imgs_699.jpg 4 700 | SUN/test/4/test_imgs_700.jpg 4 701 | SUN/test/4/test_imgs_701.jpg 4 702 | SUN/test/4/test_imgs_702.jpg 4 703 | SUN/test/4/test_imgs_703.jpg 4 704 | SUN/test/4/test_imgs_704.jpg 4 705 | SUN/test/4/test_imgs_705.jpg 4 706 | SUN/test/4/test_imgs_706.jpg 4 707 | SUN/test/4/test_imgs_707.jpg 4 708 | SUN/test/4/test_imgs_708.jpg 4 709 | SUN/test/4/test_imgs_709.jpg 4 710 | SUN/test/4/test_imgs_710.jpg 4 711 | SUN/test/4/test_imgs_711.jpg 4 712 | SUN/test/4/test_imgs_712.jpg 4 713 | SUN/test/4/test_imgs_713.jpg 4 714 | SUN/test/4/test_imgs_714.jpg 4 715 | SUN/test/4/test_imgs_715.jpg 4 716 | SUN/test/4/test_imgs_716.jpg 4 717 | SUN/test/4/test_imgs_717.jpg 4 718 | SUN/test/4/test_imgs_718.jpg 4 719 | SUN/test/4/test_imgs_719.jpg 4 720 | SUN/test/4/test_imgs_720.jpg 4 721 | SUN/test/4/test_imgs_721.jpg 4 722 | SUN/test/4/test_imgs_722.jpg 4 723 | SUN/test/4/test_imgs_723.jpg 4 724 | SUN/test/4/test_imgs_724.jpg 4 725 | SUN/test/4/test_imgs_725.jpg 4 726 | SUN/test/4/test_imgs_726.jpg 4 727 | SUN/test/4/test_imgs_727.jpg 4 728 | SUN/test/4/test_imgs_728.jpg 4 729 | SUN/test/4/test_imgs_729.jpg 4 730 | SUN/test/4/test_imgs_730.jpg 4 731 | SUN/test/4/test_imgs_731.jpg 4 732 | SUN/test/4/test_imgs_732.jpg 4 733 | SUN/test/4/test_imgs_733.jpg 4 734 | SUN/test/4/test_imgs_734.jpg 4 735 | SUN/test/4/test_imgs_735.jpg 4 736 | SUN/test/4/test_imgs_736.jpg 4 737 | SUN/test/4/test_imgs_737.jpg 4 738 | SUN/test/4/test_imgs_738.jpg 4 739 | SUN/test/4/test_imgs_739.jpg 4 740 | SUN/test/4/test_imgs_740.jpg 4 741 | SUN/test/4/test_imgs_741.jpg 4 742 | SUN/test/4/test_imgs_742.jpg 4 743 | SUN/test/4/test_imgs_743.jpg 4 744 | SUN/test/4/test_imgs_744.jpg 4 745 | SUN/test/4/test_imgs_745.jpg 4 746 | SUN/test/4/test_imgs_746.jpg 4 747 | SUN/test/4/test_imgs_747.jpg 4 748 | SUN/test/4/test_imgs_748.jpg 4 749 | SUN/test/4/test_imgs_749.jpg 4 750 | SUN/test/4/test_imgs_750.jpg 4 751 | SUN/test/4/test_imgs_751.jpg 4 752 | SUN/test/4/test_imgs_752.jpg 4 753 | SUN/test/4/test_imgs_753.jpg 4 754 | SUN/test/4/test_imgs_754.jpg 4 755 | SUN/test/4/test_imgs_755.jpg 4 756 | SUN/test/4/test_imgs_756.jpg 4 757 | SUN/test/4/test_imgs_757.jpg 4 758 | SUN/test/4/test_imgs_758.jpg 4 759 | SUN/test/4/test_imgs_759.jpg 4 760 | SUN/test/4/test_imgs_760.jpg 4 761 | SUN/test/4/test_imgs_761.jpg 4 762 | SUN/test/4/test_imgs_762.jpg 4 763 | SUN/test/4/test_imgs_763.jpg 4 764 | SUN/test/4/test_imgs_764.jpg 4 765 | SUN/test/4/test_imgs_765.jpg 4 766 | SUN/test/4/test_imgs_766.jpg 4 767 | SUN/test/4/test_imgs_767.jpg 4 768 | SUN/test/4/test_imgs_768.jpg 4 769 | SUN/test/4/test_imgs_769.jpg 4 770 | SUN/test/4/test_imgs_770.jpg 4 771 | SUN/test/4/test_imgs_771.jpg 4 772 | SUN/test/4/test_imgs_772.jpg 4 773 | SUN/test/4/test_imgs_773.jpg 4 774 | SUN/test/4/test_imgs_774.jpg 4 775 | SUN/test/4/test_imgs_775.jpg 4 776 | SUN/test/4/test_imgs_776.jpg 4 777 | SUN/test/4/test_imgs_777.jpg 4 778 | SUN/test/4/test_imgs_778.jpg 4 779 | SUN/test/4/test_imgs_779.jpg 4 780 | SUN/test/4/test_imgs_780.jpg 4 781 | SUN/test/4/test_imgs_781.jpg 4 782 | SUN/test/4/test_imgs_782.jpg 4 783 | SUN/test/4/test_imgs_783.jpg 4 784 | SUN/test/4/test_imgs_784.jpg 4 785 | SUN/test/4/test_imgs_785.jpg 4 786 | SUN/test/4/test_imgs_786.jpg 4 787 | SUN/test/4/test_imgs_787.jpg 4 788 | SUN/test/4/test_imgs_788.jpg 4 789 | SUN/test/4/test_imgs_789.jpg 4 790 | SUN/test/4/test_imgs_790.jpg 4 791 | SUN/test/4/test_imgs_791.jpg 4 792 | SUN/test/4/test_imgs_792.jpg 4 793 | SUN/test/4/test_imgs_793.jpg 4 794 | SUN/test/4/test_imgs_794.jpg 4 795 | SUN/test/4/test_imgs_795.jpg 4 796 | SUN/test/4/test_imgs_796.jpg 4 797 | SUN/test/4/test_imgs_797.jpg 4 798 | SUN/test/4/test_imgs_798.jpg 4 799 | SUN/test/4/test_imgs_799.jpg 4 800 | SUN/test/4/test_imgs_800.jpg 4 801 | SUN/test/4/test_imgs_801.jpg 4 802 | SUN/test/4/test_imgs_802.jpg 4 803 | SUN/test/4/test_imgs_803.jpg 4 804 | SUN/test/4/test_imgs_804.jpg 4 805 | SUN/test/4/test_imgs_805.jpg 4 806 | SUN/test/4/test_imgs_806.jpg 4 807 | SUN/test/4/test_imgs_807.jpg 4 808 | SUN/test/4/test_imgs_808.jpg 4 809 | SUN/test/4/test_imgs_809.jpg 4 810 | SUN/test/4/test_imgs_810.jpg 4 811 | SUN/test/4/test_imgs_811.jpg 4 812 | SUN/test/4/test_imgs_812.jpg 4 813 | SUN/test/4/test_imgs_813.jpg 4 814 | SUN/test/4/test_imgs_814.jpg 4 815 | SUN/test/4/test_imgs_815.jpg 4 816 | SUN/test/4/test_imgs_816.jpg 4 817 | SUN/test/4/test_imgs_817.jpg 4 818 | SUN/test/4/test_imgs_818.jpg 4 819 | SUN/test/4/test_imgs_819.jpg 4 820 | SUN/test/4/test_imgs_820.jpg 4 821 | SUN/test/4/test_imgs_821.jpg 4 822 | SUN/test/4/test_imgs_822.jpg 4 823 | SUN/test/4/test_imgs_823.jpg 4 824 | SUN/test/4/test_imgs_824.jpg 4 825 | SUN/test/4/test_imgs_825.jpg 4 826 | SUN/test/4/test_imgs_826.jpg 4 827 | SUN/test/4/test_imgs_827.jpg 4 828 | SUN/test/4/test_imgs_828.jpg 4 829 | SUN/test/4/test_imgs_829.jpg 4 830 | SUN/test/4/test_imgs_830.jpg 4 831 | SUN/test/4/test_imgs_831.jpg 4 832 | SUN/test/4/test_imgs_832.jpg 4 833 | SUN/test/4/test_imgs_833.jpg 4 834 | SUN/test/4/test_imgs_834.jpg 4 835 | SUN/test/4/test_imgs_835.jpg 4 836 | SUN/test/4/test_imgs_836.jpg 4 837 | SUN/test/4/test_imgs_837.jpg 4 838 | SUN/test/4/test_imgs_838.jpg 4 839 | SUN/test/4/test_imgs_839.jpg 4 840 | SUN/test/4/test_imgs_840.jpg 4 841 | SUN/test/4/test_imgs_841.jpg 4 842 | SUN/test/4/test_imgs_842.jpg 4 843 | SUN/test/4/test_imgs_843.jpg 4 844 | SUN/test/4/test_imgs_844.jpg 4 845 | SUN/test/4/test_imgs_845.jpg 4 846 | SUN/test/4/test_imgs_846.jpg 4 847 | SUN/test/4/test_imgs_847.jpg 4 848 | SUN/test/4/test_imgs_848.jpg 4 849 | SUN/test/4/test_imgs_849.jpg 4 850 | SUN/test/4/test_imgs_850.jpg 4 851 | SUN/test/4/test_imgs_851.jpg 4 852 | SUN/test/4/test_imgs_852.jpg 4 853 | SUN/test/4/test_imgs_853.jpg 4 854 | SUN/test/4/test_imgs_854.jpg 4 855 | SUN/test/4/test_imgs_855.jpg 4 856 | SUN/test/4/test_imgs_856.jpg 4 857 | SUN/test/4/test_imgs_857.jpg 4 858 | SUN/test/4/test_imgs_858.jpg 4 859 | SUN/test/4/test_imgs_859.jpg 4 860 | SUN/test/4/test_imgs_860.jpg 4 861 | SUN/test/4/test_imgs_861.jpg 4 862 | SUN/test/4/test_imgs_862.jpg 4 863 | SUN/test/4/test_imgs_863.jpg 4 864 | SUN/test/4/test_imgs_864.jpg 4 865 | SUN/test/4/test_imgs_865.jpg 4 866 | SUN/test/4/test_imgs_866.jpg 4 867 | SUN/test/4/test_imgs_867.jpg 4 868 | SUN/test/4/test_imgs_868.jpg 4 869 | SUN/test/4/test_imgs_869.jpg 4 870 | SUN/test/4/test_imgs_870.jpg 4 871 | SUN/test/4/test_imgs_871.jpg 4 872 | SUN/test/4/test_imgs_872.jpg 4 873 | SUN/test/4/test_imgs_873.jpg 4 874 | SUN/test/4/test_imgs_874.jpg 4 875 | SUN/test/4/test_imgs_875.jpg 4 876 | SUN/test/4/test_imgs_876.jpg 4 877 | SUN/test/4/test_imgs_877.jpg 4 878 | SUN/test/4/test_imgs_878.jpg 4 879 | SUN/test/4/test_imgs_879.jpg 4 880 | SUN/test/4/test_imgs_880.jpg 4 881 | SUN/test/4/test_imgs_881.jpg 4 882 | SUN/test/4/test_imgs_882.jpg 4 883 | SUN/test/4/test_imgs_883.jpg 4 884 | SUN/test/4/test_imgs_884.jpg 4 885 | SUN/test/4/test_imgs_885.jpg 4 886 | SUN/test/4/test_imgs_886.jpg 4 887 | SUN/test/4/test_imgs_887.jpg 4 888 | SUN/test/4/test_imgs_888.jpg 4 889 | SUN/test/4/test_imgs_889.jpg 4 890 | SUN/test/4/test_imgs_890.jpg 4 891 | SUN/test/4/test_imgs_891.jpg 4 892 | SUN/test/4/test_imgs_892.jpg 4 893 | SUN/test/4/test_imgs_893.jpg 4 894 | SUN/test/4/test_imgs_894.jpg 4 895 | SUN/test/4/test_imgs_895.jpg 4 896 | SUN/test/4/test_imgs_896.jpg 4 897 | SUN/test/4/test_imgs_897.jpg 4 898 | SUN/test/4/test_imgs_898.jpg 4 899 | SUN/test/4/test_imgs_899.jpg 4 900 | SUN/test/4/test_imgs_900.jpg 4 901 | SUN/test/4/test_imgs_901.jpg 4 902 | SUN/test/4/test_imgs_902.jpg 4 903 | SUN/test/4/test_imgs_903.jpg 4 904 | SUN/test/4/test_imgs_904.jpg 4 905 | SUN/test/4/test_imgs_905.jpg 4 906 | SUN/test/4/test_imgs_906.jpg 4 907 | SUN/test/4/test_imgs_907.jpg 4 908 | SUN/test/4/test_imgs_908.jpg 4 909 | SUN/test/4/test_imgs_909.jpg 4 910 | SUN/test/4/test_imgs_910.jpg 4 911 | SUN/test/4/test_imgs_911.jpg 4 912 | SUN/test/4/test_imgs_912.jpg 4 913 | SUN/test/4/test_imgs_913.jpg 4 914 | SUN/test/4/test_imgs_914.jpg 4 915 | SUN/test/4/test_imgs_915.jpg 4 916 | SUN/test/4/test_imgs_916.jpg 4 917 | SUN/test/4/test_imgs_917.jpg 4 918 | SUN/test/4/test_imgs_918.jpg 4 919 | SUN/test/4/test_imgs_919.jpg 4 920 | SUN/test/4/test_imgs_920.jpg 4 921 | SUN/test/4/test_imgs_921.jpg 4 922 | SUN/test/4/test_imgs_922.jpg 4 923 | SUN/test/4/test_imgs_923.jpg 4 924 | SUN/test/4/test_imgs_924.jpg 4 925 | SUN/test/4/test_imgs_925.jpg 4 926 | SUN/test/4/test_imgs_926.jpg 4 927 | SUN/test/4/test_imgs_927.jpg 4 928 | SUN/test/4/test_imgs_928.jpg 4 929 | SUN/test/4/test_imgs_929.jpg 4 930 | SUN/test/4/test_imgs_930.jpg 4 931 | SUN/test/4/test_imgs_931.jpg 4 932 | SUN/test/4/test_imgs_932.jpg 4 933 | SUN/test/4/test_imgs_933.jpg 4 934 | SUN/test/4/test_imgs_934.jpg 4 935 | SUN/test/4/test_imgs_935.jpg 4 936 | SUN/test/4/test_imgs_936.jpg 4 937 | SUN/test/4/test_imgs_937.jpg 4 938 | SUN/test/4/test_imgs_938.jpg 4 939 | SUN/test/4/test_imgs_939.jpg 4 940 | SUN/test/4/test_imgs_940.jpg 4 941 | SUN/test/4/test_imgs_941.jpg 4 942 | SUN/test/4/test_imgs_942.jpg 4 943 | SUN/test/4/test_imgs_943.jpg 4 944 | SUN/test/4/test_imgs_944.jpg 4 945 | SUN/test/4/test_imgs_945.jpg 4 946 | SUN/test/4/test_imgs_946.jpg 4 947 | SUN/test/4/test_imgs_947.jpg 4 948 | SUN/test/4/test_imgs_948.jpg 4 949 | SUN/test/4/test_imgs_949.jpg 4 950 | SUN/test/4/test_imgs_950.jpg 4 951 | SUN/test/4/test_imgs_951.jpg 4 952 | SUN/test/4/test_imgs_952.jpg 4 953 | SUN/test/4/test_imgs_953.jpg 4 954 | SUN/test/4/test_imgs_954.jpg 4 955 | SUN/test/4/test_imgs_955.jpg 4 956 | SUN/test/4/test_imgs_956.jpg 4 957 | SUN/test/4/test_imgs_957.jpg 4 958 | SUN/test/4/test_imgs_958.jpg 4 959 | SUN/test/4/test_imgs_959.jpg 4 960 | SUN/test/4/test_imgs_960.jpg 4 961 | SUN/test/4/test_imgs_961.jpg 4 962 | SUN/test/4/test_imgs_962.jpg 4 963 | SUN/test/4/test_imgs_963.jpg 4 964 | SUN/test/4/test_imgs_964.jpg 4 965 | SUN/test/4/test_imgs_965.jpg 4 966 | SUN/test/4/test_imgs_966.jpg 4 967 | SUN/test/4/test_imgs_967.jpg 4 968 | SUN/test/4/test_imgs_968.jpg 4 969 | SUN/test/4/test_imgs_969.jpg 4 970 | SUN/test/4/test_imgs_970.jpg 4 971 | SUN/test/4/test_imgs_971.jpg 4 972 | SUN/test/4/test_imgs_972.jpg 4 973 | SUN/test/4/test_imgs_973.jpg 4 974 | SUN/test/4/test_imgs_974.jpg 4 975 | SUN/test/4/test_imgs_975.jpg 4 976 | SUN/test/4/test_imgs_976.jpg 4 977 | SUN/test/4/test_imgs_977.jpg 4 978 | SUN/test/4/test_imgs_978.jpg 4 979 | SUN/test/4/test_imgs_979.jpg 4 980 | SUN/test/4/test_imgs_980.jpg 4 981 | SUN/test/4/test_imgs_981.jpg 4 982 | SUN/test/4/test_imgs_982.jpg 4 983 | SUN/test/4/test_imgs_983.jpg 4 984 | SUN/test/4/test_imgs_984.jpg 4 985 | SUN/test/4/test_imgs_985.jpg 4 986 | -------------------------------------------------------------------------------- /data/correct_txt_lists/art_painting_crossval_kfold.txt: -------------------------------------------------------------------------------- 1 | art_painting/dog/pic_225.jpg 1 2 | art_painting/dog/pic_249.jpg 1 3 | art_painting/dog/pic_306.jpg 1 4 | art_painting/dog/pic_241.jpg 1 5 | art_painting/dog/pic_219.jpg 1 6 | art_painting/dog/pic_252.jpg 1 7 | art_painting/dog/pic_309.jpg 1 8 | art_painting/dog/pic_255.jpg 1 9 | art_painting/dog/pic_310.jpg 1 10 | art_painting/dog/pic_247.jpg 1 11 | art_painting/dog/pic_236.jpg 1 12 | art_painting/dog/pic_242.jpg 1 13 | art_painting/dog/pic_257.jpg 1 14 | art_painting/dog/pic_314.jpg 1 15 | art_painting/dog/pic_317.jpg 1 16 | art_painting/dog/pic_315.jpg 1 17 | art_painting/dog/pic_248.jpg 1 18 | art_painting/dog/pic_250.jpg 1 19 | art_painting/dog/pic_282.jpg 1 20 | art_painting/dog/pic_260.jpg 1 21 | art_painting/dog/pic_316.jpg 1 22 | art_painting/dog/pic_305.jpg 1 23 | art_painting/dog/pic_300.jpg 1 24 | art_painting/dog/pic_365.jpg 1 25 | art_painting/dog/pic_296.jpg 1 26 | art_painting/dog/pic_301.jpg 1 27 | art_painting/dog/pic_298.jpg 1 28 | art_painting/dog/pic_291.jpg 1 29 | art_painting/dog/pic_313.jpg 1 30 | art_painting/dog/pic_311.jpg 1 31 | art_painting/dog/pic_312.jpg 1 32 | art_painting/dog/pic_308.jpg 1 33 | art_painting/dog/pic_329.jpg 1 34 | art_painting/dog/pic_322.jpg 1 35 | art_painting/dog/pic_323.jpg 1 36 | art_painting/dog/pic_330.jpg 1 37 | art_painting/dog/pic_371.jpg 1 38 | art_painting/dog/pic_339.jpg 1 39 | art_painting/elephant/pic_243.jpg 2 40 | art_painting/elephant/pic_154.jpg 2 41 | art_painting/elephant/pic_239.jpg 2 42 | art_painting/elephant/pic_156.jpg 2 43 | art_painting/elephant/pic_167.jpg 2 44 | art_painting/elephant/pic_168.jpg 2 45 | art_painting/elephant/pic_162.jpg 2 46 | art_painting/elephant/pic_161.jpg 2 47 | art_painting/elephant/pic_159.jpg 2 48 | art_painting/elephant/pic_160.jpg 2 49 | art_painting/elephant/pic_158.jpg 2 50 | art_painting/elephant/pic_157.jpg 2 51 | art_painting/elephant/pic_166.jpg 2 52 | art_painting/elephant/pic_171.jpg 2 53 | art_painting/elephant/pic_169.jpg 2 54 | art_painting/elephant/pic_170.jpg 2 55 | art_painting/elephant/pic_176.jpg 2 56 | art_painting/elephant/pic_175.jpg 2 57 | art_painting/elephant/pic_173.jpg 2 58 | art_painting/elephant/pic_172.jpg 2 59 | art_painting/elephant/pic_082.jpg 2 60 | art_painting/elephant/pic_081.jpg 2 61 | art_painting/elephant/pic_080.jpg 2 62 | art_painting/elephant/pic_078.jpg 2 63 | art_painting/elephant/pic_079.jpg 2 64 | art_painting/elephant/pic_093.jpg 2 65 | art_painting/giraffe/pic_134.jpg 3 66 | art_painting/giraffe/pic_129.jpg 3 67 | art_painting/giraffe/pic_127.jpg 3 68 | art_painting/giraffe/pic_151.jpg 3 69 | art_painting/giraffe/pic_131.jpg 3 70 | art_painting/giraffe/pic_158.jpg 3 71 | art_painting/giraffe/pic_144.jpg 3 72 | art_painting/giraffe/pic_238.jpg 3 73 | art_painting/giraffe/pic_222.jpg 3 74 | art_painting/giraffe/pic_185.jpg 3 75 | art_painting/giraffe/pic_160.jpg 3 76 | art_painting/giraffe/pic_155.jpg 3 77 | art_painting/giraffe/pic_209.jpg 3 78 | art_painting/giraffe/pic_228.jpg 3 79 | art_painting/giraffe/pic_169.jpg 3 80 | art_painting/giraffe/pic_198.jpg 3 81 | art_painting/giraffe/pic_145.jpg 3 82 | art_painting/giraffe/pic_273.jpg 3 83 | art_painting/giraffe/pic_303.jpg 3 84 | art_painting/giraffe/pic_284.jpg 3 85 | art_painting/giraffe/pic_302.jpg 3 86 | art_painting/giraffe/pic_286.jpg 3 87 | art_painting/giraffe/pic_287.jpg 3 88 | art_painting/giraffe/pic_301.jpg 3 89 | art_painting/giraffe/pic_295.jpg 3 90 | art_painting/giraffe/pic_296.jpg 3 91 | art_painting/giraffe/pic_311.jpg 3 92 | art_painting/giraffe/pic_309.jpg 3 93 | art_painting/giraffe/pic_310.jpg 3 94 | art_painting/guitar/pic_125.jpg 4 95 | art_painting/guitar/pic_124.jpg 4 96 | art_painting/guitar/pic_179.jpg 4 97 | art_painting/guitar/pic_147.jpg 4 98 | art_painting/guitar/pic_146.jpg 4 99 | art_painting/guitar/pic_183.jpg 4 100 | art_painting/guitar/pic_126.jpg 4 101 | art_painting/guitar/pic_172.jpg 4 102 | art_painting/guitar/pic_137.jpg 4 103 | art_painting/guitar/pic_180.jpg 4 104 | art_painting/guitar/pic_150.jpg 4 105 | art_painting/guitar/pic_176.jpg 4 106 | art_painting/guitar/pic_187.jpg 4 107 | art_painting/guitar/pic_186.jpg 4 108 | art_painting/guitar/pic_184.jpg 4 109 | art_painting/guitar/pic_174.jpg 4 110 | art_painting/guitar/pic_165.jpg 4 111 | art_painting/guitar/pic_161.jpg 4 112 | art_painting/guitar/pic_162.jpg 4 113 | art_painting/horse/pic_034.jpg 5 114 | art_painting/horse/pic_040.jpg 5 115 | art_painting/horse/pic_039.jpg 5 116 | art_painting/horse/pic_042.jpg 5 117 | art_painting/horse/pic_028.jpg 5 118 | art_painting/horse/pic_037.jpg 5 119 | art_painting/horse/pic_041.jpg 5 120 | art_painting/horse/pic_033.jpg 5 121 | art_painting/horse/pic_038.jpg 5 122 | art_painting/horse/pic_025.jpg 5 123 | art_painting/horse/pic_023.jpg 5 124 | art_painting/horse/pic_045.jpg 5 125 | art_painting/horse/pic_030.jpg 5 126 | art_painting/horse/pic_043.jpg 5 127 | art_painting/horse/pic_021.jpg 5 128 | art_painting/horse/pic_026.jpg 5 129 | art_painting/horse/pic_046.jpg 5 130 | art_painting/horse/pic_001.jpg 5 131 | art_painting/horse/pic_002.jpg 5 132 | art_painting/horse/pic_003.jpg 5 133 | art_painting/horse/pic_004.jpg 5 134 | art_painting/house/pic_313.jpg 6 135 | art_painting/house/pic_169.jpg 6 136 | art_painting/house/pic_168.jpg 6 137 | art_painting/house/pic_308.jpg 6 138 | art_painting/house/pic_167.jpg 6 139 | art_painting/house/pic_310.jpg 6 140 | art_painting/house/pic_314.jpg 6 141 | art_painting/house/pic_170.jpg 6 142 | art_painting/house/pic_316.jpg 6 143 | art_painting/house/pic_175.jpg 6 144 | art_painting/house/pic_173.jpg 6 145 | art_painting/house/pic_322.jpg 6 146 | art_painting/house/pic_321.jpg 6 147 | art_painting/house/pic_320.jpg 6 148 | art_painting/house/pic_178.jpg 6 149 | art_painting/house/pic_331.jpg 6 150 | art_painting/house/pic_001.jpg 6 151 | art_painting/house/pic_002.jpg 6 152 | art_painting/house/pic_003.jpg 6 153 | art_painting/house/pic_004.jpg 6 154 | art_painting/house/pic_005.jpg 6 155 | art_painting/house/pic_006.jpg 6 156 | art_painting/house/pic_007.jpg 6 157 | art_painting/house/pic_008.jpg 6 158 | art_painting/house/pic_009.jpg 6 159 | art_painting/house/pic_010.jpg 6 160 | art_painting/house/pic_011.jpg 6 161 | art_painting/house/pic_013.jpg 6 162 | art_painting/house/pic_015.jpg 6 163 | art_painting/house/pic_030.jpg 6 164 | art_painting/person/pic_280.jpg 7 165 | art_painting/person/pic_278.jpg 7 166 | art_painting/person/pic_277.jpg 7 167 | art_painting/person/pic_276.jpg 7 168 | art_painting/person/pic_275.jpg 7 169 | art_painting/person/pic_273.jpg 7 170 | art_painting/person/pic_284.jpg 7 171 | art_painting/person/pic_283.jpg 7 172 | art_painting/person/pic_281.jpg 7 173 | art_painting/person/pic_282.jpg 7 174 | art_painting/person/pic_285.jpg 7 175 | art_painting/person/pic_269.jpg 7 176 | art_painting/person/pic_297.jpg 7 177 | art_painting/person/pic_298.jpg 7 178 | art_painting/person/pic_296.jpg 7 179 | art_painting/person/pic_295.jpg 7 180 | art_painting/person/pic_134.jpg 7 181 | art_painting/person/pic_133.jpg 7 182 | art_painting/person/pic_135.jpg 7 183 | art_painting/person/pic_310.jpg 7 184 | art_painting/person/pic_141.jpg 7 185 | art_painting/person/pic_001.jpg 7 186 | art_painting/person/pic_002.jpg 7 187 | art_painting/person/pic_003.jpg 7 188 | art_painting/person/pic_004.jpg 7 189 | art_painting/person/pic_005.jpg 7 190 | art_painting/person/pic_048.jpg 7 191 | art_painting/person/pic_050.jpg 7 192 | art_painting/person/pic_052.jpg 7 193 | art_painting/person/pic_055.jpg 7 194 | art_painting/person/pic_056.jpg 7 195 | art_painting/person/pic_065.jpg 7 196 | art_painting/person/pic_331.jpg 7 197 | art_painting/person/pic_330.jpg 7 198 | art_painting/person/pic_176.jpg 7 199 | art_painting/person/pic_416.jpg 7 200 | art_painting/person/pic_420.jpg 7 201 | art_painting/person/pic_426.jpg 7 202 | art_painting/person/pic_424.jpg 7 203 | art_painting/person/pic_423.jpg 7 204 | art_painting/person/pic_421.jpg 7 205 | art_painting/person/pic_183.jpg 7 206 | art_painting/person/pic_428.jpg 7 207 | art_painting/person/pic_430.jpg 7 208 | art_painting/person/pic_429.jpg 7 209 | -------------------------------------------------------------------------------- /data/correct_txt_lists/cartoon_crossval_kfold.txt: -------------------------------------------------------------------------------- 1 | cartoon/dog/pic_383.jpg 1 2 | cartoon/dog/pic_382.jpg 1 3 | cartoon/dog/pic_386.jpg 1 4 | cartoon/dog/pic_384.jpg 1 5 | cartoon/dog/pic_385.jpg 1 6 | cartoon/dog/pic_391.jpg 1 7 | cartoon/dog/pic_390.jpg 1 8 | cartoon/dog/pic_392.jpg 1 9 | cartoon/dog/pic_393.jpg 1 10 | cartoon/dog/pic_405.jpg 1 11 | cartoon/dog/pic_403.jpg 1 12 | cartoon/dog/pic_417.jpg 1 13 | cartoon/dog/pic_416.jpg 1 14 | cartoon/dog/pic_415.jpg 1 15 | cartoon/dog/pic_150.jpg 1 16 | cartoon/dog/pic_233.jpg 1 17 | cartoon/dog/pic_232.jpg 1 18 | cartoon/dog/pic_227.jpg 1 19 | cartoon/dog/pic_228.jpg 1 20 | cartoon/dog/pic_229.jpg 1 21 | cartoon/dog/pic_226.jpg 1 22 | cartoon/dog/pic_230.jpg 1 23 | cartoon/dog/pic_286.jpg 1 24 | cartoon/dog/pic_285.jpg 1 25 | cartoon/dog/pic_276.jpg 1 26 | cartoon/dog/pic_262.jpg 1 27 | cartoon/dog/pic_259.jpg 1 28 | cartoon/dog/pic_257.jpg 1 29 | cartoon/dog/pic_254.jpg 1 30 | cartoon/dog/pic_252.jpg 1 31 | cartoon/dog/pic_249.jpg 1 32 | cartoon/dog/pic_001.jpg 1 33 | cartoon/dog/pic_003.jpg 1 34 | cartoon/dog/pic_004.jpg 1 35 | cartoon/dog/pic_005.jpg 1 36 | cartoon/dog/pic_006.jpg 1 37 | cartoon/dog/pic_031.jpg 1 38 | cartoon/dog/pic_043.jpg 1 39 | cartoon/dog/pic_025.jpg 1 40 | cartoon/elephant/pic_211.jpg 2 41 | cartoon/elephant/pic_154.jpg 2 42 | cartoon/elephant/pic_153.jpg 2 43 | cartoon/elephant/pic_237.jpg 2 44 | cartoon/elephant/pic_227.jpg 2 45 | cartoon/elephant/pic_226.jpg 2 46 | cartoon/elephant/pic_225.jpg 2 47 | cartoon/elephant/pic_155.jpg 2 48 | cartoon/elephant/pic_165.jpg 2 49 | cartoon/elephant/pic_164.jpg 2 50 | cartoon/elephant/pic_162.jpg 2 51 | cartoon/elephant/pic_157.jpg 2 52 | cartoon/elephant/pic_156.jpg 2 53 | cartoon/elephant/pic_166.jpg 2 54 | cartoon/elephant/pic_168.jpg 2 55 | cartoon/elephant/pic_167.jpg 2 56 | cartoon/elephant/pic_169.jpg 2 57 | cartoon/elephant/pic_171.jpg 2 58 | cartoon/elephant/pic_170.jpg 2 59 | cartoon/elephant/pic_240.jpg 2 60 | cartoon/elephant/pic_243.jpg 2 61 | cartoon/elephant/pic_242.jpg 2 62 | cartoon/elephant/pic_244.jpg 2 63 | cartoon/elephant/pic_172.jpg 2 64 | cartoon/elephant/pic_247.jpg 2 65 | cartoon/elephant/pic_248.jpg 2 66 | cartoon/elephant/pic_251.jpg 2 67 | cartoon/elephant/pic_250.jpg 2 68 | cartoon/elephant/pic_249.jpg 2 69 | cartoon/elephant/pic_252.jpg 2 70 | cartoon/elephant/pic_258.jpg 2 71 | cartoon/elephant/pic_257.jpg 2 72 | cartoon/elephant/pic_173.jpg 2 73 | cartoon/elephant/pic_412.jpg 2 74 | cartoon/elephant/pic_411.jpg 2 75 | cartoon/elephant/pic_408.jpg 2 76 | cartoon/elephant/pic_409.jpg 2 77 | cartoon/elephant/pic_413.jpg 2 78 | cartoon/elephant/pic_410.jpg 2 79 | cartoon/elephant/pic_431.jpg 2 80 | cartoon/elephant/pic_430.jpg 2 81 | cartoon/elephant/pic_428.jpg 2 82 | cartoon/elephant/pic_425.jpg 2 83 | cartoon/elephant/pic_423.jpg 2 84 | cartoon/elephant/pic_424.jpg 2 85 | cartoon/elephant/pic_420.jpg 2 86 | cartoon/giraffe/pic_005.jpg 3 87 | cartoon/giraffe/pic_006.jpg 3 88 | cartoon/giraffe/pic_007.jpg 3 89 | cartoon/giraffe/pic_008.jpg 3 90 | cartoon/giraffe/pic_009.jpg 3 91 | cartoon/giraffe/pic_010.jpg 3 92 | cartoon/giraffe/pic_011.jpg 3 93 | cartoon/giraffe/pic_012.jpg 3 94 | cartoon/giraffe/pic_013.jpg 3 95 | cartoon/giraffe/pic_014.jpg 3 96 | cartoon/giraffe/pic_015.jpg 3 97 | cartoon/giraffe/pic_016.jpg 3 98 | cartoon/giraffe/pic_017.jpg 3 99 | cartoon/giraffe/pic_018.jpg 3 100 | cartoon/giraffe/pic_019.jpg 3 101 | cartoon/giraffe/pic_020.jpg 3 102 | cartoon/giraffe/pic_022.jpg 3 103 | cartoon/giraffe/pic_025.jpg 3 104 | cartoon/giraffe/pic_024.jpg 3 105 | cartoon/giraffe/pic_091.jpg 3 106 | cartoon/giraffe/pic_090.jpg 3 107 | cartoon/giraffe/pic_087.jpg 3 108 | cartoon/giraffe/pic_086.jpg 3 109 | cartoon/giraffe/pic_085.jpg 3 110 | cartoon/giraffe/pic_095.jpg 3 111 | cartoon/giraffe/pic_096.jpg 3 112 | cartoon/giraffe/pic_093.jpg 3 113 | cartoon/giraffe/pic_094.jpg 3 114 | cartoon/giraffe/pic_106.jpg 3 115 | cartoon/giraffe/pic_108.jpg 3 116 | cartoon/giraffe/pic_104.jpg 3 117 | cartoon/giraffe/pic_103.jpg 3 118 | cartoon/giraffe/pic_101.jpg 3 119 | cartoon/giraffe/pic_100.jpg 3 120 | cartoon/giraffe/pic_099.jpg 3 121 | cartoon/guitar/pic_072.jpg 4 122 | cartoon/guitar/pic_003.jpg 4 123 | cartoon/guitar/pic_004.jpg 4 124 | cartoon/guitar/pic_005.jpg 4 125 | cartoon/guitar/pic_006.jpg 4 126 | cartoon/guitar/pic_007.jpg 4 127 | cartoon/guitar/pic_009.jpg 4 128 | cartoon/guitar/pic_010.jpg 4 129 | cartoon/guitar/pic_011.jpg 4 130 | cartoon/guitar/pic_012.jpg 4 131 | cartoon/guitar/pic_013.jpg 4 132 | cartoon/guitar/pic_016.jpg 4 133 | cartoon/guitar/pic_017.jpg 4 134 | cartoon/guitar/pic_020.jpg 4 135 | cartoon/horse/pic_329.jpg 5 136 | cartoon/horse/pic_317.jpg 5 137 | cartoon/horse/pic_331.jpg 5 138 | cartoon/horse/pic_333.jpg 5 139 | cartoon/horse/pic_332.jpg 5 140 | cartoon/horse/pic_334.jpg 5 141 | cartoon/horse/pic_324.jpg 5 142 | cartoon/horse/pic_318.jpg 5 143 | cartoon/horse/pic_338.jpg 5 144 | cartoon/horse/pic_337.jpg 5 145 | cartoon/horse/pic_341.jpg 5 146 | cartoon/horse/pic_340.jpg 5 147 | cartoon/horse/pic_335.jpg 5 148 | cartoon/horse/pic_342.jpg 5 149 | cartoon/horse/pic_347.jpg 5 150 | cartoon/horse/pic_346.jpg 5 151 | cartoon/horse/pic_343.jpg 5 152 | cartoon/horse/pic_336.jpg 5 153 | cartoon/horse/pic_348.jpg 5 154 | cartoon/horse/pic_339.jpg 5 155 | cartoon/horse/pic_349.jpg 5 156 | cartoon/horse/pic_139.jpg 5 157 | cartoon/horse/pic_132.jpg 5 158 | cartoon/horse/pic_141.jpg 5 159 | cartoon/horse/pic_133.jpg 5 160 | cartoon/horse/pic_162.jpg 5 161 | cartoon/horse/pic_155.jpg 5 162 | cartoon/horse/pic_159.jpg 5 163 | cartoon/horse/pic_156.jpg 5 164 | cartoon/horse/pic_151.jpg 5 165 | cartoon/horse/pic_149.jpg 5 166 | cartoon/horse/pic_147.jpg 5 167 | cartoon/horse/pic_161.jpg 5 168 | cartoon/house/pic_103.jpg 6 169 | cartoon/house/pic_091.jpg 6 170 | cartoon/house/pic_089.jpg 6 171 | cartoon/house/pic_092.jpg 6 172 | cartoon/house/pic_093.jpg 6 173 | cartoon/house/pic_107.jpg 6 174 | cartoon/house/pic_104.jpg 6 175 | cartoon/house/pic_114.jpg 6 176 | cartoon/house/pic_112.jpg 6 177 | cartoon/house/pic_109.jpg 6 178 | cartoon/house/pic_108.jpg 6 179 | cartoon/house/pic_102.jpg 6 180 | cartoon/house/pic_099.jpg 6 181 | cartoon/house/pic_098.jpg 6 182 | cartoon/house/pic_097.jpg 6 183 | cartoon/house/pic_111.jpg 6 184 | cartoon/house/pic_320.jpg 6 185 | cartoon/house/pic_321.jpg 6 186 | cartoon/house/pic_315.jpg 6 187 | cartoon/house/pic_322.jpg 6 188 | cartoon/house/pic_323.jpg 6 189 | cartoon/house/pic_311.jpg 6 190 | cartoon/house/pic_324.jpg 6 191 | cartoon/house/pic_327.jpg 6 192 | cartoon/house/pic_312.jpg 6 193 | cartoon/house/pic_314.jpg 6 194 | cartoon/house/pic_328.jpg 6 195 | cartoon/house/pic_069.jpg 6 196 | cartoon/house/pic_079.jpg 6 197 | cartoon/person/pic_308.jpg 7 198 | cartoon/person/pic_307.jpg 7 199 | cartoon/person/pic_306.jpg 7 200 | cartoon/person/pic_313.jpg 7 201 | cartoon/person/pic_323.jpg 7 202 | cartoon/person/pic_319.jpg 7 203 | cartoon/person/pic_320.jpg 7 204 | cartoon/person/pic_321.jpg 7 205 | cartoon/person/pic_318.jpg 7 206 | cartoon/person/pic_317.jpg 7 207 | cartoon/person/pic_316.jpg 7 208 | cartoon/person/pic_324.jpg 7 209 | cartoon/person/pic_334.jpg 7 210 | cartoon/person/pic_331.jpg 7 211 | cartoon/person/pic_332.jpg 7 212 | cartoon/person/pic_333.jpg 7 213 | cartoon/person/pic_144.jpg 7 214 | cartoon/person/pic_145.jpg 7 215 | cartoon/person/pic_143.jpg 7 216 | cartoon/person/pic_138.jpg 7 217 | cartoon/person/pic_154.jpg 7 218 | cartoon/person/pic_151.jpg 7 219 | cartoon/person/pic_152.jpg 7 220 | cartoon/person/pic_148.jpg 7 221 | cartoon/person/pic_149.jpg 7 222 | cartoon/person/pic_155.jpg 7 223 | cartoon/person/pic_157.jpg 7 224 | cartoon/person/pic_159.jpg 7 225 | cartoon/person/pic_176.jpg 7 226 | cartoon/person/pic_171.jpg 7 227 | cartoon/person/pic_168.jpg 7 228 | cartoon/person/pic_169.jpg 7 229 | cartoon/person/pic_167.jpg 7 230 | cartoon/person/pic_056.jpg 7 231 | cartoon/person/pic_071.jpg 7 232 | cartoon/person/pic_070.jpg 7 233 | cartoon/person/pic_069.jpg 7 234 | cartoon/person/pic_073.jpg 7 235 | cartoon/person/pic_075.jpg 7 236 | cartoon/person/pic_076.jpg 7 237 | cartoon/person/pic_068.jpg 7 238 | -------------------------------------------------------------------------------- /data/correct_txt_lists/photo_crossval_kfold.txt: -------------------------------------------------------------------------------- 1 | photo/dog/056_0001.jpg 1 2 | photo/dog/056_0002.jpg 1 3 | photo/dog/056_0003.jpg 1 4 | photo/dog/056_0004.jpg 1 5 | photo/dog/056_0005.jpg 1 6 | photo/dog/056_0006.jpg 1 7 | photo/dog/056_0007.jpg 1 8 | photo/dog/056_0009.jpg 1 9 | photo/dog/056_0010.jpg 1 10 | photo/dog/056_0011.jpg 1 11 | photo/dog/056_0012.jpg 1 12 | photo/dog/056_0013.jpg 1 13 | photo/dog/056_0014.jpg 1 14 | photo/dog/056_0015.jpg 1 15 | photo/dog/056_0016.jpg 1 16 | photo/dog/056_0017.jpg 1 17 | photo/dog/056_0018.jpg 1 18 | photo/dog/056_0020.jpg 1 19 | photo/dog/056_0021.jpg 1 20 | photo/elephant/064_0001.jpg 2 21 | photo/elephant/064_0002.jpg 2 22 | photo/elephant/064_0003.jpg 2 23 | photo/elephant/064_0004.jpg 2 24 | photo/elephant/064_0005.jpg 2 25 | photo/elephant/064_0006.jpg 2 26 | photo/elephant/064_0007.jpg 2 27 | photo/elephant/064_0008.jpg 2 28 | photo/elephant/064_0009.jpg 2 29 | photo/elephant/064_0010.jpg 2 30 | photo/elephant/064_0011.jpg 2 31 | photo/elephant/064_0012.jpg 2 32 | photo/elephant/064_0013.jpg 2 33 | photo/elephant/064_0014.jpg 2 34 | photo/elephant/064_0015.jpg 2 35 | photo/elephant/064_0016.jpg 2 36 | photo/elephant/064_0017.jpg 2 37 | photo/elephant/064_0018.jpg 2 38 | photo/elephant/064_0019.jpg 2 39 | photo/elephant/064_0020.jpg 2 40 | photo/elephant/064_0021.jpg 2 41 | photo/giraffe/084_0001.jpg 3 42 | photo/giraffe/084_0002.jpg 3 43 | photo/giraffe/084_0003.jpg 3 44 | photo/giraffe/084_0004.jpg 3 45 | photo/giraffe/084_0005.jpg 3 46 | photo/giraffe/084_0006.jpg 3 47 | photo/giraffe/084_0007.jpg 3 48 | photo/giraffe/084_0008.jpg 3 49 | photo/giraffe/084_0009.jpg 3 50 | photo/giraffe/084_0010.jpg 3 51 | photo/giraffe/084_0011.jpg 3 52 | photo/giraffe/084_0012.jpg 3 53 | photo/giraffe/084_0013.jpg 3 54 | photo/giraffe/084_0014.jpg 3 55 | photo/giraffe/084_0015.jpg 3 56 | photo/giraffe/084_0016.jpg 3 57 | photo/giraffe/084_0017.jpg 3 58 | photo/giraffe/084_0018.jpg 3 59 | photo/giraffe/084_0019.jpg 3 60 | photo/guitar/063_0001.jpg 4 61 | photo/guitar/063_0002.jpg 4 62 | photo/guitar/063_0003.jpg 4 63 | photo/guitar/063_0004.jpg 4 64 | photo/guitar/063_0005.jpg 4 65 | photo/guitar/063_0006.jpg 4 66 | photo/guitar/063_0007.jpg 4 67 | photo/guitar/063_0008.jpg 4 68 | photo/guitar/063_0009.jpg 4 69 | photo/guitar/063_0010.jpg 4 70 | photo/guitar/063_0012.jpg 4 71 | photo/guitar/063_0013.jpg 4 72 | photo/guitar/063_0016.jpg 4 73 | photo/guitar/063_0018.jpg 4 74 | photo/guitar/063_0019.jpg 4 75 | photo/guitar/063_0020.jpg 4 76 | photo/guitar/063_0021.jpg 4 77 | photo/guitar/063_0022.jpg 4 78 | photo/guitar/063_0023.jpg 4 79 | photo/horse/105_0002.jpg 5 80 | photo/horse/105_0003.jpg 5 81 | photo/horse/105_0007.jpg 5 82 | photo/horse/105_0008.jpg 5 83 | photo/horse/105_0009.jpg 5 84 | photo/horse/105_0010.jpg 5 85 | photo/horse/105_0012.jpg 5 86 | photo/horse/105_0013.jpg 5 87 | photo/horse/105_0022.jpg 5 88 | photo/horse/105_0025.jpg 5 89 | photo/horse/105_0028.jpg 5 90 | photo/horse/105_0029.jpg 5 91 | photo/horse/105_0030.jpg 5 92 | photo/horse/105_0033.jpg 5 93 | photo/horse/105_0037.jpg 5 94 | photo/horse/105_0038.jpg 5 95 | photo/horse/105_0041.jpg 5 96 | photo/horse/105_0042.jpg 5 97 | photo/horse/105_0047.jpg 5 98 | photo/horse/105_0048.jpg 5 99 | photo/house/pic_010.jpg 6 100 | photo/house/pic_011.jpg 6 101 | photo/house/pic_012.jpg 6 102 | photo/house/pic_013.jpg 6 103 | photo/house/pic_014.jpg 6 104 | photo/house/pic_015.jpg 6 105 | photo/house/pic_016.jpg 6 106 | photo/house/pic_017.jpg 6 107 | photo/house/pic_018.jpg 6 108 | photo/house/pic_021.jpg 6 109 | photo/house/pic_019.jpg 6 110 | photo/house/pic_022.jpg 6 111 | photo/house/pic_020.jpg 6 112 | photo/house/pic_023.jpg 6 113 | photo/house/pic_024.jpg 6 114 | photo/house/pic_026.jpg 6 115 | photo/house/pic_025.jpg 6 116 | photo/house/pic_027.jpg 6 117 | photo/house/pic_028.jpg 6 118 | photo/house/pic_029.jpg 6 119 | photo/house/pic_031.jpg 6 120 | photo/house/pic_239.jpg 6 121 | photo/house/pic_240.jpg 6 122 | photo/house/pic_241.jpg 6 123 | photo/house/pic_242.jpg 6 124 | photo/house/pic_248.jpg 6 125 | photo/house/pic_246.jpg 6 126 | photo/house/pic_247.jpg 6 127 | photo/house/pic_244.jpg 6 128 | photo/person/253_0001.jpg 7 129 | photo/person/253_0002.jpg 7 130 | photo/person/253_0003.jpg 7 131 | photo/person/253_0004.jpg 7 132 | photo/person/253_0005.jpg 7 133 | photo/person/253_0006.jpg 7 134 | photo/person/253_0007.jpg 7 135 | photo/person/253_0008.jpg 7 136 | photo/person/253_0009.jpg 7 137 | photo/person/253_0010.jpg 7 138 | photo/person/253_0011.jpg 7 139 | photo/person/253_0012.jpg 7 140 | photo/person/253_0013.jpg 7 141 | photo/person/253_0014.jpg 7 142 | photo/person/253_0015.jpg 7 143 | photo/person/253_0016.jpg 7 144 | photo/person/253_0017.jpg 7 145 | photo/person/253_0018.jpg 7 146 | photo/person/253_0019.jpg 7 147 | photo/person/253_0020.jpg 7 148 | photo/person/253_0021.jpg 7 149 | photo/person/253_0022.jpg 7 150 | photo/person/253_0023.jpg 7 151 | photo/person/253_0024.jpg 7 152 | photo/person/253_0025.jpg 7 153 | photo/person/253_0026.jpg 7 154 | photo/person/253_0027.jpg 7 155 | photo/person/253_0028.jpg 7 156 | photo/person/253_0029.jpg 7 157 | photo/person/253_0030.jpg 7 158 | photo/person/253_0031.jpg 7 159 | photo/person/253_0032.jpg 7 160 | photo/person/253_0033.jpg 7 161 | photo/person/253_0034.jpg 7 162 | photo/person/253_0035.jpg 7 163 | photo/person/253_0036.jpg 7 164 | photo/person/253_0037.jpg 7 165 | photo/person/253_0038.jpg 7 166 | photo/person/253_0039.jpg 7 167 | photo/person/253_0040.jpg 7 168 | photo/person/253_0041.jpg 7 169 | photo/person/253_0042.jpg 7 170 | photo/person/253_0043.jpg 7 171 | photo/person/253_0044.jpg 7 172 | -------------------------------------------------------------------------------- /data/correct_txt_lists/sketch_crossval_kfold.txt: -------------------------------------------------------------------------------- 1 | sketch/dog/n02103406_343-1.png 1 2 | sketch/dog/n02103406_343-2.png 1 3 | sketch/dog/n02103406_343-3.png 1 4 | sketch/dog/n02103406_343-4.png 1 5 | sketch/dog/n02103406_343-5.png 1 6 | sketch/dog/n02103406_343-6.png 1 7 | sketch/dog/n02103406_343-7.png 1 8 | sketch/dog/n02103406_343-8.png 1 9 | sketch/dog/n02103406_343-9.png 1 10 | sketch/dog/n02103406_346-1.png 1 11 | sketch/dog/n02103406_346-2.png 1 12 | sketch/dog/n02103406_346-3.png 1 13 | sketch/dog/n02103406_346-4.png 1 14 | sketch/dog/n02103406_346-5.png 1 15 | sketch/dog/n02103406_346-6.png 1 16 | sketch/dog/n02103406_346-7.png 1 17 | sketch/dog/n02103406_371-1.png 1 18 | sketch/dog/n02103406_371-2.png 1 19 | sketch/dog/n02103406_371-3.png 1 20 | sketch/dog/n02103406_371-4.png 1 21 | sketch/dog/n02103406_371-5.png 1 22 | sketch/dog/n02103406_371-6.png 1 23 | sketch/dog/n02103406_371-7.png 1 24 | sketch/dog/n02103406_371-8.png 1 25 | sketch/dog/n02103406_371-9.png 1 26 | sketch/dog/n02103406_371-10.png 1 27 | sketch/dog/n02103406_371-11.png 1 28 | sketch/dog/n02103406_651-1.png 1 29 | sketch/dog/n02103406_651-2.png 1 30 | sketch/dog/n02103406_651-3.png 1 31 | sketch/dog/n02103406_651-4.png 1 32 | sketch/dog/n02103406_651-5.png 1 33 | sketch/dog/n02103406_651-6.png 1 34 | sketch/dog/n02103406_651-7.png 1 35 | sketch/dog/n02103406_865-1.png 1 36 | sketch/dog/n02103406_865-2.png 1 37 | sketch/dog/n02103406_865-3.png 1 38 | sketch/dog/n02103406_865-4.png 1 39 | sketch/dog/n02103406_865-5.png 1 40 | sketch/dog/n02103406_865-6.png 1 41 | sketch/dog/n02103406_865-7.png 1 42 | sketch/dog/n02103406_865-8.png 1 43 | sketch/dog/n02103406_865-9.png 1 44 | sketch/dog/n02103406_865-10.png 1 45 | sketch/dog/n02103406_865-11.png 1 46 | sketch/dog/n02103406_936-1.png 1 47 | sketch/dog/n02103406_936-2.png 1 48 | sketch/dog/n02103406_936-3.png 1 49 | sketch/dog/n02103406_936-4.png 1 50 | sketch/dog/n02103406_936-5.png 1 51 | sketch/dog/n02103406_936-6.png 1 52 | sketch/dog/n02103406_936-7.png 1 53 | sketch/dog/n02103406_936-8.png 1 54 | sketch/dog/n02103406_936-9.png 1 55 | sketch/dog/n02103406_995-1.png 1 56 | sketch/dog/n02103406_995-2.png 1 57 | sketch/dog/n02103406_995-3.png 1 58 | sketch/dog/n02103406_995-4.png 1 59 | sketch/dog/n02103406_995-5.png 1 60 | sketch/dog/n02103406_995-6.png 1 61 | sketch/dog/n02103406_1011-1.png 1 62 | sketch/dog/n02103406_1011-2.png 1 63 | sketch/dog/n02103406_1011-3.png 1 64 | sketch/dog/n02103406_1011-4.png 1 65 | sketch/dog/n02103406_1011-5.png 1 66 | sketch/dog/n02103406_1138-1.png 1 67 | sketch/dog/n02103406_1138-2.png 1 68 | sketch/dog/n02103406_1138-3.png 1 69 | sketch/dog/n02103406_1138-4.png 1 70 | sketch/dog/n02103406_1138-5.png 1 71 | sketch/dog/n02103406_1138-6.png 1 72 | sketch/dog/n02103406_1138-7.png 1 73 | sketch/dog/n02103406_1138-8.png 1 74 | sketch/dog/n02103406_1170-1.png 1 75 | sketch/dog/n02103406_1170-2.png 1 76 | sketch/dog/n02103406_1170-3.png 1 77 | sketch/dog/n02103406_1170-4.png 1 78 | sketch/dog/n02103406_1170-5.png 1 79 | sketch/elephant/n02503517_79-1.png 2 80 | sketch/elephant/n02503517_79-2.png 2 81 | sketch/elephant/n02503517_79-3.png 2 82 | sketch/elephant/n02503517_79-4.png 2 83 | sketch/elephant/n02503517_79-5.png 2 84 | sketch/elephant/n02503517_86-1.png 2 85 | sketch/elephant/n02503517_86-2.png 2 86 | sketch/elephant/n02503517_86-3.png 2 87 | sketch/elephant/n02503517_86-4.png 2 88 | sketch/elephant/n02503517_86-5.png 2 89 | sketch/elephant/n02503517_86-6.png 2 90 | sketch/elephant/n02503517_184-1.png 2 91 | sketch/elephant/n02503517_184-2.png 2 92 | sketch/elephant/n02503517_184-3.png 2 93 | sketch/elephant/n02503517_184-4.png 2 94 | sketch/elephant/n02503517_184-5.png 2 95 | sketch/elephant/n02503517_184-6.png 2 96 | sketch/elephant/n02503517_184-7.png 2 97 | sketch/elephant/n02503517_184-8.png 2 98 | sketch/elephant/n02503517_184-9.png 2 99 | sketch/elephant/n02503517_194-1.png 2 100 | sketch/elephant/n02503517_194-2.png 2 101 | sketch/elephant/n02503517_194-3.png 2 102 | sketch/elephant/n02503517_194-4.png 2 103 | sketch/elephant/n02503517_194-5.png 2 104 | sketch/elephant/n02503517_194-6.png 2 105 | sketch/elephant/n02503517_311-1.png 2 106 | sketch/elephant/n02503517_311-2.png 2 107 | sketch/elephant/n02503517_311-3.png 2 108 | sketch/elephant/n02503517_311-4.png 2 109 | sketch/elephant/n02503517_311-5.png 2 110 | sketch/elephant/n02503517_311-6.png 2 111 | sketch/elephant/n02503517_564-1.png 2 112 | sketch/elephant/n02503517_564-2.png 2 113 | sketch/elephant/n02503517_564-3.png 2 114 | sketch/elephant/n02503517_564-4.png 2 115 | sketch/elephant/n02503517_564-5.png 2 116 | sketch/elephant/n02503517_753-1.png 2 117 | sketch/elephant/n02503517_753-2.png 2 118 | sketch/elephant/n02503517_753-3.png 2 119 | sketch/elephant/n02503517_753-4.png 2 120 | sketch/elephant/n02503517_753-5.png 2 121 | sketch/elephant/n02503517_753-6.png 2 122 | sketch/elephant/n02503517_759-1.png 2 123 | sketch/elephant/n02503517_759-2.png 2 124 | sketch/elephant/n02503517_759-3.png 2 125 | sketch/elephant/n02503517_759-4.png 2 126 | sketch/elephant/n02503517_759-5.png 2 127 | sketch/elephant/n02503517_759-6.png 2 128 | sketch/elephant/n02503517_759-7.png 2 129 | sketch/elephant/n02503517_759-8.png 2 130 | sketch/elephant/n02503517_792-1.png 2 131 | sketch/elephant/n02503517_792-2.png 2 132 | sketch/elephant/n02503517_792-3.png 2 133 | sketch/elephant/n02503517_792-4.png 2 134 | sketch/elephant/n02503517_792-5.png 2 135 | sketch/elephant/n02503517_1292-1.png 2 136 | sketch/elephant/n02503517_1292-2.png 2 137 | sketch/elephant/n02503517_1292-3.png 2 138 | sketch/elephant/n02503517_1292-4.png 2 139 | sketch/elephant/n02503517_1292-5.png 2 140 | sketch/elephant/n02503517_1292-6.png 2 141 | sketch/elephant/n02503517_1292-7.png 2 142 | sketch/elephant/n02503517_1359-1.png 2 143 | sketch/elephant/n02503517_1359-2.png 2 144 | sketch/elephant/n02503517_1359-3.png 2 145 | sketch/elephant/n02503517_1359-4.png 2 146 | sketch/elephant/n02503517_1359-5.png 2 147 | sketch/elephant/n02503517_1359-6.png 2 148 | sketch/elephant/n02503517_1383-1.png 2 149 | sketch/elephant/n02503517_1383-2.png 2 150 | sketch/elephant/n02503517_1383-3.png 2 151 | sketch/elephant/n02503517_1383-4.png 2 152 | sketch/elephant/n02503517_1383-5.png 2 153 | sketch/elephant/n02503517_1383-6.png 2 154 | sketch/giraffe/n02439033_67-1.png 3 155 | sketch/giraffe/n02439033_67-2.png 3 156 | sketch/giraffe/n02439033_67-3.png 3 157 | sketch/giraffe/n02439033_67-4.png 3 158 | sketch/giraffe/n02439033_67-5.png 3 159 | sketch/giraffe/n02439033_67-6.png 3 160 | sketch/giraffe/n02439033_67-7.png 3 161 | sketch/giraffe/n02439033_221-1.png 3 162 | sketch/giraffe/n02439033_221-2.png 3 163 | sketch/giraffe/n02439033_221-3.png 3 164 | sketch/giraffe/n02439033_221-4.png 3 165 | sketch/giraffe/n02439033_221-5.png 3 166 | sketch/giraffe/n02439033_221-6.png 3 167 | sketch/giraffe/n02439033_376-1.png 3 168 | sketch/giraffe/n02439033_376-2.png 3 169 | sketch/giraffe/n02439033_376-3.png 3 170 | sketch/giraffe/n02439033_376-4.png 3 171 | sketch/giraffe/n02439033_376-5.png 3 172 | sketch/giraffe/n02439033_569-1.png 3 173 | sketch/giraffe/n02439033_569-2.png 3 174 | sketch/giraffe/n02439033_569-3.png 3 175 | sketch/giraffe/n02439033_569-4.png 3 176 | sketch/giraffe/n02439033_569-5.png 3 177 | sketch/giraffe/n02439033_628-1.png 3 178 | sketch/giraffe/n02439033_628-2.png 3 179 | sketch/giraffe/n02439033_628-3.png 3 180 | sketch/giraffe/n02439033_628-4.png 3 181 | sketch/giraffe/n02439033_628-5.png 3 182 | sketch/giraffe/n02439033_628-6.png 3 183 | sketch/giraffe/n02439033_628-7.png 3 184 | sketch/giraffe/n02439033_628-8.png 3 185 | sketch/giraffe/n02439033_628-9.png 3 186 | sketch/giraffe/n02439033_628-10.png 3 187 | sketch/giraffe/n02439033_866-1.png 3 188 | sketch/giraffe/n02439033_866-2.png 3 189 | sketch/giraffe/n02439033_866-3.png 3 190 | sketch/giraffe/n02439033_866-4.png 3 191 | sketch/giraffe/n02439033_866-5.png 3 192 | sketch/giraffe/n02439033_866-6.png 3 193 | sketch/giraffe/n02439033_991-1.png 3 194 | sketch/giraffe/n02439033_991-2.png 3 195 | sketch/giraffe/n02439033_991-3.png 3 196 | sketch/giraffe/n02439033_991-4.png 3 197 | sketch/giraffe/n02439033_991-5.png 3 198 | sketch/giraffe/n02439033_991-6.png 3 199 | sketch/giraffe/n02439033_991-7.png 3 200 | sketch/giraffe/n02439033_991-8.png 3 201 | sketch/giraffe/n02439033_991-9.png 3 202 | sketch/giraffe/n02439033_1327-1.png 3 203 | sketch/giraffe/n02439033_1327-2.png 3 204 | sketch/giraffe/n02439033_1327-3.png 3 205 | sketch/giraffe/n02439033_1327-4.png 3 206 | sketch/giraffe/n02439033_1327-5.png 3 207 | sketch/giraffe/n02439033_1508-1.png 3 208 | sketch/giraffe/n02439033_1508-2.png 3 209 | sketch/giraffe/n02439033_1508-3.png 3 210 | sketch/giraffe/n02439033_1508-4.png 3 211 | sketch/giraffe/n02439033_1508-5.png 3 212 | sketch/giraffe/n02439033_1508-6.png 3 213 | sketch/giraffe/n02439033_1508-7.png 3 214 | sketch/giraffe/n02439033_1508-8.png 3 215 | sketch/giraffe/n02439033_1508-9.png 3 216 | sketch/giraffe/n02439033_2486-1.png 3 217 | sketch/giraffe/n02439033_2486-2.png 3 218 | sketch/giraffe/n02439033_2486-3.png 3 219 | sketch/giraffe/n02439033_2486-4.png 3 220 | sketch/giraffe/n02439033_2486-5.png 3 221 | sketch/giraffe/n02439033_2486-6.png 3 222 | sketch/giraffe/n02439033_2500-1.png 3 223 | sketch/giraffe/n02439033_2500-2.png 3 224 | sketch/giraffe/n02439033_2500-3.png 3 225 | sketch/giraffe/n02439033_2500-4.png 3 226 | sketch/giraffe/n02439033_2500-5.png 3 227 | sketch/giraffe/n02439033_2500-6.png 3 228 | sketch/giraffe/n02439033_2677-1.png 3 229 | sketch/giraffe/n02439033_2677-2.png 3 230 | sketch/guitar/7601.png 4 231 | sketch/guitar/7602.png 4 232 | sketch/guitar/7603.png 4 233 | sketch/guitar/7604.png 4 234 | sketch/guitar/7605.png 4 235 | sketch/guitar/7606.png 4 236 | sketch/guitar/7607.png 4 237 | sketch/guitar/7608.png 4 238 | sketch/guitar/7609.png 4 239 | sketch/guitar/7610.png 4 240 | sketch/guitar/7611.png 4 241 | sketch/guitar/7612.png 4 242 | sketch/guitar/7613.png 4 243 | sketch/guitar/7614.png 4 244 | sketch/guitar/7615.png 4 245 | sketch/guitar/7616.png 4 246 | sketch/guitar/7617.png 4 247 | sketch/guitar/7618.png 4 248 | sketch/guitar/7619.png 4 249 | sketch/guitar/7620.png 4 250 | sketch/guitar/7621.png 4 251 | sketch/guitar/7622.png 4 252 | sketch/guitar/7623.png 4 253 | sketch/guitar/7624.png 4 254 | sketch/guitar/7625.png 4 255 | sketch/guitar/7626.png 4 256 | sketch/guitar/7627.png 4 257 | sketch/guitar/7628.png 4 258 | sketch/guitar/7629.png 4 259 | sketch/guitar/7630.png 4 260 | sketch/guitar/7631.png 4 261 | sketch/guitar/7632.png 4 262 | sketch/guitar/7633.png 4 263 | sketch/guitar/7634.png 4 264 | sketch/guitar/7635.png 4 265 | sketch/guitar/7636.png 4 266 | sketch/guitar/7637.png 4 267 | sketch/guitar/7638.png 4 268 | sketch/guitar/7639.png 4 269 | sketch/guitar/7640.png 4 270 | sketch/guitar/7641.png 4 271 | sketch/guitar/7642.png 4 272 | sketch/guitar/7643.png 4 273 | sketch/guitar/7644.png 4 274 | sketch/guitar/7645.png 4 275 | sketch/guitar/7646.png 4 276 | sketch/guitar/7647.png 4 277 | sketch/guitar/7648.png 4 278 | sketch/guitar/7649.png 4 279 | sketch/guitar/7650.png 4 280 | sketch/guitar/7651.png 4 281 | sketch/guitar/7652.png 4 282 | sketch/guitar/7653.png 4 283 | sketch/guitar/7654.png 4 284 | sketch/guitar/7655.png 4 285 | sketch/guitar/7656.png 4 286 | sketch/guitar/7657.png 4 287 | sketch/guitar/7658.png 4 288 | sketch/guitar/7659.png 4 289 | sketch/guitar/7660.png 4 290 | sketch/guitar/7661.png 4 291 | sketch/horse/n02374451_54-1.png 5 292 | sketch/horse/n02374451_54-2.png 5 293 | sketch/horse/n02374451_54-3.png 5 294 | sketch/horse/n02374451_54-4.png 5 295 | sketch/horse/n02374451_54-5.png 5 296 | sketch/horse/n02374451_54-6.png 5 297 | sketch/horse/n02374451_54-7.png 5 298 | sketch/horse/n02374451_54-8.png 5 299 | sketch/horse/n02374451_54-9.png 5 300 | sketch/horse/n02374451_54-10.png 5 301 | sketch/horse/n02374451_245-1.png 5 302 | sketch/horse/n02374451_245-2.png 5 303 | sketch/horse/n02374451_245-3.png 5 304 | sketch/horse/n02374451_245-4.png 5 305 | sketch/horse/n02374451_245-5.png 5 306 | sketch/horse/n02374451_245-6.png 5 307 | sketch/horse/n02374451_257-1.png 5 308 | sketch/horse/n02374451_257-2.png 5 309 | sketch/horse/n02374451_257-3.png 5 310 | sketch/horse/n02374451_257-4.png 5 311 | sketch/horse/n02374451_257-5.png 5 312 | sketch/horse/n02374451_257-6.png 5 313 | sketch/horse/n02374451_257-7.png 5 314 | sketch/horse/n02374451_262-1.png 5 315 | sketch/horse/n02374451_262-2.png 5 316 | sketch/horse/n02374451_262-3.png 5 317 | sketch/horse/n02374451_262-4.png 5 318 | sketch/horse/n02374451_262-5.png 5 319 | sketch/horse/n02374451_262-6.png 5 320 | sketch/horse/n02374451_262-7.png 5 321 | sketch/horse/n02374451_262-8.png 5 322 | sketch/horse/n02374451_262-9.png 5 323 | sketch/horse/n02374451_262-10.png 5 324 | sketch/horse/n02374451_262-11.png 5 325 | sketch/horse/n02374451_262-12.png 5 326 | sketch/horse/n02374451_276-1.png 5 327 | sketch/horse/n02374451_276-2.png 5 328 | sketch/horse/n02374451_276-3.png 5 329 | sketch/horse/n02374451_276-4.png 5 330 | sketch/horse/n02374451_276-5.png 5 331 | sketch/horse/n02374451_276-6.png 5 332 | sketch/horse/n02374451_276-7.png 5 333 | sketch/horse/n02374451_276-8.png 5 334 | sketch/horse/n02374451_276-9.png 5 335 | sketch/horse/n02374451_276-10.png 5 336 | sketch/horse/n02374451_388-2.png 5 337 | sketch/horse/n02374451_388-3.png 5 338 | sketch/horse/n02374451_388-4.png 5 339 | sketch/horse/n02374451_388-5.png 5 340 | sketch/horse/n02374451_388-6.png 5 341 | sketch/horse/n02374451_388-7.png 5 342 | sketch/horse/n02374451_388-8.png 5 343 | sketch/horse/n02374451_388-9.png 5 344 | sketch/horse/n02374451_388-10.png 5 345 | sketch/horse/n02374451_468-1.png 5 346 | sketch/horse/n02374451_468-2.png 5 347 | sketch/horse/n02374451_468-3.png 5 348 | sketch/horse/n02374451_468-4.png 5 349 | sketch/horse/n02374451_468-5.png 5 350 | sketch/horse/n02374451_468-6.png 5 351 | sketch/horse/n02374451_468-7.png 5 352 | sketch/horse/n02374451_468-8.png 5 353 | sketch/horse/n02374451_468-9.png 5 354 | sketch/horse/n02374451_468-10.png 5 355 | sketch/horse/n02374451_490-1.png 5 356 | sketch/horse/n02374451_490-2.png 5 357 | sketch/horse/n02374451_490-3.png 5 358 | sketch/horse/n02374451_490-4.png 5 359 | sketch/horse/n02374451_490-5.png 5 360 | sketch/horse/n02374451_490-6.png 5 361 | sketch/horse/n02374451_490-7.png 5 362 | sketch/horse/n02374451_503-1.png 5 363 | sketch/horse/n02374451_503-2.png 5 364 | sketch/horse/n02374451_503-3.png 5 365 | sketch/horse/n02374451_503-4.png 5 366 | sketch/horse/n02374451_503-5.png 5 367 | sketch/horse/n02374451_503-6.png 5 368 | sketch/horse/n02374451_557-1.png 5 369 | sketch/horse/n02374451_557-2.png 5 370 | sketch/horse/n02374451_557-3.png 5 371 | sketch/horse/n02374451_557-4.png 5 372 | sketch/horse/n02374451_557-5.png 5 373 | sketch/house/8801.png 6 374 | sketch/house/8802.png 6 375 | sketch/house/8803.png 6 376 | sketch/house/8804.png 6 377 | sketch/house/8805.png 6 378 | sketch/house/8806.png 6 379 | sketch/house/8807.png 6 380 | sketch/house/8808.png 6 381 | sketch/house/8809.png 6 382 | sketch/person/12081.png 7 383 | sketch/person/12082.png 7 384 | sketch/person/12083.png 7 385 | sketch/person/12084.png 7 386 | sketch/person/12085.png 7 387 | sketch/person/12086.png 7 388 | sketch/person/12087.png 7 389 | sketch/person/12088.png 7 390 | sketch/person/12089.png 7 391 | sketch/person/12090.png 7 392 | sketch/person/12091.png 7 393 | sketch/person/12092.png 7 394 | sketch/person/12093.png 7 395 | sketch/person/12094.png 7 396 | sketch/person/12095.png 7 397 | sketch/person/12096.png 7 398 | sketch/person/12097.png 7 399 | -------------------------------------------------------------------------------- /data/data_helper.py: -------------------------------------------------------------------------------- 1 | from os.path import join, dirname 2 | 3 | import torch 4 | from torch.utils.data import DataLoader 5 | from torchvision import transforms 6 | 7 | from data import StandardDataset 8 | from data.JigsawLoader import JigsawDataset, JigsawTestDataset, get_split_dataset_info, _dataset_info, JigsawTestDatasetMultiple 9 | from data.concat_dataset import ConcatDataset 10 | from data.JigsawLoader import JigsawNewDataset, JigsawTestNewDataset 11 | 12 | mnist = 'mnist' 13 | mnist_m = 'mnist_m' 14 | svhn = 'svhn' 15 | synth = 'synth' 16 | usps = 'usps' 17 | 18 | vlcs_datasets = ["CALTECH", "LABELME", "PASCAL", "SUN"] 19 | pacs_datasets = ["art_painting", "cartoon", "photo", "sketch"] 20 | office_datasets = ["amazon", "dslr", "webcam"] 21 | digits_datasets = [mnist, mnist, svhn, usps] 22 | available_datasets = office_datasets + pacs_datasets + vlcs_datasets + digits_datasets 23 | #office_paths = {dataset: "/home/enoon/data/images/office/%s" % dataset for dataset in office_datasets} 24 | #pacs_paths = {dataset: "/home/enoon/data/images/PACS/kfold/%s" % dataset for dataset in pacs_datasets} 25 | #vlcs_paths = {dataset: "/home/enoon/data/images/VLCS/%s/test" % dataset for dataset in pacs_datasets} 26 | #paths = {**office_paths, **pacs_paths, **vlcs_paths} 27 | 28 | dataset_std = {mnist: (0.30280363, 0.30280363, 0.30280363), 29 | mnist_m: (0.2384788, 0.22375608, 0.24496263), 30 | svhn: (0.1951134, 0.19804622, 0.19481073), 31 | synth: (0.29410212, 0.2939651, 0.29404707), 32 | usps: (0.25887518, 0.25887518, 0.25887518), 33 | } 34 | 35 | dataset_mean = {mnist: (0.13909429, 0.13909429, 0.13909429), 36 | mnist_m: (0.45920207, 0.46326601, 0.41085603), 37 | svhn: (0.43744073, 0.4437959, 0.4733686), 38 | synth: (0.46332872, 0.46316052, 0.46327512), 39 | usps: (0.17025368, 0.17025368, 0.17025368), 40 | } 41 | 42 | 43 | class Subset(torch.utils.data.Dataset): 44 | def __init__(self, dataset, limit): 45 | indices = torch.randperm(len(dataset))[:limit] 46 | self.dataset = dataset 47 | self.indices = indices 48 | 49 | def __getitem__(self, idx): 50 | return self.dataset[self.indices[idx]] 51 | 52 | def __len__(self): 53 | return len(self.indices) 54 | 55 | 56 | def get_train_dataloader(args, patches): 57 | dataset_list = args.source 58 | assert isinstance(dataset_list, list) 59 | datasets = [] 60 | val_datasets = [] 61 | img_transformer, tile_transformer = get_train_transformers(args) 62 | 63 | if args.task == 'PACS': 64 | for dname in dataset_list: 65 | # name_train, name_val, labels_train, labels_val = get_split_dataset_info(join(dirname(__file__), 'txt_lists', '%s_train.txt' % dname), args.val_size) 66 | name_train, labels_train = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_train_kfold.txt' % dname)) 67 | name_val, labels_val = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_crossval_kfold.txt' % dname)) 68 | 69 | train_dataset = JigsawNewDataset(args, name_train, labels_train, patches=patches, img_transformer=img_transformer, 70 | tile_transformer=tile_transformer, jig_classes=30, bias_whole_image=args.bias_whole_image) 71 | datasets.append(train_dataset) 72 | val_datasets.append( 73 | JigsawTestNewDataset(args, name_val, labels_val, img_transformer=get_val_transformer(args), 74 | patches=patches, jig_classes=30)) 75 | elif args.task == 'VLCS': 76 | for dname in dataset_list: 77 | name_train, name_val, labels_train, labels_val = get_split_dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_train.txt' % dname), args.val_size) 78 | train_dataset = JigsawNewDataset(args, name_train, labels_train, patches=patches, img_transformer=img_transformer, 79 | tile_transformer=tile_transformer, jig_classes=30, 80 | bias_whole_image=args.bias_whole_image) 81 | datasets.append(train_dataset) 82 | val_datasets.append( 83 | JigsawTestNewDataset(args, name_val, labels_val, img_transformer=get_val_transformer(args), 84 | patches=patches, jig_classes=30)) 85 | elif args.task == 'HOME': 86 | for dname in dataset_list: 87 | name_train, name_val, labels_train, labels_val = get_split_dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_full.txt' % dname), 0)#args.val_size 88 | train_dataset = JigsawNewDataset(args, name_train, labels_train, patches=patches, 89 | img_transformer=img_transformer, 90 | tile_transformer=tile_transformer, jig_classes=30, 91 | bias_whole_image=args.bias_whole_image) 92 | datasets.append(train_dataset) 93 | val_datasets.append( 94 | JigsawTestNewDataset(args, name_val, labels_val, img_transformer=get_val_transformer(args), 95 | patches=patches, jig_classes=30)) 96 | else: 97 | raise NotImplementedError('DATA LOADER NOT IMPLEMENTED.') 98 | 99 | dataset = ConcatDataset(datasets) 100 | val_dataset = ConcatDataset(val_datasets) 101 | loader = torch.utils.data.DataLoader(dataset, batch_size=args.batch_size, shuffle=True, num_workers=4, pin_memory=True, drop_last=True) 102 | val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=args.batch_size, shuffle=False, num_workers=4, pin_memory=True, drop_last=False) 103 | return loader, val_loader 104 | 105 | 106 | def get_val_dataloader(args, patches=False): 107 | if args.task == 'PACS': 108 | names, labels = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_test_kfold.txt' % args.target[0])) 109 | elif args.task == 'VLCS': 110 | names, labels = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_test.txt' % args.target[0])) 111 | elif args.task == 'HOME': 112 | names, labels = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_full.txt' % args.target[0])) 113 | else: 114 | raise NotImplementedError('TEST DATA LOADER NOT IMPLEMENTED.') 115 | img_tr = get_val_transformer(args) 116 | val_dataset = JigsawTestNewDataset(args,names, labels, patches=patches, img_transformer=img_tr, jig_classes=30) 117 | dataset = ConcatDataset([val_dataset]) 118 | loader = torch.utils.data.DataLoader(dataset, batch_size=args.batch_size, shuffle=False, num_workers=4, pin_memory=True, drop_last=False) 119 | return loader 120 | 121 | def get_multiple_val_dataloader(args, patches=False): 122 | loaders = [] 123 | 124 | for dname in args.target: 125 | if args.task == 'PACS': 126 | names, labels = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_test_kfold.txt' % dname)) 127 | elif args.task == 'VLCS': 128 | names, labels = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_test.txt' % dname)) 129 | elif args.task == 'HOME': 130 | names, labels = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_full.txt' % dname)) 131 | else: 132 | raise NotImplementedError('TEST DATA LOADER NOT IMPLEMENTED.') 133 | img_tr = get_val_transformer(args) 134 | val_dataset = JigsawTestNewDataset(args,names, labels, patches=patches, img_transformer=img_tr, jig_classes=30) 135 | if args.limit_target and len(val_dataset) > args.limit_target: 136 | val_dataset = Subset(val_dataset, args.limit_target) 137 | print("Using %d subset of val dataset" % args.limit_target) 138 | dataset = ConcatDataset([val_dataset]) 139 | loader = torch.utils.data.DataLoader(dataset, batch_size=args.batch_size, shuffle=False, num_workers=4, pin_memory=True, drop_last=False) 140 | loaders.append(loader) 141 | return loaders 142 | 143 | 144 | # JIGSAW 145 | def get_train_transformers(args): 146 | img_tr = [transforms.RandomResizedCrop((int(args.image_size), int(args.image_size)), (args.min_scale, args.max_scale))] 147 | if args.random_horiz_flip > 0.0: 148 | img_tr.append(transforms.RandomHorizontalFlip(args.random_horiz_flip)) 149 | if args.jitter > 0.0: 150 | img_tr.append(transforms.ColorJitter(brightness=args.jitter, contrast=args.jitter, saturation=args.jitter, hue=min(0.5, args.jitter))) 151 | img_tr.append(transforms.ToTensor()) 152 | img_tr.append(transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])) 153 | tile_tr = [] 154 | tile_tr = tile_tr + [transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])] 155 | 156 | return transforms.Compose(img_tr), transforms.Compose(tile_tr) 157 | 158 | # RSC 159 | # def get_train_transformers(args): 160 | # img_tr = [transforms.RandomResizedCrop((int(args.image_size), int(args.image_size)), (args.min_scale, args.max_scale))] 161 | # #img_tr = [transforms.Resize((args.image_size, args.image_size))] 162 | # #img_tr.append(transforms.RandomHorizontalFlip(args.random_horiz_flip)) 163 | # if args.random_horiz_flip > 0.0: 164 | # img_tr.append(transforms.RandomHorizontalFlip(args.random_horiz_flip)) 165 | # if args.jitter > 0.0: 166 | # img_tr.append(transforms.ColorJitter(brightness=args.jitter, contrast=args.jitter, saturation=args.jitter, hue=min(0.5, args.jitter))) 167 | # img_tr.append(transforms.RandomGrayscale(args.tile_random_grayscale)) 168 | # img_tr.append(transforms.ToTensor()) 169 | # img_tr.append(transforms.Normalize([0.5] * 3, [0.5] * 3))#[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] 170 | 171 | tile_tr = [] 172 | if args.tile_random_grayscale: 173 | tile_tr.append(transforms.RandomGrayscale(args.tile_random_grayscale)) 174 | tile_tr = tile_tr + [transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])] 175 | 176 | return transforms.Compose(img_tr), transforms.Compose(tile_tr) 177 | 178 | 179 | def get_val_transformer(args): 180 | img_tr = [transforms.Resize((args.image_size, args.image_size)), transforms.ToTensor(), 181 | transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])] 182 | return transforms.Compose(img_tr) 183 | 184 | 185 | # def get_target_jigsaw_loader(args): 186 | # img_transformer, tile_transformer = get_train_transformers(args) 187 | # name_train, _, labels_train, _ = get_split_dataset_info(join(dirname(__file__), 'txt_lists', '%s_train.txt' % args.target), 0) 188 | # dataset = JigsawDataset(name_train, labels_train, patches=False, img_transformer=img_transformer, 189 | # tile_transformer=tile_transformer, jig_classes=args.jigsaw_n_classes, bias_whole_image=args.bias_whole_image) 190 | # loader = torch.utils.data.DataLoader(dataset, batch_size=args.batch_size, shuffle=True, num_workers=4, pin_memory=True, drop_last=True) 191 | # return loader 192 | -------------------------------------------------------------------------------- /logs/test/art_painting-cartoon-sketch_to_['photo']/eps30_bs64_lr0.001_class7_jigClass30_jigWeight0.7_TAll_bias0.9_28/events.out.tfevents.1630035028.uqmm522: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/logs/test/art_painting-cartoon-sketch_to_['photo']/eps30_bs64_lr0.001_class7_jigClass30_jigWeight0.7_TAll_bias0.9_28/events.out.tfevents.1630035028.uqmm522 -------------------------------------------------------------------------------- /models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/models/__init__.py -------------------------------------------------------------------------------- /models/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/models/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /models/__pycache__/augnet.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/models/__pycache__/augnet.cpython-36.pyc -------------------------------------------------------------------------------- /models/__pycache__/caffenet.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/models/__pycache__/caffenet.cpython-36.pyc -------------------------------------------------------------------------------- /models/__pycache__/model_factory.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/models/__pycache__/model_factory.cpython-36.pyc -------------------------------------------------------------------------------- /models/__pycache__/resnet.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/models/__pycache__/resnet.cpython-36.pyc -------------------------------------------------------------------------------- /models/augnet.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | 5 | 6 | class AugNet(nn.Module): 7 | def __init__(self, noise_lv): 8 | super(AugNet, self).__init__() 9 | ############# Trainable Parameters 10 | self.noise_lv = nn.Parameter(torch.zeros(1)) 11 | self.shift_var = nn.Parameter(torch.empty(3,216,216)) 12 | nn.init.normal_(self.shift_var, 1, 0.1) 13 | self.shift_mean = nn.Parameter(torch.zeros(3, 216, 216)) 14 | nn.init.normal_(self.shift_mean, 0, 0.1) 15 | 16 | self.shift_var2 = nn.Parameter(torch.empty(3, 212, 212)) 17 | nn.init.normal_(self.shift_var2, 1, 0.1) 18 | self.shift_mean2 = nn.Parameter(torch.zeros(3, 212, 212)) 19 | nn.init.normal_(self.shift_mean2, 0, 0.1) 20 | 21 | self.shift_var3 = nn.Parameter(torch.empty(3, 208, 208)) 22 | nn.init.normal_(self.shift_var3, 1, 0.1) 23 | self.shift_mean3 = nn.Parameter(torch.zeros(3, 208, 208)) 24 | nn.init.normal_(self.shift_mean3, 0, 0.1) 25 | 26 | self.shift_var4 = nn.Parameter(torch.empty(3, 220, 220)) 27 | nn.init.normal_(self.shift_var4, 1, 0.1) 28 | self.shift_mean4 = nn.Parameter(torch.zeros(3, 220, 220)) 29 | nn.init.normal_(self.shift_mean4, 0, 0.1) 30 | 31 | # self.shift_var5 = nn.Parameter(torch.empty(3, 206, 206)) 32 | # nn.init.normal_(self.shift_var5, 1, 0.1) 33 | # self.shift_mean5 = nn.Parameter(torch.zeros(3, 206, 206)) 34 | # nn.init.normal_(self.shift_mean5, 0, 0.1) 35 | # 36 | # self.shift_var6 = nn.Parameter(torch.empty(3, 204, 204)) 37 | # nn.init.normal_(self.shift_var6, 1, 0.5) 38 | # self.shift_mean6 = nn.Parameter(torch.zeros(3, 204, 204)) 39 | # nn.init.normal_(self.shift_mean6, 0, 0.1) 40 | 41 | # self.shift_var7 = nn.Parameter(torch.empty(3, 202, 202)) 42 | # nn.init.normal_(self.shift_var7, 1, 0.5) 43 | # self.shift_mean7 = nn.Parameter(torch.zeros(3, 202, 202)) 44 | # nn.init.normal_(self.shift_mean7, 0, 0.1) 45 | 46 | self.norm = nn.InstanceNorm2d(3) 47 | 48 | ############## Fixed Parameters (For MI estimation 49 | self.spatial = nn.Conv2d(3, 3, 9).cuda() 50 | self.spatial_up = nn.ConvTranspose2d(3, 3, 9).cuda() 51 | 52 | self.spatial2 = nn.Conv2d(3, 3, 13).cuda() 53 | self.spatial_up2 = nn.ConvTranspose2d(3, 3, 13).cuda() 54 | 55 | self.spatial3 = nn.Conv2d(3, 3, 17).cuda() 56 | self.spatial_up3 = nn.ConvTranspose2d(3, 3, 17).cuda() 57 | 58 | 59 | self.spatial4 = nn.Conv2d(3, 3, 5).cuda() 60 | self.spatial_up4 = nn.ConvTranspose2d(3, 3, 5).cuda() 61 | 62 | 63 | # self.spatial5 = nn.Conv2d(3, 3, 19).cuda() 64 | # self.spatial_up5 = nn.ConvTranspose2d(3, 3, 19).cuda() 65 | # + 66 | # list(self.spatial5.parameters()) + list(self.spatial_up5.parameters()) 67 | # #+ 68 | # 69 | # self.spatial6 = nn.Conv2d(3, 3, 21).cuda() 70 | # self.spatial_up6 = nn.ConvTranspose2d(3, 3, 21).cuda() 71 | # list(self.spatial6.parameters()) + list(self.spatial_up6.parameters()) 72 | # self.spatial7 = nn.Conv2d(3, 3, 23).cuda() 73 | # self.spatial_up7= nn.ConvTranspose2d(3, 3, 23).cuda() 74 | # list(self.spatial7.parameters()) + list(self.spatial_up7.parameters()) 75 | self.color = nn.Conv2d(3, 3, 1).cuda() 76 | 77 | for param in list(list(self.color.parameters()) + 78 | list(self.spatial.parameters()) + list(self.spatial_up.parameters()) + 79 | list(self.spatial2.parameters()) + list(self.spatial_up2.parameters()) + 80 | list(self.spatial3.parameters()) + list(self.spatial_up3.parameters()) + 81 | list(self.spatial4.parameters()) + list(self.spatial_up4.parameters()) 82 | ): 83 | param.requires_grad=False 84 | 85 | def forward(self, x, estimation=False): 86 | if not estimation: 87 | spatial = nn.Conv2d(3, 3, 9).cuda() 88 | spatial_up = nn.ConvTranspose2d(3, 3, 9).cuda() 89 | 90 | spatial2 = nn.Conv2d(3, 3, 13).cuda() 91 | spatial_up2 = nn.ConvTranspose2d(3, 3, 13).cuda() 92 | 93 | spatial3 = nn.Conv2d(3, 3, 17).cuda() 94 | spatial_up3 = nn.ConvTranspose2d(3, 3, 17).cuda() 95 | 96 | spatial4 = nn.Conv2d(3, 3, 5).cuda() 97 | spatial_up4 = nn.ConvTranspose2d(3, 3, 5).cuda() 98 | 99 | # spatial5 = nn.Conv2d(3, 3, 19).cuda() 100 | # spatial_up5 = nn.ConvTranspose2d(3, 3, 19).cuda() 101 | # 102 | # spatial6 = nn.Conv2d(3, 3, 21).cuda() 103 | # spatial_up6 = nn.ConvTranspose2d(3, 3, 21).cuda() 104 | 105 | # spatial7 = nn.Conv2d(3, 3, 23).cuda() 106 | # spatial_up7 = nn.ConvTranspose2d(3, 3, 23).cuda() 107 | 108 | color = nn.Conv2d(3,3,1).cuda() 109 | weight = torch.randn(5) 110 | 111 | x = x + torch.randn_like(x) * self.noise_lv * 0.01 112 | x_c = torch.tanh(F.dropout(color(x), p=.2)) 113 | 114 | x_sdown = spatial(x) 115 | x_sdown = self.shift_var * self.norm(x_sdown) + self.shift_mean 116 | x_s = torch.tanh(spatial_up(x_sdown)) 117 | # 118 | x_s2down = spatial2(x) 119 | x_s2down = self.shift_var2 * self.norm(x_s2down) + self.shift_mean2 120 | x_s2 = torch.tanh(spatial_up2(x_s2down)) 121 | # 122 | # 123 | x_s3down = spatial3(x) 124 | x_s3down = self.shift_var3 * self.norm(x_s3down) + self.shift_mean3 125 | x_s3 = torch.tanh(spatial_up3(x_s3down)) 126 | 127 | # 128 | x_s4down = spatial4(x) 129 | x_s4down = self.shift_var4 * self.norm(x_s4down) + self.shift_mean4 130 | x_s4 = torch.tanh(spatial_up4(x_s4down)) 131 | 132 | # x_s5down = spatial5(x) 133 | # x_s5down = self.shift_var5 * self.norm(x_s5down) + self.shift_mean5 134 | # x_s5 = torch.tanh(spatial_up5(x_s5down))+ weight[5] * x_s5 135 | 136 | # x_s6down = spatial6(x) 137 | # x_s6down = self.shift_var6 * self.norm(x_s6down) + self.shift_mean6 138 | # x_s6 = torch.tanh(spatial_up6(x_s6down))+ weight[6] * x_s6 139 | 140 | # x_s7down = spatial7(x) 141 | # x_s7down = self.shift_var7 * self.norm(x_s7down) + self.shift_mean7 142 | # x_s7 = torch.tanh(spatial_up7(x_s7down))+ weight[7] * x_s7 143 | 144 | output = (weight[0] * x_c + weight[1] * x_s + weight[2] * x_s2+ weight[3] * x_s3 + weight[4]*x_s4) / weight.sum() 145 | else: 146 | x = x + torch.randn_like(x) * self.noise_lv * 0.01 147 | x_c = torch.tanh(self.color(x)) 148 | # 149 | x_sdown = self.spatial(x) 150 | x_sdown = self.shift_var * self.norm(x_sdown) + self.shift_mean 151 | x_s = torch.tanh(self.spatial_up(x_sdown)) 152 | # 153 | x_s2down = self.spatial2(x) 154 | x_s2down = self.shift_var2 * self.norm(x_s2down) + self.shift_mean2 155 | x_s2 = torch.tanh(self.spatial_up2(x_s2down)) 156 | 157 | x_s3down = self.spatial3(x) 158 | x_s3down = self.shift_var3 * self.norm(x_s3down) + self.shift_mean3 159 | x_s3 = torch.tanh(self.spatial_up3(x_s3down)) 160 | 161 | x_s4down = self.spatial4(x) 162 | x_s4down = self.shift_var4 * self.norm(x_s4down) + self.shift_mean4 163 | x_s4 = torch.tanh(self.spatial_up4(x_s4down)) 164 | 165 | # x_s5down = self.spatial5(x) 166 | # x_s5down = self.shift_var5 * self.norm(x_s5down) + self.shift_mean5 167 | # x_s5 = torch.tanh(self.spatial_up5(x_s5down)) + x_s5 168 | 169 | # x_s6down = self.spatial6(x) 170 | # x_s6down = self.shift_var6 * self.norm(x_s6down) + self.shift_mean6 171 | # x_s6 = torch.tanh(self.spatial_up6(x_s6down))+ x_s6 172 | 173 | # x_s7down = self.spatial7(x) 174 | # x_s7down = self.shift_var7 * self.norm(x_s7down) + self.shift_mean7 175 | # x_s7 = torch.tanh(self.spatial_up7(x_s7down))+ x_s7 176 | 177 | output = (x_c + x_s + x_s2 + x_s3 + x_s4) / 5 178 | return output 179 | -------------------------------------------------------------------------------- /models/caffenet.py: -------------------------------------------------------------------------------- 1 | import os 2 | from collections import OrderedDict 3 | from itertools import chain 4 | 5 | import torch 6 | from torch import nn as nn 7 | 8 | from utils.util import * 9 | 10 | 11 | class AlexNetCaffe(nn.Module): 12 | def __init__(self, n_classes=100, dropout=True): 13 | super(AlexNetCaffe, self).__init__() 14 | print("Using Caffe AlexNet") 15 | self.features = nn.Sequential(OrderedDict([ 16 | ("conv1", nn.Conv2d(3, 96, kernel_size=11, stride=4)), 17 | ("relu1", nn.ReLU(inplace=True)), 18 | ("pool1", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 19 | ("norm1", nn.LocalResponseNorm(5, 1.e-4, 0.75)), 20 | ("conv2", nn.Conv2d(96, 256, kernel_size=5, padding=2, groups=2)), 21 | ("relu2", nn.ReLU(inplace=True)), 22 | ("pool2", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 23 | ("norm2", nn.LocalResponseNorm(5, 1.e-4, 0.75)), 24 | ("conv3", nn.Conv2d(256, 384, kernel_size=3, padding=1)), 25 | ("relu3", nn.ReLU(inplace=True)), 26 | ("conv4", nn.Conv2d(384, 384, kernel_size=3, padding=1, groups=2)), 27 | ("relu4", nn.ReLU(inplace=True)), 28 | ("conv5", nn.Conv2d(384, 256, kernel_size=3, padding=1, groups=2)), 29 | ("relu5", nn.ReLU(inplace=True)), 30 | ("pool5", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 31 | ])) 32 | self.classifier = nn.Sequential(OrderedDict([ 33 | ("fc6", nn.Linear(256 * 6 * 6, 4096)), 34 | ("relu6", nn.ReLU(inplace=True)), 35 | ("drop6", nn.Dropout()), 36 | ("fc7", nn.Linear(4096, 4096)), 37 | ("relu7", nn.ReLU(inplace=True)), 38 | ("drop7", nn.Dropout())])) 39 | 40 | self.classifier_l = nn.Linear(512, n_classes) 41 | self.p_logvar = nn.Sequential(nn.Linear(4096, 512), 42 | nn.ReLU()) 43 | self.p_mu = nn.Sequential(nn.Linear(4096, 512), 44 | nn.LeakyReLU()) 45 | 46 | def get_params(self, base_lr): 47 | return [{"params": self.features.parameters(), "lr": 0.}, 48 | {"params": chain(self.classifier.parameters(), self.classifier_l.parameters(), self.p_logvar.parameters(), self.p_mu.parameters() 49 | ), "lr": base_lr}] 50 | 51 | def is_patch_based(self): 52 | return False 53 | 54 | def forward(self, x, train=True): 55 | end_points={} 56 | x = self.features(x*57.6) #57.6 is the magic number needed to bring torch data back to the range of caffe data, based on used std 57 | x = x.view(x.size(0), -1) 58 | x = self.classifier(x) 59 | 60 | logvar = self.p_logvar(x) 61 | mu = self.p_mu(x) 62 | end_points['logvar'] = logvar 63 | end_points['mu'] = mu 64 | 65 | if train: 66 | x = reparametrize(mu, logvar) 67 | else: 68 | x = mu 69 | 70 | end_points['Embedding'] = x 71 | x = self.classifier_l(x) 72 | end_points['Predictions'] = nn.functional.softmax(input=x, dim=-1) 73 | 74 | 75 | return x, end_points 76 | 77 | 78 | class Flatten(nn.Module): 79 | def forward(self, x): 80 | return x.view(x.size(0), -1) 81 | 82 | def caffenet(classes): 83 | model = AlexNetCaffe(classes) 84 | for m in model.modules(): 85 | if isinstance(m, nn.Linear): 86 | nn.init.xavier_uniform_(m.weight, .1) 87 | nn.init.constant_(m.bias, 0.) 88 | 89 | state_dict = torch.load(os.path.join(os.path.dirname(__file__), "pretrained/alexnet_caffe.pth.tar")) 90 | del state_dict["classifier.fc8.weight"] 91 | del state_dict["classifier.fc8.bias"] 92 | model.load_state_dict(state_dict, strict=False) 93 | 94 | return model 95 | 96 | # class AlexNetCaffeAvgPool(AlexNetCaffe): 97 | # def __init__(self, jigsaw_classes=1000, n_classes=100): 98 | # super().__init__() 99 | # print("Global Average Pool variant") 100 | # self.features = nn.Sequential(OrderedDict([ 101 | # ("conv1", nn.Conv2d(3, 96, kernel_size=11, stride=4)), 102 | # ("relu1", nn.ReLU(inplace=True)), 103 | # ("pool1", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 104 | # ("norm1", nn.LocalResponseNorm(5, 1.e-4, 0.75)), 105 | # ("conv2", nn.Conv2d(96, 256, kernel_size=5, padding=2, groups=2)), 106 | # ("relu2", nn.ReLU(inplace=True)), 107 | # ("pool2", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 108 | # ("norm2", nn.LocalResponseNorm(5, 1.e-4, 0.75)), 109 | # ("conv3", nn.Conv2d(256, 384, kernel_size=3, padding=1)), 110 | # ("relu3", nn.ReLU(inplace=True)), 111 | # ("conv4", nn.Conv2d(384, 384, kernel_size=3, padding=1, groups=2)), 112 | # ("relu4", nn.ReLU(inplace=True)), 113 | # ("conv5", nn.Conv2d(384, 256, kernel_size=3, padding=1, groups=2)), 114 | # # ("relu5", nn.ReLU(inplace=True)), 115 | # # ("pool5", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 116 | # ])) 117 | # self.classifier = nn.Sequential( 118 | # nn.BatchNorm2d(256), 119 | # nn.ReLU(inplace=True), 120 | # nn.Conv2d(256, 512, kernel_size=3, padding=1, bias=False), 121 | # nn.BatchNorm2d(512), 122 | # nn.ReLU(inplace=True), 123 | # nn.Conv2d(512, 1024, kernel_size=3, padding=1, bias=False), 124 | # nn.BatchNorm2d(1024), 125 | # nn.ReLU(inplace=True)) 126 | # 127 | # self.jigsaw_classifier = nn.Sequential( 128 | # nn.Conv2d(1024, 128, kernel_size=3, stride=2, bias=False), 129 | # nn.BatchNorm2d(128), 130 | # nn.ReLU(inplace=True), 131 | # Flatten(), 132 | # nn.Linear(128 * 6 * 6, jigsaw_classes) 133 | # ) 134 | # self.class_classifier = nn.Sequential( 135 | # nn.Conv2d(1024, n_classes, kernel_size=3, padding=1, bias=False), 136 | # nn.AvgPool2d(13), 137 | # Flatten(), 138 | # # nn.Linear(1024, n_classes) 139 | # ) 140 | # 141 | # for m in self.modules(): 142 | # if isinstance(m, nn.Conv2d): 143 | # nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') 144 | # nn.init.constant_(m.bias, 0.) 145 | # elif isinstance(m, nn.BatchNorm2d): 146 | # nn.init.constant_(m.weight, 1) 147 | # nn.init.constant_(m.bias, 0) 148 | 149 | 150 | 151 | # class AlexNetCaffeFC7(AlexNetCaffe): 152 | # def __init__(self, jigsaw_classes=1000, n_classes=100, dropout=True): 153 | # super(AlexNetCaffeFC7, self).__init__() 154 | # print("FC7 branching variant") 155 | # self.features = nn.Sequential(OrderedDict([ 156 | # ("conv1", nn.Conv2d(3, 96, kernel_size=11, stride=4)), 157 | # ("relu1", nn.ReLU(inplace=True)), 158 | # ("pool1", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 159 | # ("norm1", nn.LocalResponseNorm(5, 1.e-4, 0.75)), 160 | # ("conv2", nn.Conv2d(96, 256, kernel_size=5, padding=2, groups=2)), 161 | # ("relu2", nn.ReLU(inplace=True)), 162 | # ("pool2", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 163 | # ("norm2", nn.LocalResponseNorm(5, 1.e-4, 0.75)), 164 | # ("conv3", nn.Conv2d(256, 384, kernel_size=3, padding=1)), 165 | # ("relu3", nn.ReLU(inplace=True)), 166 | # ("conv4", nn.Conv2d(384, 384, kernel_size=3, padding=1, groups=2)), 167 | # ("relu4", nn.ReLU(inplace=True)), 168 | # ("conv5", nn.Conv2d(384, 256, kernel_size=3, padding=1, groups=2)), 169 | # ("relu5", nn.ReLU(inplace=True)), 170 | # ("pool5", nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)), 171 | # ])) 172 | # self.classifier = nn.Sequential(OrderedDict([ 173 | # ("fc6", nn.Linear(256 * 6 * 6, 4096)), 174 | # ("relu6", nn.ReLU(inplace=True)), 175 | # ("drop6", nn.Dropout() if dropout else Id())])) 176 | # 177 | # self.jigsaw_classifier = nn.Sequential(OrderedDict([ 178 | # ("fc7", nn.Linear(4096, 4096)), 179 | # ("relu7", nn.ReLU(inplace=True)), 180 | # ("drop7", nn.Dropout()), 181 | # ("fc8", nn.Linear(4096, jigsaw_classes))])) 182 | # self.class_classifier = nn.Sequential(OrderedDict([ 183 | # ("fc7", nn.Linear(4096, 4096)), 184 | # ("relu7", nn.ReLU(inplace=True)), 185 | # ("drop7", nn.Dropout()), 186 | # ("fc8", nn.Linear(4096, n_classes))])) 187 | 188 | 189 | 190 | 191 | 192 | # def caffenet_gap(jigsaw_classes, classes): 193 | # model = AlexNetCaffe(jigsaw_classes, classes) 194 | # state_dict = torch.load(os.path.join(os.path.dirname(__file__), "pretrained/alexnet_caffe.pth.tar")) 195 | # del state_dict["classifier.fc6.weight"] 196 | # del state_dict["classifier.fc6.bias"] 197 | # del state_dict["classifier.fc7.weight"] 198 | # del state_dict["classifier.fc7.bias"] 199 | # del state_dict["classifier.fc8.weight"] 200 | # del state_dict["classifier.fc8.bias"] 201 | # model.load_state_dict(state_dict, strict=False) 202 | # # weights are initialized in the constructor 203 | # return model 204 | # 205 | # 206 | # def caffenet_fc7(jigsaw_classes, classes): 207 | # model = AlexNetCaffeFC7(jigsaw_classes, classes) 208 | # state_dict = torch.load("models/pretrained/alexnet_caffe.pth.tar") 209 | # state_dict["jigsaw_classifier.fc7.weight"] = state_dict["classifier.fc7.weight"] 210 | # state_dict["jigsaw_classifier.fc7.bias"] = state_dict["classifier.fc7.bias"] 211 | # state_dict["class_classifier.fc7.weight"] = state_dict["classifier.fc7.weight"] 212 | # state_dict["class_classifier.fc7.bias"] = state_dict["classifier.fc7.bias"] 213 | # del state_dict["classifier.fc8.weight"] 214 | # del state_dict["classifier.fc8.bias"] 215 | # del state_dict["classifier.fc7.weight"] 216 | # del state_dict["classifier.fc7.bias"] 217 | # model.load_state_dict(state_dict, strict=False) 218 | # nn.init.xavier_uniform_(model.jigsaw_classifier.fc8.weight, .1) 219 | # nn.init.constant_(model.jigsaw_classifier.fc8.bias, 0.) 220 | # nn.init.xavier_uniform_(model.class_classifier.fc8.weight, .1) 221 | # nn.init.constant_(model.class_classifier.fc8.bias, 0.) 222 | # return model 223 | -------------------------------------------------------------------------------- /models/model_factory.py: -------------------------------------------------------------------------------- 1 | from models import caffenet 2 | # from models import mnist 3 | # from models import patch_based 4 | # from models import alexnet 5 | 6 | nets_map = { 7 | 'caffenet': caffenet.caffenet, 8 | } 9 | 10 | def get_network(name): 11 | if name not in nets_map: 12 | raise ValueError('Name of network unknown %s' % name) 13 | 14 | def get_network_fn(**kwargs): 15 | return nets_map[name](**kwargs) 16 | 17 | return get_network_fn 18 | -------------------------------------------------------------------------------- /models/model_utils.py: -------------------------------------------------------------------------------- 1 | from torch.autograd import Function 2 | 3 | 4 | class GradientKillerLayer(Function): 5 | @staticmethod 6 | def forward(ctx, x, **kwargs): 7 | return x.view_as(x) 8 | 9 | @staticmethod 10 | def backward(ctx, grad_output): 11 | return None, None 12 | 13 | 14 | class ReverseLayerF(Function): 15 | @staticmethod 16 | def forward(ctx, x, lambda_val): 17 | ctx.lambda_val = lambda_val 18 | 19 | return x.view_as(x) 20 | 21 | @staticmethod 22 | def backward(ctx, grad_output): 23 | output = grad_output.neg() * ctx.lambda_val 24 | 25 | return output, None -------------------------------------------------------------------------------- /models/resnet.py: -------------------------------------------------------------------------------- 1 | from torch import nn 2 | from torch.utils import model_zoo 3 | from torchvision.models.resnet import BasicBlock, model_urls, Bottleneck 4 | import torch 5 | import math 6 | from torch import nn as nn 7 | from utils.util import * 8 | 9 | 10 | class ResNet(nn.Module): 11 | def __init__(self, block, layers,classes=7): 12 | self.inplanes = 64 13 | super(ResNet, self).__init__() 14 | self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, 15 | bias=False) 16 | self.bn1 = nn.BatchNorm2d(64) 17 | self.relu = nn.ReLU(inplace=True) 18 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1) 19 | self.layer1 = self._make_layer(block, 64, layers[0]) 20 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2) 21 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2) 22 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2) 23 | self.avgpool = nn.AvgPool2d(7, stride=1) 24 | self.class_classifier = nn.Linear(512, classes) 25 | 26 | self.p_logvar = nn.Sequential(nn.Linear(512 * block.expansion, 512), 27 | nn.ReLU()) 28 | self.p_mu = nn.Sequential(nn.Linear(512 * block.expansion, 512), 29 | nn.LeakyReLU()) 30 | for m in self.modules(): 31 | if isinstance(m, nn.Conv2d): 32 | nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') 33 | elif isinstance(m, nn.BatchNorm2d): 34 | nn.init.constant_(m.weight, 1) 35 | nn.init.constant_(m.bias, 0) 36 | 37 | def _make_layer(self, block, planes, blocks, stride=1): 38 | downsample = None 39 | if stride != 1 or self.inplanes != planes * block.expansion: 40 | downsample = nn.Sequential( 41 | nn.Conv2d(self.inplanes, planes * block.expansion, 42 | kernel_size=1, stride=stride, bias=False), 43 | nn.BatchNorm2d(planes * block.expansion), 44 | ) 45 | 46 | layers = [] 47 | layers.append(block(self.inplanes, planes, stride, downsample)) 48 | self.inplanes = planes * block.expansion 49 | for i in range(1, blocks): 50 | layers.append(block(self.inplanes, planes)) 51 | 52 | return nn.Sequential(*layers) 53 | def forward(self, x, gt=None, train=True, classifiy=False, **kwargs): 54 | end_points = {} 55 | x = self.conv1(x) 56 | x = self.bn1(x) 57 | x = self.relu(x) 58 | x = self.maxpool(x) 59 | 60 | x = self.layer1(x) 61 | x = self.layer2(x) 62 | x = self.layer3(x) 63 | x = self.layer4(x) 64 | x = self.avgpool(x) 65 | x = x.view(x.size(0), -1) 66 | 67 | 68 | logvar = self.p_logvar(x) 69 | mu = self.p_mu(x) 70 | # 71 | end_points['logvar'] = logvar 72 | end_points['mu'] = mu 73 | 74 | if train: 75 | x = reparametrize(mu, logvar) 76 | else: 77 | x = mu 78 | end_points['Embedding'] = x 79 | x = self.class_classifier(x) 80 | end_points['Predictions'] = nn.functional.softmax(input=x, dim=-1) 81 | 82 | return x, end_points 83 | 84 | 85 | def resnet18(pretrained=True, **kwargs): 86 | """Constructs a ResNet-18 model. 87 | Args: 88 | pretrained (bool): If True, returns a model pre-trained on ImageNet 89 | """ 90 | model = ResNet(BasicBlock, [2, 2, 2, 2], **kwargs) 91 | if pretrained: 92 | model.load_state_dict(model_zoo.load_url(model_urls['resnet18']), strict=False) 93 | return model 94 | 95 | def resnet50(pretrained=True, **kwargs): 96 | """Constructs a ResNet-50 model. 97 | Args: 98 | pretrained (bool): If True, returns a model pre-trained on ImageNet 99 | """ 100 | model = ResNet(Bottleneck, [3, 4, 6, 3], **kwargs) 101 | if pretrained: 102 | model.load_state_dict(model_zoo.load_url(model_urls['resnet50']), strict=False) 103 | return model -------------------------------------------------------------------------------- /run_main_PACS.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | max=1 4 | 5 | for i in $(seq 1 $max); do 6 | python train.py \ 7 | --task='PACS' \ 8 | --seed=1 \ 9 | --alpha1=1\ 10 | --alpha2=1\ 11 | --beta=0.1\ 12 | --lr_sc=0.005 13 | done 14 | -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | import torch 4 | import os 5 | from torch import nn 6 | from torch.nn import functional as F 7 | from data import data_helper 8 | from data.data_helper import available_datasets 9 | from models import model_factory 10 | 11 | from utils.Logger import Logger 12 | from utils.util import * 13 | 14 | from models.augnet import AugNet 15 | from models.caffenet import caffenet 16 | from models.resnet import resnet18 17 | from utils.contrastive_loss import SupConLoss 18 | 19 | from torchvision import transforms 20 | 21 | def get_args(): 22 | parser = argparse.ArgumentParser(description="Script to launch jigsaw training", 23 | formatter_class=argparse.ArgumentDefaultsHelpFormatter) 24 | parser.add_argument("--source", choices=available_datasets, help="Source", nargs='+') 25 | parser.add_argument("--target", choices=available_datasets, help="Target") 26 | parser.add_argument("--batch_size", "-b", type=int, default=64, help="Batch size") 27 | parser.add_argument("--image_size", type=int, default=224, help="Image size") 28 | parser.add_argument("--seed", type=int, default=1, help="random seed") 29 | # data aug stuff 30 | parser.add_argument("--min_scale", default=0.8, type=float, help="Minimum scale percent") 31 | parser.add_argument("--max_scale", default=1.0, type=float, help="Maximum scale percent") 32 | parser.add_argument("--random_horiz_flip", default=0.5, type=float, help="Chance of random horizontal flip") 33 | parser.add_argument("--jitter", default=0., type=float, help="Color jitter amount") 34 | parser.add_argument("--tile_random_grayscale", default=0.1, type=float, help="Chance of randomly greyscaling a tile") 35 | # 36 | parser.add_argument("--limit_source", default=None, type=int, 37 | help="If set, it will limit the number of training samples") 38 | parser.add_argument("--limit_target", default=None, type=int, 39 | help="If set, it will limit the number of testing samples") 40 | parser.add_argument("--learning_rate", "-l", type=float, default=.001, help="Learning rate") 41 | parser.add_argument("--epochs", "-e", type=int, default=30, help="Number of epochs") 42 | parser.add_argument("--network", choices=model_factory.nets_map.keys(), help="Which network to use", default="resnet18") 43 | parser.add_argument("--tf_logger", type=bool, default=True, help="If true will save tensorboard compatible logs") 44 | parser.add_argument("--val_size", type=float, default="0.1", help="Validation size (between 0 and 1)") 45 | parser.add_argument("--folder_name", default='test', help="Used by the logger to save logs") 46 | parser.add_argument("--bias_whole_image", default=0.9, type=float, help="If set, will bias the training procedure to show more often the whole image") 47 | parser.add_argument("--TTA", type=bool, default=False, help="Activate test time data augmentation") 48 | parser.add_argument("--classify_only_sane", default=False, type=bool, help="If true, the network will only try to classify the non scrambled images") 49 | parser.add_argument("--train_all", default=True, type=bool, help="If true, all network weights will be trained") 50 | parser.add_argument("--suffix", default="", help="Suffix for the logger") 51 | parser.add_argument("--nesterov", default=False, type=bool, help="Use nesterov") 52 | parser.add_argument("--visualization", default=False, type=bool) 53 | parser.add_argument("--epochs_min", type=int, default=1, 54 | help="") 55 | parser.add_argument("--eval", default=False, type=bool) 56 | parser.add_argument("--ckpt", default="logs/model", type=str) 57 | # 58 | parser.add_argument("--alpha1", default=1, type=float) 59 | parser.add_argument("--alpha2", default=1, type=float) 60 | parser.add_argument("--beta", default=0.1, type=float) 61 | parser.add_argument("--lr_sc", default=10, type=float) 62 | parser.add_argument("--task", default='PACS', type=str) 63 | 64 | return parser.parse_args() 65 | 66 | class Trainer: 67 | def __init__(self, args, device): 68 | self.args = args 69 | self.device = device 70 | self.counterk=0 71 | 72 | # Caffe Alexnet for singleDG task, Leave-one-out PACS DG task. 73 | # self.extractor = caffenet(args.n_classes).to(device) 74 | self.extractor = resnet18(classes=args.n_classes).to(device) 75 | self.convertor = AugNet(1).cuda() 76 | 77 | self.source_loader, self.val_loader = data_helper.get_train_dataloader(args, patches=False) 78 | if len(self.args.target) > 1: 79 | self.target_loader = data_helper.get_multiple_val_dataloader(args, patches=False) 80 | else: 81 | self.target_loader = data_helper.get_val_dataloader(args, patches=False) 82 | 83 | self.test_loaders = {"val": self.val_loader, "test": self.target_loader} 84 | self.len_dataloader = len(self.source_loader) 85 | 86 | # Get optimizers and Schedulers, self.discriminator 87 | self.optimizer = torch.optim.SGD(self.extractor.parameters(), lr=self.args.learning_rate, nesterov=True, momentum=0.9, weight_decay=0.0005) 88 | self.scheduler = torch.optim.lr_scheduler.StepLR(self.optimizer, step_size=int(self.args.epochs *0.8)) 89 | 90 | self.convertor_opt = torch.optim.SGD(self.convertor.parameters(), lr=self.args.lr_sc) 91 | 92 | self.n_classes = args.n_classes 93 | self.centroids = 0 94 | self.d_representation = 0 95 | self.flag = False 96 | self.con = SupConLoss() 97 | if args.target in args.source: 98 | self.target_id = args.source.index(args.target) 99 | print("Target in source: %d" % self.target_id) 100 | print(args.source) 101 | else: 102 | self.target_id = None 103 | 104 | 105 | def _do_epoch(self, epoch=None): 106 | criterion = nn.CrossEntropyLoss() 107 | self.extractor.train() 108 | tran = transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) 109 | for it, ((data, _, class_l), _, idx) in enumerate(self.source_loader): 110 | data, class_l = data.to(self.device), class_l.to(self.device) 111 | 112 | # Stage 1 113 | self.optimizer.zero_grad() 114 | 115 | # Aug 116 | inputs_max = tran(torch.sigmoid(self.convertor(data))) 117 | inputs_max = inputs_max * 0.6 + data * 0.4 118 | data_aug = torch.cat([inputs_max, data]) 119 | labels = torch.cat([class_l, class_l]) 120 | 121 | # forward 122 | logits, tuple = self.extractor(data_aug) 123 | 124 | # Maximize MI between z and z_hat 125 | emb_src = F.normalize(tuple['Embedding'][:class_l.size(0)]).unsqueeze(1) 126 | emb_aug = F.normalize(tuple['Embedding'][class_l.size(0):]).unsqueeze(1) 127 | con = self.con(torch.cat([emb_src, emb_aug], dim=1), class_l) 128 | 129 | # Likelihood 130 | mu = tuple['mu'][class_l.size(0):] 131 | logvar = tuple['logvar'][class_l.size(0):] 132 | y_samples = tuple['Embedding'][:class_l.size(0)] 133 | likeli = -loglikeli(mu, logvar, y_samples) 134 | 135 | # Total loss & backward 136 | class_loss = criterion(logits, labels) 137 | loss = class_loss + self.args.alpha2*likeli + self.args.alpha1*con 138 | loss.backward() 139 | self.optimizer.step() 140 | _, cls_pred = logits.max(dim=1) 141 | 142 | # STAGE 2 143 | inputs_max =tran(torch.sigmoid(self.convertor(data, estimation=True))) 144 | inputs_max = inputs_max * 0.6 + data * 0.4 145 | data_aug = torch.cat([inputs_max, data]) 146 | 147 | # forward with the adapted parameters 148 | outputs, tuples = self.extractor(x=data_aug) 149 | 150 | # Upper bound MI 151 | mu = tuples['mu'][class_l.size(0):] 152 | logvar = tuples['logvar'][class_l.size(0):] 153 | y_samples = tuples['Embedding'][:class_l.size(0)] 154 | div = club(mu, logvar, y_samples) 155 | # div = criterion(outputs, labels) 156 | 157 | # Semantic consistency 158 | e = tuples['Embedding'] 159 | e1 = e[:class_l.size(0)] 160 | e2 = e[class_l.size(0):] 161 | dist = conditional_mmd_rbf(e1, e2, class_l, num_class=self.args.n_classes) 162 | 163 | # Total loss and backward 164 | self.convertor_opt.zero_grad() 165 | (dist + self.args.beta * div).backward() 166 | self.convertor_opt.step() 167 | self.logger.log(it, len(self.source_loader), 168 | {"class": class_loss.item(), 169 | "AUG:": torch.sum(cls_pred[:class_l.size(0)] == class_l.data).item() / class_l.shape[0], 170 | }, 171 | {"class": torch.sum(cls_pred[class_l.size(0):] == class_l.data).item()}, 172 | class_l.shape[0]) 173 | 174 | del loss, class_loss, logits 175 | 176 | self.extractor.eval() 177 | with torch.no_grad(): 178 | if len(self.args.target) > 1: 179 | avg_acc = 0 180 | for i, loader in enumerate(self.target_loader): 181 | total = len(loader.dataset) 182 | 183 | class_correct = self.do_test(loader) 184 | 185 | class_acc = float(class_correct) / total 186 | self.logger.log_test('test', {"class": class_acc}) 187 | 188 | avg_acc += class_acc 189 | avg_acc = avg_acc / len(self.args.target) 190 | print(avg_acc) 191 | self.results["test"][self.current_epoch] = avg_acc 192 | else: 193 | for phase, loader in self.test_loaders.items(): 194 | if self.args.task == 'HOME' and phase == 'val': 195 | continue 196 | total = len(loader.dataset) 197 | 198 | class_correct = self.do_test(loader) 199 | 200 | class_acc = float(class_correct) / total 201 | self.logger.log_test(phase, {"class": class_acc}) 202 | self.results[phase][self.current_epoch] = class_acc 203 | 204 | def do_test(self, loader): 205 | class_correct = 0 206 | for it, ((data, nouse, class_l), _, _) in enumerate(loader): 207 | data, nouse, class_l = data.to(self.device), nouse.to(self.device), class_l.to(self.device) 208 | 209 | 210 | z = self.extractor(data, train=False)[0] 211 | 212 | 213 | _, cls_pred = z.max(dim=1) 214 | 215 | class_correct += torch.sum(cls_pred == class_l.data) 216 | 217 | return class_correct 218 | 219 | def do_training(self): 220 | self.logger = Logger(self.args, update_frequency=30) 221 | self.results = {"val": torch.zeros(self.args.epochs), "test": torch.zeros(self.args.epochs)} 222 | current_high = 0 223 | for self.current_epoch in range(self.args.epochs): 224 | self.logger.new_epoch(self.scheduler.get_lr()) 225 | self._do_epoch(self.current_epoch) 226 | self.scheduler.step() 227 | if self.results["test"][self.current_epoch] > current_high: 228 | print('Saving Best model ...') 229 | torch.save(self.extractor.state_dict(), os.path.join('/home/zijian/Desktop/DG/L2D/large_images/logs/model/', 'best_'+self.args.target[0])) 230 | current_high = self.results["test"][self.current_epoch] 231 | val_res = self.results["val"] 232 | test_res = self.results["test"] 233 | idx_best = test_res.argmax() 234 | print("Best val %g, corresponding test %g - best test: %g, best test epoch: %g" % ( 235 | val_res.max(), test_res[idx_best], test_res.max(), idx_best)) 236 | self.logger.save_best(test_res[idx_best], test_res.max()) 237 | return self.logger 238 | 239 | def do_eval(self): 240 | self.logger = Logger(self.args, update_frequency=30) 241 | self.results = {"val": torch.zeros(self.args.epochs), "test": torch.zeros(self.args.epochs)} 242 | current_high = 0 243 | self.logger.new_epoch(self.scheduler.get_lr()) 244 | self.extractor.eval() 245 | with torch.no_grad(): 246 | for phase, loader in self.test_loaders.items(): 247 | total = len(loader.dataset) 248 | 249 | class_correct = self.do_test(loader) 250 | 251 | class_acc = float(class_correct) / total 252 | self.logger.log_test(phase, {"class": class_acc}) 253 | self.results[phase][0] = class_acc 254 | 255 | val_res = self.results["val"] 256 | test_res = self.results["test"] 257 | idx_best = test_res.argmax() 258 | print("Best val %g, corresponding test %g - best test: %g, best test epoch: %g" % ( 259 | val_res.max(), test_res[idx_best], test_res.max(), idx_best)) 260 | self.logger.save_best(test_res[idx_best], test_res.max()) 261 | return self.logger 262 | 263 | def main(): 264 | args = get_args() 265 | 266 | if args.task == 'PACS': 267 | args.n_classes = 7 268 | args.source = ['art_painting', 'cartoon', 'sketch'] 269 | args.target = ['photo'] 270 | # args.source = ['art_painting', 'photo', 'cartoon'] 271 | # args.target = ['sketch'] 272 | # args.source = ['art_painting', 'photo', 'sketch'] 273 | # args.target = ['cartoon'] 274 | # args.source = ['photo', 'cartoon', 'sketch'] 275 | # args.target = ['art_painting'] 276 | # --------------------- Single DG 277 | # args.source = ['photo'] 278 | # args.target = ['art_painting', 'cartoon', 'sketch'] 279 | 280 | elif args.task == 'VLCS': 281 | args.n_classes = 5 282 | # args.source = ['CALTECH', 'LABELME', 'SUN'] 283 | # args.target = ['PASCAL'] 284 | args.source = ['LABELME', 'SUN', 'PASCAL'] 285 | args.target = ['CALTECH'] 286 | # args.source = ['CALTECH', 'PASCAL', 'LABELME' ] 287 | # args.target = ['SUN'] 288 | # args.source = ['CALTECH', 'PASCAL', 'SUN'] 289 | # args.target = ['LABELME'] 290 | 291 | elif args.task == 'HOME': 292 | args.n_classes = 65 293 | # args.source = ['real', 'clip', 'product'] 294 | # args.target = ['art'] 295 | # args.source = ['art', 'real', 'product'] 296 | # args.target = ['clip'] 297 | # args.source = ['art', 'clip', 'real'] 298 | # args.target = ['product'] 299 | args.source = ['art', 'clip', 'product'] 300 | args.target = ['real'] 301 | # -------------------------------------------- 302 | print("Target domain: {}".format(args.target)) 303 | fix_all_seed(args.seed) 304 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 305 | 306 | 307 | trainer = Trainer(args, device) 308 | if not args.eval: 309 | trainer.do_training() 310 | else: 311 | trainer.extractor.load_state_dict(torch.load('')) 312 | trainer.do_eval() 313 | 314 | 315 | 316 | if __name__ == "__main__": 317 | torch.backends.cudnn.benchmark = True 318 | torch.backends.cudnn.deterministic = True 319 | os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" 320 | os.environ["CUDA_VISIBLE_DEVICES"] = "0" 321 | main() 322 | -------------------------------------------------------------------------------- /utils/Logger.py: -------------------------------------------------------------------------------- 1 | from time import time 2 | 3 | from os.path import join, dirname 4 | 5 | from .tf_logger import TFLogger 6 | 7 | _log_path = join(dirname(__file__), '../logs') 8 | 9 | 10 | # high level wrapper for tf_logger.TFLogger 11 | class Logger(): 12 | def __init__(self, args, update_frequency=10): 13 | self.current_epoch = 0 14 | self.max_epochs = args.epochs 15 | self.last_update = time() 16 | self.start_time = time() 17 | self._clean_epoch_stats() 18 | self.update_f = update_frequency 19 | folder, logname = self.get_name_from_args(args) 20 | log_path = join(_log_path, folder, logname) 21 | if args.tf_logger: 22 | self.tf_logger = TFLogger(log_path) 23 | # print("Saving to %s" % log_path) 24 | else: 25 | self.tf_logger = None 26 | self.current_iter = 0 27 | 28 | def new_epoch(self, learning_rates): 29 | self.current_epoch += 1 30 | self.last_update = time() 31 | self.lrs = learning_rates 32 | print("New epoch - lr: %s" % ", ".join([str(lr) for lr in self.lrs])) 33 | self._clean_epoch_stats() 34 | if self.tf_logger: 35 | for n, v in enumerate(self.lrs): 36 | self.tf_logger.scalar_summary("aux/lr%d" % n, v, self.current_iter) 37 | 38 | def log(self, it, iters, losses, samples_right, total_samples): 39 | self.current_iter += 1 40 | loss_string = ", ".join(["%s : %.3f" % (k, v) for k, v in losses.items()]) 41 | for k, v in samples_right.items(): 42 | past = self.epoch_stats.get(k, 0.0) 43 | self.epoch_stats[k] = past + v 44 | self.total += total_samples 45 | acc_string = ", ".join(["%s : %.2f" % (k, 100 * (v / total_samples)) for k, v in samples_right.items()]) 46 | if it % self.update_f == 0: 47 | print("%d/%d of epoch %d/%d %s - acc %s [bs:%d]" % (it, iters, self.current_epoch, self.max_epochs, loss_string, 48 | acc_string, total_samples)) 49 | # update tf log 50 | if self.tf_logger: 51 | for k, v in losses.items(): self.tf_logger.scalar_summary("train/loss_%s" % k, v, self.current_iter) 52 | 53 | def _clean_epoch_stats(self): 54 | self.epoch_stats = {} 55 | self.total = 0 56 | 57 | def log_test(self, phase, accuracies): 58 | print("Accuracies on %s: " % phase + ", ".join(["%s : %.2f" % (k, v * 100) for k, v in accuracies.items()])) 59 | if self.tf_logger: 60 | for k, v in accuracies.items(): self.tf_logger.scalar_summary("%s/acc_%s" % (phase, k), v, self.current_iter) 61 | 62 | def save_best(self, val_test, best_test): 63 | print("It took %g" % (time() - self.start_time)) 64 | if self.tf_logger: 65 | for x in range(10): 66 | self.tf_logger.scalar_summary("best/from_val_test", val_test, x) 67 | self.tf_logger.scalar_summary("best/max_test", best_test, x) 68 | 69 | @staticmethod 70 | def get_name_from_args(args): 71 | folder_name = "%s_to_%s" % ("-".join(sorted(args.source)), args.target) 72 | if args.folder_name: 73 | folder_name = join(args.folder_name, folder_name) 74 | name = "eps%d_bs%d_lr%g_class%d_jigClass%d_jigWeight%g" % (args.epochs, args.batch_size, args.learning_rate, args.n_classes, 75 | 30, 0.7) 76 | # if args.ooo_weight > 0: 77 | # name += "_oooW%g" % args.ooo_weight 78 | if args.train_all: 79 | name += "_TAll" 80 | if args.bias_whole_image: 81 | name += "_bias%g" % args.bias_whole_image 82 | if args.classify_only_sane: 83 | name += "_classifyOnlySane" 84 | if args.TTA: 85 | name += "_TTA" 86 | try: 87 | name += "_entropy%g_jig_tW%g" % (args.entropy_weight, args.target_weight) 88 | except AttributeError: 89 | pass 90 | if args.suffix: 91 | name += "_%s" % args.suffix 92 | name += "_%d" % int(time() % 1000) 93 | return folder_name, name 94 | -------------------------------------------------------------------------------- /utils/__pycache__/Logger.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/utils/__pycache__/Logger.cpython-36.pyc -------------------------------------------------------------------------------- /utils/__pycache__/contrastive_loss.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/utils/__pycache__/contrastive_loss.cpython-36.pyc -------------------------------------------------------------------------------- /utils/__pycache__/tf_logger.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/utils/__pycache__/tf_logger.cpython-36.pyc -------------------------------------------------------------------------------- /utils/__pycache__/util.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BUserName/Learning_to_diversify/00d80f04db8526282fc182ba628ec8aa68580389/utils/__pycache__/util.cpython-36.pyc -------------------------------------------------------------------------------- /utils/contrastive_loss.py: -------------------------------------------------------------------------------- 1 | """ 2 | Author: Yonglong Tian (yonglong@mit.edu) 3 | Date: May 07, 2020 4 | """ 5 | from __future__ import print_function 6 | 7 | import torch 8 | import torch.nn as nn 9 | 10 | 11 | class SupConLoss(nn.Module): 12 | """Supervised Contrastive Learning: https://arxiv.org/pdf/2004.11362.pdf. 13 | It also supports the unsupervised contrastive loss in SimCLR""" 14 | def __init__(self, temperature=0.07, contrast_mode='all', 15 | base_temperature=0.07): 16 | super(SupConLoss, self).__init__() 17 | self.temperature = temperature 18 | self.contrast_mode = contrast_mode 19 | self.base_temperature = base_temperature 20 | 21 | def forward(self, features, labels=None, mask=None): 22 | """Compute loss for model. If both `labels` and `mask` are None, 23 | it degenerates to SimCLR unsupervised loss: 24 | https://arxiv.org/pdf/2002.05709.pdf 25 | Args: 26 | features: hidden vector of shape [bsz, n_views, ...]. 27 | labels: ground truth of shape [bsz]. 28 | mask: contrastive mask of shape [bsz, bsz], mask_{i,j}=1 if sample j 29 | has the same class as sample i. Can be asymmetric. 30 | Returns: 31 | A loss scalar. 32 | """ 33 | device = (torch.device('cuda') 34 | if features.is_cuda 35 | else torch.device('cpu')) 36 | 37 | if len(features.shape) < 3: 38 | raise ValueError('`features` needs to be [bsz, n_views, ...],' 39 | 'at least 3 dimensions are required') 40 | if len(features.shape) > 3: 41 | features = features.view(features.shape[0], features.shape[1], -1) 42 | 43 | batch_size = features.shape[0] 44 | if labels is not None and mask is not None: 45 | raise ValueError('Cannot define both `labels` and `mask`') 46 | elif labels is None and mask is None: 47 | mask = torch.eye(batch_size, dtype=torch.float32).to(device) 48 | elif labels is not None: 49 | labels = labels.contiguous().view(-1, 1) 50 | if labels.shape[0] != batch_size: 51 | raise ValueError('Num of labels does not match num of features') 52 | mask = torch.eq(labels, labels.T).float().to(device) 53 | else: 54 | mask = mask.float().to(device) 55 | 56 | contrast_count = features.shape[1] 57 | contrast_feature = torch.cat(torch.unbind(features, dim=1), dim=0) 58 | if self.contrast_mode == 'one': 59 | anchor_feature = features[:, 0] 60 | anchor_count = 1 61 | elif self.contrast_mode == 'all': 62 | anchor_feature = contrast_feature 63 | anchor_count = contrast_count 64 | else: 65 | raise ValueError('Unknown mode: {}'.format(self.contrast_mode)) 66 | 67 | # compute logits 68 | anchor_dot_contrast = torch.div( 69 | torch.matmul(anchor_feature, contrast_feature.T), 70 | self.temperature) 71 | # for numerical stability 72 | logits_max, _ = torch.max(anchor_dot_contrast, dim=1, keepdim=True) 73 | logits = anchor_dot_contrast - logits_max.detach() 74 | 75 | # tile mask 76 | mask = mask.repeat(anchor_count, contrast_count) 77 | # mask-out self-contrast cases 78 | logits_mask = torch.scatter( 79 | torch.ones_like(mask), 80 | 1, 81 | torch.arange(batch_size * anchor_count).view(-1, 1).to(device), 82 | 0 83 | ) 84 | mask = mask * logits_mask 85 | 86 | # compute log_prob 87 | exp_logits = torch.exp(logits) * logits_mask 88 | log_prob = logits - torch.log(exp_logits.sum(1, keepdim=True)) 89 | 90 | # compute mean of log-likelihood over positive 91 | mean_log_prob_pos = (mask * log_prob).sum(1) / mask.sum(1) 92 | 93 | # loss 94 | loss = - (self.temperature / self.base_temperature) * mean_log_prob_pos 95 | loss = loss.view(anchor_count, batch_size).mean() 96 | 97 | return loss -------------------------------------------------------------------------------- /utils/tf_logger.py: -------------------------------------------------------------------------------- 1 | # Code referenced from https://gist.github.com/gyglim/1f8dfb1b5c82627ae3efcfbbadb9f514 2 | import tensorflow as tf 3 | import numpy as np 4 | import scipy.misc 5 | try: 6 | from StringIO import StringIO # Python 2.7 7 | except ImportError: 8 | from io import BytesIO # Python 3.x 9 | 10 | 11 | class TFLogger(object): 12 | 13 | def __init__(self, log_dir): 14 | """Create a summary writer logging to log_dir.""" 15 | tf.compat.v1.disable_eager_execution() 16 | self.writer = tf.compat.v1.summary.FileWriter(log_dir) 17 | 18 | def scalar_summary(self, tag, value, step): 19 | """Log a scalar variable.""" 20 | summary = tf.compat.v1.Summary(value=[tf.compat.v1.Summary.Value(tag=tag, simple_value=value)]) 21 | self.writer.add_summary(summary, step) 22 | 23 | def image_summary(self, tag, images, step): 24 | """Log a list of images.""" 25 | 26 | img_summaries = [] 27 | for i, img in enumerate(images): 28 | # Write the image to a string 29 | try: 30 | s = StringIO() 31 | except: 32 | s = BytesIO() 33 | scipy.misc.toimage(img).save(s, format="png") 34 | 35 | # Create an Image object 36 | img_sum = tf.Summary.Image(encoded_image_string=s.getvalue(), 37 | height=img.shape[0], 38 | width=img.shape[1]) 39 | # Create a Summary value 40 | img_summaries.append(tf.Summary.Value(tag='%s/%d' % (tag, i), image=img_sum)) 41 | 42 | # Create and write Summary 43 | summary = tf.Summary(value=img_summaries) 44 | self.writer.add_summary(summary, step) 45 | 46 | def histo_summary(self, tag, values, step, bins=1000): 47 | """Log a histogram of the tensor of values.""" 48 | 49 | # Create a histogram using numpy 50 | counts, bin_edges = np.histogram(values, bins=bins) 51 | 52 | # Fill the fields of the histogram proto 53 | hist = tf.HistogramProto() 54 | hist.min = float(np.min(values)) 55 | hist.max = float(np.max(values)) 56 | hist.num = int(np.prod(values.shape)) 57 | hist.sum = float(np.sum(values)) 58 | hist.sum_squares = float(np.sum(values**2)) 59 | 60 | # Drop the start of the first bin 61 | bin_edges = bin_edges[1:] 62 | 63 | # Add bin edges and counts 64 | for edge in bin_edges: 65 | hist.bucket_limit.append(edge) 66 | for c in counts: 67 | hist.bucket.append(c) 68 | 69 | # Create and write Summary 70 | summary = tf.Summary(value=[tf.Summary.Value(tag=tag, histo=hist)]) 71 | self.writer.add_summary(summary, step) 72 | self.writer.flush() 73 | -------------------------------------------------------------------------------- /utils/util.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import torch.nn.functional as F 4 | import random 5 | 6 | def write_log(log, log_path): 7 | f = open(log_path, mode='a') 8 | f.write(str(log)) 9 | f.write('\n') 10 | f.close() 11 | 12 | 13 | def fix_python_seed(seed): 14 | print('seed-----------python', seed) 15 | random.seed(seed) 16 | np.random.seed(seed) 17 | 18 | 19 | def fix_torch_seed(seed): 20 | print('seed-----------torch', seed) 21 | torch.manual_seed(seed) 22 | torch.cuda.manual_seed_all(seed) 23 | 24 | 25 | def fix_all_seed(seed): 26 | print('seed-----------all device', seed) 27 | random.seed(seed) 28 | np.random.seed(seed) 29 | torch.manual_seed(seed) 30 | torch.cuda.manual_seed_all(seed) 31 | 32 | def kl_divergence(mu, logvar): 33 | batch_size = mu.size(0) 34 | assert batch_size != 0 35 | if mu.data.ndimension() == 4: 36 | mu = mu.view(mu.size(0), mu.size(1)) 37 | if logvar.data.ndimension() == 4: 38 | logvar = logvar.view(logvar.size(0), logvar.size(1)) 39 | 40 | klds = -0.5*(1 + logvar - mu.pow(2) - logvar.exp()) 41 | total_kld = klds.sum(1).mean(0, True) 42 | 43 | return total_kld 44 | 45 | def optimize_beta(beta, MI_loss,alpha2=1e-3): 46 | beta_new = max(0, beta + alpha2 * (MI_loss - 1) ) 47 | 48 | # return the updated beta value: 49 | return beta_new 50 | 51 | def project_l2_ball(z): 52 | """ project the vectors in z onto the l2 unit norm ball""" 53 | return z / np.maximum(np.sqrt(np.sum(z**2, axis=1))[:, np.newaxis], 1) 54 | 55 | 56 | def slerp(low, high, batch): 57 | low = low.repeat(batch, 1) 58 | high = high.repeat(batch, 1) 59 | val = ((0.6 - 0.4) * torch.rand(batch,) + 0.4).cuda() 60 | omega = torch.acos((low*high).sum(1)) 61 | so = torch.sin(omega) 62 | res = (torch.sin((1.0-val)*omega)/so).unsqueeze(1)*low + (torch.sin(val*omega)/so).unsqueeze(1)*high 63 | return res 64 | 65 | 66 | def get_source_centroid(feature, label, num_class, flag=True, centroids=None): 67 | new_centroid = torch.zeros(num_class, feature.size(1)).cuda() 68 | 69 | dist = 0 70 | for i in range(num_class): 71 | class_mask = (label == i) 72 | 73 | if flag: 74 | centroids = centroids.cuda() 75 | new_centroid[i] = 0.5 * torch.mean(feature[class_mask], dim=0) + 0.5 * centroids[i] 76 | 77 | else: 78 | new_centroid[i] = torch.mean(feature[class_mask], dim=0) 79 | dist += torch.mean(torch.nn.functional.pairwise_distance(feature[class_mask], new_centroid[i])) 80 | return new_centroid, dist 81 | 82 | def optimize_beta(beta, distance,alpha2=0.5): 83 | beta_new = min(1, beta + alpha2 * distance ) 84 | 85 | # return the updated beta value: 86 | return beta_new 87 | 88 | def get_domain_vector_avg(feature, prototype, label, num_class): 89 | dist = torch.zeros(num_class).cuda() 90 | for i in range(num_class): 91 | class_feature = feature[label == i] 92 | dist[i] = torch.sqrt((prototype[i] - class_feature).pow(2).sum(1)).mean() 93 | return dist.mean() + dist.var() 94 | 95 | 96 | def guassian_kernel(source, target, kernel_mul=2.0, kernel_num=5, fix_sigma=None): 97 | n_samples = int(source.size()[0])+int(target.size()[0]) 98 | total = torch.cat([source, target], dim=0) 99 | total0 = total.unsqueeze(0).expand(int(total.size(0)), int(total.size(0)), int(total.size(1))) 100 | total1 = total.unsqueeze(1).expand(int(total.size(0)), int(total.size(0)), int(total.size(1))) 101 | L2_distance = ((total0-total1)**2).sum(2) 102 | if fix_sigma: 103 | bandwidth = fix_sigma 104 | else: 105 | bandwidth = torch.sum(L2_distance.data) / (n_samples**2-n_samples) 106 | bandwidth /= kernel_mul ** (kernel_num // 2) 107 | bandwidth_list = [bandwidth * (kernel_mul**i) for i in range(kernel_num)] 108 | kernel_val = [torch.exp(-L2_distance / bandwidth_temp) for bandwidth_temp in bandwidth_list] 109 | return sum(kernel_val)#/len(kernel_val) 110 | 111 | 112 | def mmd_rbf(source, target, kernel_mul=2.0, kernel_num=5, fix_sigma=None, ver=2): 113 | batch_size = int(source.size()[0]) 114 | kernels = guassian_kernel(source, target, kernel_mul=kernel_mul, kernel_num=kernel_num, fix_sigma=fix_sigma) 115 | 116 | loss = 0 117 | 118 | if ver == 1: 119 | for i in range(batch_size): 120 | s1, s2 = i, (i + 1) % batch_size 121 | t1, t2 = s1 + batch_size, s2 + batch_size 122 | loss += kernels[s1, s2] + kernels[t1, t2] 123 | loss -= kernels[s1, t2] + kernels[s2, t1] 124 | loss = loss.abs_() / float(batch_size) 125 | elif ver == 2: 126 | XX = kernels[:batch_size, :batch_size] 127 | YY = kernels[batch_size:, batch_size:] 128 | XY = kernels[:batch_size, batch_size:] 129 | YX = kernels[batch_size:, :batch_size] 130 | loss = torch.mean(XX + YY - XY - YX) 131 | else: 132 | raise ValueError('ver == 1 or 2') 133 | 134 | return loss 135 | 136 | def conditional_mmd_rbf(source, target, label, num_class, kernel_mul=2.0, kernel_num=5, fix_sigma=None, ver=2): 137 | loss = 0 138 | for i in range(num_class): 139 | source_i = source[label==i] 140 | target_i = target[label==i] 141 | loss += mmd_rbf(source_i, target_i) 142 | return loss / num_class 143 | 144 | def domain_mmd_rbf(source, target, num_domain, d_label, kernel_mul=2.0, kernel_num=5, fix_sigma=None, ver=2): 145 | loss = 0 146 | loss_overall = mmd_rbf(source, target) 147 | for i in range(num_domain): 148 | source_i = source[d_label == i] 149 | target_i = target[d_label == i] 150 | loss += mmd_rbf(source_i, target_i) 151 | return loss_overall - loss / num_domain 152 | 153 | def domain_conditional_mmd_rbf(source, target, num_domain, d_label, num_class, c_label): 154 | loss = 0 155 | for i in range(num_class): 156 | source_i = source[c_label == i] 157 | target_i = target[c_label == i] 158 | d_label_i = d_label[c_label == i] 159 | loss_c = mmd_rbf(source_i, target_i) 160 | loss_d = 0 161 | for j in range(num_domain): 162 | source_ij = source_i[d_label_i == j] 163 | target_ij = target_i[d_label_i == j] 164 | loss_d += mmd_rbf(source_ij, target_ij) 165 | loss += loss_c - loss_d / num_domain 166 | 167 | return loss / num_class 168 | 169 | def DAN_Linear(source, target, kernel_mul=2.0, kernel_num=5, fix_sigma=None): 170 | batch_size = int(source.size()[0]) 171 | kernels = guassian_kernel(source, target, 172 | kernel_mul=kernel_mul, kernel_num=kernel_num, fix_sigma=fix_sigma) 173 | 174 | # Linear version 175 | loss = 0 176 | for i in range(batch_size): 177 | s1, s2 = i, (i+1)%batch_size 178 | t1, t2 = s1+batch_size, s2+batch_size 179 | loss += kernels[s1, s2] + kernels[t1, t2] 180 | loss -= kernels[s1, t2] + kernels[s2, t1] 181 | return loss / float(batch_size) 182 | 183 | def mmd_linear(src_fea, tar_fea): 184 | delta = (src_fea - tar_fea).squeeze(0) 185 | loss = torch.pow(torch.mean(torch.mm(delta, torch.transpose(delta, 0, 1))),2) 186 | return torch.sqrt(loss) 187 | 188 | def diverse_conditional_mmd(source, target, label, num_class, iter, d_label=None, num_domain=3): 189 | loss = 0 190 | selected_d = iter % num_domain 191 | for i in range(num_class): 192 | source_i = source[label == i] 193 | target_i = target[label == i] 194 | d_label_i = d_label[label == i] 195 | 196 | source_is = source_i[d_label_i == selected_d] 197 | target_is = target_i[d_label_i == selected_d] 198 | 199 | source_iu = source_i[d_label_i != selected_d] 200 | target_iu = target_i[d_label_i != selected_d] 201 | 202 | if source_is.size(0) > 0 and source_iu.size(0) > 0: 203 | loss += (mmd_rbf(source_iu, target_iu) - 0.4 * mmd_rbf(source_is, target_is)) 204 | 205 | return torch.clamp_min_(loss / num_class, 0) 206 | 207 | 208 | def entropy_loss(x): 209 | out = F.softmax(x, dim=1) * F.log_softmax(x, dim=1) 210 | out = -1.0 * out.sum(dim=1) 211 | return out.mean() 212 | 213 | def reparametrize(mu, logvar, factor=0.2): 214 | std = logvar.div(2).exp() 215 | eps = std.data.new(std.size()).normal_() 216 | return mu + factor*std*eps 217 | 218 | def loglikeli(mu, logvar, y_samples): 219 | return (-(mu - y_samples)**2 /logvar.exp()-logvar).mean()#.sum(dim=1).mean(dim=0) 220 | 221 | def club(mu, logvar, y_samples): 222 | 223 | sample_size = y_samples.shape[0] 224 | # random_index = torch.randint(sample_size, (sample_size,)).long() 225 | random_index = torch.randperm(sample_size).long() 226 | 227 | positive = - (mu - y_samples) ** 2 / logvar.exp() 228 | negative = - (mu - y_samples[random_index]) ** 2 / logvar.exp() 229 | upper_bound = (positive.sum(dim=-1) - negative.sum(dim=-1)).mean() 230 | return upper_bound / 2. --------------------------------------------------------------------------------