├── .idea
├── encodings.xml
├── misc.xml
└── modules.xml
├── Domain_Generalization
├── data
│ ├── JigsawLoader.py
│ ├── StandardDataset.py
│ ├── __init__.py
│ ├── concat_dataset.py
│ ├── correct_txt_lists
│ │ ├── 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
│ │ ├── photo_crossval_kfold.txt
│ │ ├── photo_test_kfold.txt
│ │ ├── photo_train_kfold.txt
│ │ ├── sketch_crossval_kfold.txt
│ │ ├── sketch_test_kfold.txt
│ │ └── sketch_train_kfold.txt
│ ├── data_helper.py
│ └── 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
│ │ ├── amazon10_test.txt
│ │ ├── amazon10_train.txt
│ │ ├── amazon_test.txt
│ │ ├── amazon_train.txt
│ │ ├── art_pada_test.txt
│ │ ├── art_painting_test.txt
│ │ ├── art_painting_train.txt
│ │ ├── cartoon_test.txt
│ │ ├── cartoon_train.txt
│ │ ├── clipart_pada_test.txt
│ │ ├── dslr10_test.txt
│ │ ├── dslr10_train.txt
│ │ ├── dslr_test.txt
│ │ ├── dslr_train.txt
│ │ ├── jhuit_test_test.txt
│ │ ├── jhuit_train_train.txt
│ │ ├── mnist_m_test.txt
│ │ ├── mnist_train.txt
│ │ ├── photo_test.txt
│ │ ├── photo_train.txt
│ │ ├── product_pada_test.txt
│ │ ├── realworld_pada_test.txt
│ │ ├── sketch_test.txt
│ │ ├── sketch_train.txt
│ │ ├── svhn_test.txt
│ │ ├── synth_digits_test.txt
│ │ ├── usps_test.txt
│ │ ├── webcam10_test.txt
│ │ ├── webcam10_train.txt
│ │ ├── webcam_test.txt
│ │ └── webcam_train.txt
├── env.txt
├── models
│ ├── __init__.py
│ ├── model_factory.py
│ ├── model_utils.py
│ └── resnet.py
├── optimizer
│ ├── __init__.py
│ └── optimizer_helper.py
├── train.py
└── utils
│ ├── Logger.py
│ ├── __init__.py
│ ├── tf_logger.py
│ └── vis.py
├── ImageNet
├── .idea
│ ├── ImageNet.iml
│ ├── encodings.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── workspace.xml
├── main.py
└── resnet.py
├── LICENSE
└── README.md
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Domain_Generalization/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, names, labels, jig_classes=100, img_transformer=None, tile_transformer=None, patches=True,
170 | bias_whole_image=None):
171 | self.data_path = "/home/username/data/PACS/kfold"
172 |
173 | self.names = names
174 | self.labels = labels
175 |
176 | self.N = len(self.names)
177 | # self.permutations = self.__retrieve_permutations(jig_classes)
178 | self.grid_size = 3
179 | self.bias_whole_image = bias_whole_image
180 | if patches:
181 | self.patch_size = 64
182 | self._image_transformer = img_transformer
183 | self._augment_tile = tile_transformer
184 | if patches:
185 | self.returnFunc = lambda x: x
186 | else:
187 | def make_grid(x):
188 | return torchvision.utils.make_grid(x, self.grid_size, padding=0)
189 |
190 | self.returnFunc = make_grid
191 |
192 | def get_tile(self, img, n):
193 | w = float(img.size[0]) / self.grid_size
194 | y = int(n / self.grid_size)
195 | x = n % self.grid_size
196 | tile = img.crop([x * w, y * w, (x + 1) * w, (y + 1) * w])
197 | tile = self._augment_tile(tile)
198 | return tile
199 |
200 | def get_image(self, index):
201 | framename = self.data_path + '/' + self.names[index]
202 | img = Image.open(framename).convert('RGB')
203 | return self._image_transformer(img)
204 |
205 | def __getitem__(self, index):
206 | framename = self.data_path + '/' + self.names[index]
207 | img = Image.open(framename).convert('RGB')
208 | return self._image_transformer(img), 0, int(self.labels[index] - 1)
209 | # return self._image_transformer(img), 0, int(self.labels[index])
210 |
211 | # img = self.get_image(index)
212 | # n_grids = self.grid_size ** 2
213 | # tiles = [None] * n_grids
214 | # for n in range(n_grids):
215 | # tiles[n] = self.get_tile(img, n)
216 | #
217 | # order = np.random.randint(len(self.permutations) + 1) # added 1 for class 0: unsorted
218 | # if self.bias_whole_image:
219 | # if self.bias_whole_image > random():
220 | # order = 0
221 | # if order == 0:
222 | # data = tiles
223 | # else:
224 | # data = [tiles[self.permutations[order - 1][t]] for t in range(n_grids)]
225 | #
226 | # data = torch.stack(data, 0)
227 | # return self.returnFunc(data), int(order), int(self.labels[index])
228 |
229 | def __len__(self):
230 | return len(self.names)
231 |
232 | def __retrieve_permutations(self, classes):
233 | all_perm = np.load('permutations_%d.npy' % (classes))
234 | # from range [1,9] to [0,8]
235 | if all_perm.min() == 1:
236 | all_perm = all_perm - 1
237 |
238 | return all_perm
239 |
240 | class JigsawTestNewDataset(JigsawNewDataset):
241 | def __init__(self, *args, **xargs):
242 | super().__init__(*args, **xargs)
243 |
244 | def __getitem__(self, index):
245 | framename = self.data_path + '/' + self.names[index]
246 | img = Image.open(framename).convert('RGB')
247 | return self._image_transformer(img), 0, int(self.labels[index] - 1)
248 | # return self._image_transformer(img), 0, int(self.labels[index])
249 |
--------------------------------------------------------------------------------
/Domain_Generalization/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 |
--------------------------------------------------------------------------------
/Domain_Generalization/data/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DeLightCMU/RSC/bf6d280c5d74910f009ea8963c59167252659666/Domain_Generalization/data/__init__.py
--------------------------------------------------------------------------------
/Domain_Generalization/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
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 |
--------------------------------------------------------------------------------
/Domain_Generalization/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 |
--------------------------------------------------------------------------------
/Domain_Generalization/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 |
--------------------------------------------------------------------------------
/Domain_Generalization/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 |
--------------------------------------------------------------------------------
/Domain_Generalization/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 |
--------------------------------------------------------------------------------
/Domain_Generalization/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 | limit = args.limit_source
63 | for dname in dataset_list:
64 | # name_train, name_val, labels_train, labels_val = get_split_dataset_info(join(dirname(__file__), 'txt_lists', '%s_train.txt' % dname), args.val_size)
65 | name_train, labels_train = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_train_kfold.txt' % dname))
66 | name_val, labels_val = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_crossval_kfold.txt' % dname))
67 |
68 | train_dataset = JigsawNewDataset(name_train, labels_train, patches=patches, img_transformer=img_transformer,
69 | tile_transformer=tile_transformer, jig_classes=30, bias_whole_image=args.bias_whole_image)
70 | if limit:
71 | train_dataset = Subset(train_dataset, limit)
72 | datasets.append(train_dataset)
73 | val_datasets.append(
74 | JigsawTestNewDataset(name_val, labels_val, img_transformer=get_val_transformer(args),
75 | patches=patches, jig_classes=30))
76 | dataset = ConcatDataset(datasets)
77 | val_dataset = ConcatDataset(val_datasets)
78 | loader = torch.utils.data.DataLoader(dataset, batch_size=args.batch_size, shuffle=True, num_workers=4, pin_memory=True, drop_last=True)
79 | val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=args.batch_size, shuffle=False, num_workers=4, pin_memory=True, drop_last=False)
80 | return loader, val_loader
81 |
82 |
83 | def get_val_dataloader(args, patches=False):
84 | names, labels = _dataset_info(join(dirname(__file__), 'correct_txt_lists', '%s_test_kfold.txt' % args.target))
85 | img_tr = get_val_transformer(args)
86 | val_dataset = JigsawTestNewDataset(names, labels, patches=patches, img_transformer=img_tr, jig_classes=30)
87 | if args.limit_target and len(val_dataset) > args.limit_target:
88 | val_dataset = Subset(val_dataset, args.limit_target)
89 | print("Using %d subset of val dataset" % args.limit_target)
90 | dataset = ConcatDataset([val_dataset])
91 | loader = torch.utils.data.DataLoader(dataset, batch_size=args.batch_size, shuffle=False, num_workers=4, pin_memory=True, drop_last=False)
92 | return loader
93 |
94 |
95 |
96 | def get_train_transformers(args):
97 | img_tr = [transforms.RandomResizedCrop((int(args.image_size), int(args.image_size)), (args.min_scale, args.max_scale))]
98 | #img_tr = [transforms.Resize((args.image_size, args.image_size))]
99 | #img_tr.append(transforms.RandomHorizontalFlip(args.random_horiz_flip))
100 | if args.random_horiz_flip > 0.0:
101 | img_tr.append(transforms.RandomHorizontalFlip(args.random_horiz_flip))
102 | if args.jitter > 0.0:
103 | img_tr.append(transforms.ColorJitter(brightness=args.jitter, contrast=args.jitter, saturation=args.jitter, hue=min(0.5, args.jitter)))
104 | img_tr.append(transforms.RandomGrayscale(args.tile_random_grayscale))
105 | img_tr.append(transforms.ToTensor())
106 | img_tr.append(transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]))
107 |
108 | tile_tr = []
109 | if args.tile_random_grayscale:
110 | tile_tr.append(transforms.RandomGrayscale(args.tile_random_grayscale))
111 | tile_tr = tile_tr + [transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])]
112 |
113 | return transforms.Compose(img_tr), transforms.Compose(tile_tr)
114 |
115 |
116 | def get_val_transformer(args):
117 | img_tr = [transforms.Resize((args.image_size, args.image_size)), transforms.ToTensor(),
118 | transforms.Normalize([0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])]
119 | return transforms.Compose(img_tr)
120 |
121 |
122 | # def get_target_jigsaw_loader(args):
123 | # img_transformer, tile_transformer = get_train_transformers(args)
124 | # name_train, _, labels_train, _ = get_split_dataset_info(join(dirname(__file__), 'txt_lists', '%s_train.txt' % args.target), 0)
125 | # dataset = JigsawDataset(name_train, labels_train, patches=False, img_transformer=img_transformer,
126 | # tile_transformer=tile_transformer, jig_classes=args.jigsaw_n_classes, bias_whole_image=args.bias_whole_image)
127 | # loader = torch.utils.data.DataLoader(dataset, batch_size=args.batch_size, shuffle=True, num_workers=4, pin_memory=True, drop_last=True)
128 | # return loader
129 |
--------------------------------------------------------------------------------
/Domain_Generalization/data/txt_lists/dslr10_test.txt:
--------------------------------------------------------------------------------
1 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0001.jpg 0
2 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0002.jpg 0
3 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0003.jpg 0
4 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0004.jpg 0
5 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0005.jpg 0
6 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0006.jpg 0
7 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0007.jpg 0
8 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0008.jpg 0
9 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0009.jpg 0
10 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0010.jpg 0
11 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0011.jpg 0
12 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0012.jpg 0
13 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0001.jpg 1
14 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0002.jpg 1
15 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0003.jpg 1
16 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0004.jpg 1
17 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0005.jpg 1
18 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0006.jpg 1
19 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0007.jpg 1
20 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0008.jpg 1
21 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0009.jpg 1
22 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0010.jpg 1
23 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0011.jpg 1
24 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0012.jpg 1
25 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0013.jpg 1
26 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0014.jpg 1
27 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0015.jpg 1
28 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0016.jpg 1
29 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0017.jpg 1
30 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0018.jpg 1
31 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0019.jpg 1
32 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0020.jpg 1
33 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0021.jpg 1
34 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0001.jpg 5
35 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0002.jpg 5
36 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0003.jpg 5
37 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0004.jpg 5
38 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0005.jpg 5
39 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0006.jpg 5
40 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0007.jpg 5
41 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0008.jpg 5
42 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0009.jpg 5
43 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0010.jpg 5
44 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0011.jpg 5
45 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0012.jpg 5
46 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0001.jpg 10
47 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0002.jpg 10
48 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0003.jpg 10
49 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0004.jpg 10
50 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0005.jpg 10
51 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0006.jpg 10
52 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0007.jpg 10
53 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0008.jpg 10
54 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0009.jpg 10
55 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0010.jpg 10
56 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0011.jpg 10
57 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0012.jpg 10
58 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0013.jpg 10
59 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0001.jpg 11
60 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0002.jpg 11
61 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0003.jpg 11
62 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0004.jpg 11
63 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0005.jpg 11
64 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0006.jpg 11
65 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0007.jpg 11
66 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0008.jpg 11
67 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0009.jpg 11
68 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0010.jpg 11
69 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0001.jpg 12
70 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0002.jpg 12
71 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0003.jpg 12
72 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0004.jpg 12
73 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0005.jpg 12
74 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0006.jpg 12
75 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0007.jpg 12
76 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0008.jpg 12
77 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0009.jpg 12
78 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0010.jpg 12
79 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0011.jpg 12
80 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0012.jpg 12
81 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0013.jpg 12
82 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0014.jpg 12
83 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0015.jpg 12
84 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0016.jpg 12
85 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0017.jpg 12
86 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0018.jpg 12
87 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0019.jpg 12
88 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0020.jpg 12
89 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0021.jpg 12
90 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0022.jpg 12
91 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0023.jpg 12
92 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0024.jpg 12
93 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0001.jpg 15
94 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0002.jpg 15
95 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0003.jpg 15
96 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0004.jpg 15
97 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0005.jpg 15
98 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0006.jpg 15
99 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0007.jpg 15
100 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0008.jpg 15
101 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0009.jpg 15
102 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0010.jpg 15
103 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0011.jpg 15
104 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0012.jpg 15
105 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0013.jpg 15
106 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0014.jpg 15
107 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0015.jpg 15
108 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0016.jpg 15
109 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0017.jpg 15
110 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0018.jpg 15
111 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0019.jpg 15
112 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0020.jpg 15
113 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0021.jpg 15
114 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0022.jpg 15
115 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0001.jpg 16
116 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0002.jpg 16
117 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0003.jpg 16
118 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0004.jpg 16
119 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0005.jpg 16
120 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0006.jpg 16
121 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0007.jpg 16
122 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0008.jpg 16
123 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0009.jpg 16
124 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0010.jpg 16
125 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0011.jpg 16
126 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0012.jpg 16
127 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0001.jpg 17
128 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0002.jpg 17
129 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0003.jpg 17
130 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0004.jpg 17
131 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0005.jpg 17
132 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0006.jpg 17
133 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0007.jpg 17
134 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0008.jpg 17
135 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0001.jpg 22
136 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0002.jpg 22
137 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0003.jpg 22
138 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0004.jpg 22
139 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0005.jpg 22
140 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0006.jpg 22
141 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0007.jpg 22
142 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0008.jpg 22
143 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0009.jpg 22
144 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0010.jpg 22
145 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0011.jpg 22
146 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0012.jpg 22
147 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0013.jpg 22
148 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0014.jpg 22
149 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0015.jpg 22
150 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0016.jpg 22
151 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0017.jpg 22
152 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0018.jpg 22
153 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0019.jpg 22
154 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0020.jpg 22
155 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0021.jpg 22
156 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0022.jpg 22
157 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0023.jpg 22
158 |
--------------------------------------------------------------------------------
/Domain_Generalization/data/txt_lists/dslr10_train.txt:
--------------------------------------------------------------------------------
1 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0001.jpg 0
2 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0002.jpg 0
3 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0003.jpg 0
4 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0004.jpg 0
5 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0005.jpg 0
6 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0006.jpg 0
7 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0007.jpg 0
8 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0008.jpg 0
9 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0009.jpg 0
10 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0010.jpg 0
11 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0011.jpg 0
12 | /home/fmc/data/office/dslr10_with31classes/backpack/frame_0012.jpg 0
13 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0001.jpg 1
14 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0002.jpg 1
15 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0003.jpg 1
16 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0004.jpg 1
17 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0005.jpg 1
18 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0006.jpg 1
19 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0007.jpg 1
20 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0008.jpg 1
21 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0009.jpg 1
22 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0010.jpg 1
23 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0011.jpg 1
24 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0012.jpg 1
25 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0013.jpg 1
26 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0014.jpg 1
27 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0015.jpg 1
28 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0016.jpg 1
29 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0017.jpg 1
30 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0018.jpg 1
31 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0019.jpg 1
32 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0020.jpg 1
33 | /home/fmc/data/office/dslr10_with31classes/bike/frame_0021.jpg 1
34 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0001.jpg 5
35 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0002.jpg 5
36 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0003.jpg 5
37 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0004.jpg 5
38 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0005.jpg 5
39 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0006.jpg 5
40 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0007.jpg 5
41 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0008.jpg 5
42 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0009.jpg 5
43 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0010.jpg 5
44 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0011.jpg 5
45 | /home/fmc/data/office/dslr10_with31classes/calculator/frame_0012.jpg 5
46 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0001.jpg 10
47 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0002.jpg 10
48 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0003.jpg 10
49 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0004.jpg 10
50 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0005.jpg 10
51 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0006.jpg 10
52 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0007.jpg 10
53 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0008.jpg 10
54 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0009.jpg 10
55 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0010.jpg 10
56 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0011.jpg 10
57 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0012.jpg 10
58 | /home/fmc/data/office/dslr10_with31classes/headphones/frame_0013.jpg 10
59 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0001.jpg 11
60 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0002.jpg 11
61 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0003.jpg 11
62 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0004.jpg 11
63 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0005.jpg 11
64 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0006.jpg 11
65 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0007.jpg 11
66 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0008.jpg 11
67 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0009.jpg 11
68 | /home/fmc/data/office/dslr10_with31classes/keyboard/frame_0010.jpg 11
69 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0001.jpg 12
70 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0002.jpg 12
71 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0003.jpg 12
72 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0004.jpg 12
73 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0005.jpg 12
74 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0006.jpg 12
75 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0007.jpg 12
76 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0008.jpg 12
77 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0009.jpg 12
78 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0010.jpg 12
79 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0011.jpg 12
80 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0012.jpg 12
81 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0013.jpg 12
82 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0014.jpg 12
83 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0015.jpg 12
84 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0016.jpg 12
85 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0017.jpg 12
86 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0018.jpg 12
87 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0019.jpg 12
88 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0020.jpg 12
89 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0021.jpg 12
90 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0022.jpg 12
91 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0023.jpg 12
92 | /home/fmc/data/office/dslr10_with31classes/laptop/frame_0024.jpg 12
93 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0001.jpg 15
94 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0002.jpg 15
95 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0003.jpg 15
96 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0004.jpg 15
97 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0005.jpg 15
98 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0006.jpg 15
99 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0007.jpg 15
100 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0008.jpg 15
101 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0009.jpg 15
102 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0010.jpg 15
103 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0011.jpg 15
104 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0012.jpg 15
105 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0013.jpg 15
106 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0014.jpg 15
107 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0015.jpg 15
108 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0016.jpg 15
109 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0017.jpg 15
110 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0018.jpg 15
111 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0019.jpg 15
112 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0020.jpg 15
113 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0021.jpg 15
114 | /home/fmc/data/office/dslr10_with31classes/monitor/frame_0022.jpg 15
115 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0001.jpg 16
116 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0002.jpg 16
117 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0003.jpg 16
118 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0004.jpg 16
119 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0005.jpg 16
120 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0006.jpg 16
121 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0007.jpg 16
122 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0008.jpg 16
123 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0009.jpg 16
124 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0010.jpg 16
125 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0011.jpg 16
126 | /home/fmc/data/office/dslr10_with31classes/mouse/frame_0012.jpg 16
127 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0001.jpg 17
128 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0002.jpg 17
129 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0003.jpg 17
130 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0004.jpg 17
131 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0005.jpg 17
132 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0006.jpg 17
133 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0007.jpg 17
134 | /home/fmc/data/office/dslr10_with31classes/mug/frame_0008.jpg 17
135 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0001.jpg 22
136 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0002.jpg 22
137 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0003.jpg 22
138 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0004.jpg 22
139 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0005.jpg 22
140 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0006.jpg 22
141 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0007.jpg 22
142 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0008.jpg 22
143 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0009.jpg 22
144 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0010.jpg 22
145 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0011.jpg 22
146 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0012.jpg 22
147 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0013.jpg 22
148 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0014.jpg 22
149 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0015.jpg 22
150 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0016.jpg 22
151 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0017.jpg 22
152 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0018.jpg 22
153 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0019.jpg 22
154 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0020.jpg 22
155 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0021.jpg 22
156 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0022.jpg 22
157 | /home/fmc/data/office/dslr10_with31classes/projector/frame_0023.jpg 22
158 |
--------------------------------------------------------------------------------
/Domain_Generalization/data/txt_lists/webcam10_test.txt:
--------------------------------------------------------------------------------
1 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0001.jpg 0
2 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0002.jpg 0
3 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0003.jpg 0
4 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0004.jpg 0
5 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0005.jpg 0
6 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0006.jpg 0
7 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0007.jpg 0
8 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0008.jpg 0
9 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0009.jpg 0
10 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0010.jpg 0
11 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0011.jpg 0
12 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0012.jpg 0
13 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0013.jpg 0
14 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0014.jpg 0
15 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0015.jpg 0
16 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0016.jpg 0
17 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0017.jpg 0
18 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0018.jpg 0
19 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0019.jpg 0
20 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0020.jpg 0
21 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0021.jpg 0
22 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0022.jpg 0
23 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0023.jpg 0
24 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0024.jpg 0
25 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0025.jpg 0
26 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0026.jpg 0
27 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0027.jpg 0
28 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0028.jpg 0
29 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0029.jpg 0
30 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0001.jpg 1
31 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0002.jpg 1
32 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0003.jpg 1
33 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0004.jpg 1
34 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0005.jpg 1
35 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0006.jpg 1
36 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0007.jpg 1
37 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0008.jpg 1
38 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0009.jpg 1
39 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0010.jpg 1
40 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0011.jpg 1
41 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0012.jpg 1
42 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0013.jpg 1
43 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0014.jpg 1
44 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0015.jpg 1
45 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0016.jpg 1
46 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0017.jpg 1
47 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0018.jpg 1
48 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0019.jpg 1
49 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0020.jpg 1
50 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0021.jpg 1
51 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0001.jpg 5
52 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0002.jpg 5
53 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0003.jpg 5
54 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0004.jpg 5
55 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0005.jpg 5
56 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0006.jpg 5
57 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0007.jpg 5
58 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0008.jpg 5
59 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0009.jpg 5
60 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0010.jpg 5
61 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0011.jpg 5
62 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0012.jpg 5
63 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0013.jpg 5
64 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0014.jpg 5
65 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0015.jpg 5
66 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0016.jpg 5
67 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0017.jpg 5
68 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0018.jpg 5
69 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0019.jpg 5
70 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0020.jpg 5
71 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0021.jpg 5
72 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0022.jpg 5
73 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0023.jpg 5
74 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0024.jpg 5
75 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0025.jpg 5
76 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0026.jpg 5
77 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0027.jpg 5
78 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0028.jpg 5
79 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0029.jpg 5
80 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0030.jpg 5
81 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0031.jpg 5
82 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0001.jpg 10
83 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0002.jpg 10
84 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0003.jpg 10
85 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0004.jpg 10
86 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0005.jpg 10
87 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0006.jpg 10
88 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0007.jpg 10
89 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0008.jpg 10
90 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0009.jpg 10
91 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0010.jpg 10
92 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0011.jpg 10
93 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0012.jpg 10
94 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0013.jpg 10
95 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0014.jpg 10
96 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0015.jpg 10
97 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0016.jpg 10
98 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0017.jpg 10
99 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0018.jpg 10
100 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0019.jpg 10
101 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0020.jpg 10
102 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0021.jpg 10
103 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0022.jpg 10
104 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0023.jpg 10
105 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0024.jpg 10
106 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0025.jpg 10
107 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0026.jpg 10
108 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0027.jpg 10
109 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0001.jpg 11
110 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0002.jpg 11
111 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0003.jpg 11
112 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0004.jpg 11
113 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0005.jpg 11
114 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0006.jpg 11
115 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0007.jpg 11
116 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0008.jpg 11
117 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0009.jpg 11
118 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0010.jpg 11
119 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0011.jpg 11
120 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0012.jpg 11
121 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0013.jpg 11
122 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0014.jpg 11
123 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0015.jpg 11
124 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0016.jpg 11
125 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0017.jpg 11
126 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0018.jpg 11
127 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0019.jpg 11
128 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0020.jpg 11
129 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0021.jpg 11
130 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0022.jpg 11
131 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0023.jpg 11
132 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0024.jpg 11
133 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0025.jpg 11
134 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0026.jpg 11
135 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0027.jpg 11
136 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0001.jpg 12
137 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0002.jpg 12
138 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0003.jpg 12
139 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0004.jpg 12
140 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0005.jpg 12
141 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0006.jpg 12
142 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0007.jpg 12
143 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0008.jpg 12
144 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0009.jpg 12
145 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0010.jpg 12
146 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0011.jpg 12
147 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0012.jpg 12
148 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0013.jpg 12
149 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0014.jpg 12
150 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0015.jpg 12
151 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0016.jpg 12
152 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0017.jpg 12
153 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0018.jpg 12
154 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0019.jpg 12
155 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0020.jpg 12
156 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0021.jpg 12
157 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0022.jpg 12
158 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0023.jpg 12
159 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0024.jpg 12
160 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0025.jpg 12
161 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0026.jpg 12
162 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0027.jpg 12
163 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0028.jpg 12
164 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0029.jpg 12
165 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0030.jpg 12
166 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0001.jpg 15
167 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0002.jpg 15
168 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0003.jpg 15
169 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0004.jpg 15
170 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0005.jpg 15
171 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0006.jpg 15
172 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0007.jpg 15
173 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0008.jpg 15
174 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0009.jpg 15
175 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0010.jpg 15
176 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0011.jpg 15
177 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0012.jpg 15
178 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0013.jpg 15
179 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0014.jpg 15
180 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0015.jpg 15
181 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0016.jpg 15
182 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0017.jpg 15
183 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0018.jpg 15
184 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0019.jpg 15
185 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0020.jpg 15
186 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0021.jpg 15
187 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0022.jpg 15
188 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0023.jpg 15
189 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0024.jpg 15
190 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0025.jpg 15
191 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0026.jpg 15
192 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0027.jpg 15
193 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0028.jpg 15
194 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0029.jpg 15
195 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0030.jpg 15
196 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0031.jpg 15
197 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0032.jpg 15
198 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0033.jpg 15
199 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0034.jpg 15
200 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0035.jpg 15
201 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0036.jpg 15
202 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0037.jpg 15
203 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0038.jpg 15
204 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0039.jpg 15
205 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0040.jpg 15
206 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0041.jpg 15
207 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0042.jpg 15
208 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0043.jpg 15
209 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0001.jpg 16
210 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0002.jpg 16
211 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0003.jpg 16
212 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0004.jpg 16
213 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0005.jpg 16
214 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0006.jpg 16
215 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0007.jpg 16
216 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0008.jpg 16
217 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0009.jpg 16
218 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0010.jpg 16
219 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0011.jpg 16
220 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0012.jpg 16
221 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0013.jpg 16
222 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0014.jpg 16
223 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0015.jpg 16
224 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0016.jpg 16
225 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0017.jpg 16
226 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0018.jpg 16
227 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0019.jpg 16
228 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0020.jpg 16
229 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0021.jpg 16
230 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0022.jpg 16
231 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0023.jpg 16
232 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0024.jpg 16
233 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0025.jpg 16
234 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0026.jpg 16
235 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0027.jpg 16
236 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0028.jpg 16
237 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0029.jpg 16
238 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0030.jpg 16
239 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0001.jpg 17
240 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0002.jpg 17
241 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0003.jpg 17
242 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0004.jpg 17
243 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0005.jpg 17
244 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0006.jpg 17
245 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0007.jpg 17
246 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0008.jpg 17
247 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0009.jpg 17
248 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0010.jpg 17
249 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0011.jpg 17
250 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0012.jpg 17
251 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0013.jpg 17
252 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0014.jpg 17
253 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0015.jpg 17
254 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0016.jpg 17
255 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0017.jpg 17
256 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0018.jpg 17
257 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0019.jpg 17
258 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0020.jpg 17
259 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0021.jpg 17
260 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0022.jpg 17
261 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0023.jpg 17
262 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0024.jpg 17
263 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0025.jpg 17
264 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0026.jpg 17
265 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0027.jpg 17
266 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0001.jpg 22
267 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0002.jpg 22
268 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0003.jpg 22
269 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0004.jpg 22
270 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0005.jpg 22
271 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0006.jpg 22
272 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0007.jpg 22
273 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0008.jpg 22
274 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0009.jpg 22
275 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0010.jpg 22
276 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0011.jpg 22
277 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0012.jpg 22
278 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0013.jpg 22
279 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0014.jpg 22
280 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0015.jpg 22
281 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0016.jpg 22
282 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0017.jpg 22
283 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0018.jpg 22
284 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0019.jpg 22
285 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0020.jpg 22
286 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0021.jpg 22
287 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0022.jpg 22
288 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0023.jpg 22
289 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0024.jpg 22
290 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0025.jpg 22
291 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0026.jpg 22
292 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0027.jpg 22
293 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0028.jpg 22
294 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0029.jpg 22
295 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0030.jpg 22
296 |
--------------------------------------------------------------------------------
/Domain_Generalization/data/txt_lists/webcam10_train.txt:
--------------------------------------------------------------------------------
1 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0001.jpg 0
2 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0002.jpg 0
3 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0003.jpg 0
4 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0004.jpg 0
5 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0005.jpg 0
6 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0006.jpg 0
7 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0007.jpg 0
8 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0008.jpg 0
9 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0009.jpg 0
10 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0010.jpg 0
11 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0011.jpg 0
12 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0012.jpg 0
13 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0013.jpg 0
14 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0014.jpg 0
15 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0015.jpg 0
16 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0016.jpg 0
17 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0017.jpg 0
18 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0018.jpg 0
19 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0019.jpg 0
20 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0020.jpg 0
21 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0021.jpg 0
22 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0022.jpg 0
23 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0023.jpg 0
24 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0024.jpg 0
25 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0025.jpg 0
26 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0026.jpg 0
27 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0027.jpg 0
28 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0028.jpg 0
29 | /home/fmc/data/office/webcam10_with31classes/backpack/frame_0029.jpg 0
30 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0001.jpg 1
31 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0002.jpg 1
32 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0003.jpg 1
33 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0004.jpg 1
34 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0005.jpg 1
35 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0006.jpg 1
36 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0007.jpg 1
37 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0008.jpg 1
38 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0009.jpg 1
39 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0010.jpg 1
40 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0011.jpg 1
41 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0012.jpg 1
42 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0013.jpg 1
43 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0014.jpg 1
44 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0015.jpg 1
45 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0016.jpg 1
46 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0017.jpg 1
47 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0018.jpg 1
48 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0019.jpg 1
49 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0020.jpg 1
50 | /home/fmc/data/office/webcam10_with31classes/bike/frame_0021.jpg 1
51 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0001.jpg 5
52 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0002.jpg 5
53 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0003.jpg 5
54 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0004.jpg 5
55 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0005.jpg 5
56 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0006.jpg 5
57 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0007.jpg 5
58 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0008.jpg 5
59 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0009.jpg 5
60 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0010.jpg 5
61 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0011.jpg 5
62 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0012.jpg 5
63 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0013.jpg 5
64 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0014.jpg 5
65 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0015.jpg 5
66 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0016.jpg 5
67 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0017.jpg 5
68 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0018.jpg 5
69 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0019.jpg 5
70 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0020.jpg 5
71 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0021.jpg 5
72 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0022.jpg 5
73 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0023.jpg 5
74 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0024.jpg 5
75 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0025.jpg 5
76 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0026.jpg 5
77 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0027.jpg 5
78 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0028.jpg 5
79 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0029.jpg 5
80 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0030.jpg 5
81 | /home/fmc/data/office/webcam10_with31classes/calculator/frame_0031.jpg 5
82 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0001.jpg 10
83 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0002.jpg 10
84 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0003.jpg 10
85 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0004.jpg 10
86 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0005.jpg 10
87 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0006.jpg 10
88 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0007.jpg 10
89 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0008.jpg 10
90 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0009.jpg 10
91 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0010.jpg 10
92 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0011.jpg 10
93 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0012.jpg 10
94 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0013.jpg 10
95 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0014.jpg 10
96 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0015.jpg 10
97 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0016.jpg 10
98 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0017.jpg 10
99 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0018.jpg 10
100 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0019.jpg 10
101 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0020.jpg 10
102 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0021.jpg 10
103 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0022.jpg 10
104 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0023.jpg 10
105 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0024.jpg 10
106 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0025.jpg 10
107 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0026.jpg 10
108 | /home/fmc/data/office/webcam10_with31classes/headphones/frame_0027.jpg 10
109 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0001.jpg 11
110 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0002.jpg 11
111 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0003.jpg 11
112 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0004.jpg 11
113 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0005.jpg 11
114 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0006.jpg 11
115 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0007.jpg 11
116 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0008.jpg 11
117 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0009.jpg 11
118 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0010.jpg 11
119 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0011.jpg 11
120 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0012.jpg 11
121 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0013.jpg 11
122 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0014.jpg 11
123 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0015.jpg 11
124 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0016.jpg 11
125 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0017.jpg 11
126 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0018.jpg 11
127 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0019.jpg 11
128 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0020.jpg 11
129 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0021.jpg 11
130 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0022.jpg 11
131 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0023.jpg 11
132 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0024.jpg 11
133 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0025.jpg 11
134 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0026.jpg 11
135 | /home/fmc/data/office/webcam10_with31classes/keyboard/frame_0027.jpg 11
136 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0001.jpg 12
137 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0002.jpg 12
138 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0003.jpg 12
139 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0004.jpg 12
140 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0005.jpg 12
141 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0006.jpg 12
142 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0007.jpg 12
143 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0008.jpg 12
144 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0009.jpg 12
145 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0010.jpg 12
146 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0011.jpg 12
147 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0012.jpg 12
148 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0013.jpg 12
149 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0014.jpg 12
150 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0015.jpg 12
151 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0016.jpg 12
152 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0017.jpg 12
153 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0018.jpg 12
154 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0019.jpg 12
155 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0020.jpg 12
156 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0021.jpg 12
157 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0022.jpg 12
158 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0023.jpg 12
159 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0024.jpg 12
160 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0025.jpg 12
161 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0026.jpg 12
162 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0027.jpg 12
163 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0028.jpg 12
164 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0029.jpg 12
165 | /home/fmc/data/office/webcam10_with31classes/laptop/frame_0030.jpg 12
166 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0001.jpg 15
167 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0002.jpg 15
168 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0003.jpg 15
169 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0004.jpg 15
170 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0005.jpg 15
171 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0006.jpg 15
172 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0007.jpg 15
173 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0008.jpg 15
174 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0009.jpg 15
175 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0010.jpg 15
176 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0011.jpg 15
177 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0012.jpg 15
178 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0013.jpg 15
179 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0014.jpg 15
180 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0015.jpg 15
181 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0016.jpg 15
182 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0017.jpg 15
183 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0018.jpg 15
184 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0019.jpg 15
185 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0020.jpg 15
186 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0021.jpg 15
187 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0022.jpg 15
188 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0023.jpg 15
189 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0024.jpg 15
190 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0025.jpg 15
191 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0026.jpg 15
192 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0027.jpg 15
193 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0028.jpg 15
194 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0029.jpg 15
195 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0030.jpg 15
196 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0031.jpg 15
197 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0032.jpg 15
198 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0033.jpg 15
199 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0034.jpg 15
200 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0035.jpg 15
201 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0036.jpg 15
202 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0037.jpg 15
203 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0038.jpg 15
204 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0039.jpg 15
205 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0040.jpg 15
206 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0041.jpg 15
207 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0042.jpg 15
208 | /home/fmc/data/office/webcam10_with31classes/monitor/frame_0043.jpg 15
209 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0001.jpg 16
210 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0002.jpg 16
211 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0003.jpg 16
212 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0004.jpg 16
213 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0005.jpg 16
214 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0006.jpg 16
215 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0007.jpg 16
216 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0008.jpg 16
217 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0009.jpg 16
218 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0010.jpg 16
219 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0011.jpg 16
220 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0012.jpg 16
221 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0013.jpg 16
222 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0014.jpg 16
223 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0015.jpg 16
224 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0016.jpg 16
225 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0017.jpg 16
226 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0018.jpg 16
227 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0019.jpg 16
228 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0020.jpg 16
229 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0021.jpg 16
230 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0022.jpg 16
231 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0023.jpg 16
232 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0024.jpg 16
233 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0025.jpg 16
234 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0026.jpg 16
235 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0027.jpg 16
236 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0028.jpg 16
237 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0029.jpg 16
238 | /home/fmc/data/office/webcam10_with31classes/mouse/frame_0030.jpg 16
239 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0001.jpg 17
240 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0002.jpg 17
241 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0003.jpg 17
242 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0004.jpg 17
243 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0005.jpg 17
244 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0006.jpg 17
245 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0007.jpg 17
246 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0008.jpg 17
247 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0009.jpg 17
248 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0010.jpg 17
249 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0011.jpg 17
250 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0012.jpg 17
251 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0013.jpg 17
252 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0014.jpg 17
253 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0015.jpg 17
254 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0016.jpg 17
255 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0017.jpg 17
256 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0018.jpg 17
257 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0019.jpg 17
258 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0020.jpg 17
259 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0021.jpg 17
260 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0022.jpg 17
261 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0023.jpg 17
262 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0024.jpg 17
263 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0025.jpg 17
264 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0026.jpg 17
265 | /home/fmc/data/office/webcam10_with31classes/mug/frame_0027.jpg 17
266 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0001.jpg 22
267 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0002.jpg 22
268 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0003.jpg 22
269 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0004.jpg 22
270 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0005.jpg 22
271 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0006.jpg 22
272 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0007.jpg 22
273 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0008.jpg 22
274 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0009.jpg 22
275 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0010.jpg 22
276 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0011.jpg 22
277 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0012.jpg 22
278 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0013.jpg 22
279 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0014.jpg 22
280 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0015.jpg 22
281 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0016.jpg 22
282 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0017.jpg 22
283 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0018.jpg 22
284 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0019.jpg 22
285 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0020.jpg 22
286 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0021.jpg 22
287 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0022.jpg 22
288 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0023.jpg 22
289 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0024.jpg 22
290 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0025.jpg 22
291 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0026.jpg 22
292 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0027.jpg 22
293 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0028.jpg 22
294 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0029.jpg 22
295 | /home/fmc/data/office/webcam10_with31classes/projector/frame_0030.jpg 22
296 |
--------------------------------------------------------------------------------
/Domain_Generalization/env.txt:
--------------------------------------------------------------------------------
1 | # Hardware
2 | Ubuntu 16.04
3 | GPU: RTX 2080
4 |
5 | # Software
6 | # Name Version Build Channel
7 | _libgcc_mutex 0.1 main
8 | absl-py 0.8.1 pypi_0 pypi
9 | addict 2.2.1 pypi_0 pypi
10 | astor 0.8.0 pypi_0 pypi
11 | atomicwrites 1.3.0 pypi_0 pypi
12 | attrs 19.1.0 pypi_0 pypi
13 | backcall 0.1.0 py37_0
14 | blas 1.0 mkl
15 | ca-certificates 2019.10.16 0
16 | cachetools 3.1.1 pypi_0 pypi
17 | certifi 2019.9.11 py37_0
18 | cffi 1.12.3 py37h2e261b9_0
19 | chardet 3.0.4 pypi_0 pypi
20 | cudatoolkit 10.0.130 0
21 | cycler 0.10.0 pypi_0 pypi
22 | cython 0.29.10 py37he6710b0_0
23 | decorator 4.4.1 py_0
24 | easydict 1.9 pypi_0 pypi
25 | freetype 2.9.1 h8a8886c_1
26 | gast 0.2.2 pypi_0 pypi
27 | google-auth 1.6.3 pypi_0 pypi
28 | google-auth-oauthlib 0.4.1 pypi_0 pypi
29 | google-pasta 0.1.7 pypi_0 pypi
30 | grpcio 1.24.3 pypi_0 pypi
31 | h5py 2.10.0 pypi_0 pypi
32 | idna 2.8 pypi_0 pypi
33 | importlib-metadata 0.18 pypi_0 pypi
34 | intel-openmp 2019.4 243
35 | ipython 7.9.0 py37h39e3cac_0
36 | ipython_genutils 0.2.0 py37_0
37 | jedi 0.15.1 py37_0
38 | joblib 0.14.1 pypi_0 pypi
39 | jpeg 9b h024ee3a_2
40 | keras-applications 1.0.8 pypi_0 pypi
41 | keras-preprocessing 1.1.0 pypi_0 pypi
42 | kiwisolver 1.1.0 pypi_0 pypi
43 | libedit 3.1.20181209 hc058e9b_0
44 | libffi 3.2.1 hd88cf55_4
45 | libgcc-ng 9.1.0 hdf63c60_0
46 | libgfortran-ng 7.3.0 hdf63c60_0
47 | libpng 1.6.37 hbc83047_0
48 | libstdcxx-ng 9.1.0 hdf63c60_0
49 | libtiff 4.0.10 h2733197_2
50 | markdown 3.1.1 pypi_0 pypi
51 | matplotlib 3.1.0 pypi_0 pypi
52 | mkl 2019.4 243
53 | mkl_fft 1.0.12 py37ha843d7b_0
54 | mkl_random 1.0.2 py37hd81dba3_0
55 | more-itertools 7.0.0 pypi_0 pypi
56 | msgpack 1.0.0 pypi_0 pypi
57 | ncurses 6.1 he6710b0_1
58 | ninja 1.9.0 py37hfd86e86_0
59 | numpy 1.16.4 py37h7e9f1db_0
60 | numpy-base 1.16.4 py37hde5b4d6_0
61 | oauthlib 3.1.0 pypi_0 pypi
62 | olefile 0.46 py37_0
63 | opencv-python 4.1.0.25 pypi_0 pypi
64 | openssl 1.1.1d h7b6447c_3
65 | opt-einsum 3.1.0 pypi_0 pypi
66 | packaging 19.0 pypi_0 pypi
67 | parso 0.5.1 py_0
68 | pexpect 4.7.0 py37_0
69 | pickleshare 0.7.5 py37_0
70 | pillow 6.0.0 py37h34e0f95_0
71 | pip 19.1.1 py37_0
72 | pluggy 0.12.0 pypi_0 pypi
73 | prompt_toolkit 2.0.10 py_0
74 | protobuf 3.10.0 pypi_0 pypi
75 | ptyprocess 0.6.0 py37_0
76 | py 1.8.0 pypi_0 pypi
77 | pyasn1 0.4.7 pypi_0 pypi
78 | pyasn1-modules 0.2.7 pypi_0 pypi
79 | pycocotools 2.0.0 pypi_0 pypi
80 | pycparser 2.19 py37_0
81 | pygments 2.4.2 py_0
82 | pyparsing 2.4.0 pypi_0 pypi
83 | pytest 4.6.3 pypi_0 pypi
84 | python 3.7.3 h0371630_0
85 | python-dateutil 2.8.0 pypi_0 pypi
86 | pytorch 1.1.0 py3.7_cuda10.0.130_cudnn7.5.1_0 pytorch
87 | readline 7.0 h7b6447c_5
88 | requests 2.22.0 pypi_0 pypi
89 | requests-oauthlib 1.2.0 pypi_0 pypi
90 | rsa 4.0 pypi_0 pypi
91 | scikit-learn 0.22.1 pypi_0 pypi
92 | scipy 1.2.1 pypi_0 pypi
93 | setuptools 41.0.1 py37_0
94 | six 1.12.0 py37_0
95 | sklearn 0.0 pypi_0 pypi
96 | sqlite 3.28.0 h7b6447c_0
97 | tensorboard 1.14.0 pypi_0 pypi
98 | tensorboardx 2.0 pypi_0 pypi
99 | tensorflow 1.14.0 pypi_0 pypi
100 | tensorflow-estimator 1.14.0 pypi_0 pypi
101 | termcolor 1.1.0 pypi_0 pypi
102 | tk 8.6.8 hbc83047_0
103 | torchvision 0.3.0 py37_cu10.0.130_1 pytorch
104 | traitlets 4.3.3 py37_0
105 | urllib3 1.25.3 pypi_0 pypi
106 | wcwidth 0.1.7 pypi_0 pypi
107 | werkzeug 0.16.0 pypi_0 pypi
108 | wheel 0.33.4 py37_0
109 | wrapt 1.11.2 pypi_0 pypi
110 | xz 5.2.4 h14c3975_4
111 | zipp 0.5.1 pypi_0 pypi
112 | zlib 1.2.11 h7b6447c_3
113 | zstd 1.3.7 h0b5b093_0
114 |
--------------------------------------------------------------------------------
/Domain_Generalization/models/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DeLightCMU/RSC/bf6d280c5d74910f009ea8963c59167252659666/Domain_Generalization/models/__init__.py
--------------------------------------------------------------------------------
/Domain_Generalization/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 | from models import resnet
6 |
7 | nets_map = {
8 | 'caffenet': caffenet.caffenet,
9 | 'alexnet': alexnet.alexnet,
10 | 'resnet18': resnet.resnet18,
11 | 'resnet50': resnet.resnet50,
12 | 'lenet': mnist.lenet
13 | }
14 |
15 |
16 | def get_network(name):
17 | if name not in nets_map:
18 | raise ValueError('Name of network unknown %s' % name)
19 |
20 | def get_network_fn(**kwargs):
21 | return nets_map[name](**kwargs)
22 |
23 | return get_network_fn
24 |
--------------------------------------------------------------------------------
/Domain_Generalization/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
--------------------------------------------------------------------------------
/Domain_Generalization/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 | from torch import nn as nn
6 | from torch.autograd import Variable
7 | import numpy.random as npr
8 | import numpy as np
9 | import torch.nn.functional as F
10 | import random
11 | import math
12 |
13 | class ResNet(nn.Module):
14 | def __init__(self, block, layers, jigsaw_classes=1000, classes=100):
15 | self.inplanes = 64
16 | super(ResNet, self).__init__()
17 | self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
18 | bias=False)
19 | self.bn1 = nn.BatchNorm2d(64)
20 | self.relu = nn.ReLU(inplace=True)
21 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
22 | self.layer1 = self._make_layer(block, 64, layers[0])
23 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
24 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
25 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2)
26 | self.avgpool = nn.AvgPool2d(7, stride=1)
27 | # self.jigsaw_classifier = nn.Linear(512 * block.expansion, jigsaw_classes)
28 | self.class_classifier = nn.Linear(512 * block.expansion, classes)
29 | #self.domain_classifier = nn.Linear(512 * block.expansion, domains)
30 | self.pecent = 1/3
31 |
32 | for m in self.modules():
33 | if isinstance(m, nn.Conv2d):
34 | nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
35 | elif isinstance(m, nn.BatchNorm2d):
36 | nn.init.constant_(m.weight, 1)
37 | nn.init.constant_(m.bias, 0)
38 |
39 | def _make_layer(self, block, planes, blocks, stride=1):
40 | downsample = None
41 | if stride != 1 or self.inplanes != planes * block.expansion:
42 | downsample = nn.Sequential(
43 | nn.Conv2d(self.inplanes, planes * block.expansion,
44 | kernel_size=1, stride=stride, bias=False),
45 | nn.BatchNorm2d(planes * block.expansion),
46 | )
47 |
48 | layers = []
49 | layers.append(block(self.inplanes, planes, stride, downsample))
50 | self.inplanes = planes * block.expansion
51 | for i in range(1, blocks):
52 | layers.append(block(self.inplanes, planes))
53 |
54 | return nn.Sequential(*layers)
55 |
56 | def is_patch_based(self):
57 | return False
58 |
59 | def forward(self, x, gt=None, flag=None, epoch=None):
60 | x = self.conv1(x)
61 | x = self.bn1(x)
62 | x = self.relu(x)
63 | x = self.maxpool(x)
64 |
65 | x = self.layer1(x)
66 | x = self.layer2(x)
67 | x = self.layer3(x)
68 | x = self.layer4(x)
69 |
70 | if flag:
71 | interval = 10
72 | if epoch % interval == 0:
73 | self.pecent = 3.0 / 10 + (epoch / interval) * 2.0 / 10
74 |
75 | self.eval()
76 | x_new = x.clone().detach()
77 | x_new = Variable(x_new.data, requires_grad=True)
78 | x_new_view = self.avgpool(x_new)
79 | x_new_view = x_new_view.view(x_new_view.size(0), -1)
80 | output = self.class_classifier(x_new_view)
81 | class_num = output.shape[1]
82 | index = gt
83 | num_rois = x_new.shape[0]
84 | num_channel = x_new.shape[1]
85 | H = x_new.shape[2]
86 | HW = x_new.shape[2] * x_new.shape[3]
87 | one_hot = torch.zeros((1), dtype=torch.float32).cuda()
88 | one_hot = Variable(one_hot, requires_grad=False)
89 | sp_i = torch.ones([2, num_rois]).long()
90 | sp_i[0, :] = torch.arange(num_rois)
91 | sp_i[1, :] = index
92 | sp_v = torch.ones([num_rois])
93 | one_hot_sparse = torch.sparse.FloatTensor(sp_i, sp_v, torch.Size([num_rois, class_num])).to_dense().cuda()
94 | one_hot_sparse = Variable(one_hot_sparse, requires_grad=False)
95 | one_hot = torch.sum(output * one_hot_sparse)
96 | self.zero_grad()
97 | one_hot.backward()
98 | grads_val = x_new.grad.clone().detach()
99 | grad_channel_mean = torch.mean(grads_val.view(num_rois, num_channel, -1), dim=2)
100 | channel_mean = grad_channel_mean
101 | grad_channel_mean = grad_channel_mean.view(num_rois, num_channel, 1, 1)
102 | spatial_mean = torch.sum(x_new * grad_channel_mean, 1)
103 | spatial_mean = spatial_mean.view(num_rois, HW)
104 | self.zero_grad()
105 |
106 | choose_one = random.randint(0, 9)
107 | if choose_one <= 4:
108 | # ---------------------------- spatial -----------------------
109 | spatial_drop_num = math.ceil(HW * 1 / 3.0)
110 | th18_mask_value = torch.sort(spatial_mean, dim=1, descending=True)[0][:, spatial_drop_num]
111 | th18_mask_value = th18_mask_value.view(num_rois, 1).expand(num_rois, 49)
112 | mask_all_cuda = torch.where(spatial_mean > th18_mask_value, torch.zeros(spatial_mean.shape).cuda(),
113 | torch.ones(spatial_mean.shape).cuda())
114 | mask_all = mask_all_cuda.reshape(num_rois, H, H).view(num_rois, 1, H, H)
115 | else:
116 | # -------------------------- channel ----------------------------
117 | vector_thresh_percent = math.ceil(num_channel * 1 / 3.2)
118 | vector_thresh_value = torch.sort(channel_mean, dim=1, descending=True)[0][:, vector_thresh_percent]
119 | vector_thresh_value = vector_thresh_value.view(num_rois, 1).expand(num_rois, num_channel)
120 | vector = torch.where(channel_mean > vector_thresh_value,
121 | torch.zeros(channel_mean.shape).cuda(),
122 | torch.ones(channel_mean.shape).cuda())
123 | mask_all = vector.view(num_rois, num_channel, 1, 1)
124 |
125 | # ----------------------------------- batch ----------------------------------------
126 | cls_prob_before = F.softmax(output, dim=1)
127 | x_new_view_after = x_new * mask_all
128 | x_new_view_after = self.avgpool(x_new_view_after)
129 | x_new_view_after = x_new_view_after.view(x_new_view_after.size(0), -1)
130 | x_new_view_after = self.class_classifier(x_new_view_after)
131 | cls_prob_after = F.softmax(x_new_view_after, dim=1)
132 |
133 | sp_i = torch.ones([2, num_rois]).long()
134 | sp_i[0, :] = torch.arange(num_rois)
135 | sp_i[1, :] = index
136 | sp_v = torch.ones([num_rois])
137 | one_hot_sparse = torch.sparse.FloatTensor(sp_i, sp_v, torch.Size([num_rois, class_num])).to_dense().cuda()
138 | before_vector = torch.sum(one_hot_sparse * cls_prob_before, dim=1)
139 | after_vector = torch.sum(one_hot_sparse * cls_prob_after, dim=1)
140 | change_vector = before_vector - after_vector - 0.0001
141 | change_vector = torch.where(change_vector > 0, change_vector, torch.zeros(change_vector.shape).cuda())
142 | th_fg_value = torch.sort(change_vector, dim=0, descending=True)[0][int(round(float(num_rois) * self.pecent))]
143 | drop_index_fg = change_vector.gt(th_fg_value).long()
144 | ignore_index_fg = 1 - drop_index_fg
145 | not_01_ignore_index_fg = ignore_index_fg.nonzero()[:, 0]
146 | mask_all[not_01_ignore_index_fg.long(), :] = 1
147 |
148 | self.train()
149 | mask_all = Variable(mask_all, requires_grad=True)
150 | x = x * mask_all
151 |
152 | x = self.avgpool(x)
153 | x = x.view(x.size(0), -1)
154 | return self.class_classifier(x)
155 |
156 |
157 | def resnet18(pretrained=True, **kwargs):
158 | """Constructs a ResNet-18 model.
159 | Args:
160 | pretrained (bool): If True, returns a model pre-trained on ImageNet
161 | """
162 | model = ResNet(BasicBlock, [2, 2, 2, 2], **kwargs)
163 | if pretrained:
164 | model.load_state_dict(model_zoo.load_url(model_urls['resnet18']), strict=False)
165 | return model
166 |
167 | def resnet50(pretrained=True, **kwargs):
168 | """Constructs a ResNet-50 model.
169 | Args:
170 | pretrained (bool): If True, returns a model pre-trained on ImageNet
171 | """
172 | model = ResNet(Bottleneck, [3, 4, 6, 3], **kwargs)
173 | if pretrained:
174 | model.load_state_dict(model_zoo.load_url(model_urls['resnet50']), strict=False)
175 | return model
176 |
--------------------------------------------------------------------------------
/Domain_Generalization/optimizer/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DeLightCMU/RSC/bf6d280c5d74910f009ea8963c59167252659666/Domain_Generalization/optimizer/__init__.py
--------------------------------------------------------------------------------
/Domain_Generalization/optimizer/optimizer_helper.py:
--------------------------------------------------------------------------------
1 | from torch import optim
2 |
3 |
4 | def get_optim_and_scheduler(network, epochs, lr, train_all, nesterov=False):
5 | if train_all:
6 | params = network.parameters()
7 | else:
8 | params = network.get_params(lr)
9 | optimizer = optim.SGD(params, weight_decay=.0005, momentum=.9, nesterov=nesterov, lr=lr)
10 | #optimizer = optim.Adam(params, lr=lr)
11 | step_size = int(epochs * .8)
12 | scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=step_size)
13 | print("Step size: %d" % step_size)
14 | return optimizer, scheduler
15 |
--------------------------------------------------------------------------------
/Domain_Generalization/train.py:
--------------------------------------------------------------------------------
1 | import argparse
2 |
3 | import torch
4 | #from IPython.core.debugger import set_trace
5 | from torch import nn
6 | #from torch.nn import functional as F
7 | from data import data_helper
8 | ## from IPython.core.debugger import set_trace
9 | from data.data_helper import available_datasets
10 | from models import model_factory
11 | from optimizer.optimizer_helper import get_optim_and_scheduler
12 | from utils.Logger import Logger
13 | import numpy as np
14 | from models.resnet import resnet18, resnet50
15 |
16 |
17 | def get_args():
18 | parser = argparse.ArgumentParser(description="Script to launch jigsaw training",
19 | formatter_class=argparse.ArgumentDefaultsHelpFormatter)
20 | parser.add_argument("--source", choices=available_datasets, help="Source", nargs='+')
21 | parser.add_argument("--target", choices=available_datasets, help="Target")
22 | parser.add_argument("--batch_size", "-b", type=int, default=64, help="Batch size")
23 | parser.add_argument("--image_size", type=int, default=222, help="Image size")
24 | # data aug stuff
25 | parser.add_argument("--min_scale", default=0.8, type=float, help="Minimum scale percent")
26 | parser.add_argument("--max_scale", default=1.0, type=float, help="Maximum scale percent")
27 | parser.add_argument("--random_horiz_flip", default=0.5, type=float, help="Chance of random horizontal flip")
28 | parser.add_argument("--jitter", default=0.4, type=float, help="Color jitter amount")
29 | parser.add_argument("--tile_random_grayscale", default=0.1, type=float, help="Chance of randomly greyscaling a tile")
30 | #
31 | parser.add_argument("--limit_source", default=None, type=int,
32 | help="If set, it will limit the number of training samples")
33 | parser.add_argument("--limit_target", default=None, type=int,
34 | help="If set, it will limit the number of testing samples")
35 | parser.add_argument("--learning_rate", "-l", type=float, default=.01, help="Learning rate")
36 | parser.add_argument("--epochs", "-e", type=int, default=20, help="Number of epochs")
37 | parser.add_argument("--n_classes", "-c", type=int, default=7, help="Number of classes")
38 | parser.add_argument("--network", choices=model_factory.nets_map.keys(), help="Which network to use", default="resnet18")
39 | parser.add_argument("--tf_logger", type=bool, default=True, help="If true will save tensorboard compatible logs")
40 | parser.add_argument("--val_size", type=float, default="0.1", help="Validation size (between 0 and 1)")
41 | parser.add_argument("--folder_name", default='test', help="Used by the logger to save logs")
42 | 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")
43 | parser.add_argument("--TTA", type=bool, default=False, help="Activate test time data augmentation")
44 | parser.add_argument("--classify_only_sane", default=False, type=bool, help="If true, the network will only try to classify the non scrambled images")
45 | parser.add_argument("--train_all", default=True, type=bool, help="If true, all network weights will be trained")
46 | parser.add_argument("--suffix", default="", help="Suffix for the logger")
47 | parser.add_argument("--nesterov", default=False, type=bool, help="Use nesterov")
48 |
49 | return parser.parse_args()
50 |
51 | class Trainer:
52 | def __init__(self, args, device):
53 | self.args = args
54 | self.device = device
55 | if args.network == 'resnet18':
56 | model = resnet18(pretrained=True, classes=args.n_classes)
57 | elif args.network == 'resnet50':
58 | model = resnet50(pretrained=True, classes=args.n_classes)
59 | else:
60 | model = resnet18(pretrained=True, classes=args.n_classes)
61 | self.model = model.to(device)
62 | # print(self.model)
63 | self.source_loader, self.val_loader = data_helper.get_train_dataloader(args, patches=model.is_patch_based())
64 | self.target_loader = data_helper.get_val_dataloader(args, patches=model.is_patch_based())
65 | self.test_loaders = {"val": self.val_loader, "test": self.target_loader}
66 | self.len_dataloader = len(self.source_loader)
67 | print("Dataset size: train %d, val %d, test %d" % (
68 | len(self.source_loader.dataset), len(self.val_loader.dataset), len(self.target_loader.dataset)))
69 | self.optimizer, self.scheduler = get_optim_and_scheduler(model, args.epochs, args.learning_rate, args.train_all,
70 | nesterov=args.nesterov)
71 | self.n_classes = args.n_classes
72 | if args.target in args.source:
73 | self.target_id = args.source.index(args.target)
74 | print("Target in source: %d" % self.target_id)
75 | print(args.source)
76 | else:
77 | self.target_id = None
78 |
79 | def _do_epoch(self, epoch=None):
80 | criterion = nn.CrossEntropyLoss()
81 | self.model.train()
82 | for it, ((data, jig_l, class_l), d_idx) in enumerate(self.source_loader):
83 | data, jig_l, class_l, d_idx = data.to(self.device), jig_l.to(self.device), class_l.to(self.device), d_idx.to(self.device)
84 | self.optimizer.zero_grad()
85 |
86 | data_flip = torch.flip(data, (3,)).detach().clone()
87 | data = torch.cat((data, data_flip))
88 | class_l = torch.cat((class_l, class_l))
89 |
90 | class_logit = self.model(data, class_l, True, epoch)
91 | class_loss = criterion(class_logit, class_l)
92 | _, cls_pred = class_logit.max(dim=1)
93 | loss = class_loss
94 |
95 | loss.backward()
96 | self.optimizer.step()
97 |
98 | self.logger.log(it, len(self.source_loader),
99 | {"class": class_loss.item()},
100 | {"class": torch.sum(cls_pred == class_l.data).item(), }, data.shape[0])
101 | del loss, class_loss, class_logit
102 |
103 | self.model.eval()
104 | with torch.no_grad():
105 | for phase, loader in self.test_loaders.items():
106 | total = len(loader.dataset)
107 |
108 | class_correct = self.do_test(loader)
109 |
110 | class_acc = float(class_correct) / total
111 | self.logger.log_test(phase, {"class": class_acc})
112 | self.results[phase][self.current_epoch] = class_acc
113 |
114 | def do_test(self, loader):
115 | class_correct = 0
116 | for it, ((data, nouse, class_l), _) in enumerate(loader):
117 | data, nouse, class_l = data.to(self.device), nouse.to(self.device), class_l.to(self.device)
118 |
119 | class_logit = self.model(data, class_l, False)
120 | _, cls_pred = class_logit.max(dim=1)
121 |
122 | class_correct += torch.sum(cls_pred == class_l.data)
123 |
124 | return class_correct
125 |
126 |
127 | def do_training(self):
128 | self.logger = Logger(self.args, update_frequency=30)
129 | self.results = {"val": torch.zeros(self.args.epochs), "test": torch.zeros(self.args.epochs)}
130 | for self.current_epoch in range(self.args.epochs):
131 | self.scheduler.step()
132 | self.logger.new_epoch(self.scheduler.get_lr())
133 | self._do_epoch(self.current_epoch)
134 | val_res = self.results["val"]
135 | test_res = self.results["test"]
136 | idx_best = val_res.argmax()
137 | print("Best val %g, corresponding test %g - best test: %g, best epoch: %g" % (
138 | val_res.max(), test_res[idx_best], test_res.max(), idx_best))
139 | self.logger.save_best(test_res[idx_best], test_res.max())
140 | return self.logger, self.model
141 |
142 |
143 | def main():
144 | args = get_args()
145 | # args.source = ['art_painting', 'cartoon', 'sketch']
146 | # args.target = 'photo'
147 | args.source = ['art_painting', 'cartoon', 'photo']
148 | args.target = 'sketch'
149 | # args.source = ['art_painting', 'photo', 'sketch']
150 | # args.target = 'cartoon'
151 | # args.source = ['photo', 'cartoon', 'sketch']
152 | # args.target = 'art_painting'
153 | # --------------------------------------------
154 | print("Target domain: {}".format(args.target))
155 | torch.manual_seed(0)
156 | torch.cuda.manual_seed(0)
157 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
158 | trainer = Trainer(args, device)
159 | trainer.do_training()
160 |
161 |
162 | if __name__ == "__main__":
163 | torch.backends.cudnn.benchmark = True
164 | main()
165 |
--------------------------------------------------------------------------------
/Domain_Generalization/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 |
--------------------------------------------------------------------------------
/Domain_Generalization/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DeLightCMU/RSC/bf6d280c5d74910f009ea8963c59167252659666/Domain_Generalization/utils/__init__.py
--------------------------------------------------------------------------------
/Domain_Generalization/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 | self.writer = tf.compat.v1.summary.FileWriter(log_dir)
16 |
17 | def scalar_summary(self, tag, value, step):
18 | """Log a scalar variable."""
19 | summary = tf.compat.v1.Summary(value=[tf.compat.v1.Summary.Value(tag=tag, simple_value=value)])
20 | self.writer.add_summary(summary, step)
21 |
22 | def image_summary(self, tag, images, step):
23 | """Log a list of images."""
24 |
25 | img_summaries = []
26 | for i, img in enumerate(images):
27 | # Write the image to a string
28 | try:
29 | s = StringIO()
30 | except:
31 | s = BytesIO()
32 | scipy.misc.toimage(img).save(s, format="png")
33 |
34 | # Create an Image object
35 | img_sum = tf.Summary.Image(encoded_image_string=s.getvalue(),
36 | height=img.shape[0],
37 | width=img.shape[1])
38 | # Create a Summary value
39 | img_summaries.append(tf.Summary.Value(tag='%s/%d' % (tag, i), image=img_sum))
40 |
41 | # Create and write Summary
42 | summary = tf.Summary(value=img_summaries)
43 | self.writer.add_summary(summary, step)
44 |
45 | def histo_summary(self, tag, values, step, bins=1000):
46 | """Log a histogram of the tensor of values."""
47 |
48 | # Create a histogram using numpy
49 | counts, bin_edges = np.histogram(values, bins=bins)
50 |
51 | # Fill the fields of the histogram proto
52 | hist = tf.HistogramProto()
53 | hist.min = float(np.min(values))
54 | hist.max = float(np.max(values))
55 | hist.num = int(np.prod(values.shape))
56 | hist.sum = float(np.sum(values))
57 | hist.sum_squares = float(np.sum(values**2))
58 |
59 | # Drop the start of the first bin
60 | bin_edges = bin_edges[1:]
61 |
62 | # Add bin edges and counts
63 | for edge in bin_edges:
64 | hist.bucket_limit.append(edge)
65 | for c in counts:
66 | hist.bucket.append(c)
67 |
68 | # Create and write Summary
69 | summary = tf.Summary(value=[tf.Summary.Value(tag=tag, histo=hist)])
70 | self.writer.add_summary(summary, step)
71 | self.writer.flush()
72 |
--------------------------------------------------------------------------------
/Domain_Generalization/utils/vis.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 |
3 | def view_training(logger, title):
4 | fig, ax1 = plt.subplots()
5 | for k,v in logger.losses.items():
6 | ax1.plot(v, label=k)
7 | l = len(v)
8 | updates = l / len(logger.val_acc["class"])
9 | plt.legend()
10 | ax2 = ax1.twinx()
11 | for k,v in logger.val_acc.items():
12 | ax2.plot(range(0,l,int(updates)), v, label="Test %s" % k)
13 | plt.legend()
14 | plt.title(title + " last acc %.2f:" % logger.val_acc["class"][-1])
15 | plt.show()
--------------------------------------------------------------------------------
/ImageNet/.idea/ImageNet.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ImageNet/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ImageNet/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ImageNet/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ImageNet/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ImageNet/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 | ia
113 |
114 |
115 |
116 |
117 |
118 |
119 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 | 1604367759471
177 |
178 |
179 | 1604367759471
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
--------------------------------------------------------------------------------
/ImageNet/main.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import os
3 | import random
4 | import shutil
5 | import time
6 | import warnings
7 |
8 | import torch
9 | import torch.nn as nn
10 | import torch.nn.parallel
11 | import torch.backends.cudnn as cudnn
12 | import torch.distributed as dist
13 | import torch.optim
14 | import torch.multiprocessing as mp
15 | import torch.utils.data
16 | import torch.utils.data.distributed
17 | import torchvision.transforms as transforms
18 | import torchvision.datasets as datasets
19 | import torchvision.models as models
20 | from resnet import resnet50, resnet18, resnet101
21 | model_names = sorted(name for name in models.__dict__
22 | if name.islower() and not name.startswith("__")
23 | and callable(models.__dict__[name]))
24 |
25 | parser = argparse.ArgumentParser(description='PyTorch ImageNet Training')
26 | parser.add_argument('data', metavar='DIR',
27 | help='path to dataset')
28 | parser.add_argument('-a', '--arch', metavar='ARCH', default='resnet18',
29 | choices=model_names,
30 | help='model architecture: ' +
31 | ' | '.join(model_names) +
32 | ' (default: resnet18)')
33 | parser.add_argument('-j', '--workers', default=4, type=int, metavar='N',
34 | help='number of data loading workers (default: 4)')
35 | parser.add_argument('--epochs', default=90, type=int, metavar='N',
36 | help='number of total epochs to run')
37 | parser.add_argument('--start-epoch', default=0, type=int, metavar='N',
38 | help='manual epoch number (useful on restarts)')
39 | parser.add_argument('-b', '--batch-size', default=256, type=int,
40 | metavar='N',
41 | help='mini-batch size (default: 256), this is the total '
42 | 'batch size of all GPUs on the current node when '
43 | 'using Data Parallel or Distributed Data Parallel')
44 | parser.add_argument('--lr', '--learning-rate', default=0.1, type=float,
45 | metavar='LR', help='initial learning rate', dest='lr')
46 | parser.add_argument('--momentum', default=0.9, type=float, metavar='M',
47 | help='momentum')
48 | parser.add_argument('--wd', '--weight-decay', default=1e-4, type=float,
49 | metavar='W', help='weight decay (default: 1e-4)',
50 | dest='weight_decay')
51 | parser.add_argument('-p', '--print-freq', default=500, type=int,
52 | metavar='N', help='print frequency (default: 10)')
53 | parser.add_argument('--resume', default='', type=str, metavar='PATH',
54 | help='path to latest checkpoint (default: none)')
55 | parser.add_argument('-e', '--evaluate', dest='evaluate', action='store_true',
56 | help='evaluate model on validation set')
57 | parser.add_argument('--pretrained', dest='pretrained', action='store_true',
58 | help='use pre-trained model')
59 | parser.add_argument('--world-size', default=-1, type=int,
60 | help='number of nodes for distributed training')
61 | parser.add_argument('--rank', default=-1, type=int,
62 | help='node rank for distributed training')
63 | parser.add_argument('--dist-url', default='tcp://224.66.41.62:23456', type=str,
64 | help='url used to set up distributed training')
65 | parser.add_argument('--dist-backend', default='nccl', type=str,
66 | help='distributed backend')
67 | parser.add_argument('--seed', default=None, type=int,
68 | help='seed for initializing training. ')
69 | parser.add_argument('--gpu', default=None, type=int,
70 | help='GPU id to use.')
71 | parser.add_argument('--multiprocessing-distributed', action='store_true',
72 | help='Use multi-processing distributed training to launch '
73 | 'N processes per node, which has N GPUs. This is the '
74 | 'fastest way to use PyTorch for either single node or '
75 | 'multi node data parallel training')
76 |
77 | best_acc1 = 0
78 |
79 |
80 | def main():
81 | args = parser.parse_args()
82 |
83 | if args.seed is not None:
84 | random.seed(args.seed)
85 | torch.manual_seed(args.seed)
86 | cudnn.deterministic = True
87 | warnings.warn('You have chosen to seed training. '
88 | 'This will turn on the CUDNN deterministic setting, '
89 | 'which can slow down your training considerably! '
90 | 'You may see unexpected behavior when restarting '
91 | 'from checkpoints.')
92 |
93 | if args.gpu is not None:
94 | warnings.warn('You have chosen a specific GPU. This will completely '
95 | 'disable data parallelism.')
96 |
97 | if args.dist_url == "env://" and args.world_size == -1:
98 | args.world_size = int(os.environ["WORLD_SIZE"])
99 |
100 | args.distributed = args.world_size > 1 or args.multiprocessing_distributed
101 |
102 | ngpus_per_node = torch.cuda.device_count()
103 | if args.multiprocessing_distributed:
104 | # Since we have ngpus_per_node processes per node, the total world_size
105 | # needs to be adjusted accordingly
106 | args.world_size = ngpus_per_node * args.world_size
107 | # Use torch.multiprocessing.spawn to launch distributed processes: the
108 | # main_worker process function
109 | mp.spawn(main_worker, nprocs=ngpus_per_node, args=(ngpus_per_node, args))
110 | else:
111 | # Simply call main_worker function
112 | main_worker(args.gpu, ngpus_per_node, args)
113 |
114 |
115 | def main_worker(gpu, ngpus_per_node, args):
116 | global best_acc1
117 | args.gpu = gpu
118 |
119 | if args.gpu is not None:
120 | print("Use GPU: {} for training".format(args.gpu))
121 |
122 | if args.distributed:
123 | if args.dist_url == "env://" and args.rank == -1:
124 | args.rank = int(os.environ["RANK"])
125 | if args.multiprocessing_distributed:
126 | # For multiprocessing distributed training, rank needs to be the
127 | # global rank among all the processes
128 | args.rank = args.rank * ngpus_per_node + gpu
129 | dist.init_process_group(backend=args.dist_backend, init_method=args.dist_url,
130 | world_size=args.world_size, rank=args.rank)
131 | # create model
132 | # if args.pretrained:
133 | # print("=> using pre-trained model '{}'".format(args.arch))
134 | # model = models.__dict__[args.arch](pretrained=True)
135 | # else:
136 | # print("=> creating model '{}'".format(args.arch))
137 | # model = models.__dict__[args.arch]()
138 | # ---- or ----
139 | model = resnet50(pretrained=True)
140 |
141 | if args.distributed:
142 | # For multiprocessing distributed, DistributedDataParallel constructor
143 | # should always set the single device scope, otherwise,
144 | # DistributedDataParallel will use all available devices.
145 | if args.gpu is not None:
146 | torch.cuda.set_device(args.gpu)
147 | model.cuda(args.gpu)
148 | # When using a single GPU per process and per
149 | # DistributedDataParallel, we need to divide the batch size
150 | # ourselves based on the total number of GPUs we have
151 | args.batch_size = int(args.batch_size / ngpus_per_node)
152 | args.workers = int((args.workers + ngpus_per_node - 1) / ngpus_per_node)
153 | model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.gpu])
154 | else:
155 | model.cuda()
156 | # DistributedDataParallel will divide and allocate batch_size to all
157 | # available GPUs if device_ids are not set
158 | model = torch.nn.parallel.DistributedDataParallel(model)
159 | elif args.gpu is not None:
160 | torch.cuda.set_device(args.gpu)
161 | model = model.cuda(args.gpu)
162 | else:
163 | # DataParallel will divide and allocate batch_size to all available GPUs
164 | if args.arch.startswith('alexnet') or args.arch.startswith('vgg'):
165 | model.features = torch.nn.DataParallel(model.features)
166 | model.cuda()
167 | else:
168 | model = torch.nn.DataParallel(model).cuda()
169 |
170 | # define loss function (criterion) and optimizer
171 | criterion = nn.CrossEntropyLoss().cuda(args.gpu)
172 |
173 | optimizer = torch.optim.SGD(model.parameters(), args.lr,
174 | momentum=args.momentum,
175 | weight_decay=args.weight_decay)
176 |
177 | # optionally resume from a checkpoint
178 | if args.resume:
179 | if os.path.isfile(args.resume):
180 | print("=> loading checkpoint '{}'".format(args.resume))
181 | if args.gpu is None:
182 | checkpoint = torch.load(args.resume)
183 | else:
184 | # Map model to be loaded to specified single gpu.
185 | loc = 'cuda:{}'.format(args.gpu)
186 | checkpoint = torch.load(args.resume, map_location=loc)
187 | args.start_epoch = checkpoint['epoch']
188 | best_acc1 = checkpoint['best_acc1']
189 | if args.gpu is not None:
190 | # best_acc1 may be from a checkpoint from a different GPU
191 | best_acc1 = best_acc1.to(args.gpu)
192 | model.load_state_dict(checkpoint['state_dict'])
193 | optimizer.load_state_dict(checkpoint['optimizer'])
194 | print("=> loaded checkpoint '{}' (epoch {})"
195 | .format(args.resume, checkpoint['epoch']))
196 | else:
197 | print("=> no checkpoint found at '{}'".format(args.resume))
198 |
199 | cudnn.benchmark = True
200 |
201 | # Data loading code
202 | traindir = os.path.join(args.data, 'train')
203 | valdir = os.path.join(args.data, 'val')
204 | normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
205 | std=[0.229, 0.224, 0.225])
206 |
207 | train_dataset = datasets.ImageFolder(
208 | traindir,
209 | transforms.Compose([
210 | transforms.RandomResizedCrop(224),
211 | transforms.RandomHorizontalFlip(),
212 | transforms.ToTensor(),
213 | normalize,
214 | ]))
215 |
216 | if args.distributed:
217 | train_sampler = torch.utils.data.distributed.DistributedSampler(train_dataset)
218 | else:
219 | train_sampler = None
220 |
221 | train_loader = torch.utils.data.DataLoader(
222 | train_dataset, batch_size=args.batch_size, shuffle=(train_sampler is None),
223 | num_workers=args.workers, pin_memory=True, sampler=train_sampler)
224 |
225 | val_loader = torch.utils.data.DataLoader(
226 | datasets.ImageFolder(valdir, transforms.Compose([
227 | transforms.Resize(256),
228 | transforms.CenterCrop(224),
229 | transforms.ToTensor(),
230 | normalize,
231 | ])),
232 | batch_size=args.batch_size, shuffle=False,
233 | num_workers=args.workers, pin_memory=True)
234 |
235 | if args.evaluate:
236 | validate(val_loader, model, criterion, args)
237 | return
238 |
239 | for epoch in range(args.start_epoch, args.epochs):
240 | if args.distributed:
241 | train_sampler.set_epoch(epoch)
242 | adjust_learning_rate(optimizer, epoch, args)
243 |
244 | # train for one epoch
245 | train(train_loader, model, criterion, optimizer, epoch, args)
246 |
247 | # evaluate on validation set
248 | acc1 = validate(val_loader, model, criterion, args)
249 |
250 | # remember best acc@1 and save checkpoint
251 | is_best = acc1 > best_acc1
252 | best_acc1 = max(acc1, best_acc1)
253 |
254 | if not args.multiprocessing_distributed or (args.multiprocessing_distributed
255 | and args.rank % ngpus_per_node == 0):
256 | save_checkpoint({
257 | 'epoch': epoch + 1,
258 | 'arch': args.arch,
259 | 'state_dict': model.state_dict(),
260 | 'best_acc1': best_acc1,
261 | 'optimizer' : optimizer.state_dict(),
262 | }, is_best)
263 |
264 |
265 | def train(train_loader, model, criterion, optimizer, epoch, args):
266 | batch_time = AverageMeter('Time', ':6.3f')
267 | data_time = AverageMeter('Data', ':6.3f')
268 | losses = AverageMeter('Loss', ':.4e')
269 | top1 = AverageMeter('Acc@1', ':6.2f')
270 | top5 = AverageMeter('Acc@5', ':6.2f')
271 | progress = ProgressMeter(
272 | len(train_loader),
273 | [batch_time, data_time, losses, top1, top5],
274 | prefix="Epoch: [{}]".format(epoch))
275 |
276 | # switch to train mode
277 | model.train()
278 |
279 | end = time.time()
280 | for i, (images, target) in enumerate(train_loader):
281 | # measure data loading time
282 | data_time.update(time.time() - end)
283 |
284 | if args.gpu is not None:
285 | images = images.cuda(args.gpu, non_blocking=True)
286 | target = target.cuda(args.gpu, non_blocking=True)
287 |
288 | # compute output
289 | output = model(images, target, epoch)
290 | # output = model(images)
291 | loss = criterion(output, target)
292 |
293 | # measure accuracy and record loss
294 | acc1, acc5 = accuracy(output, target, topk=(1, 5))
295 | losses.update(loss.item(), images.size(0))
296 | top1.update(acc1[0], images.size(0))
297 | top5.update(acc5[0], images.size(0))
298 |
299 | # compute gradient and do SGD step
300 | optimizer.zero_grad()
301 | loss.backward()
302 | optimizer.step()
303 |
304 | # measure elapsed time
305 | batch_time.update(time.time() - end)
306 | end = time.time()
307 |
308 | if i % args.print_freq == 0:
309 | progress.display(i)
310 |
311 |
312 | def validate(val_loader, model, criterion, args):
313 | batch_time = AverageMeter('Time', ':6.3f')
314 | losses = AverageMeter('Loss', ':.4e')
315 | top1 = AverageMeter('Acc@1', ':6.2f')
316 | top5 = AverageMeter('Acc@5', ':6.2f')
317 | progress = ProgressMeter(
318 | len(val_loader),
319 | [batch_time, losses, top1, top5],
320 | prefix='Test: ')
321 |
322 | # switch to evaluate mode
323 | model.eval()
324 |
325 | with torch.no_grad():
326 | end = time.time()
327 | for i, (images, target) in enumerate(val_loader):
328 | if args.gpu is not None:
329 | images = images.cuda(args.gpu, non_blocking=True)
330 | target = target.cuda(args.gpu, non_blocking=True)
331 |
332 | # compute output
333 | output = model(images)
334 | loss = criterion(output, target)
335 |
336 | # measure accuracy and record loss
337 | acc1, acc5 = accuracy(output, target, topk=(1, 5))
338 | losses.update(loss.item(), images.size(0))
339 | top1.update(acc1[0], images.size(0))
340 | top5.update(acc5[0], images.size(0))
341 |
342 | # measure elapsed time
343 | batch_time.update(time.time() - end)
344 | end = time.time()
345 |
346 | if i % args.print_freq == 0:
347 | progress.display(i)
348 |
349 | # TODO: this should also be done with the ProgressMeter
350 | print(' * Acc@1 {top1.avg:.3f} Acc@5 {top5.avg:.3f}'
351 | .format(top1=top1, top5=top5))
352 |
353 | return top1.avg
354 |
355 |
356 | def save_checkpoint(state, is_best, filename='checkpoint.pth.tar'):
357 | torch.save(state, filename)
358 | if is_best:
359 | shutil.copyfile(filename, 'model_best.pth.tar')
360 |
361 |
362 | class AverageMeter(object):
363 | """Computes and stores the average and current value"""
364 | def __init__(self, name, fmt=':f'):
365 | self.name = name
366 | self.fmt = fmt
367 | self.reset()
368 |
369 | def reset(self):
370 | self.val = 0
371 | self.avg = 0
372 | self.sum = 0
373 | self.count = 0
374 |
375 | def update(self, val, n=1):
376 | self.val = val
377 | self.sum += val * n
378 | self.count += n
379 | self.avg = self.sum / self.count
380 |
381 | def __str__(self):
382 | fmtstr = '{name} {val' + self.fmt + '} ({avg' + self.fmt + '})'
383 | return fmtstr.format(**self.__dict__)
384 |
385 |
386 | class ProgressMeter(object):
387 | def __init__(self, num_batches, meters, prefix=""):
388 | self.batch_fmtstr = self._get_batch_fmtstr(num_batches)
389 | self.meters = meters
390 | self.prefix = prefix
391 |
392 | def display(self, batch):
393 | entries = [self.prefix + self.batch_fmtstr.format(batch)]
394 | entries += [str(meter) for meter in self.meters]
395 | print('\t'.join(entries))
396 |
397 | def _get_batch_fmtstr(self, num_batches):
398 | num_digits = len(str(num_batches // 1))
399 | fmt = '{:' + str(num_digits) + 'd}'
400 | return '[' + fmt + '/' + fmt.format(num_batches) + ']'
401 |
402 |
403 | def adjust_learning_rate(optimizer, epoch, args):
404 | """Sets the learning rate to the initial LR decayed by 10 every 30 epochs"""
405 | lr = args.lr * (0.1 ** (epoch // 20))
406 | if epoch % 5 == 0:
407 | print('current lr is :{}'.format(lr))
408 | for param_group in optimizer.param_groups:
409 | param_group['lr'] = lr
410 |
411 |
412 | def accuracy(output, target, topk=(1,)):
413 | """Computes the accuracy over the k top predictions for the specified values of k"""
414 | with torch.no_grad():
415 | maxk = max(topk)
416 | batch_size = target.size(0)
417 |
418 | _, pred = output.topk(maxk, 1, True, True)
419 | pred = pred.t()
420 | correct = pred.eq(target.view(1, -1).expand_as(pred))
421 |
422 | res = []
423 | for k in topk:
424 | correct_k = correct[:k].view(-1).float().sum(0, keepdim=True)
425 | res.append(correct_k.mul_(100.0 / batch_size))
426 | return res
427 |
428 |
429 | if __name__ == '__main__':
430 | main()
431 |
--------------------------------------------------------------------------------
/ImageNet/resnet.py:
--------------------------------------------------------------------------------
1 | import torch
2 | import torch.nn as nn
3 | from torch.autograd import Variable
4 | import numpy.random as npr
5 | import numpy as np
6 | import torch.nn.functional as F
7 | import random
8 | import cv2
9 | # from .utils import load_state_dict_from_url
10 | try:
11 | from torch.hub import load_state_dict_from_url
12 | except ImportError:
13 | from torch.utils.model_zoo import load_url as load_state_dict_from_url
14 |
15 | __all__ = ['ResNet', 'resnet18', 'resnet34', 'resnet50', 'resnet101',
16 | 'resnet152', 'resnext50_32x4d', 'resnext101_32x8d',
17 | 'wide_resnet50_2', 'wide_resnet101_2']
18 |
19 |
20 | model_urls = {
21 | 'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth',
22 | 'resnet34': 'https://download.pytorch.org/models/resnet34-333f7ec4.pth',
23 | 'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth',
24 | 'resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth',
25 | 'resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth',
26 | 'resnext50_32x4d': 'https://download.pytorch.org/models/resnext50_32x4d-7cdf4587.pth',
27 | 'resnext101_32x8d': 'https://download.pytorch.org/models/resnext101_32x8d-8ba56ff5.pth',
28 | 'wide_resnet50_2': 'https://download.pytorch.org/models/wide_resnet50_2-95faca4d.pth',
29 | 'wide_resnet101_2': 'https://download.pytorch.org/models/wide_resnet101_2-32ee1156.pth',
30 | }
31 |
32 |
33 | def conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1):
34 | """3x3 convolution with padding"""
35 | return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
36 | padding=dilation, groups=groups, bias=False, dilation=dilation)
37 |
38 |
39 | def conv1x1(in_planes, out_planes, stride=1):
40 | """1x1 convolution"""
41 | return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False)
42 |
43 |
44 | class BasicBlock(nn.Module):
45 | expansion = 1
46 | __constants__ = ['downsample']
47 |
48 | def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
49 | base_width=64, dilation=1, norm_layer=None):
50 | super(BasicBlock, self).__init__()
51 | if norm_layer is None:
52 | norm_layer = nn.BatchNorm2d
53 | if groups != 1 or base_width != 64:
54 | raise ValueError('BasicBlock only supports groups=1 and base_width=64')
55 | if dilation > 1:
56 | raise NotImplementedError("Dilation > 1 not supported in BasicBlock")
57 | # Both self.conv1 and self.downsample layers downsample the input when stride != 1
58 | self.conv1 = conv3x3(inplanes, planes, stride)
59 | self.bn1 = norm_layer(planes)
60 | self.relu = nn.ReLU(inplace=True)
61 | self.conv2 = conv3x3(planes, planes)
62 | self.bn2 = norm_layer(planes)
63 | self.downsample = downsample
64 | self.stride = stride
65 |
66 | def forward(self, x):
67 | identity = x
68 |
69 | out = self.conv1(x)
70 | out = self.bn1(out)
71 | out = self.relu(out)
72 |
73 | out = self.conv2(out)
74 | out = self.bn2(out)
75 |
76 | if self.downsample is not None:
77 | identity = self.downsample(x)
78 |
79 | out += identity
80 | out = self.relu(out)
81 |
82 | return out
83 |
84 |
85 | class Bottleneck(nn.Module):
86 | expansion = 4
87 | __constants__ = ['downsample']
88 |
89 | def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
90 | base_width=64, dilation=1, norm_layer=None):
91 | super(Bottleneck, self).__init__()
92 | if norm_layer is None:
93 | norm_layer = nn.BatchNorm2d
94 | width = int(planes * (base_width / 64.)) * groups
95 | # Both self.conv2 and self.downsample layers downsample the input when stride != 1
96 | self.conv1 = conv1x1(inplanes, width)
97 | self.bn1 = norm_layer(width)
98 | self.conv2 = conv3x3(width, width, stride, groups, dilation)
99 | self.bn2 = norm_layer(width)
100 | self.conv3 = conv1x1(width, planes * self.expansion)
101 | self.bn3 = norm_layer(planes * self.expansion)
102 | self.relu = nn.ReLU(inplace=True)
103 | self.downsample = downsample
104 | self.stride = stride
105 |
106 | def forward(self, x):
107 | identity = x
108 |
109 | out = self.conv1(x)
110 | out = self.bn1(out)
111 | out = self.relu(out)
112 |
113 | out = self.conv2(out)
114 | out = self.bn2(out)
115 | out = self.relu(out)
116 |
117 | out = self.conv3(out)
118 | out = self.bn3(out)
119 |
120 | if self.downsample is not None:
121 | identity = self.downsample(x)
122 |
123 | out += identity
124 | out = self.relu(out)
125 |
126 | return out
127 |
128 |
129 | class ResNet(nn.Module):
130 |
131 | def __init__(self, block, layers, num_classes=1000, zero_init_residual=False,
132 | groups=1, width_per_group=64, replace_stride_with_dilation=None,
133 | norm_layer=None):
134 | super(ResNet, self).__init__()
135 | if norm_layer is None:
136 | norm_layer = nn.BatchNorm2d
137 | self._norm_layer = norm_layer
138 |
139 | self.inplanes = 64
140 | self.dilation = 1
141 | if replace_stride_with_dilation is None:
142 | # each element in the tuple indicates if we should replace
143 | # the 2x2 stride with a dilated convolution instead
144 | replace_stride_with_dilation = [False, False, False]
145 | if len(replace_stride_with_dilation) != 3:
146 | raise ValueError("replace_stride_with_dilation should be None "
147 | "or a 3-element tuple, got {}".format(replace_stride_with_dilation))
148 | self.groups = groups
149 | self.base_width = width_per_group
150 | self.conv1 = nn.Conv2d(3, self.inplanes, kernel_size=7, stride=2, padding=3,
151 | bias=False)
152 | self.bn1 = norm_layer(self.inplanes)
153 | self.relu = nn.ReLU(inplace=True)
154 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
155 | self.layer1 = self._make_layer(block, 64, layers[0])
156 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2,
157 | dilate=replace_stride_with_dilation[0])
158 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2,
159 | dilate=replace_stride_with_dilation[1])
160 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2,
161 | dilate=replace_stride_with_dilation[2])
162 | self.avgpool = nn.AdaptiveAvgPool2d((1, 1))
163 | self.fc = nn.Linear(512 * block.expansion, num_classes)
164 |
165 | for m in self.modules():
166 | if isinstance(m, nn.Conv2d):
167 | nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
168 | elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)):
169 | nn.init.constant_(m.weight, 1)
170 | nn.init.constant_(m.bias, 0)
171 |
172 | # Zero-initialize the last BN in each residual branch,
173 | # so that the residual branch starts with zeros, and each residual block behaves like an identity.
174 | # This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677
175 | if zero_init_residual:
176 | for m in self.modules():
177 | if isinstance(m, Bottleneck):
178 | nn.init.constant_(m.bn3.weight, 0)
179 | elif isinstance(m, BasicBlock):
180 | nn.init.constant_(m.bn2.weight, 0)
181 |
182 | def _make_layer(self, block, planes, blocks, stride=1, dilate=False):
183 | norm_layer = self._norm_layer
184 | downsample = None
185 | previous_dilation = self.dilation
186 | if dilate:
187 | self.dilation *= stride
188 | stride = 1
189 | if stride != 1 or self.inplanes != planes * block.expansion:
190 | downsample = nn.Sequential(
191 | conv1x1(self.inplanes, planes * block.expansion, stride),
192 | norm_layer(planes * block.expansion),
193 | )
194 |
195 | layers = []
196 | layers.append(block(self.inplanes, planes, stride, downsample, self.groups,
197 | self.base_width, previous_dilation, norm_layer))
198 | self.inplanes = planes * block.expansion
199 | for _ in range(1, blocks):
200 | layers.append(block(self.inplanes, planes, groups=self.groups,
201 | base_width=self.base_width, dilation=self.dilation,
202 | norm_layer=norm_layer))
203 |
204 | return nn.Sequential(*layers)
205 |
206 | def forward(self, x, gt=None, epoch=None):
207 | x = self.conv1(x)
208 | x = self.bn1(x)
209 | x = self.relu(x)
210 | x = self.maxpool(x)
211 |
212 | x = self.layer1(x)
213 | x = self.layer2(x)
214 | x = self.layer3(x)
215 | x = self.layer4(x)
216 |
217 | if self.training:
218 | if epoch <= 18:
219 | percent = 1/6.0
220 | elif epoch <= 38:
221 | percent = 1/5.5
222 | elif epoch <= 58:
223 | percent = 1/5.0
224 | elif epoch <= 78:
225 | percent = 1/4.5
226 | else:
227 | percent = 1/4.0
228 |
229 | self.eval()
230 | x_new = x.clone().detach()
231 | x_new = Variable(x_new.data, requires_grad=True)
232 | x_new_view = self.avgpool(x_new)
233 | x_new_view = x_new_view.view(x_new_view.size(0), -1)
234 | output = self.fc(x_new_view)
235 | class_num = output.shape[1]
236 | index = gt
237 | num_rois = x_new.shape[0]
238 | num_channel = x_new.shape[1]
239 | H = x_new.shape[2]
240 | HW = H * H
241 | one_hot = torch.zeros((1), dtype=torch.float32).cuda()
242 | one_hot = Variable(one_hot, requires_grad=False)
243 | sp_i = torch.ones([2, num_rois]).long()
244 | sp_i[0, :] = torch.arange(num_rois)
245 | sp_i[1, :] = index
246 | sp_v = torch.ones([num_rois])
247 | one_hot_sparse = torch.sparse.FloatTensor(sp_i, sp_v, torch.Size([num_rois, class_num])).to_dense().cuda()
248 | one_hot_sparse = Variable(one_hot_sparse, requires_grad=False)
249 | one_hot = torch.sum(output * one_hot_sparse)
250 | self.zero_grad()
251 | one_hot.backward()
252 | grads_val = x_new.grad.clone().detach()
253 | grad_channel_mean = torch.mean(grads_val.view(num_rois, num_channel, -1), dim=2)
254 | grad_channel_mean = grad_channel_mean.view(num_rois, num_channel, 1, 1)
255 | spatial_mean = torch.sum(x_new * grad_channel_mean, 1)
256 | spatial_mean = spatial_mean.view(num_rois, HW)
257 | self.zero_grad()
258 |
259 | th_mask_value = torch.sort(spatial_mean, dim=1, descending=True)[0][:, int(HW/2.0)]
260 | th_mask_value = th_mask_value.view(num_rois, 1).expand(num_rois, HW)
261 | mask_all_cuda = torch.where(spatial_mean > th_mask_value, torch.zeros(spatial_mean.shape).cuda(),
262 | torch.ones(spatial_mean.shape).cuda())
263 | mask_all = mask_all_cuda.detach().cpu().numpy()
264 | spatial_drop_num = int(HW/3.0)
265 | for q in range(num_rois):
266 | mask_all_temp = np.ones((HW), dtype=np.float32)
267 | zero_index = np.where(mask_all[q, :] == 0)[0]
268 | num_zero_index = zero_index.size
269 | if num_zero_index >= spatial_drop_num:
270 | dumy_index = npr.choice(zero_index, size=spatial_drop_num, replace=False)
271 | else:
272 | zero_index = np.arange(49)
273 | dumy_index = npr.choice(zero_index, size=spatial_drop_num, replace=False)
274 | mask_all_temp[dumy_index] = 0
275 | mask_all[q, :] = mask_all_temp
276 | mask_all = torch.from_numpy(mask_all.reshape(num_rois, H, H)).cuda()
277 | mask_all = mask_all.view(num_rois, 1, H, H)
278 |
279 | cls_prob_before = F.softmax(output, dim=1)
280 | x_new_view_after = x_new * mask_all
281 | x_new_view_after = self.avgpool(x_new_view_after)
282 | x_new_view_after = x_new_view_after.view(x_new_view_after.size(0), -1)
283 | x_new_view_after = self.fc(x_new_view_after)
284 | cls_prob_after = F.softmax(x_new_view_after, dim=1)
285 |
286 | sp_i = torch.ones([2, num_rois]).long()
287 | sp_i[0, :] = torch.arange(num_rois)
288 | sp_i[1, :] = index
289 | sp_v = torch.ones([num_rois])
290 | one_hot_sparse = torch.sparse.FloatTensor(sp_i, sp_v, torch.Size([num_rois, class_num])).to_dense().cuda()
291 | before_vector = torch.sum(one_hot_sparse * cls_prob_before, dim=1)
292 | after_vector = torch.sum(one_hot_sparse * cls_prob_after, dim=1)
293 | change_vector = before_vector - after_vector - 0.0001
294 | change_vector = torch.where(change_vector > 0, change_vector, torch.zeros(change_vector.shape).cuda())
295 | th_fg_value = torch.sort(change_vector, dim=0, descending=True)[0][int(round(float(num_rois) * percent))]
296 | drop_index_fg = change_vector.gt(th_fg_value)
297 | ignore_index_fg = 1 - drop_index_fg
298 | not_01_ignore_index_fg = ignore_index_fg.nonzero()[:, 0]
299 | mask_all[not_01_ignore_index_fg.long(), :] = 1
300 |
301 | self.train()
302 | mask_all = Variable(mask_all, requires_grad=True)
303 | x = x * mask_all
304 |
305 | x = self.avgpool(x)
306 | x = torch.flatten(x, 1)
307 | x = self.fc(x)
308 |
309 | return x
310 |
311 |
312 | def _resnet(arch, block, layers, pretrained, progress, **kwargs):
313 | model = ResNet(block, layers, **kwargs)
314 | if pretrained:
315 | state_dict = load_state_dict_from_url(model_urls[arch],
316 | progress=progress)
317 | model.load_state_dict(state_dict)
318 | return model
319 |
320 |
321 | def resnet18(pretrained=False, progress=True, **kwargs):
322 | r"""ResNet-18 model from
323 | `"Deep Residual Learning for Image Recognition" `_
324 | Args:
325 | pretrained (bool): If True, returns a model pre-trained on ImageNet
326 | progress (bool): If True, displays a progress bar of the download to stderr
327 | """
328 | return _resnet('resnet18', BasicBlock, [2, 2, 2, 2], pretrained, progress,
329 | **kwargs)
330 |
331 |
332 | def resnet34(pretrained=False, progress=True, **kwargs):
333 | r"""ResNet-34 model from
334 | `"Deep Residual Learning for Image Recognition" `_
335 | Args:
336 | pretrained (bool): If True, returns a model pre-trained on ImageNet
337 | progress (bool): If True, displays a progress bar of the download to stderr
338 | """
339 | return _resnet('resnet34', BasicBlock, [3, 4, 6, 3], pretrained, progress,
340 | **kwargs)
341 |
342 |
343 | def resnet50(pretrained=False, progress=True, **kwargs):
344 | r"""ResNet-50 model from
345 | `"Deep Residual Learning for Image Recognition" `_
346 | Args:
347 | pretrained (bool): If True, returns a model pre-trained on ImageNet
348 | progress (bool): If True, displays a progress bar of the download to stderr
349 | """
350 | return _resnet('resnet50', Bottleneck, [3, 4, 6, 3], pretrained, progress,
351 | **kwargs)
352 |
353 |
354 | def resnet101(pretrained=False, progress=True, **kwargs):
355 | r"""ResNet-101 model from
356 | `"Deep Residual Learning for Image Recognition" `_
357 | Args:
358 | pretrained (bool): If True, returns a model pre-trained on ImageNet
359 | progress (bool): If True, displays a progress bar of the download to stderr
360 | """
361 | return _resnet('resnet101', Bottleneck, [3, 4, 23, 3], pretrained, progress,
362 | **kwargs)
363 |
364 |
365 | def resnet152(pretrained=False, progress=True, **kwargs):
366 | r"""ResNet-152 model from
367 | `"Deep Residual Learning for Image Recognition" `_
368 | Args:
369 | pretrained (bool): If True, returns a model pre-trained on ImageNet
370 | progress (bool): If True, displays a progress bar of the download to stderr
371 | """
372 | return _resnet('resnet152', Bottleneck, [3, 8, 36, 3], pretrained, progress,
373 | **kwargs)
374 |
375 |
376 | def resnext50_32x4d(pretrained=False, progress=True, **kwargs):
377 | r"""ResNeXt-50 32x4d model from
378 | `"Aggregated Residual Transformation for Deep Neural Networks" `_
379 | Args:
380 | pretrained (bool): If True, returns a model pre-trained on ImageNet
381 | progress (bool): If True, displays a progress bar of the download to stderr
382 | """
383 | kwargs['groups'] = 32
384 | kwargs['width_per_group'] = 4
385 | return _resnet('resnext50_32x4d', Bottleneck, [3, 4, 6, 3],
386 | pretrained, progress, **kwargs)
387 |
388 |
389 | def resnext101_32x8d(pretrained=False, progress=True, **kwargs):
390 | r"""ResNeXt-101 32x8d model from
391 | `"Aggregated Residual Transformation for Deep Neural Networks" `_
392 | Args:
393 | pretrained (bool): If True, returns a model pre-trained on ImageNet
394 | progress (bool): If True, displays a progress bar of the download to stderr
395 | """
396 | kwargs['groups'] = 32
397 | kwargs['width_per_group'] = 8
398 | return _resnet('resnext101_32x8d', Bottleneck, [3, 4, 23, 3],
399 | pretrained, progress, **kwargs)
400 |
401 |
402 | def wide_resnet50_2(pretrained=False, progress=True, **kwargs):
403 | r"""Wide ResNet-50-2 model from
404 | `"Wide Residual Networks" `_
405 | The model is the same as ResNet except for the bottleneck number of channels
406 | which is twice larger in every block. The number of channels in outer 1x1
407 | convolutions is the same, e.g. last block in ResNet-50 has 2048-512-2048
408 | channels, and in Wide ResNet-50-2 has 2048-1024-2048.
409 | Args:
410 | pretrained (bool): If True, returns a model pre-trained on ImageNet
411 | progress (bool): If True, displays a progress bar of the download to stderr
412 | """
413 | kwargs['width_per_group'] = 64 * 2
414 | return _resnet('wide_resnet50_2', Bottleneck, [3, 4, 6, 3],
415 | pretrained, progress, **kwargs)
416 |
417 |
418 | def wide_resnet101_2(pretrained=False, progress=True, **kwargs):
419 | r"""Wide ResNet-101-2 model from
420 | `"Wide Residual Networks" `_
421 | The model is the same as ResNet except for the bottleneck number of channels
422 | which is twice larger in every block. The number of channels in outer 1x1
423 | convolutions is the same, e.g. last block in ResNet-50 has 2048-512-2048
424 | channels, and in Wide ResNet-50-2 has 2048-1024-2048.
425 | Args:
426 | pretrained (bool): If True, returns a model pre-trained on ImageNet
427 | progress (bool): If True, displays a progress bar of the download to stderr
428 | """
429 | kwargs['width_per_group'] = 64 * 2
430 | return _resnet('wide_resnet101_2', Bottleneck, [3, 4, 23, 3],
431 | pretrained, progress, **kwargs)
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 2-Clause License
2 |
3 | Copyright (c) 2020, DeLightCMU
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | 1. Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | 2. Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Self-Challenging Improves Cross-Domain Generalization
2 |
3 | This is the official implementation of:
4 |
5 | **Zeyi Huang', Haohan Wang', Eric P. Xing, and Dong Huang**, ***Self-Challenging Improves Cross-Domain Generalization***, **ECCV, 2020 (Oral)**, [arxiv version](https://arxiv.org/abs/2007.02454).
6 |
7 | [](https://paperswithcode.com/sota/domain-generalization-on-office-home?p=self-challenging-improves-cross-domain)
8 | [](https://paperswithcode.com/sota/domain-generalization-on-pacs-2?p=self-challenging-improves-cross-domain)
9 | [](https://paperswithcode.com/sota/domain-generalization-on-vlcs?p=self-challenging-improves-cross-domain)
10 |
11 | **Notice** about DG task: In order to get the same results in the testing part, you should use the same environment configuration [here](https://github.com/DeLightCMU/RSC/blob/master/Domain_Generalization/env.txt), including software, hardware and random seed. When using a different environment configuration, similar to other DG repositories, you need to tune the parameters a little bit. According to my observations, a simple larger batch size and early stop can solve the problem. If you still can't solve the problem, don't panic! send me an email(zeyih(at)andrew(dot)cmu(dot)edu) with your environment. I'll help you out.
12 |
13 | **Update**: To mitigate fluctuation in different environments, we modify RSC in a curriculum manner. Also, we unify RSC for different network architectures. If you have any questions about the code, feel free to contact me or pull a issue.
14 |
15 |
16 |
17 | ### Citation:
18 |
19 | ```bash
20 | @inproceedings{huangRSC2020,
21 | title={Self-Challenging Improves Cross-Domain Generalization},
22 | author={Zeyi Huang and Haohan Wang and Eric P. Xing and Dong Huang},
23 | booktitle={ECCV},
24 | year={2020}
25 | }
26 | ```
27 |
28 | ## Installation
29 |
30 | ### Requirements:
31 |
32 | - Python ==3.7
33 | - Pytorch ==1.1.0
34 | - Torchvision == 0.3.0
35 | - Cuda ==10.0
36 | - Tensorflow ==1.14
37 | - GPU: RTX 2080
38 |
39 | ## Data Preparation
40 | Download PACS dataset from [here](http://www.eecs.qmul.ac.uk/~dl307/project_iccv2017). Once you have download the data, you must update the files in data/correct_txt_list to match the actual location of your files. **Note**: make sure you use the same train/val/test split in PACS paper.
41 |
42 | ## Runing on PACS dataset
43 | Experiments with different source/target domains are listed in train.py(L145-152).
44 |
45 | To train a ResNet18, simply run:
46 | ```bash
47 | python train.py --net resnet18
48 | ```
49 |
50 | To test a ResNet18, you can download RSC model below and [logs](https://cmu.box.com/s/yvymx574mr9u76lhqfa01rynimy9tv1p):
51 | | Backbone | Target Domain |Acc % | models |
52 | | :--------------:| :-----------: | :------------: |:------------: |
53 | | ResNet-18 |Photo |96.05 |[download](https://cmu.box.com/s/hma6aw2ubcjyxpczhto6zortwf8ufin6) |
54 | | ResNet-18 |Sketch |82.67 |[download](https://cmu.box.com/s/hfhgwsciz2a6aeg8jhffgwt5yh3dvenq) |
55 | | ResNet-18 |Cartoon |81.61 |[download](https://cmu.box.com/s/9rw7z2gxdlq9fsa5sfamjfj1xwj95d54) |
56 | | ResNet-18 |Art |85.16 |[download](https://cmu.box.com/s/ixfrzmanpv9t0koutiuaax91a26ylgit) |
57 |
58 |
59 | ## To Do
60 | Faster-RCNN
61 |
62 | ## Other pretrained models
63 | New ImageNet ResNet baselines training by RSC.
64 |
65 | | Backbone | Top-1 Acc % |Top-5 Acc % | pth models |
66 | | :--------------:| :--------------: | :------------: |:------------: |
67 | | ResNet-50 |77.18 |93.53 |[download](https://cmu.box.com/s/wpcy4mwkfm7gku3q4b115d5y1t69i4s4) |
68 | | ResNet-101 |78.23 |94.16 |[download](https://cmu.box.com/s/wpcy4mwkfm7gku3q4b115d5y1t69i4s4) |
69 |
70 |
71 | ## Acknowledgement
72 | We borrowed code and data augmentation techniques from [Jigen](https://github.com/fmcarlucci/JigenDG), [ImageNet-pytorch](https://github.com/pytorch/examples/tree/master/imagenet).
73 |
--------------------------------------------------------------------------------