├── SSDA ├── utils │ ├── path_change.py │ ├── path_change_office.py │ ├── path_change_officehome.py │ ├── lr_schedule.py │ ├── copy_list_txt.py │ ├── copy_list_office.py │ ├── utils.py │ ├── loss.py │ └── return_dataset.py ├── data │ └── txt │ │ ├── office │ │ ├── labeled_target_images_dslr_1.txt │ │ ├── labeled_target_images_amazon_1.txt │ │ ├── labeled_target_images_webcam_1.txt │ │ ├── labeled_target_images_dslr_3.txt │ │ ├── validation_target_images_dslr_3.txt │ │ ├── labeled_target_images_amazon_3.txt │ │ ├── labeled_target_images_webcam_3.txt │ │ ├── validation_target_images_amazon_3.txt │ │ └── validation_target_images_webcam_3.txt │ │ └── office_home │ │ ├── labeled_target_images_Art_1.txt │ │ ├── labeled_target_images_Real_1.txt │ │ ├── labeled_target_images_Clipart_1.txt │ │ ├── labeled_target_images_Product_1.txt │ │ ├── labeled_target_images_Art_3.txt │ │ ├── validation_target_images_Art_3.txt │ │ ├── labeled_target_images_Real_3.txt │ │ ├── validation_target_images_Real_3.txt │ │ ├── labeled_target_images_Clipart_3.txt │ │ ├── labeled_target_images_Product_3.txt │ │ ├── validation_target_images_Clipart_3.txt │ │ └── validation_target_images_Product_3.txt ├── loaders │ └── data_list.py ├── model │ ├── basenet.py │ └── resnet.py └── min_norm_solvers.py ├── MTL ├── model │ ├── resnet_dilated.py │ └── aspp.py ├── utils.py ├── office_data │ ├── office-31 │ │ ├── dslr_val.txt │ │ ├── dslr_test.txt │ │ ├── webcam_val.txt │ │ ├── webcam_test.txt │ │ └── dslr_train.txt │ └── office-home │ │ └── Art_val.txt ├── create_dataset.py ├── moml_office.py ├── min_norm_solvers.py └── moml_nyu.py └── README.md /SSDA/utils/path_change.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import os 3 | p_path = "/home/grad3/keisaito/project/da/semisupervised/data/txt" 4 | txts = os.listdir(p_path) 5 | for txt in txts: 6 | txt_path = os.path.join(p_path, txt) 7 | lines = open(txt_path, "r").readlines() 8 | new_file = open(txt_path, "w") 9 | for line in lines: 10 | file_path = line.split(" ")[0].split("/")[-1] 11 | dir_path = line.split(" ")[0].split("/")[-2] 12 | d_path = line.split(" ")[0].split("/")[-3] 13 | class_n = line.split(" ")[1] 14 | new_file.write(os.path.join(d_path, dir_path, file_path) + " " + class_n) 15 | 16 | 17 | -------------------------------------------------------------------------------- /SSDA/utils/path_change_office.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import os 3 | p_path = "/home/grad3/keisaito/project/da/semisupervised/data/txt/office" 4 | txts = os.listdir(p_path) 5 | for txt in txts: 6 | txt_path = os.path.join(p_path, txt) 7 | lines = open(txt_path, "r").readlines() 8 | new_file = open(txt_path, "w") 9 | for line in lines: 10 | file_path = line.split(" ")[0].split("/")[-1] 11 | dir_path = line.split(" ")[0].split("/")[-2] 12 | d_path = line.split(" ")[0].split("/")[-4] 13 | class_n = line.split(" ")[1] 14 | new_file.write(os.path.join(d_path, "images", dir_path, file_path) + " " + class_n) 15 | 16 | 17 | -------------------------------------------------------------------------------- /SSDA/utils/path_change_officehome.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import os 3 | p_path = "/home/grad3/keisaito/project/da/semisupervised/data/txt/office_home" 4 | txts = os.listdir(p_path) 5 | for txt in txts: 6 | txt_path = os.path.join(p_path, txt) 7 | lines = open(txt_path, "r").readlines() 8 | new_file = open(txt_path, "w") 9 | for line in lines: 10 | file_path = line.split(" ")[0].split("/")[-1] 11 | dir_path = line.split(" ")[0].split("/")[-2] 12 | d_path = line.split(" ")[0].split("/")[-3] 13 | class_n = line.split(" ")[1] 14 | new_file.write(os.path.join(d_path, dir_path, file_path) + " " + class_n) 15 | 16 | 17 | -------------------------------------------------------------------------------- /SSDA/utils/lr_schedule.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def inv_lr_scheduler(param_lr, optimizer, iter_num, gamma=0.0001, 5 | power=0.75, init_lr=0.001): 6 | """Decay learning rate by a factor of 0.1 every lr_decay_epoch epochs.""" 7 | lr = init_lr * (1 + gamma * iter_num) ** (- power) 8 | i = 0 9 | for param_group in optimizer.param_groups: 10 | param_group['lr'] = lr * param_lr[i] 11 | i += 1 12 | return optimizer 13 | 14 | 15 | def calc_coeff(iter_num, high=1.0, low=0.0, alpha=10.0, max_iter=10000.0): 16 | return np.float(2.0 * (high - low) / 17 | (1.0 + np.exp(- alpha * iter_num / max_iter)) - 18 | (high - low) + low) 19 | -------------------------------------------------------------------------------- /SSDA/utils/copy_list_txt.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | 3 | 4 | domains =["real", "clipart", "painting", "sketch"] 5 | p1 = "/research/masaito/multisource_data/few_shot_DA_data/split_iccv/labeled_source_images_%s.txt" 6 | p2 = "/research/masaito/multisource_data/few_shot_DA_data/split_iccv/labeled_target_images_%s_3.txt" 7 | p3 = "/research/masaito/multisource_data/few_shot_DA_data/split_iccv/unlabeled_target_images_%s_3.txt" 8 | p4 = "/research/masaito/multisource_data/few_shot_DA_data/split_iccv/validation_target_images_%s_3.txt" 9 | paths = [p1, p2, p3, p4] 10 | for dom in domains: 11 | for p in paths: 12 | txt = p % dom 13 | cmd = "cp " + txt + " ../data/txt/." 14 | print(cmd) 15 | subprocess.call(cmd, shell=True) 16 | -------------------------------------------------------------------------------- /SSDA/utils/copy_list_office.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | 3 | 4 | domains =["amazon", "dslr", "webcam"] 5 | p1 = "/research/masaito/office/source_images_%s.txt" 6 | p2 = "/research/masaito/office/split_iccv/labeled_target_images_%s_3.txt" 7 | p3 = "/research/masaito/office/split_iccv/unsupervised_target_images_%s_3.txt" 8 | p4 = "/research/masaito/office/split_iccv/validation_target_images_%s_3.txt" 9 | paths = [p1, p2, p3, p4] 10 | for dom in domains: 11 | for i, p in enumerate(paths): 12 | txt = p % dom 13 | if i == 0: 14 | cmd = "cp " + txt + " ../data/txt/labeled_source_images_%s.txt" % dom 15 | elif i == 2: 16 | cmd = "cp " + txt + " ../data/txt/unlabeled_target_images_%s.txt" % dom 17 | else: 18 | cmd = "cp " + txt + " ../data/txt/." 19 | 20 | print(cmd) 21 | subprocess.call(cmd, shell=True) 22 | -------------------------------------------------------------------------------- /SSDA/utils/utils.py: -------------------------------------------------------------------------------- 1 | import os 2 | import torch 3 | import torch.nn as nn 4 | import shutil 5 | 6 | 7 | def weights_init(m): 8 | classname = m.__class__.__name__ 9 | if classname.find('Conv') != -1: 10 | m.weight.data.normal_(0.0, 0.1) 11 | elif classname.find('Linear') != -1: 12 | nn.init.xavier_normal_(m.weight) 13 | nn.init.zeros_(m.bias) 14 | elif classname.find('BatchNorm') != -1: 15 | m.weight.data.normal_(1.0, 0.1) 16 | m.bias.data.fill_(0) 17 | 18 | 19 | def save_checkpoint(state, is_best, checkpoint='checkpoint', 20 | filename='checkpoint.pth.tar'): 21 | filepath = os.path.join(checkpoint, filename) 22 | torch.save(state, filepath) 23 | if is_best: 24 | shutil.copyfile(filepath, os.path.join(checkpoint, 25 | 'model_best.pth.tar')) 26 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/labeled_target_images_dslr_1.txt: -------------------------------------------------------------------------------- 1 | dslr/images/back_pack/frame_0009.jpg 0 2 | dslr/images/bike/frame_0006.jpg 1 3 | dslr/images/bike_helmet/frame_0022.jpg 2 4 | dslr/images/bookcase/frame_0005.jpg 3 5 | dslr/images/bottle/frame_0015.jpg 4 6 | dslr/images/calculator/frame_0004.jpg 5 7 | dslr/images/desk_chair/frame_0003.jpg 6 8 | dslr/images/desk_lamp/frame_0014.jpg 7 9 | dslr/images/desktop_computer/frame_0015.jpg 8 10 | dslr/images/file_cabinet/frame_0009.jpg 9 11 | dslr/images/headphones/frame_0006.jpg 10 12 | dslr/images/keyboard/frame_0005.jpg 11 13 | dslr/images/laptop_computer/frame_0006.jpg 12 14 | dslr/images/letter_tray/frame_0005.jpg 13 15 | dslr/images/mobile_phone/frame_0003.jpg 14 16 | dslr/images/monitor/frame_0009.jpg 15 17 | dslr/images/mouse/frame_0007.jpg 16 18 | dslr/images/mug/frame_0006.jpg 17 19 | dslr/images/paper_notebook/frame_0002.jpg 18 20 | dslr/images/pen/frame_0003.jpg 19 21 | dslr/images/phone/frame_0008.jpg 20 22 | dslr/images/printer/frame_0009.jpg 21 23 | dslr/images/projector/frame_0018.jpg 22 24 | dslr/images/punchers/frame_0002.jpg 23 25 | dslr/images/ring_binder/frame_0006.jpg 24 26 | dslr/images/ruler/frame_0006.jpg 25 27 | dslr/images/scissors/frame_0018.jpg 26 28 | dslr/images/speaker/frame_0004.jpg 27 29 | dslr/images/stapler/frame_0014.jpg 28 30 | dslr/images/tape_dispenser/frame_0010.jpg 29 31 | dslr/images/trash_can/frame_0001.jpg 30 32 | -------------------------------------------------------------------------------- /SSDA/utils/loss.py: -------------------------------------------------------------------------------- 1 | import torch.nn.functional as F 2 | import torch 3 | import numpy as np 4 | from torch.autograd import Function 5 | 6 | 7 | # class GradReverse(Function): 8 | # def __init__(self, lambd): 9 | # self.lambd = lambd 10 | 11 | # def forward(self, x): 12 | # return x.view_as(x) 13 | 14 | # def backward(self, grad_output): 15 | # return (grad_output * -self.lambd) 16 | 17 | 18 | # def grad_reverse(x, lambd=1.0): 19 | # return GradReverse(lambd)(x) 20 | 21 | 22 | def calc_coeff(iter_num, high=1.0, low=0.0, alpha=10.0, max_iter=10000.0): 23 | return np.float(2.0 * (high - low) / 24 | (1.0 + np.exp(-alpha * iter_num / max_iter)) - 25 | (high - low) + low) 26 | 27 | 28 | def entropy(F1, feat, lamda, eta=1.0): 29 | # out_t1 = F1(feat, reverse=True, eta=-eta) 30 | out_t1 = F1(feat, reverse=False) 31 | out_t1 = F.softmax(out_t1) 32 | loss_ent = -lamda * torch.mean(torch.sum(out_t1 * 33 | (torch.log(out_t1 + 1e-5)), 1)) 34 | return loss_ent 35 | 36 | 37 | def adentropy(F1, feat, lamda, eta=1.0): 38 | out_t1 = F1(feat, reverse=True, eta=eta) 39 | out_t1 = F.softmax(out_t1) 40 | loss_adent = lamda * torch.mean(torch.sum(out_t1 * 41 | (torch.log(out_t1 + 1e-5)), 1)) 42 | return loss_adent 43 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/labeled_target_images_amazon_1.txt: -------------------------------------------------------------------------------- 1 | amazon/images/back_pack/frame_0064.jpg 0 2 | amazon/images/bike/frame_0027.jpg 1 3 | amazon/images/bike_helmet/frame_0057.jpg 2 4 | amazon/images/bookcase/frame_0077.jpg 3 5 | amazon/images/bottle/frame_0014.jpg 4 6 | amazon/images/calculator/frame_0092.jpg 5 7 | amazon/images/desk_chair/frame_0091.jpg 6 8 | amazon/images/desk_lamp/frame_0052.jpg 7 9 | amazon/images/desktop_computer/frame_0081.jpg 8 10 | amazon/images/file_cabinet/frame_0002.jpg 9 11 | amazon/images/headphones/frame_0092.jpg 10 12 | amazon/images/keyboard/frame_0025.jpg 11 13 | amazon/images/laptop_computer/frame_0083.jpg 12 14 | amazon/images/letter_tray/frame_0074.jpg 13 15 | amazon/images/mobile_phone/frame_0053.jpg 14 16 | amazon/images/monitor/frame_0056.jpg 15 17 | amazon/images/mouse/frame_0093.jpg 16 18 | amazon/images/mug/frame_0067.jpg 17 19 | amazon/images/paper_notebook/frame_0043.jpg 18 20 | amazon/images/pen/frame_0071.jpg 19 21 | amazon/images/phone/frame_0018.jpg 20 22 | amazon/images/printer/frame_0036.jpg 21 23 | amazon/images/projector/frame_0057.jpg 22 24 | amazon/images/punchers/frame_0056.jpg 23 25 | amazon/images/ring_binder/frame_0053.jpg 24 26 | amazon/images/ruler/frame_0027.jpg 25 27 | amazon/images/scissors/frame_0096.jpg 26 28 | amazon/images/speaker/frame_0072.jpg 27 29 | amazon/images/stapler/frame_0040.jpg 28 30 | amazon/images/tape_dispenser/frame_0072.jpg 29 31 | amazon/images/trash_can/frame_0020.jpg 30 32 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/labeled_target_images_webcam_1.txt: -------------------------------------------------------------------------------- 1 | webcam/images/back_pack/frame_0015.jpg 0 2 | webcam/images/bike/frame_0014.jpg 1 3 | webcam/images/bike_helmet/frame_0012.jpg 2 4 | webcam/images/bookcase/frame_0002.jpg 3 5 | webcam/images/bottle/frame_0011.jpg 4 6 | webcam/images/calculator/frame_0014.jpg 5 7 | webcam/images/desk_chair/frame_0025.jpg 6 8 | webcam/images/desk_lamp/frame_0012.jpg 7 9 | webcam/images/desktop_computer/frame_0008.jpg 8 10 | webcam/images/file_cabinet/frame_0003.jpg 9 11 | webcam/images/headphones/frame_0017.jpg 10 12 | webcam/images/keyboard/frame_0018.jpg 11 13 | webcam/images/laptop_computer/frame_0015.jpg 12 14 | webcam/images/letter_tray/frame_0017.jpg 13 15 | webcam/images/mobile_phone/frame_0020.jpg 14 16 | webcam/images/monitor/frame_0013.jpg 15 17 | webcam/images/mouse/frame_0012.jpg 16 18 | webcam/images/mug/frame_0027.jpg 17 19 | webcam/images/paper_notebook/frame_0022.jpg 18 20 | webcam/images/pen/frame_0017.jpg 19 21 | webcam/images/phone/frame_0012.jpg 20 22 | webcam/images/printer/frame_0002.jpg 21 23 | webcam/images/projector/frame_0009.jpg 22 24 | webcam/images/punchers/frame_0004.jpg 23 25 | webcam/images/ring_binder/frame_0039.jpg 24 26 | webcam/images/ruler/frame_0009.jpg 25 27 | webcam/images/scissors/frame_0025.jpg 26 28 | webcam/images/speaker/frame_0003.jpg 27 29 | webcam/images/stapler/frame_0021.jpg 28 30 | webcam/images/tape_dispenser/frame_0011.jpg 29 31 | webcam/images/trash_can/frame_0021.jpg 30 32 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Art_1.txt: -------------------------------------------------------------------------------- 1 | Art/Alarm_Clock/00045.jpg 0 2 | Art/Backpack/00019.jpg 1 3 | Art/Batteries/00023.jpg 2 4 | Art/Bed/00033.jpg 3 5 | Art/Bike/00020.jpg 4 6 | Art/Bottle/00044.jpg 5 7 | Art/Bucket/00022.jpg 6 8 | Art/Calculator/00009.jpg 7 9 | Art/Calendar/00005.jpg 8 10 | Art/Candles/00038.jpg 9 11 | Art/Chair/00008.jpg 10 12 | Art/Clipboards/00016.jpg 11 13 | Art/Computer/00004.jpg 12 14 | Art/Couch/00011.jpg 13 15 | Art/Curtains/00012.jpg 14 16 | Art/Desk_Lamp/00016.jpg 15 17 | Art/Drill/00004.jpg 16 18 | Art/Eraser/00016.jpg 17 19 | Art/Exit_Sign/00016.jpg 18 20 | Art/Fan/00024.jpg 19 21 | Art/File_Cabinet/00002.jpg 20 22 | Art/Flipflops/00018.jpg 21 23 | Art/Flowers/00064.jpg 22 24 | Art/Folder/00006.jpg 23 25 | Art/Fork/00046.jpg 24 26 | Art/Glasses/00015.jpg 25 27 | Art/Hammer/00021.jpg 26 28 | Art/Helmet/00074.jpg 27 29 | Art/Kettle/00017.jpg 28 30 | Art/Keyboard/00008.jpg 29 31 | Art/Knives/00037.jpg 30 32 | Art/Lamp_Shade/00029.jpg 31 33 | Art/Laptop/00005.jpg 32 34 | Art/Marker/00004.jpg 33 35 | Art/Monitor/00017.jpg 34 36 | Art/Mop/00004.jpg 35 37 | Art/Mouse/00002.jpg 36 38 | Art/Mug/00033.jpg 37 39 | Art/Notebook/00016.jpg 38 40 | Art/Oven/00016.jpg 39 41 | Art/Pan/00018.jpg 40 42 | Art/Paper_Clip/00016.jpg 41 43 | Art/Pen/00012.jpg 42 44 | Art/Pencil/00005.jpg 43 45 | Art/Postit_Notes/00017.jpg 44 46 | Art/Printer/00009.jpg 45 47 | Art/Push_Pin/00024.jpg 46 48 | Art/Radio/00036.jpg 47 49 | Art/Refrigerator/00022.jpg 48 50 | Art/Ruler/00010.jpg 49 51 | Art/Scissors/00019.jpg 50 52 | Art/Screwdriver/00007.jpg 51 53 | Art/Shelf/00008.jpg 52 54 | Art/Sink/00003.jpg 53 55 | Art/Sneakers/00017.jpg 54 56 | Art/Soda/00001.jpg 55 57 | Art/Speaker/00005.jpg 56 58 | Art/Spoon/00045.jpg 57 59 | Art/Table/00005.jpg 58 60 | Art/Telephone/00020.jpg 59 61 | Art/ToothBrush/00026.jpg 60 62 | Art/Toys/00017.jpg 61 63 | Art/Trash_Can/00019.jpg 62 64 | Art/TV/00010.jpg 63 65 | Art/Webcam/00016.jpg 64 66 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Real_1.txt: -------------------------------------------------------------------------------- 1 | Real/Alarm_Clock/00085.jpg 0 2 | Real/Backpack/00062.jpg 1 3 | Real/Batteries/00041.jpg 2 4 | Real/Bed/00055.jpg 3 5 | Real/Bike/00056.jpg 4 6 | Real/Bottle/00078.jpg 5 7 | Real/Bucket/00064.jpg 6 8 | Real/Calculator/00044.jpg 7 9 | Real/Calendar/00064.jpg 8 10 | Real/Candles/00097.jpg 9 11 | Real/Chair/00069.jpg 10 12 | Real/Clipboards/00040.jpg 11 13 | Real/Computer/00004.jpg 12 14 | Real/Couch/00037.jpg 13 15 | Real/Curtains/00001.jpg 14 16 | Real/Desk_Lamp/00003.jpg 15 17 | Real/Drill/00038.jpg 16 18 | Real/Eraser/00040.jpg 17 19 | Real/Exit_Sign/00014.jpg 18 20 | Real/Fan/00050.jpg 19 21 | Real/File_Cabinet/00032.jpg 20 22 | Real/Flipflops/00077.jpg 21 23 | Real/Flowers/00028.jpg 22 24 | Real/Folder/00020.jpg 23 25 | Real/Fork/00011.jpg 24 26 | Real/Glasses/00031.jpg 25 27 | Real/Hammer/00022.jpg 26 28 | Real/Helmet/00034.jpg 27 29 | Real/Kettle/00055.jpg 28 30 | Real/Keyboard/00064.jpg 29 31 | Real/Knives/00010.jpg 30 32 | Real/Lamp_Shade/00026.jpg 31 33 | Real/Laptop/00051.jpg 32 34 | Real/Marker/00009.jpg 33 35 | Real/Monitor/00055.jpg 34 36 | Real/Mop/00044.jpg 35 37 | Real/Mouse/00028.jpg 36 38 | Real/Mug/00042.jpg 37 39 | Real/Notebook/00013.jpg 38 40 | Real/Oven/00036.jpg 39 41 | Real/Pan/00011.jpg 40 42 | Real/Paper_Clip/00034.jpg 41 43 | Real/Pen/00064.jpg 42 44 | Real/Pencil/00046.jpg 43 45 | Real/Postit_Notes/00064.jpg 44 46 | Real/Printer/00027.jpg 45 47 | Real/Push_Pin/00034.jpg 46 48 | Real/Radio/00003.jpg 47 49 | Real/Refrigerator/00039.jpg 48 50 | Real/Ruler/00035.jpg 49 51 | Real/Scissors/00036.jpg 50 52 | Real/Screwdriver/00038.jpg 51 53 | Real/Shelf/00018.jpg 52 54 | Real/Sink/00063.jpg 53 55 | Real/Sneakers/00072.jpg 54 56 | Real/Soda/00052.jpg 55 57 | Real/Speaker/00014.jpg 56 58 | Real/Spoon/00019.jpg 57 59 | Real/Table/00025.jpg 58 60 | Real/Telephone/00041.jpg 59 61 | Real/ToothBrush/00051.jpg 60 62 | Real/Toys/00002.jpg 61 63 | Real/Trash_Can/00077.jpg 62 64 | Real/TV/00015.jpg 63 65 | Real/Webcam/00033.jpg 64 66 | -------------------------------------------------------------------------------- /MTL/model/resnet_dilated.py: -------------------------------------------------------------------------------- 1 | # https://github.com/lorenmt/mtan/blob/master/im2im_pred/model_resnet_mtan/resnet_dilated.py 2 | 3 | import torch.nn as nn 4 | 5 | 6 | class ResnetDilated(nn.Module): 7 | def __init__(self, orig_resnet, dilate_scale=8): 8 | super(ResnetDilated, self).__init__() 9 | from functools import partial 10 | 11 | if dilate_scale == 8: 12 | orig_resnet.layer3.apply(partial(self._nostride_dilate, dilate=2)) 13 | orig_resnet.layer4.apply(partial(self._nostride_dilate, dilate=4)) 14 | elif dilate_scale == 16: 15 | orig_resnet.layer4.apply(partial(self._nostride_dilate, dilate=2)) 16 | 17 | # take pre-defined ResNet, except AvgPool and FC 18 | self.conv1 = orig_resnet.conv1 19 | self.bn1 = orig_resnet.bn1 20 | self.relu1 = orig_resnet.relu 21 | 22 | self.maxpool = orig_resnet.maxpool 23 | self.layer1 = orig_resnet.layer1 24 | self.layer2 = orig_resnet.layer2 25 | self.layer3 = orig_resnet.layer3 26 | self.layer4 = orig_resnet.layer4 27 | 28 | def _nostride_dilate(self, m, dilate): 29 | classname = m.__class__.__name__ 30 | if classname.find('Conv') != -1: 31 | # the convolution with stride 32 | if m.stride == (2, 2): 33 | m.stride = (1, 1) 34 | if m.kernel_size == (3, 3): 35 | m.dilation = (dilate//2, dilate//2) 36 | m.padding = (dilate//2, dilate//2) 37 | # other convoluions 38 | else: 39 | if m.kernel_size == (3, 3): 40 | m.dilation = (dilate, dilate) 41 | m.padding = (dilate, dilate) 42 | 43 | def forward(self, x): 44 | x = self.relu1(self.bn1(self.conv1(x))) 45 | x = self.maxpool(x) 46 | 47 | x = self.layer1(x) 48 | x = self.layer2(x) 49 | x = self.layer3(x) 50 | x = self.layer4(x) 51 | return x 52 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Clipart_1.txt: -------------------------------------------------------------------------------- 1 | Clipart/Alarm_Clock/00032.jpg 0 2 | Clipart/Backpack/00052.jpg 1 3 | Clipart/Batteries/00043.jpg 2 4 | Clipart/Bed/00073.jpg 3 5 | Clipart/Bike/00023.jpg 4 6 | Clipart/Bottle/00059.jpg 5 7 | Clipart/Bucket/00006.jpg 6 8 | Clipart/Calculator/00007.jpg 7 9 | Clipart/Calendar/00009.jpg 8 10 | Clipart/Candles/00004.jpg 9 11 | Clipart/Chair/00060.jpg 10 12 | Clipart/Clipboards/00033.jpg 11 13 | Clipart/Computer/00036.jpg 12 14 | Clipart/Couch/00063.jpg 13 15 | Clipart/Curtains/00032.jpg 14 16 | Clipart/Desk_Lamp/00004.jpg 15 17 | Clipart/Drill/00035.jpg 16 18 | Clipart/Eraser/00015.jpg 17 19 | Clipart/Exit_Sign/00032.jpg 18 20 | Clipart/Fan/00027.jpg 19 21 | Clipart/File_Cabinet/00030.jpg 20 22 | Clipart/Flipflops/00012.jpg 21 23 | Clipart/Flowers/00039.jpg 22 24 | Clipart/Folder/00095.jpg 23 25 | Clipart/Fork/00018.jpg 24 26 | Clipart/Glasses/00014.jpg 25 27 | Clipart/Hammer/00098.jpg 26 28 | Clipart/Helmet/00051.jpg 27 29 | Clipart/Kettle/00027.jpg 28 30 | Clipart/Keyboard/00053.jpg 29 31 | Clipart/Knives/00037.jpg 30 32 | Clipart/Lamp_Shade/00031.jpg 31 33 | Clipart/Laptop/00061.jpg 32 34 | Clipart/Marker/00065.jpg 33 35 | Clipart/Monitor/00089.jpg 34 36 | Clipart/Mop/00032.jpg 35 37 | Clipart/Mouse/00044.jpg 36 38 | Clipart/Mug/00088.jpg 37 39 | Clipart/Notebook/00065.jpg 38 40 | Clipart/Oven/00008.jpg 39 41 | Clipart/Pan/00035.jpg 40 42 | Clipart/Paper_Clip/00015.jpg 41 43 | Clipart/Pen/00004.jpg 42 44 | Clipart/Pencil/00072.jpg 43 45 | Clipart/Postit_Notes/00002.jpg 44 46 | Clipart/Printer/00056.jpg 45 47 | Clipart/Push_Pin/00025.jpg 46 48 | Clipart/Radio/00030.jpg 47 49 | Clipart/Refrigerator/00017.jpg 48 50 | Clipart/Ruler/00050.jpg 49 51 | Clipart/Scissors/00073.jpg 50 52 | Clipart/Screwdriver/00062.jpg 51 53 | Clipart/Shelf/00021.jpg 52 54 | Clipart/Sink/00023.jpg 53 55 | Clipart/Sneakers/00019.jpg 54 56 | Clipart/Soda/00029.jpg 55 57 | Clipart/Speaker/00037.jpg 56 58 | Clipart/Spoon/00046.jpg 57 59 | Clipart/Table/00041.jpg 58 60 | Clipart/Telephone/00048.jpg 59 61 | Clipart/ToothBrush/00007.jpg 60 62 | Clipart/Toys/00021.jpg 61 63 | Clipart/Trash_Can/00003.jpg 62 64 | Clipart/TV/00012.jpg 63 65 | Clipart/Webcam/00006.jpg 64 66 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Product_1.txt: -------------------------------------------------------------------------------- 1 | Product/Alarm_Clock/00003.jpg 0 2 | Product/Backpack/00095.jpg 1 3 | Product/Batteries/00050.jpg 2 4 | Product/Bed/00008.jpg 3 5 | Product/Bike/00004.jpg 4 6 | Product/Bottle/00028.jpg 5 7 | Product/Bucket/00019.jpg 6 8 | Product/Calculator/00014.jpg 7 9 | Product/Calendar/00067.jpg 8 10 | Product/Candles/00052.jpg 9 11 | Product/Chair/00038.jpg 10 12 | Product/Clipboards/00049.jpg 11 13 | Product/Computer/00081.jpg 12 14 | Product/Couch/00039.jpg 13 15 | Product/Curtains/00058.jpg 14 16 | Product/Desk_Lamp/00036.jpg 15 17 | Product/Drill/00063.jpg 16 18 | Product/Eraser/00027.jpg 17 19 | Product/Exit_Sign/00004.jpg 18 20 | Product/Fan/00045.jpg 19 21 | Product/File_Cabinet/00058.jpg 20 22 | Product/Flipflops/00039.jpg 21 23 | Product/Flowers/00079.jpg 22 24 | Product/Folder/00034.jpg 23 25 | Product/Fork/00022.jpg 24 26 | Product/Glasses/00053.jpg 25 27 | Product/Hammer/00005.jpg 26 28 | Product/Helmet/00046.jpg 27 29 | Product/Kettle/00062.jpg 28 30 | Product/Keyboard/00033.jpg 29 31 | Product/Knives/00039.jpg 30 32 | Product/Lamp_Shade/00017.jpg 31 33 | Product/Laptop/00048.jpg 32 34 | Product/Marker/00003.jpg 33 35 | Product/Monitor/00013.jpg 34 36 | Product/Mop/00036.jpg 35 37 | Product/Mouse/00023.jpg 36 38 | Product/Mug/00039.jpg 37 39 | Product/Notebook/00010.jpg 38 40 | Product/Oven/00016.jpg 39 41 | Product/Pan/00053.jpg 40 42 | Product/Paper_Clip/00002.jpg 41 43 | Product/Pen/00048.jpg 42 44 | Product/Pencil/00002.jpg 43 45 | Product/Postit_Notes/00001.jpg 44 46 | Product/Printer/00018.jpg 45 47 | Product/Push_Pin/00039.jpg 46 48 | Product/Radio/00011.jpg 47 49 | Product/Refrigerator/00024.jpg 48 50 | Product/Ruler/00001.jpg 49 51 | Product/Scissors/00072.jpg 50 52 | Product/Screwdriver/00015.jpg 51 53 | Product/Shelf/00037.jpg 52 54 | Product/Sink/00024.jpg 53 55 | Product/Sneakers/00061.jpg 54 56 | Product/Soda/00041.jpg 55 57 | Product/Speaker/00071.jpg 56 58 | Product/Spoon/00038.jpg 57 59 | Product/Table/00043.jpg 58 60 | Product/Telephone/00011.jpg 59 61 | Product/ToothBrush/00002.jpg 60 62 | Product/Toys/00037.jpg 61 63 | Product/Trash_Can/00090.jpg 62 64 | Product/TV/00029.jpg 63 65 | Product/Webcam/00064.jpg 64 66 | -------------------------------------------------------------------------------- /SSDA/loaders/data_list.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import os 3 | import os.path 4 | from PIL import Image 5 | 6 | 7 | def pil_loader(path): 8 | with open(path, 'rb') as f: 9 | img = Image.open(f) 10 | return img.convert('RGB') 11 | 12 | 13 | def make_dataset_fromlist(image_list): 14 | with open(image_list) as f: 15 | image_index = [x.split(' ')[0] for x in f.readlines()] 16 | with open(image_list) as f: 17 | label_list = [] 18 | selected_list = [] 19 | for ind, x in enumerate(f.readlines()): 20 | label = x.split(' ')[1].strip() 21 | label_list.append(int(label)) 22 | selected_list.append(ind) 23 | image_index = np.array(image_index) 24 | label_list = np.array(label_list) 25 | image_index = image_index[selected_list] 26 | return image_index, label_list 27 | 28 | 29 | def return_classlist(image_list): 30 | with open(image_list) as f: 31 | label_list = [] 32 | for ind, x in enumerate(f.readlines()): 33 | label = x.split(' ')[0].split('/')[-2] 34 | if label not in label_list: 35 | label_list.append(str(label)) 36 | return label_list 37 | 38 | 39 | class Imagelists_VISDA(object): 40 | def __init__(self, image_list, root="./data/multi/", 41 | transform=None, target_transform=None, test=False): 42 | imgs, labels = make_dataset_fromlist(image_list) 43 | self.imgs = imgs 44 | self.labels = labels 45 | self.transform = transform 46 | self.target_transform = target_transform 47 | self.loader = pil_loader 48 | self.root = root 49 | self.test = test 50 | 51 | def __getitem__(self, index): 52 | """ 53 | Args: 54 | index (int): Index 55 | Returns: 56 | tuple: (image, target) where target is 57 | class_index of the target class. 58 | """ 59 | path = os.path.join(self.root, self.imgs[index]) 60 | target = self.labels[index] 61 | img = self.loader(path) 62 | if self.transform is not None: 63 | img = self.transform(img) 64 | if self.target_transform is not None: 65 | target = self.target_transform(target) 66 | if not self.test: 67 | return img, target 68 | else: 69 | return img, target, self.imgs[index] 70 | 71 | def __len__(self): 72 | return len(self.imgs) 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MOML 2 | 3 | This repository contains the source code of our papers "Multi-Objective Meta Learning" (NeurIPS 2021) and "Multi-Objective Meta-Learning" (AIJ 2024). 4 | 5 | 6 | 7 | ## Environment 8 | 9 | - Python 3.7.10 10 | - torch 1.8.0+cu111 11 | - torchvision 0.9.0+cu111 12 | 13 | ## Dataset 14 | 15 | - **Office-31**: Download from https://www.cc.gatech.edu/~jhoffman/domainadapt/#datasets_code 16 | - **Office-Home**: Download from https://www.hemanthdv.org/officeHomeDataset.html 17 | - **NYUv2**: Download the pre-processed data from https://github.com/lorenmt/mtan#image-to-image-predictions-one-to-many 18 | 19 | ## Experiments 20 | 21 | ### MTL 22 | 23 | 1. Training on the NYUv2 dataset with the MOML method, you can run the code below (default option is training without data augmentation) 24 | 25 | ```shell 26 | cd ./MTL 27 | python moml_nyu.py --gpu_id [GPU_ID] --model [DMTL, MTAN] --MGDA --dataset_path [ROOT] 28 | ``` 29 | 30 | 2. Training on the Office-31 or Office-Home dataset with the MOML method, you can run the code below 31 | 32 | ```shell 33 | cd ./MTL 34 | python moml_office.py --gpu_id [GPU_ID] --model [DMTL, MTAN] --dataset [office-31, office-home] --batchsize 64 --MGDA --dataroot [ROOT] 35 | ``` 36 | 37 | ### SSDA 38 | 39 | Training on the Office-31 dataset with the MOML+MME method, you can run the code below 40 | 41 | ```shell 42 | cd ./SSDA 43 | python moml_MME.py --gpu_id [GPU_ID] --source [SOURCE] --taeget [TARGET] --MGDA 44 | ``` 45 | 46 | ## Citation 47 | 48 | If you found this code/work to be useful in your own research, please consider citing the following: 49 | 50 | ```latex 51 | @inproceedings{ye2021moml, 52 | title={Multi-Objective Meta Learning}, 53 | author={Ye, Feiyang and Lin, Baijiong and Yue, Zhixiong and Guo, Pengxin and Xiao, Qiao and Zhang, Yu}, 54 | booktitle={Conference on Neural Information Processing Systems}, 55 | year={2021} 56 | } 57 | 58 | @article{ye2024moml, 59 | title={Multi-Objective Meta-Learning}, 60 | author={Ye, Feiyang and Lin, Baijiong and Yue, Zhixiong and Zhang, Yu and Tsang, Ivor}, 61 | journal={Artificial Intelligence}, 62 | volume={335}, 63 | pages={104184}, 64 | year={2024} 65 | } 66 | ``` 67 | 68 | ## Acknowledgement 69 | 70 | Thanks for the public code base https://github.com/lorenmt/mtan, https://github.com/VisionLearningGroup/SSDA_MME, and https://github.com/isl-org/MultiObjectiveOptimization. 71 | 72 | ## Contact 73 | 74 | If you have any questions, please contact `bj.lin.email@gmail.com`. 75 | -------------------------------------------------------------------------------- /MTL/model/aspp.py: -------------------------------------------------------------------------------- 1 | # https://github.com/lorenmt/mtan/blob/master/im2im_pred/model_resnet_mtan/aspp.py 2 | 3 | import torch 4 | import torch.nn as nn 5 | import torch.nn.functional as F 6 | 7 | 8 | class DeepLabHead(nn.Sequential): 9 | def __init__(self, in_channels, num_classes): 10 | super(DeepLabHead, self).__init__( 11 | ASPP(in_channels, [12, 24, 36]), 12 | nn.Conv2d(256, 256, 3, padding=1, bias=False), 13 | nn.BatchNorm2d(256), 14 | nn.ReLU(), 15 | nn.Conv2d(256, num_classes, 1) 16 | ) 17 | 18 | 19 | class ASPPConv(nn.Sequential): 20 | def __init__(self, in_channels, out_channels, dilation): 21 | modules = [ 22 | nn.Conv2d(in_channels, out_channels, 3, padding=dilation, dilation=dilation, bias=False), 23 | nn.BatchNorm2d(out_channels), 24 | nn.ReLU() 25 | ] 26 | super(ASPPConv, self).__init__(*modules) 27 | 28 | 29 | class ASPPPooling(nn.Sequential): 30 | def __init__(self, in_channels, out_channels): 31 | super(ASPPPooling, self).__init__( 32 | nn.AdaptiveAvgPool2d(1), 33 | nn.Conv2d(in_channels, out_channels, 1, bias=False), 34 | nn.BatchNorm2d(out_channels), 35 | nn.ReLU()) 36 | 37 | def forward(self, x): 38 | size = x.shape[-2:] 39 | x = super(ASPPPooling, self).forward(x) 40 | return F.interpolate(x, size=size, mode='bilinear', align_corners=False) 41 | 42 | 43 | class ASPP(nn.Module): 44 | def __init__(self, in_channels, atrous_rates): 45 | super(ASPP, self).__init__() 46 | out_channels = 256 47 | modules = [] 48 | modules.append(nn.Sequential( 49 | nn.Conv2d(in_channels, out_channels, 1, bias=False), 50 | nn.BatchNorm2d(out_channels), 51 | nn.ReLU())) 52 | 53 | rate1, rate2, rate3 = tuple(atrous_rates) 54 | modules.append(ASPPConv(in_channels, out_channels, rate1)) 55 | modules.append(ASPPConv(in_channels, out_channels, rate2)) 56 | modules.append(ASPPConv(in_channels, out_channels, rate3)) 57 | modules.append(ASPPPooling(in_channels, out_channels)) 58 | 59 | self.convs = nn.ModuleList(modules) 60 | 61 | self.project = nn.Sequential( 62 | nn.Conv2d(5 * out_channels, out_channels, 1, bias=False), 63 | nn.BatchNorm2d(out_channels), 64 | nn.ReLU(), 65 | nn.Dropout(0.5)) 66 | 67 | def forward(self, x): 68 | res = [] 69 | for conv in self.convs: 70 | res.append(conv(x)) 71 | res = torch.cat(res, dim=1) 72 | return self.project(res) 73 | -------------------------------------------------------------------------------- /MTL/utils.py: -------------------------------------------------------------------------------- 1 | # https://github.com/lorenmt/mtan/blob/master/im2im_pred/utils.py 2 | 3 | import torch 4 | import torch.nn as nn 5 | import torch.nn.functional as F 6 | 7 | def model_fit(x_pred, x_output, task_type): 8 | device = x_pred.device 9 | 10 | # binary mark to mask out undefined pixel space 11 | binary_mask = (torch.sum(x_output, dim=1) != 0).float().unsqueeze(1).to(device) 12 | 13 | if task_type == 'semantic': 14 | # semantic loss: depth-wise cross entropy 15 | loss = F.nll_loss(x_pred, x_output, ignore_index=-1) 16 | 17 | if task_type == 'depth': 18 | # depth loss: l1 norm 19 | loss = torch.sum(torch.abs(x_pred - x_output) * binary_mask) / torch.nonzero(binary_mask, as_tuple=False).size(0) 20 | 21 | if task_type == 'normal': 22 | # normal loss: dot product 23 | loss = 1 - torch.sum((x_pred * x_output) * binary_mask) / torch.nonzero(binary_mask, as_tuple=False).size(0) 24 | 25 | return loss 26 | 27 | class ConfMatrix(object): 28 | def __init__(self, num_classes): 29 | self.num_classes = num_classes 30 | self.mat = None 31 | 32 | def update(self, pred, target): 33 | with torch.no_grad(): 34 | n = self.num_classes 35 | if self.mat is None: 36 | self.mat = torch.zeros((n, n), dtype=torch.int64, device=pred.device) 37 | with torch.no_grad(): 38 | k = (target >= 0) & (target < n) 39 | inds = n * target[k].to(torch.int64) + pred[k] 40 | self.mat += torch.bincount(inds, minlength=n ** 2).reshape(n, n) 41 | 42 | def get_metrics(self): 43 | with torch.no_grad(): 44 | h = self.mat.float() 45 | acc = torch.diag(h).sum() / h.sum() 46 | iu = torch.diag(h) / (h.sum(1) + h.sum(0) - torch.diag(h)) 47 | return torch.mean(iu).item(), acc.item() 48 | 49 | 50 | def depth_error(x_pred, x_output): 51 | with torch.no_grad(): 52 | device = x_pred.device 53 | binary_mask = (torch.sum(x_output, dim=1) != 0).unsqueeze(1).to(device) 54 | x_pred_true = x_pred.masked_select(binary_mask) 55 | x_output_true = x_output.masked_select(binary_mask) 56 | abs_err = torch.abs(x_pred_true - x_output_true) 57 | rel_err = torch.abs(x_pred_true - x_output_true) / x_output_true 58 | return (torch.sum(abs_err) / torch.nonzero(binary_mask, as_tuple=False).size(0)).item(), \ 59 | (torch.sum(rel_err) / torch.nonzero(binary_mask, as_tuple=False).size(0)).item() 60 | 61 | 62 | def normal_error(x_pred, x_output): 63 | with torch.no_grad(): 64 | binary_mask = (torch.sum(x_output, dim=1) != 0) 65 | error = torch.acos(torch.clamp(torch.sum(x_pred * x_output, 1).masked_select(binary_mask), -1, 1))#.detach().cpu().numpy() 66 | # error = np.degrees(error) 67 | error = torch.rad2deg(error) 68 | return torch.mean(error).item(), torch.median(error).item(), \ 69 | torch.mean((error < 11.25)*1.0).item(), torch.mean((error < 22.5)*1.0).item(), \ 70 | torch.mean((error < 30)*1.0).item() 71 | 72 | def set_param(curr_mod, name, param=None, mode='update'): 73 | if '.' in name: 74 | n = name.split('.') 75 | module_name = n[0] 76 | rest = '.'.join(n[1:]) 77 | for name, mod in curr_mod.named_children(): 78 | if module_name == name: 79 | return set_param(mod, rest, param, mode=mode) 80 | else: 81 | if mode == 'update': 82 | delattr(curr_mod, name) 83 | setattr(curr_mod, name, param) 84 | elif mode == 'get': 85 | if hasattr(curr_mod, name): 86 | p = getattr(curr_mod, name) 87 | return p 88 | -------------------------------------------------------------------------------- /MTL/office_data/office-31/dslr_val.txt: -------------------------------------------------------------------------------- 1 | dslr/images/back_pack/frame_0008.jpg 0 2 | dslr/images/back_pack/frame_0004.jpg 0 3 | dslr/images/paper_notebook/frame_0005.jpg 1 4 | dslr/images/paper_notebook/frame_0001.jpg 1 5 | dslr/images/desktop_computer/frame_0010.jpg 2 6 | dslr/images/desktop_computer/frame_0001.jpg 2 7 | dslr/images/desktop_computer/frame_0015.jpg 2 8 | dslr/images/scissors/frame_0016.jpg 3 9 | dslr/images/scissors/frame_0006.jpg 3 10 | dslr/images/scissors/frame_0014.jpg 3 11 | dslr/images/calculator/frame_0010.jpg 4 12 | dslr/images/calculator/frame_0004.jpg 4 13 | dslr/images/desk_chair/frame_0006.jpg 5 14 | dslr/images/desk_chair/frame_0005.jpg 5 15 | dslr/images/mouse/frame_0011.jpg 6 16 | dslr/images/mouse/frame_0009.jpg 6 17 | dslr/images/laptop_computer/frame_0016.jpg 7 18 | dslr/images/laptop_computer/frame_0019.jpg 7 19 | dslr/images/laptop_computer/frame_0002.jpg 7 20 | dslr/images/laptop_computer/frame_0009.jpg 7 21 | dslr/images/desk_lamp/frame_0003.jpg 8 22 | dslr/images/desk_lamp/frame_0005.jpg 8 23 | dslr/images/stapler/frame_0017.jpg 9 24 | dslr/images/stapler/frame_0014.jpg 9 25 | dslr/images/stapler/frame_0018.jpg 9 26 | dslr/images/stapler/frame_0004.jpg 9 27 | dslr/images/bottle/frame_0011.jpg 10 28 | dslr/images/bottle/frame_0002.jpg 10 29 | dslr/images/bottle/frame_0015.jpg 10 30 | dslr/images/phone/frame_0009.jpg 11 31 | dslr/images/phone/frame_0010.jpg 11 32 | dslr/images/tape_dispenser/frame_0020.jpg 12 33 | dslr/images/tape_dispenser/frame_0001.jpg 12 34 | dslr/images/tape_dispenser/frame_0009.jpg 12 35 | dslr/images/tape_dispenser/frame_0010.jpg 12 36 | dslr/images/trash_can/frame_0003.jpg 13 37 | dslr/images/trash_can/frame_0006.jpg 13 38 | dslr/images/trash_can/frame_0007.jpg 13 39 | dslr/images/bookcase/frame_0002.jpg 14 40 | dslr/images/bookcase/frame_0001.jpg 14 41 | dslr/images/pen/frame_0005.jpg 15 42 | dslr/images/pen/frame_0010.jpg 15 43 | dslr/images/ring_binder/frame_0004.jpg 16 44 | dslr/images/ring_binder/frame_0005.jpg 16 45 | dslr/images/mobile_phone/frame_0020.jpg 17 46 | dslr/images/mobile_phone/frame_0012.jpg 17 47 | dslr/images/mobile_phone/frame_0027.jpg 17 48 | dslr/images/mobile_phone/frame_0029.jpg 17 49 | dslr/images/mobile_phone/frame_0018.jpg 17 50 | dslr/images/mobile_phone/frame_0009.jpg 17 51 | dslr/images/ruler/frame_0006.jpg 18 52 | dslr/images/headphones/frame_0001.jpg 19 53 | dslr/images/headphones/frame_0002.jpg 19 54 | dslr/images/bike_helmet/frame_0017.jpg 20 55 | dslr/images/bike_helmet/frame_0010.jpg 20 56 | dslr/images/bike_helmet/frame_0021.jpg 20 57 | dslr/images/bike_helmet/frame_0002.jpg 20 58 | dslr/images/monitor/frame_0012.jpg 21 59 | dslr/images/monitor/frame_0007.jpg 21 60 | dslr/images/monitor/frame_0019.jpg 21 61 | dslr/images/monitor/frame_0005.jpg 21 62 | dslr/images/mug/frame_0005.jpg 22 63 | dslr/images/letter_tray/frame_0004.jpg 23 64 | dslr/images/letter_tray/frame_0009.jpg 23 65 | dslr/images/letter_tray/frame_0014.jpg 23 66 | dslr/images/projector/frame_0010.jpg 24 67 | dslr/images/projector/frame_0012.jpg 24 68 | dslr/images/projector/frame_0008.jpg 24 69 | dslr/images/projector/frame_0023.jpg 24 70 | dslr/images/printer/frame_0005.jpg 25 71 | dslr/images/printer/frame_0007.jpg 25 72 | dslr/images/printer/frame_0006.jpg 25 73 | dslr/images/speaker/frame_0005.jpg 26 74 | dslr/images/speaker/frame_0008.jpg 26 75 | dslr/images/speaker/frame_0017.jpg 26 76 | dslr/images/speaker/frame_0013.jpg 26 77 | dslr/images/speaker/frame_0022.jpg 26 78 | dslr/images/bike/frame_0015.jpg 27 79 | dslr/images/bike/frame_0002.jpg 27 80 | dslr/images/bike/frame_0020.jpg 27 81 | dslr/images/bike/frame_0005.jpg 27 82 | dslr/images/keyboard/frame_0003.jpg 28 83 | dslr/images/keyboard/frame_0007.jpg 28 84 | dslr/images/file_cabinet/frame_0003.jpg 29 85 | dslr/images/file_cabinet/frame_0002.jpg 29 86 | dslr/images/file_cabinet/frame_0011.jpg 29 87 | dslr/images/punchers/frame_0010.jpg 30 88 | dslr/images/punchers/frame_0004.jpg 30 89 | dslr/images/punchers/frame_0018.jpg 30 90 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/labeled_target_images_dslr_3.txt: -------------------------------------------------------------------------------- 1 | dslr/images/back_pack/frame_0012.jpg 0 2 | dslr/images/back_pack/frame_0007.jpg 0 3 | dslr/images/back_pack/frame_0004.jpg 0 4 | dslr/images/bike/frame_0008.jpg 1 5 | dslr/images/bike/frame_0018.jpg 1 6 | dslr/images/bike/frame_0001.jpg 1 7 | dslr/images/bike_helmet/frame_0018.jpg 2 8 | dslr/images/bike_helmet/frame_0003.jpg 2 9 | dslr/images/bike_helmet/frame_0002.jpg 2 10 | dslr/images/bookcase/frame_0004.jpg 3 11 | dslr/images/bookcase/frame_0009.jpg 3 12 | dslr/images/bookcase/frame_0005.jpg 3 13 | dslr/images/bottle/frame_0007.jpg 4 14 | dslr/images/bottle/frame_0001.jpg 4 15 | dslr/images/bottle/frame_0010.jpg 4 16 | dslr/images/calculator/frame_0012.jpg 5 17 | dslr/images/calculator/frame_0011.jpg 5 18 | dslr/images/calculator/frame_0006.jpg 5 19 | dslr/images/desk_chair/frame_0009.jpg 6 20 | dslr/images/desk_chair/frame_0012.jpg 6 21 | dslr/images/desk_chair/frame_0013.jpg 6 22 | dslr/images/desk_lamp/frame_0009.jpg 7 23 | dslr/images/desk_lamp/frame_0003.jpg 7 24 | dslr/images/desk_lamp/frame_0001.jpg 7 25 | dslr/images/desktop_computer/frame_0014.jpg 8 26 | dslr/images/desktop_computer/frame_0001.jpg 8 27 | dslr/images/desktop_computer/frame_0003.jpg 8 28 | dslr/images/file_cabinet/frame_0001.jpg 9 29 | dslr/images/file_cabinet/frame_0005.jpg 9 30 | dslr/images/file_cabinet/frame_0011.jpg 9 31 | dslr/images/headphones/frame_0009.jpg 10 32 | dslr/images/headphones/frame_0005.jpg 10 33 | dslr/images/headphones/frame_0006.jpg 10 34 | dslr/images/keyboard/frame_0008.jpg 11 35 | dslr/images/keyboard/frame_0003.jpg 11 36 | dslr/images/keyboard/frame_0001.jpg 11 37 | dslr/images/laptop_computer/frame_0017.jpg 12 38 | dslr/images/laptop_computer/frame_0018.jpg 12 39 | dslr/images/laptop_computer/frame_0006.jpg 12 40 | dslr/images/letter_tray/frame_0006.jpg 13 41 | dslr/images/letter_tray/frame_0015.jpg 13 42 | dslr/images/letter_tray/frame_0012.jpg 13 43 | dslr/images/mobile_phone/frame_0006.jpg 14 44 | dslr/images/mobile_phone/frame_0015.jpg 14 45 | dslr/images/mobile_phone/frame_0008.jpg 14 46 | dslr/images/monitor/frame_0006.jpg 15 47 | dslr/images/monitor/frame_0019.jpg 15 48 | dslr/images/monitor/frame_0021.jpg 15 49 | dslr/images/mouse/frame_0010.jpg 16 50 | dslr/images/mouse/frame_0007.jpg 16 51 | dslr/images/mouse/frame_0006.jpg 16 52 | dslr/images/mug/frame_0007.jpg 17 53 | dslr/images/mug/frame_0002.jpg 17 54 | dslr/images/mug/frame_0001.jpg 17 55 | dslr/images/paper_notebook/frame_0006.jpg 18 56 | dslr/images/paper_notebook/frame_0001.jpg 18 57 | dslr/images/paper_notebook/frame_0008.jpg 18 58 | dslr/images/pen/frame_0005.jpg 19 59 | dslr/images/pen/frame_0002.jpg 19 60 | dslr/images/pen/frame_0010.jpg 19 61 | dslr/images/phone/frame_0012.jpg 20 62 | dslr/images/phone/frame_0013.jpg 20 63 | dslr/images/phone/frame_0001.jpg 20 64 | dslr/images/printer/frame_0007.jpg 21 65 | dslr/images/printer/frame_0010.jpg 21 66 | dslr/images/printer/frame_0004.jpg 21 67 | dslr/images/projector/frame_0002.jpg 22 68 | dslr/images/projector/frame_0010.jpg 22 69 | dslr/images/projector/frame_0012.jpg 22 70 | dslr/images/punchers/frame_0017.jpg 23 71 | dslr/images/punchers/frame_0008.jpg 23 72 | dslr/images/punchers/frame_0011.jpg 23 73 | dslr/images/ring_binder/frame_0005.jpg 24 74 | dslr/images/ring_binder/frame_0006.jpg 24 75 | dslr/images/ring_binder/frame_0003.jpg 24 76 | dslr/images/ruler/frame_0003.jpg 25 77 | dslr/images/ruler/frame_0005.jpg 25 78 | dslr/images/ruler/frame_0007.jpg 25 79 | dslr/images/scissors/frame_0011.jpg 26 80 | dslr/images/scissors/frame_0013.jpg 26 81 | dslr/images/scissors/frame_0007.jpg 26 82 | dslr/images/speaker/frame_0011.jpg 27 83 | dslr/images/speaker/frame_0021.jpg 27 84 | dslr/images/speaker/frame_0018.jpg 27 85 | dslr/images/stapler/frame_0010.jpg 28 86 | dslr/images/stapler/frame_0007.jpg 28 87 | dslr/images/stapler/frame_0006.jpg 28 88 | dslr/images/tape_dispenser/frame_0021.jpg 29 89 | dslr/images/tape_dispenser/frame_0010.jpg 29 90 | dslr/images/tape_dispenser/frame_0004.jpg 29 91 | dslr/images/trash_can/frame_0001.jpg 30 92 | dslr/images/trash_can/frame_0006.jpg 30 93 | dslr/images/trash_can/frame_0011.jpg 30 94 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/validation_target_images_dslr_3.txt: -------------------------------------------------------------------------------- 1 | dslr/images/back_pack/frame_0011.jpg 0 2 | dslr/images/back_pack/frame_0010.jpg 0 3 | dslr/images/back_pack/frame_0006.jpg 0 4 | dslr/images/bike/frame_0014.jpg 1 5 | dslr/images/bike/frame_0005.jpg 1 6 | dslr/images/bike/frame_0016.jpg 1 7 | dslr/images/bike_helmet/frame_0022.jpg 2 8 | dslr/images/bike_helmet/frame_0015.jpg 2 9 | dslr/images/bike_helmet/frame_0007.jpg 2 10 | dslr/images/bookcase/frame_0006.jpg 3 11 | dslr/images/bookcase/frame_0012.jpg 3 12 | dslr/images/bookcase/frame_0010.jpg 3 13 | dslr/images/bottle/frame_0015.jpg 4 14 | dslr/images/bottle/frame_0016.jpg 4 15 | dslr/images/bottle/frame_0003.jpg 4 16 | dslr/images/calculator/frame_0007.jpg 5 17 | dslr/images/calculator/frame_0008.jpg 5 18 | dslr/images/calculator/frame_0009.jpg 5 19 | dslr/images/desk_chair/frame_0005.jpg 6 20 | dslr/images/desk_chair/frame_0011.jpg 6 21 | dslr/images/desk_chair/frame_0003.jpg 6 22 | dslr/images/desk_lamp/frame_0002.jpg 7 23 | dslr/images/desk_lamp/frame_0005.jpg 7 24 | dslr/images/desk_lamp/frame_0008.jpg 7 25 | dslr/images/desktop_computer/frame_0005.jpg 8 26 | dslr/images/desktop_computer/frame_0009.jpg 8 27 | dslr/images/desktop_computer/frame_0006.jpg 8 28 | dslr/images/file_cabinet/frame_0006.jpg 9 29 | dslr/images/file_cabinet/frame_0004.jpg 9 30 | dslr/images/file_cabinet/frame_0007.jpg 9 31 | dslr/images/headphones/frame_0008.jpg 10 32 | dslr/images/headphones/frame_0004.jpg 10 33 | dslr/images/headphones/frame_0007.jpg 10 34 | dslr/images/keyboard/frame_0006.jpg 11 35 | dslr/images/keyboard/frame_0005.jpg 11 36 | dslr/images/keyboard/frame_0002.jpg 11 37 | dslr/images/laptop_computer/frame_0008.jpg 12 38 | dslr/images/laptop_computer/frame_0001.jpg 12 39 | dslr/images/laptop_computer/frame_0021.jpg 12 40 | dslr/images/letter_tray/frame_0002.jpg 13 41 | dslr/images/letter_tray/frame_0007.jpg 13 42 | dslr/images/letter_tray/frame_0005.jpg 13 43 | dslr/images/mobile_phone/frame_0025.jpg 14 44 | dslr/images/mobile_phone/frame_0020.jpg 14 45 | dslr/images/mobile_phone/frame_0018.jpg 14 46 | dslr/images/monitor/frame_0020.jpg 15 47 | dslr/images/monitor/frame_0009.jpg 15 48 | dslr/images/monitor/frame_0012.jpg 15 49 | dslr/images/mouse/frame_0002.jpg 16 50 | dslr/images/mouse/frame_0012.jpg 16 51 | dslr/images/mouse/frame_0001.jpg 16 52 | dslr/images/mug/frame_0006.jpg 17 53 | dslr/images/mug/frame_0008.jpg 17 54 | dslr/images/mug/frame_0003.jpg 17 55 | dslr/images/paper_notebook/frame_0004.jpg 18 56 | dslr/images/paper_notebook/frame_0009.jpg 18 57 | dslr/images/paper_notebook/frame_0003.jpg 18 58 | dslr/images/pen/frame_0007.jpg 19 59 | dslr/images/pen/frame_0008.jpg 19 60 | dslr/images/pen/frame_0006.jpg 19 61 | dslr/images/phone/frame_0006.jpg 20 62 | dslr/images/phone/frame_0011.jpg 20 63 | dslr/images/phone/frame_0010.jpg 20 64 | dslr/images/printer/frame_0001.jpg 21 65 | dslr/images/printer/frame_0013.jpg 21 66 | dslr/images/printer/frame_0005.jpg 21 67 | dslr/images/projector/frame_0022.jpg 22 68 | dslr/images/projector/frame_0020.jpg 22 69 | dslr/images/projector/frame_0014.jpg 22 70 | dslr/images/punchers/frame_0001.jpg 23 71 | dslr/images/punchers/frame_0012.jpg 23 72 | dslr/images/punchers/frame_0013.jpg 23 73 | dslr/images/ring_binder/frame_0008.jpg 24 74 | dslr/images/ring_binder/frame_0009.jpg 24 75 | dslr/images/ring_binder/frame_0010.jpg 24 76 | dslr/images/ruler/frame_0004.jpg 25 77 | dslr/images/ruler/frame_0006.jpg 25 78 | dslr/images/ruler/frame_0002.jpg 25 79 | dslr/images/scissors/frame_0009.jpg 26 80 | dslr/images/scissors/frame_0001.jpg 26 81 | dslr/images/scissors/frame_0016.jpg 26 82 | dslr/images/speaker/frame_0016.jpg 27 83 | dslr/images/speaker/frame_0004.jpg 27 84 | dslr/images/speaker/frame_0019.jpg 27 85 | dslr/images/stapler/frame_0009.jpg 28 86 | dslr/images/stapler/frame_0019.jpg 28 87 | dslr/images/stapler/frame_0004.jpg 28 88 | dslr/images/tape_dispenser/frame_0008.jpg 29 89 | dslr/images/tape_dispenser/frame_0011.jpg 29 90 | dslr/images/tape_dispenser/frame_0009.jpg 29 91 | dslr/images/trash_can/frame_0010.jpg 30 92 | dslr/images/trash_can/frame_0013.jpg 30 93 | dslr/images/trash_can/frame_0003.jpg 30 94 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/labeled_target_images_amazon_3.txt: -------------------------------------------------------------------------------- 1 | amazon/images/back_pack/frame_0091.jpg 0 2 | amazon/images/back_pack/frame_0058.jpg 0 3 | amazon/images/back_pack/frame_0012.jpg 0 4 | amazon/images/bike/frame_0032.jpg 1 5 | amazon/images/bike/frame_0060.jpg 1 6 | amazon/images/bike/frame_0061.jpg 1 7 | amazon/images/bike_helmet/frame_0032.jpg 2 8 | amazon/images/bike_helmet/frame_0062.jpg 2 9 | amazon/images/bike_helmet/frame_0040.jpg 2 10 | amazon/images/bookcase/frame_0021.jpg 3 11 | amazon/images/bookcase/frame_0016.jpg 3 12 | amazon/images/bookcase/frame_0004.jpg 3 13 | amazon/images/bottle/frame_0026.jpg 4 14 | amazon/images/bottle/frame_0002.jpg 4 15 | amazon/images/bottle/frame_0032.jpg 4 16 | amazon/images/calculator/frame_0003.jpg 5 17 | amazon/images/calculator/frame_0049.jpg 5 18 | amazon/images/calculator/frame_0015.jpg 5 19 | amazon/images/desk_chair/frame_0051.jpg 6 20 | amazon/images/desk_chair/frame_0028.jpg 6 21 | amazon/images/desk_chair/frame_0068.jpg 6 22 | amazon/images/desk_lamp/frame_0080.jpg 7 23 | amazon/images/desk_lamp/frame_0030.jpg 7 24 | amazon/images/desk_lamp/frame_0022.jpg 7 25 | amazon/images/desktop_computer/frame_0058.jpg 8 26 | amazon/images/desktop_computer/frame_0010.jpg 8 27 | amazon/images/desktop_computer/frame_0048.jpg 8 28 | amazon/images/file_cabinet/frame_0041.jpg 9 29 | amazon/images/file_cabinet/frame_0053.jpg 9 30 | amazon/images/file_cabinet/frame_0071.jpg 9 31 | amazon/images/headphones/frame_0094.jpg 10 32 | amazon/images/headphones/frame_0002.jpg 10 33 | amazon/images/headphones/frame_0035.jpg 10 34 | amazon/images/keyboard/frame_0004.jpg 11 35 | amazon/images/keyboard/frame_0003.jpg 11 36 | amazon/images/keyboard/frame_0061.jpg 11 37 | amazon/images/laptop_computer/frame_0034.jpg 12 38 | amazon/images/laptop_computer/frame_0068.jpg 12 39 | amazon/images/laptop_computer/frame_0092.jpg 12 40 | amazon/images/letter_tray/frame_0012.jpg 13 41 | amazon/images/letter_tray/frame_0033.jpg 13 42 | amazon/images/letter_tray/frame_0061.jpg 13 43 | amazon/images/mobile_phone/frame_0090.jpg 14 44 | amazon/images/mobile_phone/frame_0084.jpg 14 45 | amazon/images/mobile_phone/frame_0070.jpg 14 46 | amazon/images/monitor/frame_0096.jpg 15 47 | amazon/images/monitor/frame_0046.jpg 15 48 | amazon/images/monitor/frame_0039.jpg 15 49 | amazon/images/mouse/frame_0006.jpg 16 50 | amazon/images/mouse/frame_0083.jpg 16 51 | amazon/images/mouse/frame_0032.jpg 16 52 | amazon/images/mug/frame_0011.jpg 17 53 | amazon/images/mug/frame_0031.jpg 17 54 | amazon/images/mug/frame_0023.jpg 17 55 | amazon/images/paper_notebook/frame_0001.jpg 18 56 | amazon/images/paper_notebook/frame_0053.jpg 18 57 | amazon/images/paper_notebook/frame_0010.jpg 18 58 | amazon/images/pen/frame_0065.jpg 19 59 | amazon/images/pen/frame_0059.jpg 19 60 | amazon/images/pen/frame_0084.jpg 19 61 | amazon/images/phone/frame_0003.jpg 20 62 | amazon/images/phone/frame_0038.jpg 20 63 | amazon/images/phone/frame_0028.jpg 20 64 | amazon/images/printer/frame_0011.jpg 21 65 | amazon/images/printer/frame_0046.jpg 21 66 | amazon/images/printer/frame_0076.jpg 21 67 | amazon/images/projector/frame_0019.jpg 22 68 | amazon/images/projector/frame_0012.jpg 22 69 | amazon/images/projector/frame_0011.jpg 22 70 | amazon/images/punchers/frame_0086.jpg 23 71 | amazon/images/punchers/frame_0071.jpg 23 72 | amazon/images/punchers/frame_0077.jpg 23 73 | amazon/images/ring_binder/frame_0067.jpg 24 74 | amazon/images/ring_binder/frame_0063.jpg 24 75 | amazon/images/ring_binder/frame_0003.jpg 24 76 | amazon/images/ruler/frame_0006.jpg 25 77 | amazon/images/ruler/frame_0039.jpg 25 78 | amazon/images/ruler/frame_0051.jpg 25 79 | amazon/images/scissors/frame_0086.jpg 26 80 | amazon/images/scissors/frame_0098.jpg 26 81 | amazon/images/scissors/frame_0024.jpg 26 82 | amazon/images/speaker/frame_0044.jpg 27 83 | amazon/images/speaker/frame_0043.jpg 27 84 | amazon/images/speaker/frame_0048.jpg 27 85 | amazon/images/stapler/frame_0004.jpg 28 86 | amazon/images/stapler/frame_0012.jpg 28 87 | amazon/images/stapler/frame_0003.jpg 28 88 | amazon/images/tape_dispenser/frame_0032.jpg 29 89 | amazon/images/tape_dispenser/frame_0025.jpg 29 90 | amazon/images/tape_dispenser/frame_0093.jpg 29 91 | amazon/images/trash_can/frame_0038.jpg 30 92 | amazon/images/trash_can/frame_0043.jpg 30 93 | amazon/images/trash_can/frame_0034.jpg 30 94 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/labeled_target_images_webcam_3.txt: -------------------------------------------------------------------------------- 1 | webcam/images/back_pack/frame_0027.jpg 0 2 | webcam/images/back_pack/frame_0002.jpg 0 3 | webcam/images/back_pack/frame_0020.jpg 0 4 | webcam/images/bike/frame_0012.jpg 1 5 | webcam/images/bike/frame_0006.jpg 1 6 | webcam/images/bike/frame_0001.jpg 1 7 | webcam/images/bike_helmet/frame_0013.jpg 2 8 | webcam/images/bike_helmet/frame_0028.jpg 2 9 | webcam/images/bike_helmet/frame_0019.jpg 2 10 | webcam/images/bookcase/frame_0002.jpg 3 11 | webcam/images/bookcase/frame_0001.jpg 3 12 | webcam/images/bookcase/frame_0006.jpg 3 13 | webcam/images/bottle/frame_0006.jpg 4 14 | webcam/images/bottle/frame_0009.jpg 4 15 | webcam/images/bottle/frame_0010.jpg 4 16 | webcam/images/calculator/frame_0016.jpg 5 17 | webcam/images/calculator/frame_0011.jpg 5 18 | webcam/images/calculator/frame_0027.jpg 5 19 | webcam/images/desk_chair/frame_0015.jpg 6 20 | webcam/images/desk_chair/frame_0031.jpg 6 21 | webcam/images/desk_chair/frame_0002.jpg 6 22 | webcam/images/desk_lamp/frame_0007.jpg 7 23 | webcam/images/desk_lamp/frame_0006.jpg 7 24 | webcam/images/desk_lamp/frame_0005.jpg 7 25 | webcam/images/desktop_computer/frame_0019.jpg 8 26 | webcam/images/desktop_computer/frame_0010.jpg 8 27 | webcam/images/desktop_computer/frame_0012.jpg 8 28 | webcam/images/file_cabinet/frame_0003.jpg 9 29 | webcam/images/file_cabinet/frame_0017.jpg 9 30 | webcam/images/file_cabinet/frame_0001.jpg 9 31 | webcam/images/headphones/frame_0012.jpg 10 32 | webcam/images/headphones/frame_0019.jpg 10 33 | webcam/images/headphones/frame_0011.jpg 10 34 | webcam/images/keyboard/frame_0023.jpg 11 35 | webcam/images/keyboard/frame_0021.jpg 11 36 | webcam/images/keyboard/frame_0009.jpg 11 37 | webcam/images/laptop_computer/frame_0002.jpg 12 38 | webcam/images/laptop_computer/frame_0025.jpg 12 39 | webcam/images/laptop_computer/frame_0019.jpg 12 40 | webcam/images/letter_tray/frame_0018.jpg 13 41 | webcam/images/letter_tray/frame_0015.jpg 13 42 | webcam/images/letter_tray/frame_0001.jpg 13 43 | webcam/images/mobile_phone/frame_0003.jpg 14 44 | webcam/images/mobile_phone/frame_0030.jpg 14 45 | webcam/images/mobile_phone/frame_0007.jpg 14 46 | webcam/images/monitor/frame_0026.jpg 15 47 | webcam/images/monitor/frame_0007.jpg 15 48 | webcam/images/monitor/frame_0016.jpg 15 49 | webcam/images/mouse/frame_0030.jpg 16 50 | webcam/images/mouse/frame_0008.jpg 16 51 | webcam/images/mouse/frame_0022.jpg 16 52 | webcam/images/mug/frame_0021.jpg 17 53 | webcam/images/mug/frame_0011.jpg 17 54 | webcam/images/mug/frame_0009.jpg 17 55 | webcam/images/paper_notebook/frame_0022.jpg 18 56 | webcam/images/paper_notebook/frame_0001.jpg 18 57 | webcam/images/paper_notebook/frame_0028.jpg 18 58 | webcam/images/pen/frame_0004.jpg 19 59 | webcam/images/pen/frame_0028.jpg 19 60 | webcam/images/pen/frame_0031.jpg 19 61 | webcam/images/phone/frame_0009.jpg 20 62 | webcam/images/phone/frame_0012.jpg 20 63 | webcam/images/phone/frame_0011.jpg 20 64 | webcam/images/printer/frame_0004.jpg 21 65 | webcam/images/printer/frame_0002.jpg 21 66 | webcam/images/printer/frame_0001.jpg 21 67 | webcam/images/projector/frame_0017.jpg 22 68 | webcam/images/projector/frame_0012.jpg 22 69 | webcam/images/projector/frame_0019.jpg 22 70 | webcam/images/punchers/frame_0021.jpg 23 71 | webcam/images/punchers/frame_0017.jpg 23 72 | webcam/images/punchers/frame_0005.jpg 23 73 | webcam/images/ring_binder/frame_0027.jpg 24 74 | webcam/images/ring_binder/frame_0040.jpg 24 75 | webcam/images/ring_binder/frame_0021.jpg 24 76 | webcam/images/ruler/frame_0010.jpg 25 77 | webcam/images/ruler/frame_0011.jpg 25 78 | webcam/images/ruler/frame_0007.jpg 25 79 | webcam/images/scissors/frame_0020.jpg 26 80 | webcam/images/scissors/frame_0002.jpg 26 81 | webcam/images/scissors/frame_0003.jpg 26 82 | webcam/images/speaker/frame_0015.jpg 27 83 | webcam/images/speaker/frame_0007.jpg 27 84 | webcam/images/speaker/frame_0030.jpg 27 85 | webcam/images/stapler/frame_0020.jpg 28 86 | webcam/images/stapler/frame_0004.jpg 28 87 | webcam/images/stapler/frame_0014.jpg 28 88 | webcam/images/tape_dispenser/frame_0015.jpg 29 89 | webcam/images/tape_dispenser/frame_0006.jpg 29 90 | webcam/images/tape_dispenser/frame_0001.jpg 29 91 | webcam/images/trash_can/frame_0019.jpg 30 92 | webcam/images/trash_can/frame_0007.jpg 30 93 | webcam/images/trash_can/frame_0006.jpg 30 94 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/validation_target_images_amazon_3.txt: -------------------------------------------------------------------------------- 1 | amazon/images/back_pack/frame_0045.jpg 0 2 | amazon/images/back_pack/frame_0092.jpg 0 3 | amazon/images/back_pack/frame_0060.jpg 0 4 | amazon/images/bike/frame_0063.jpg 1 5 | amazon/images/bike/frame_0003.jpg 1 6 | amazon/images/bike/frame_0039.jpg 1 7 | amazon/images/bike_helmet/frame_0021.jpg 2 8 | amazon/images/bike_helmet/frame_0038.jpg 2 9 | amazon/images/bike_helmet/frame_0046.jpg 2 10 | amazon/images/bookcase/frame_0005.jpg 3 11 | amazon/images/bookcase/frame_0053.jpg 3 12 | amazon/images/bookcase/frame_0013.jpg 3 13 | amazon/images/bottle/frame_0016.jpg 4 14 | amazon/images/bottle/frame_0030.jpg 4 15 | amazon/images/bottle/frame_0010.jpg 4 16 | amazon/images/calculator/frame_0053.jpg 5 17 | amazon/images/calculator/frame_0058.jpg 5 18 | amazon/images/calculator/frame_0017.jpg 5 19 | amazon/images/desk_chair/frame_0058.jpg 6 20 | amazon/images/desk_chair/frame_0040.jpg 6 21 | amazon/images/desk_chair/frame_0024.jpg 6 22 | amazon/images/desk_lamp/frame_0039.jpg 7 23 | amazon/images/desk_lamp/frame_0015.jpg 7 24 | amazon/images/desk_lamp/frame_0016.jpg 7 25 | amazon/images/desktop_computer/frame_0033.jpg 8 26 | amazon/images/desktop_computer/frame_0091.jpg 8 27 | amazon/images/desktop_computer/frame_0004.jpg 8 28 | amazon/images/file_cabinet/frame_0027.jpg 9 29 | amazon/images/file_cabinet/frame_0050.jpg 9 30 | amazon/images/file_cabinet/frame_0054.jpg 9 31 | amazon/images/headphones/frame_0044.jpg 10 32 | amazon/images/headphones/frame_0056.jpg 10 33 | amazon/images/headphones/frame_0040.jpg 10 34 | amazon/images/keyboard/frame_0008.jpg 11 35 | amazon/images/keyboard/frame_0099.jpg 11 36 | amazon/images/keyboard/frame_0081.jpg 11 37 | amazon/images/laptop_computer/frame_0078.jpg 12 38 | amazon/images/laptop_computer/frame_0091.jpg 12 39 | amazon/images/laptop_computer/frame_0027.jpg 12 40 | amazon/images/letter_tray/frame_0009.jpg 13 41 | amazon/images/letter_tray/frame_0004.jpg 13 42 | amazon/images/letter_tray/frame_0081.jpg 13 43 | amazon/images/mobile_phone/frame_0087.jpg 14 44 | amazon/images/mobile_phone/frame_0080.jpg 14 45 | amazon/images/mobile_phone/frame_0078.jpg 14 46 | amazon/images/monitor/frame_0059.jpg 15 47 | amazon/images/monitor/frame_0091.jpg 15 48 | amazon/images/monitor/frame_0048.jpg 15 49 | amazon/images/mouse/frame_0024.jpg 16 50 | amazon/images/mouse/frame_0069.jpg 16 51 | amazon/images/mouse/frame_0049.jpg 16 52 | amazon/images/mug/frame_0069.jpg 17 53 | amazon/images/mug/frame_0064.jpg 17 54 | amazon/images/mug/frame_0012.jpg 17 55 | amazon/images/paper_notebook/frame_0041.jpg 18 56 | amazon/images/paper_notebook/frame_0051.jpg 18 57 | amazon/images/paper_notebook/frame_0023.jpg 18 58 | amazon/images/pen/frame_0032.jpg 19 59 | amazon/images/pen/frame_0088.jpg 19 60 | amazon/images/pen/frame_0009.jpg 19 61 | amazon/images/phone/frame_0022.jpg 20 62 | amazon/images/phone/frame_0033.jpg 20 63 | amazon/images/phone/frame_0045.jpg 20 64 | amazon/images/printer/frame_0030.jpg 21 65 | amazon/images/printer/frame_0044.jpg 21 66 | amazon/images/printer/frame_0079.jpg 21 67 | amazon/images/projector/frame_0037.jpg 22 68 | amazon/images/projector/frame_0026.jpg 22 69 | amazon/images/projector/frame_0005.jpg 22 70 | amazon/images/punchers/frame_0046.jpg 23 71 | amazon/images/punchers/frame_0006.jpg 23 72 | amazon/images/punchers/frame_0029.jpg 23 73 | amazon/images/ring_binder/frame_0039.jpg 24 74 | amazon/images/ring_binder/frame_0088.jpg 24 75 | amazon/images/ring_binder/frame_0047.jpg 24 76 | amazon/images/ruler/frame_0018.jpg 25 77 | amazon/images/ruler/frame_0023.jpg 25 78 | amazon/images/ruler/frame_0054.jpg 25 79 | amazon/images/scissors/frame_0012.jpg 26 80 | amazon/images/scissors/frame_0003.jpg 26 81 | amazon/images/scissors/frame_0087.jpg 26 82 | amazon/images/speaker/frame_0096.jpg 27 83 | amazon/images/speaker/frame_0080.jpg 27 84 | amazon/images/speaker/frame_0073.jpg 27 85 | amazon/images/stapler/frame_0033.jpg 28 86 | amazon/images/stapler/frame_0084.jpg 28 87 | amazon/images/stapler/frame_0044.jpg 28 88 | amazon/images/tape_dispenser/frame_0088.jpg 29 89 | amazon/images/tape_dispenser/frame_0007.jpg 29 90 | amazon/images/tape_dispenser/frame_0029.jpg 29 91 | amazon/images/trash_can/frame_0027.jpg 30 92 | amazon/images/trash_can/frame_0064.jpg 30 93 | amazon/images/trash_can/frame_0058.jpg 30 94 | -------------------------------------------------------------------------------- /SSDA/data/txt/office/validation_target_images_webcam_3.txt: -------------------------------------------------------------------------------- 1 | webcam/images/back_pack/frame_0003.jpg 0 2 | webcam/images/back_pack/frame_0021.jpg 0 3 | webcam/images/back_pack/frame_0025.jpg 0 4 | webcam/images/bike/frame_0017.jpg 1 5 | webcam/images/bike/frame_0015.jpg 1 6 | webcam/images/bike/frame_0004.jpg 1 7 | webcam/images/bike_helmet/frame_0020.jpg 2 8 | webcam/images/bike_helmet/frame_0024.jpg 2 9 | webcam/images/bike_helmet/frame_0009.jpg 2 10 | webcam/images/bookcase/frame_0003.jpg 3 11 | webcam/images/bookcase/frame_0008.jpg 3 12 | webcam/images/bookcase/frame_0012.jpg 3 13 | webcam/images/bottle/frame_0005.jpg 4 14 | webcam/images/bottle/frame_0003.jpg 4 15 | webcam/images/bottle/frame_0013.jpg 4 16 | webcam/images/calculator/frame_0015.jpg 5 17 | webcam/images/calculator/frame_0003.jpg 5 18 | webcam/images/calculator/frame_0020.jpg 5 19 | webcam/images/desk_chair/frame_0024.jpg 6 20 | webcam/images/desk_chair/frame_0009.jpg 6 21 | webcam/images/desk_chair/frame_0010.jpg 6 22 | webcam/images/desk_lamp/frame_0015.jpg 7 23 | webcam/images/desk_lamp/frame_0011.jpg 7 24 | webcam/images/desk_lamp/frame_0010.jpg 7 25 | webcam/images/desktop_computer/frame_0020.jpg 8 26 | webcam/images/desktop_computer/frame_0006.jpg 8 27 | webcam/images/desktop_computer/frame_0007.jpg 8 28 | webcam/images/file_cabinet/frame_0009.jpg 9 29 | webcam/images/file_cabinet/frame_0019.jpg 9 30 | webcam/images/file_cabinet/frame_0007.jpg 9 31 | webcam/images/headphones/frame_0026.jpg 10 32 | webcam/images/headphones/frame_0023.jpg 10 33 | webcam/images/headphones/frame_0003.jpg 10 34 | webcam/images/keyboard/frame_0013.jpg 11 35 | webcam/images/keyboard/frame_0007.jpg 11 36 | webcam/images/keyboard/frame_0008.jpg 11 37 | webcam/images/laptop_computer/frame_0026.jpg 12 38 | webcam/images/laptop_computer/frame_0027.jpg 12 39 | webcam/images/laptop_computer/frame_0008.jpg 12 40 | webcam/images/letter_tray/frame_0009.jpg 13 41 | webcam/images/letter_tray/frame_0004.jpg 13 42 | webcam/images/letter_tray/frame_0002.jpg 13 43 | webcam/images/mobile_phone/frame_0002.jpg 14 44 | webcam/images/mobile_phone/frame_0027.jpg 14 45 | webcam/images/mobile_phone/frame_0025.jpg 14 46 | webcam/images/monitor/frame_0017.jpg 15 47 | webcam/images/monitor/frame_0009.jpg 15 48 | webcam/images/monitor/frame_0040.jpg 15 49 | webcam/images/mouse/frame_0001.jpg 16 50 | webcam/images/mouse/frame_0027.jpg 16 51 | webcam/images/mouse/frame_0023.jpg 16 52 | webcam/images/mug/frame_0018.jpg 17 53 | webcam/images/mug/frame_0019.jpg 17 54 | webcam/images/mug/frame_0014.jpg 17 55 | webcam/images/paper_notebook/frame_0006.jpg 18 56 | webcam/images/paper_notebook/frame_0003.jpg 18 57 | webcam/images/paper_notebook/frame_0014.jpg 18 58 | webcam/images/pen/frame_0027.jpg 19 59 | webcam/images/pen/frame_0032.jpg 19 60 | webcam/images/pen/frame_0005.jpg 19 61 | webcam/images/phone/frame_0014.jpg 20 62 | webcam/images/phone/frame_0007.jpg 20 63 | webcam/images/phone/frame_0015.jpg 20 64 | webcam/images/printer/frame_0019.jpg 21 65 | webcam/images/printer/frame_0017.jpg 21 66 | webcam/images/printer/frame_0018.jpg 21 67 | webcam/images/projector/frame_0027.jpg 22 68 | webcam/images/projector/frame_0023.jpg 22 69 | webcam/images/projector/frame_0022.jpg 22 70 | webcam/images/punchers/frame_0026.jpg 23 71 | webcam/images/punchers/frame_0016.jpg 23 72 | webcam/images/punchers/frame_0013.jpg 23 73 | webcam/images/ring_binder/frame_0031.jpg 24 74 | webcam/images/ring_binder/frame_0023.jpg 24 75 | webcam/images/ring_binder/frame_0019.jpg 24 76 | webcam/images/ruler/frame_0004.jpg 25 77 | webcam/images/ruler/frame_0009.jpg 25 78 | webcam/images/ruler/frame_0005.jpg 25 79 | webcam/images/scissors/frame_0005.jpg 26 80 | webcam/images/scissors/frame_0006.jpg 26 81 | webcam/images/scissors/frame_0015.jpg 26 82 | webcam/images/speaker/frame_0001.jpg 27 83 | webcam/images/speaker/frame_0010.jpg 27 84 | webcam/images/speaker/frame_0009.jpg 27 85 | webcam/images/stapler/frame_0007.jpg 28 86 | webcam/images/stapler/frame_0021.jpg 28 87 | webcam/images/stapler/frame_0001.jpg 28 88 | webcam/images/tape_dispenser/frame_0004.jpg 29 89 | webcam/images/tape_dispenser/frame_0017.jpg 29 90 | webcam/images/tape_dispenser/frame_0002.jpg 29 91 | webcam/images/trash_can/frame_0002.jpg 30 92 | webcam/images/trash_can/frame_0016.jpg 30 93 | webcam/images/trash_can/frame_0004.jpg 30 94 | -------------------------------------------------------------------------------- /SSDA/model/basenet.py: -------------------------------------------------------------------------------- 1 | from torchvision import models 2 | import torch.nn.functional as F 3 | import torch 4 | import torch.nn as nn 5 | from torch.autograd import Function 6 | 7 | 8 | # class GradReverse(Function): 9 | # def __init__(self, lambd): 10 | # self.lambd = lambd 11 | 12 | # def forward(self, x): 13 | # return x.view_as(x) 14 | 15 | # def backward(self, grad_output): 16 | # return (grad_output * -self.lambd) 17 | 18 | 19 | # def grad_reverse(x, lambd=1.0): 20 | # return GradReverse(lambd)(x) 21 | 22 | class GradReverse(Function): 23 | 24 | @staticmethod 25 | def forward(ctx, x): 26 | return x.view_as(x) 27 | 28 | @staticmethod 29 | def backward(ctx, grad_output): 30 | return (grad_output.neg() * (1.0)) 31 | 32 | def grad_reverse(x, lambd=1.0): 33 | return GradReverse.apply(x) 34 | 35 | 36 | def l2_norm(input): 37 | input_size = input.size() 38 | buffer = torch.pow(input, 2) 39 | 40 | normp = torch.sum(buffer, 1).add_(1e-10) 41 | norm = torch.sqrt(normp) 42 | 43 | _output = torch.div(input, norm.view(-1, 1).expand_as(input)) 44 | 45 | output = _output.view(input_size) 46 | 47 | return output 48 | 49 | 50 | class AlexNetBase(nn.Module): 51 | def __init__(self, pret=True): 52 | super(AlexNetBase, self).__init__() 53 | model_alexnet = models.alexnet(pretrained=pret) 54 | self.features = nn.Sequential(*list(model_alexnet. 55 | features._modules.values())[:]) 56 | self.classifier = nn.Sequential() 57 | for i in range(6): 58 | self.classifier.add_module("classifier" + str(i), 59 | model_alexnet.classifier[i]) 60 | self.__in_features = model_alexnet.classifier[6].in_features 61 | 62 | def forward(self, x): 63 | x = self.features(x) 64 | x = x.view(x.size(0), 256 * 6 * 6) 65 | x = self.classifier(x) 66 | return x 67 | 68 | def output_num(self): 69 | return self.__in_features 70 | 71 | 72 | class VGGBase(nn.Module): 73 | def __init__(self, pret=True, no_pool=False): 74 | super(VGGBase, self).__init__() 75 | vgg16 = models.vgg16(pretrained=pret) 76 | self.classifier = nn.Sequential(*list(vgg16.classifier. 77 | _modules.values())[:-1]) 78 | self.features = nn.Sequential(*list(vgg16.features. 79 | _modules.values())[:]) 80 | self.s = nn.Parameter(torch.FloatTensor([10])) 81 | 82 | def forward(self, x): 83 | x = self.features(x) 84 | x = x.view(x.size(0), 7 * 7 * 512) 85 | x = self.classifier(x) 86 | return x 87 | 88 | 89 | class Predictor(nn.Module): 90 | def __init__(self, num_class=64, inc=4096, temp=0.05): 91 | super(Predictor, self).__init__() 92 | self.fc = nn.Linear(inc, num_class, bias=False) 93 | self.num_class = num_class 94 | self.temp = temp 95 | 96 | def forward(self, x, reverse=False, eta=0.1): 97 | if reverse: 98 | x = grad_reverse(x, eta) 99 | x = F.normalize(x) 100 | x_out = self.fc(x) / self.temp 101 | return x_out 102 | 103 | 104 | class Predictor_deep(nn.Module): 105 | def __init__(self, num_class=64, inc=4096, temp=0.05): 106 | super(Predictor_deep, self).__init__() 107 | self.fc1 = nn.Linear(inc, 512) 108 | self.fc2 = nn.Linear(512, num_class, bias=False) 109 | self.num_class = num_class 110 | self.temp = temp 111 | 112 | def forward(self, x, reverse=False, eta=0.1): 113 | x = self.fc1(x) 114 | if reverse: 115 | x = grad_reverse(x, eta) 116 | x = F.normalize(x) 117 | x_out = self.fc2(x) / self.temp 118 | return x_out 119 | 120 | 121 | class Discriminator(nn.Module): 122 | def __init__(self, inc=4096): 123 | super(Discriminator, self).__init__() 124 | self.fc1_1 = nn.Linear(inc, 512) 125 | self.fc2_1 = nn.Linear(512, 512) 126 | self.fc3_1 = nn.Linear(512, 1) 127 | 128 | def forward(self, x, reverse=True, eta=1.0): 129 | if reverse: 130 | x = grad_reverse(x, eta) 131 | x = F.relu(self.fc1_1(x)) 132 | x = F.relu(self.fc2_1(x)) 133 | x_out = F.sigmoid(self.fc3_1(x)) 134 | return x_out 135 | -------------------------------------------------------------------------------- /MTL/office_data/office-31/dslr_test.txt: -------------------------------------------------------------------------------- 1 | dslr/images/back_pack/frame_0011.jpg 0 2 | dslr/images/back_pack/frame_0003.jpg 0 3 | dslr/images/back_pack/frame_0012.jpg 0 4 | dslr/images/paper_notebook/frame_0006.jpg 1 5 | dslr/images/paper_notebook/frame_0004.jpg 1 6 | dslr/images/desktop_computer/frame_0005.jpg 2 7 | dslr/images/desktop_computer/frame_0004.jpg 2 8 | dslr/images/desktop_computer/frame_0009.jpg 2 9 | dslr/images/scissors/frame_0001.jpg 3 10 | dslr/images/scissors/frame_0013.jpg 3 11 | dslr/images/scissors/frame_0003.jpg 3 12 | dslr/images/scissors/frame_0009.jpg 3 13 | dslr/images/scissors/frame_0010.jpg 3 14 | dslr/images/calculator/frame_0011.jpg 4 15 | dslr/images/calculator/frame_0012.jpg 4 16 | dslr/images/calculator/frame_0008.jpg 4 17 | dslr/images/desk_chair/frame_0001.jpg 5 18 | dslr/images/desk_chair/frame_0002.jpg 5 19 | dslr/images/desk_chair/frame_0003.jpg 5 20 | dslr/images/desk_chair/frame_0009.jpg 5 21 | dslr/images/mouse/frame_0007.jpg 6 22 | dslr/images/mouse/frame_0006.jpg 6 23 | dslr/images/mouse/frame_0003.jpg 6 24 | dslr/images/laptop_computer/frame_0007.jpg 7 25 | dslr/images/laptop_computer/frame_0004.jpg 7 26 | dslr/images/laptop_computer/frame_0018.jpg 7 27 | dslr/images/laptop_computer/frame_0006.jpg 7 28 | dslr/images/laptop_computer/frame_0024.jpg 7 29 | dslr/images/laptop_computer/frame_0013.jpg 7 30 | dslr/images/desk_lamp/frame_0009.jpg 8 31 | dslr/images/desk_lamp/frame_0014.jpg 8 32 | dslr/images/desk_lamp/frame_0010.jpg 8 33 | dslr/images/desk_lamp/frame_0007.jpg 8 34 | dslr/images/stapler/frame_0012.jpg 9 35 | dslr/images/stapler/frame_0020.jpg 9 36 | dslr/images/stapler/frame_0021.jpg 9 37 | dslr/images/stapler/frame_0006.jpg 9 38 | dslr/images/stapler/frame_0019.jpg 9 39 | dslr/images/bottle/frame_0009.jpg 10 40 | dslr/images/bottle/frame_0006.jpg 10 41 | dslr/images/bottle/frame_0014.jpg 10 42 | dslr/images/bottle/frame_0016.jpg 10 43 | dslr/images/phone/frame_0002.jpg 11 44 | dslr/images/phone/frame_0004.jpg 11 45 | dslr/images/phone/frame_0006.jpg 11 46 | dslr/images/phone/frame_0007.jpg 11 47 | dslr/images/tape_dispenser/frame_0017.jpg 12 48 | dslr/images/tape_dispenser/frame_0013.jpg 12 49 | dslr/images/tape_dispenser/frame_0011.jpg 12 50 | dslr/images/tape_dispenser/frame_0022.jpg 12 51 | dslr/images/tape_dispenser/frame_0008.jpg 12 52 | dslr/images/trash_can/frame_0015.jpg 13 53 | dslr/images/trash_can/frame_0012.jpg 13 54 | dslr/images/trash_can/frame_0013.jpg 13 55 | dslr/images/bookcase/frame_0010.jpg 14 56 | dslr/images/bookcase/frame_0009.jpg 14 57 | dslr/images/bookcase/frame_0012.jpg 14 58 | dslr/images/pen/frame_0008.jpg 15 59 | dslr/images/pen/frame_0004.jpg 15 60 | dslr/images/ring_binder/frame_0001.jpg 16 61 | dslr/images/ring_binder/frame_0008.jpg 16 62 | dslr/images/mobile_phone/frame_0026.jpg 17 63 | dslr/images/mobile_phone/frame_0006.jpg 17 64 | dslr/images/mobile_phone/frame_0025.jpg 17 65 | dslr/images/mobile_phone/frame_0028.jpg 17 66 | dslr/images/mobile_phone/frame_0004.jpg 17 67 | dslr/images/mobile_phone/frame_0010.jpg 17 68 | dslr/images/mobile_phone/frame_0013.jpg 17 69 | dslr/images/ruler/frame_0003.jpg 18 70 | dslr/images/ruler/frame_0007.jpg 18 71 | dslr/images/headphones/frame_0012.jpg 19 72 | dslr/images/headphones/frame_0013.jpg 19 73 | dslr/images/headphones/frame_0007.jpg 19 74 | dslr/images/headphones/frame_0008.jpg 19 75 | dslr/images/bike_helmet/frame_0004.jpg 20 76 | dslr/images/bike_helmet/frame_0008.jpg 20 77 | dslr/images/bike_helmet/frame_0001.jpg 20 78 | dslr/images/bike_helmet/frame_0020.jpg 20 79 | dslr/images/bike_helmet/frame_0011.jpg 20 80 | dslr/images/bike_helmet/frame_0006.jpg 20 81 | dslr/images/monitor/frame_0009.jpg 21 82 | dslr/images/monitor/frame_0016.jpg 21 83 | dslr/images/monitor/frame_0008.jpg 21 84 | dslr/images/monitor/frame_0001.jpg 21 85 | dslr/images/monitor/frame_0015.jpg 21 86 | dslr/images/mug/frame_0008.jpg 22 87 | dslr/images/mug/frame_0007.jpg 22 88 | dslr/images/mug/frame_0006.jpg 22 89 | dslr/images/letter_tray/frame_0012.jpg 23 90 | dslr/images/letter_tray/frame_0006.jpg 23 91 | dslr/images/letter_tray/frame_0005.jpg 23 92 | dslr/images/letter_tray/frame_0015.jpg 23 93 | dslr/images/projector/frame_0019.jpg 24 94 | dslr/images/projector/frame_0021.jpg 24 95 | dslr/images/projector/frame_0015.jpg 24 96 | dslr/images/projector/frame_0004.jpg 24 97 | dslr/images/projector/frame_0007.jpg 24 98 | dslr/images/projector/frame_0003.jpg 24 99 | dslr/images/printer/frame_0012.jpg 25 100 | dslr/images/printer/frame_0002.jpg 25 101 | dslr/images/printer/frame_0001.jpg 25 102 | dslr/images/speaker/frame_0026.jpg 26 103 | dslr/images/speaker/frame_0007.jpg 26 104 | dslr/images/speaker/frame_0003.jpg 26 105 | dslr/images/speaker/frame_0014.jpg 26 106 | dslr/images/speaker/frame_0002.jpg 26 107 | dslr/images/speaker/frame_0018.jpg 26 108 | dslr/images/bike/frame_0014.jpg 27 109 | dslr/images/bike/frame_0001.jpg 27 110 | dslr/images/bike/frame_0010.jpg 27 111 | dslr/images/bike/frame_0018.jpg 27 112 | dslr/images/bike/frame_0007.jpg 27 113 | dslr/images/keyboard/frame_0005.jpg 28 114 | dslr/images/keyboard/frame_0002.jpg 28 115 | dslr/images/file_cabinet/frame_0007.jpg 29 116 | dslr/images/file_cabinet/frame_0010.jpg 29 117 | dslr/images/file_cabinet/frame_0004.jpg 29 118 | dslr/images/punchers/frame_0001.jpg 30 119 | dslr/images/punchers/frame_0013.jpg 30 120 | dslr/images/punchers/frame_0002.jpg 30 121 | dslr/images/punchers/frame_0009.jpg 30 122 | dslr/images/punchers/frame_0016.jpg 30 123 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Art_3.txt: -------------------------------------------------------------------------------- 1 | Art/Alarm_Clock/00013.jpg 0 2 | Art/Alarm_Clock/00039.jpg 0 3 | Art/Alarm_Clock/00048.jpg 0 4 | Art/Backpack/00026.jpg 1 5 | Art/Backpack/00021.jpg 1 6 | Art/Backpack/00039.jpg 1 7 | Art/Batteries/00012.jpg 2 8 | Art/Batteries/00008.jpg 2 9 | Art/Batteries/00021.jpg 2 10 | Art/Bed/00024.jpg 3 11 | Art/Bed/00038.jpg 3 12 | Art/Bed/00027.jpg 3 13 | Art/Bike/00066.jpg 4 14 | Art/Bike/00017.jpg 4 15 | Art/Bike/00005.jpg 4 16 | Art/Bottle/00001.jpg 5 17 | Art/Bottle/00003.jpg 5 18 | Art/Bottle/00014.jpg 5 19 | Art/Bucket/00035.jpg 6 20 | Art/Bucket/00018.jpg 6 21 | Art/Bucket/00003.jpg 6 22 | Art/Calculator/00027.jpg 7 23 | Art/Calculator/00017.jpg 7 24 | Art/Calculator/00028.jpg 7 25 | Art/Calendar/00007.jpg 8 26 | Art/Calendar/00013.jpg 8 27 | Art/Calendar/00005.jpg 8 28 | Art/Candles/00043.jpg 9 29 | Art/Candles/00010.jpg 9 30 | Art/Candles/00018.jpg 9 31 | Art/Chair/00034.jpg 10 32 | Art/Chair/00017.jpg 10 33 | Art/Chair/00061.jpg 10 34 | Art/Clipboards/00019.jpg 11 35 | Art/Clipboards/00023.jpg 11 36 | Art/Clipboards/00011.jpg 11 37 | Art/Computer/00041.jpg 12 38 | Art/Computer/00011.jpg 12 39 | Art/Computer/00007.jpg 12 40 | Art/Couch/00033.jpg 13 41 | Art/Couch/00003.jpg 13 42 | Art/Couch/00019.jpg 13 43 | Art/Curtains/00040.jpg 14 44 | Art/Curtains/00003.jpg 14 45 | Art/Curtains/00039.jpg 14 46 | Art/Desk_Lamp/00013.jpg 15 47 | Art/Desk_Lamp/00001.jpg 15 48 | Art/Desk_Lamp/00015.jpg 15 49 | Art/Drill/00007.jpg 16 50 | Art/Drill/00006.jpg 16 51 | Art/Drill/00009.jpg 16 52 | Art/Eraser/00009.jpg 17 53 | Art/Eraser/00001.jpg 17 54 | Art/Eraser/00013.jpg 17 55 | Art/Exit_Sign/00009.jpg 18 56 | Art/Exit_Sign/00001.jpg 18 57 | Art/Exit_Sign/00020.jpg 18 58 | Art/Fan/00012.jpg 19 59 | Art/Fan/00025.jpg 19 60 | Art/Fan/00026.jpg 19 61 | Art/File_Cabinet/00016.jpg 20 62 | Art/File_Cabinet/00020.jpg 20 63 | Art/File_Cabinet/00001.jpg 20 64 | Art/Flipflops/00034.jpg 21 65 | Art/Flipflops/00030.jpg 21 66 | Art/Flipflops/00001.jpg 21 67 | Art/Flowers/00019.jpg 22 68 | Art/Flowers/00018.jpg 22 69 | Art/Flowers/00012.jpg 22 70 | Art/Folder/00020.jpg 23 71 | Art/Folder/00002.jpg 23 72 | Art/Folder/00006.jpg 23 73 | Art/Fork/00040.jpg 24 74 | Art/Fork/00024.jpg 24 75 | Art/Fork/00005.jpg 24 76 | Art/Glasses/00039.jpg 25 77 | Art/Glasses/00006.jpg 25 78 | Art/Glasses/00007.jpg 25 79 | Art/Hammer/00010.jpg 26 80 | Art/Hammer/00027.jpg 26 81 | Art/Hammer/00024.jpg 26 82 | Art/Helmet/00076.jpg 27 83 | Art/Helmet/00034.jpg 27 84 | Art/Helmet/00021.jpg 27 85 | Art/Kettle/00029.jpg 28 86 | Art/Kettle/00034.jpg 28 87 | Art/Kettle/00032.jpg 28 88 | Art/Keyboard/00007.jpg 29 89 | Art/Keyboard/00017.jpg 29 90 | Art/Keyboard/00003.jpg 29 91 | Art/Knives/00052.jpg 30 92 | Art/Knives/00057.jpg 30 93 | Art/Knives/00059.jpg 30 94 | Art/Lamp_Shade/00020.jpg 31 95 | Art/Lamp_Shade/00018.jpg 31 96 | Art/Lamp_Shade/00046.jpg 31 97 | Art/Laptop/00017.jpg 32 98 | Art/Laptop/00013.jpg 32 99 | Art/Laptop/00044.jpg 32 100 | Art/Marker/00010.jpg 33 101 | Art/Marker/00018.jpg 33 102 | Art/Marker/00020.jpg 33 103 | Art/Monitor/00015.jpg 34 104 | Art/Monitor/00020.jpg 34 105 | Art/Monitor/00031.jpg 34 106 | Art/Mop/00013.jpg 35 107 | Art/Mop/00007.jpg 35 108 | Art/Mop/00015.jpg 35 109 | Art/Mouse/00014.jpg 36 110 | Art/Mouse/00016.jpg 36 111 | Art/Mouse/00005.jpg 36 112 | Art/Mug/00038.jpg 37 113 | Art/Mug/00010.jpg 37 114 | Art/Mug/00013.jpg 37 115 | Art/Notebook/00012.jpg 38 116 | Art/Notebook/00021.jpg 38 117 | Art/Notebook/00003.jpg 38 118 | Art/Oven/00002.jpg 39 119 | Art/Oven/00017.jpg 39 120 | Art/Oven/00005.jpg 39 121 | Art/Pan/00018.jpg 40 122 | Art/Pan/00012.jpg 40 123 | Art/Pan/00016.jpg 40 124 | Art/Paper_Clip/00013.jpg 41 125 | Art/Paper_Clip/00010.jpg 41 126 | Art/Paper_Clip/00006.jpg 41 127 | Art/Pen/00003.jpg 42 128 | Art/Pen/00006.jpg 42 129 | Art/Pen/00017.jpg 42 130 | Art/Pencil/00020.jpg 43 131 | Art/Pencil/00013.jpg 43 132 | Art/Pencil/00006.jpg 43 133 | Art/Postit_Notes/00016.jpg 44 134 | Art/Postit_Notes/00003.jpg 44 135 | Art/Postit_Notes/00011.jpg 44 136 | Art/Printer/00013.jpg 45 137 | Art/Printer/00014.jpg 45 138 | Art/Printer/00006.jpg 45 139 | Art/Push_Pin/00015.jpg 46 140 | Art/Push_Pin/00024.jpg 46 141 | Art/Push_Pin/00016.jpg 46 142 | Art/Radio/00022.jpg 47 143 | Art/Radio/00020.jpg 47 144 | Art/Radio/00015.jpg 47 145 | Art/Refrigerator/00025.jpg 48 146 | Art/Refrigerator/00027.jpg 48 147 | Art/Refrigerator/00041.jpg 48 148 | Art/Ruler/00012.jpg 49 149 | Art/Ruler/00015.jpg 49 150 | Art/Ruler/00004.jpg 49 151 | Art/Scissors/00001.jpg 50 152 | Art/Scissors/00007.jpg 50 153 | Art/Scissors/00002.jpg 50 154 | Art/Screwdriver/00008.jpg 51 155 | Art/Screwdriver/00002.jpg 51 156 | Art/Screwdriver/00013.jpg 51 157 | Art/Shelf/00032.jpg 52 158 | Art/Shelf/00021.jpg 52 159 | Art/Shelf/00027.jpg 52 160 | Art/Sink/00006.jpg 53 161 | Art/Sink/00041.jpg 53 162 | Art/Sink/00007.jpg 53 163 | Art/Sneakers/00030.jpg 54 164 | Art/Sneakers/00031.jpg 54 165 | Art/Sneakers/00017.jpg 54 166 | Art/Soda/00028.jpg 55 167 | Art/Soda/00040.jpg 55 168 | Art/Soda/00013.jpg 55 169 | Art/Speaker/00015.jpg 56 170 | Art/Speaker/00008.jpg 56 171 | Art/Speaker/00018.jpg 56 172 | Art/Spoon/00032.jpg 57 173 | Art/Spoon/00001.jpg 57 174 | Art/Spoon/00014.jpg 57 175 | Art/Table/00015.jpg 58 176 | Art/Table/00007.jpg 58 177 | Art/Table/00003.jpg 58 178 | Art/Telephone/00044.jpg 59 179 | Art/Telephone/00041.jpg 59 180 | Art/Telephone/00010.jpg 59 181 | Art/ToothBrush/00017.jpg 60 182 | Art/ToothBrush/00015.jpg 60 183 | Art/ToothBrush/00006.jpg 60 184 | Art/Toys/00013.jpg 61 185 | Art/Toys/00001.jpg 61 186 | Art/Toys/00007.jpg 61 187 | Art/Trash_Can/00004.jpg 62 188 | Art/Trash_Can/00015.jpg 62 189 | Art/Trash_Can/00008.jpg 62 190 | Art/TV/00018.jpg 63 191 | Art/TV/00029.jpg 63 192 | Art/TV/00015.jpg 63 193 | Art/Webcam/00011.jpg 64 194 | Art/Webcam/00014.jpg 64 195 | Art/Webcam/00004.jpg 64 196 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/validation_target_images_Art_3.txt: -------------------------------------------------------------------------------- 1 | Art/Alarm_Clock/00015.jpg 0 2 | Art/Alarm_Clock/00063.jpg 0 3 | Art/Alarm_Clock/00032.jpg 0 4 | Art/Backpack/00038.jpg 1 5 | Art/Backpack/00025.jpg 1 6 | Art/Backpack/00030.jpg 1 7 | Art/Batteries/00015.jpg 2 8 | Art/Batteries/00010.jpg 2 9 | Art/Batteries/00003.jpg 2 10 | Art/Bed/00008.jpg 3 11 | Art/Bed/00001.jpg 3 12 | Art/Bed/00006.jpg 3 13 | Art/Bike/00020.jpg 4 14 | Art/Bike/00036.jpg 4 15 | Art/Bike/00031.jpg 4 16 | Art/Bottle/00091.jpg 5 17 | Art/Bottle/00072.jpg 5 18 | Art/Bottle/00076.jpg 5 19 | Art/Bucket/00007.jpg 6 20 | Art/Bucket/00004.jpg 6 21 | Art/Bucket/00019.jpg 6 22 | Art/Calculator/00022.jpg 7 23 | Art/Calculator/00025.jpg 7 24 | Art/Calculator/00001.jpg 7 25 | Art/Calendar/00015.jpg 8 26 | Art/Calendar/00008.jpg 8 27 | Art/Calendar/00009.jpg 8 28 | Art/Candles/00058.jpg 9 29 | Art/Candles/00013.jpg 9 30 | Art/Candles/00062.jpg 9 31 | Art/Chair/00037.jpg 10 32 | Art/Chair/00009.jpg 10 33 | Art/Chair/00033.jpg 10 34 | Art/Clipboards/00015.jpg 11 35 | Art/Clipboards/00017.jpg 11 36 | Art/Clipboards/00021.jpg 11 37 | Art/Computer/00014.jpg 12 38 | Art/Computer/00042.jpg 12 39 | Art/Computer/00036.jpg 12 40 | Art/Couch/00026.jpg 13 41 | Art/Couch/00017.jpg 13 42 | Art/Couch/00039.jpg 13 43 | Art/Curtains/00012.jpg 14 44 | Art/Curtains/00028.jpg 14 45 | Art/Curtains/00036.jpg 14 46 | Art/Desk_Lamp/00023.jpg 15 47 | Art/Desk_Lamp/00012.jpg 15 48 | Art/Desk_Lamp/00010.jpg 15 49 | Art/Drill/00012.jpg 16 50 | Art/Drill/00008.jpg 16 51 | Art/Drill/00013.jpg 16 52 | Art/Eraser/00014.jpg 17 53 | Art/Eraser/00018.jpg 17 54 | Art/Eraser/00011.jpg 17 55 | Art/Exit_Sign/00018.jpg 18 56 | Art/Exit_Sign/00007.jpg 18 57 | Art/Exit_Sign/00002.jpg 18 58 | Art/Fan/00028.jpg 19 59 | Art/Fan/00019.jpg 19 60 | Art/Fan/00029.jpg 19 61 | Art/File_Cabinet/00006.jpg 20 62 | Art/File_Cabinet/00018.jpg 20 63 | Art/File_Cabinet/00011.jpg 20 64 | Art/Flipflops/00003.jpg 21 65 | Art/Flipflops/00004.jpg 21 66 | Art/Flipflops/00027.jpg 21 67 | Art/Flowers/00002.jpg 22 68 | Art/Flowers/00083.jpg 22 69 | Art/Flowers/00077.jpg 22 70 | Art/Folder/00018.jpg 23 71 | Art/Folder/00012.jpg 23 72 | Art/Folder/00005.jpg 23 73 | Art/Fork/00012.jpg 24 74 | Art/Fork/00007.jpg 24 75 | Art/Fork/00028.jpg 24 76 | Art/Glasses/00036.jpg 25 77 | Art/Glasses/00017.jpg 25 78 | Art/Glasses/00030.jpg 25 79 | Art/Hammer/00029.jpg 26 80 | Art/Hammer/00004.jpg 26 81 | Art/Hammer/00021.jpg 26 82 | Art/Helmet/00013.jpg 27 83 | Art/Helmet/00043.jpg 27 84 | Art/Helmet/00040.jpg 27 85 | Art/Kettle/00007.jpg 28 86 | Art/Kettle/00019.jpg 28 87 | Art/Kettle/00017.jpg 28 88 | Art/Keyboard/00013.jpg 29 89 | Art/Keyboard/00012.jpg 29 90 | Art/Keyboard/00005.jpg 29 91 | Art/Knives/00036.jpg 30 92 | Art/Knives/00058.jpg 30 93 | Art/Knives/00028.jpg 30 94 | Art/Lamp_Shade/00011.jpg 31 95 | Art/Lamp_Shade/00009.jpg 31 96 | Art/Lamp_Shade/00035.jpg 31 97 | Art/Laptop/00032.jpg 32 98 | Art/Laptop/00038.jpg 32 99 | Art/Laptop/00018.jpg 32 100 | Art/Marker/00007.jpg 33 101 | Art/Marker/00016.jpg 33 102 | Art/Marker/00006.jpg 33 103 | Art/Monitor/00039.jpg 34 104 | Art/Monitor/00005.jpg 34 105 | Art/Monitor/00033.jpg 34 106 | Art/Mop/00031.jpg 35 107 | Art/Mop/00028.jpg 35 108 | Art/Mop/00009.jpg 35 109 | Art/Mouse/00004.jpg 36 110 | Art/Mouse/00011.jpg 36 111 | Art/Mouse/00008.jpg 36 112 | Art/Mug/00042.jpg 37 113 | Art/Mug/00035.jpg 37 114 | Art/Mug/00017.jpg 37 115 | Art/Notebook/00017.jpg 38 116 | Art/Notebook/00019.jpg 38 117 | Art/Notebook/00008.jpg 38 118 | Art/Oven/00001.jpg 39 119 | Art/Oven/00014.jpg 39 120 | Art/Oven/00006.jpg 39 121 | Art/Pan/00004.jpg 40 122 | Art/Pan/00005.jpg 40 123 | Art/Pan/00014.jpg 40 124 | Art/Paper_Clip/00014.jpg 41 125 | Art/Paper_Clip/00016.jpg 41 126 | Art/Paper_Clip/00003.jpg 41 127 | Art/Pen/00009.jpg 42 128 | Art/Pen/00011.jpg 42 129 | Art/Pen/00015.jpg 42 130 | Art/Pencil/00004.jpg 43 131 | Art/Pencil/00009.jpg 43 132 | Art/Pencil/00019.jpg 43 133 | Art/Postit_Notes/00013.jpg 44 134 | Art/Postit_Notes/00009.jpg 44 135 | Art/Postit_Notes/00012.jpg 44 136 | Art/Printer/00003.jpg 45 137 | Art/Printer/00009.jpg 45 138 | Art/Printer/00015.jpg 45 139 | Art/Push_Pin/00022.jpg 46 140 | Art/Push_Pin/00019.jpg 46 141 | Art/Push_Pin/00010.jpg 46 142 | Art/Radio/00027.jpg 47 143 | Art/Radio/00006.jpg 47 144 | Art/Radio/00025.jpg 47 145 | Art/Refrigerator/00017.jpg 48 146 | Art/Refrigerator/00016.jpg 48 147 | Art/Refrigerator/00049.jpg 48 148 | Art/Ruler/00005.jpg 49 149 | Art/Ruler/00001.jpg 49 150 | Art/Ruler/00014.jpg 49 151 | Art/Scissors/00009.jpg 50 152 | Art/Scissors/00016.jpg 50 153 | Art/Scissors/00018.jpg 50 154 | Art/Screwdriver/00028.jpg 51 155 | Art/Screwdriver/00023.jpg 51 156 | Art/Screwdriver/00020.jpg 51 157 | Art/Shelf/00030.jpg 52 158 | Art/Shelf/00003.jpg 52 159 | Art/Shelf/00020.jpg 52 160 | Art/Sink/00027.jpg 53 161 | Art/Sink/00022.jpg 53 162 | Art/Sink/00010.jpg 53 163 | Art/Sneakers/00041.jpg 54 164 | Art/Sneakers/00020.jpg 54 165 | Art/Sneakers/00008.jpg 54 166 | Art/Soda/00022.jpg 55 167 | Art/Soda/00001.jpg 55 168 | Art/Soda/00025.jpg 55 169 | Art/Speaker/00002.jpg 56 170 | Art/Speaker/00004.jpg 56 171 | Art/Speaker/00014.jpg 56 172 | Art/Spoon/00010.jpg 57 173 | Art/Spoon/00045.jpg 57 174 | Art/Spoon/00023.jpg 57 175 | Art/Table/00006.jpg 58 176 | Art/Table/00012.jpg 58 177 | Art/Table/00009.jpg 58 178 | Art/Telephone/00013.jpg 59 179 | Art/Telephone/00036.jpg 59 180 | Art/Telephone/00025.jpg 59 181 | Art/ToothBrush/00024.jpg 60 182 | Art/ToothBrush/00016.jpg 60 183 | Art/ToothBrush/00037.jpg 60 184 | Art/Toys/00002.jpg 61 185 | Art/Toys/00020.jpg 61 186 | Art/Toys/00019.jpg 61 187 | Art/Trash_Can/00014.jpg 62 188 | Art/Trash_Can/00005.jpg 62 189 | Art/Trash_Can/00017.jpg 62 190 | Art/TV/00036.jpg 63 191 | Art/TV/00027.jpg 63 192 | Art/TV/00002.jpg 63 193 | Art/Webcam/00016.jpg 64 194 | Art/Webcam/00010.jpg 64 195 | Art/Webcam/00006.jpg 64 196 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Real_3.txt: -------------------------------------------------------------------------------- 1 | Real/Alarm_Clock/00037.jpg 0 2 | Real/Alarm_Clock/00031.jpg 0 3 | Real/Alarm_Clock/00018.jpg 0 4 | Real/Backpack/00055.jpg 1 5 | Real/Backpack/00047.jpg 1 6 | Real/Backpack/00085.jpg 1 7 | Real/Batteries/00048.jpg 2 8 | Real/Batteries/00049.jpg 2 9 | Real/Batteries/00052.jpg 2 10 | Real/Bed/00018.jpg 3 11 | Real/Bed/00016.jpg 3 12 | Real/Bed/00002.jpg 3 13 | Real/Bike/00009.jpg 4 14 | Real/Bike/00098.jpg 4 15 | Real/Bike/00078.jpg 4 16 | Real/Bottle/00055.jpg 5 17 | Real/Bottle/00064.jpg 5 18 | Real/Bottle/00001.jpg 5 19 | Real/Bucket/00029.jpg 6 20 | Real/Bucket/00037.jpg 6 21 | Real/Bucket/00054.jpg 6 22 | Real/Calculator/00014.jpg 7 23 | Real/Calculator/00009.jpg 7 24 | Real/Calculator/00026.jpg 7 25 | Real/Calendar/00019.jpg 8 26 | Real/Calendar/00034.jpg 8 27 | Real/Calendar/00064.jpg 8 28 | Real/Candles/00085.jpg 9 29 | Real/Candles/00018.jpg 9 30 | Real/Candles/00042.jpg 9 31 | Real/Chair/00075.jpg 10 32 | Real/Chair/00021.jpg 10 33 | Real/Chair/00047.jpg 10 34 | Real/Clipboards/00025.jpg 11 35 | Real/Clipboards/00037.jpg 11 36 | Real/Clipboards/00010.jpg 11 37 | Real/Computer/00051.jpg 12 38 | Real/Computer/00042.jpg 12 39 | Real/Computer/00040.jpg 12 40 | Real/Couch/00019.jpg 13 41 | Real/Couch/00011.jpg 13 42 | Real/Couch/00043.jpg 13 43 | Real/Curtains/00022.jpg 14 44 | Real/Curtains/00003.jpg 14 45 | Real/Curtains/00040.jpg 14 46 | Real/Desk_Lamp/00028.jpg 15 47 | Real/Desk_Lamp/00062.jpg 15 48 | Real/Desk_Lamp/00010.jpg 15 49 | Real/Drill/00026.jpg 16 50 | Real/Drill/00013.jpg 16 51 | Real/Drill/00028.jpg 16 52 | Real/Eraser/00019.jpg 17 53 | Real/Eraser/00003.jpg 17 54 | Real/Eraser/00039.jpg 17 55 | Real/Exit_Sign/00068.jpg 18 56 | Real/Exit_Sign/00015.jpg 18 57 | Real/Exit_Sign/00045.jpg 18 58 | Real/Fan/00060.jpg 19 59 | Real/Fan/00034.jpg 19 60 | Real/Fan/00030.jpg 19 61 | Real/File_Cabinet/00013.jpg 20 62 | Real/File_Cabinet/00015.jpg 20 63 | Real/File_Cabinet/00002.jpg 20 64 | Real/Flipflops/00057.jpg 21 65 | Real/Flipflops/00076.jpg 21 66 | Real/Flipflops/00068.jpg 21 67 | Real/Flowers/00063.jpg 22 68 | Real/Flowers/00052.jpg 22 69 | Real/Flowers/00018.jpg 22 70 | Real/Folder/00050.jpg 23 71 | Real/Folder/00012.jpg 23 72 | Real/Folder/00022.jpg 23 73 | Real/Fork/00013.jpg 24 74 | Real/Fork/00010.jpg 24 75 | Real/Fork/00004.jpg 24 76 | Real/Glasses/00003.jpg 25 77 | Real/Glasses/00054.jpg 25 78 | Real/Glasses/00043.jpg 25 79 | Real/Hammer/00030.jpg 26 80 | Real/Hammer/00021.jpg 26 81 | Real/Hammer/00001.jpg 26 82 | Real/Helmet/00045.jpg 27 83 | Real/Helmet/00053.jpg 27 84 | Real/Helmet/00001.jpg 27 85 | Real/Kettle/00021.jpg 28 86 | Real/Kettle/00004.jpg 28 87 | Real/Kettle/00024.jpg 28 88 | Real/Keyboard/00016.jpg 29 89 | Real/Keyboard/00061.jpg 29 90 | Real/Keyboard/00052.jpg 29 91 | Real/Knives/00075.jpg 30 92 | Real/Knives/00016.jpg 30 93 | Real/Knives/00044.jpg 30 94 | Real/Lamp_Shade/00056.jpg 31 95 | Real/Lamp_Shade/00007.jpg 31 96 | Real/Lamp_Shade/00068.jpg 31 97 | Real/Laptop/00004.jpg 32 98 | Real/Laptop/00056.jpg 32 99 | Real/Laptop/00050.jpg 32 100 | Real/Marker/00007.jpg 33 101 | Real/Marker/00020.jpg 33 102 | Real/Marker/00017.jpg 33 103 | Real/Monitor/00064.jpg 34 104 | Real/Monitor/00016.jpg 34 105 | Real/Monitor/00047.jpg 34 106 | Real/Mop/00006.jpg 35 107 | Real/Mop/00010.jpg 35 108 | Real/Mop/00021.jpg 35 109 | Real/Mouse/00012.jpg 36 110 | Real/Mouse/00016.jpg 36 111 | Real/Mouse/00060.jpg 36 112 | Real/Mug/00010.jpg 37 113 | Real/Mug/00024.jpg 37 114 | Real/Mug/00013.jpg 37 115 | Real/Notebook/00027.jpg 38 116 | Real/Notebook/00017.jpg 38 117 | Real/Notebook/00001.jpg 38 118 | Real/Oven/00016.jpg 39 119 | Real/Oven/00053.jpg 39 120 | Real/Oven/00057.jpg 39 121 | Real/Pan/00004.jpg 40 122 | Real/Pan/00012.jpg 40 123 | Real/Pan/00001.jpg 40 124 | Real/Paper_Clip/00066.jpg 41 125 | Real/Paper_Clip/00026.jpg 41 126 | Real/Paper_Clip/00021.jpg 41 127 | Real/Pen/00039.jpg 42 128 | Real/Pen/00022.jpg 42 129 | Real/Pen/00017.jpg 42 130 | Real/Pencil/00011.jpg 43 131 | Real/Pencil/00033.jpg 43 132 | Real/Pencil/00032.jpg 43 133 | Real/Postit_Notes/00037.jpg 44 134 | Real/Postit_Notes/00048.jpg 44 135 | Real/Postit_Notes/00008.jpg 44 136 | Real/Printer/00048.jpg 45 137 | Real/Printer/00030.jpg 45 138 | Real/Printer/00020.jpg 45 139 | Real/Push_Pin/00019.jpg 46 140 | Real/Push_Pin/00052.jpg 46 141 | Real/Push_Pin/00014.jpg 46 142 | Real/Radio/00049.jpg 47 143 | Real/Radio/00018.jpg 47 144 | Real/Radio/00033.jpg 47 145 | Real/Refrigerator/00038.jpg 48 146 | Real/Refrigerator/00032.jpg 48 147 | Real/Refrigerator/00024.jpg 48 148 | Real/Ruler/00028.jpg 49 149 | Real/Ruler/00031.jpg 49 150 | Real/Ruler/00024.jpg 49 151 | Real/Scissors/00071.jpg 50 152 | Real/Scissors/00042.jpg 50 153 | Real/Scissors/00022.jpg 50 154 | Real/Screwdriver/00041.jpg 51 155 | Real/Screwdriver/00025.jpg 51 156 | Real/Screwdriver/00004.jpg 51 157 | Real/Shelf/00013.jpg 52 158 | Real/Shelf/00014.jpg 52 159 | Real/Shelf/00050.jpg 52 160 | Real/Sink/00005.jpg 53 161 | Real/Sink/00020.jpg 53 162 | Real/Sink/00055.jpg 53 163 | Real/Sneakers/00045.jpg 54 164 | Real/Sneakers/00058.jpg 54 165 | Real/Sneakers/00038.jpg 54 166 | Real/Soda/00059.jpg 55 167 | Real/Soda/00013.jpg 55 168 | Real/Soda/00054.jpg 55 169 | Real/Speaker/00012.jpg 56 170 | Real/Speaker/00074.jpg 56 171 | Real/Speaker/00020.jpg 56 172 | Real/Spoon/00016.jpg 57 173 | Real/Spoon/00035.jpg 57 174 | Real/Spoon/00014.jpg 57 175 | Real/Table/00010.jpg 58 176 | Real/Table/00052.jpg 58 177 | Real/Table/00049.jpg 58 178 | Real/Telephone/00052.jpg 59 179 | Real/Telephone/00053.jpg 59 180 | Real/Telephone/00011.jpg 59 181 | Real/ToothBrush/00041.jpg 60 182 | Real/ToothBrush/00033.jpg 60 183 | Real/ToothBrush/00046.jpg 60 184 | Real/Toys/00015.jpg 61 185 | Real/Toys/00055.jpg 61 186 | Real/Toys/00045.jpg 61 187 | Real/Trash_Can/00031.jpg 62 188 | Real/Trash_Can/00073.jpg 62 189 | Real/Trash_Can/00013.jpg 62 190 | Real/TV/00040.jpg 63 191 | Real/TV/00004.jpg 63 192 | Real/TV/00053.jpg 63 193 | Real/Webcam/00025.jpg 64 194 | Real/Webcam/00042.jpg 64 195 | Real/Webcam/00018.jpg 64 196 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/validation_target_images_Real_3.txt: -------------------------------------------------------------------------------- 1 | Real/Alarm_Clock/00080.jpg 0 2 | Real/Alarm_Clock/00056.jpg 0 3 | Real/Alarm_Clock/00050.jpg 0 4 | Real/Backpack/00067.jpg 1 5 | Real/Backpack/00026.jpg 1 6 | Real/Backpack/00009.jpg 1 7 | Real/Batteries/00006.jpg 2 8 | Real/Batteries/00024.jpg 2 9 | Real/Batteries/00002.jpg 2 10 | Real/Bed/00051.jpg 3 11 | Real/Bed/00062.jpg 3 12 | Real/Bed/00031.jpg 3 13 | Real/Bike/00002.jpg 4 14 | Real/Bike/00018.jpg 4 15 | Real/Bike/00039.jpg 4 16 | Real/Bottle/00038.jpg 5 17 | Real/Bottle/00052.jpg 5 18 | Real/Bottle/00049.jpg 5 19 | Real/Bucket/00020.jpg 6 20 | Real/Bucket/00073.jpg 6 21 | Real/Bucket/00044.jpg 6 22 | Real/Calculator/00008.jpg 7 23 | Real/Calculator/00017.jpg 7 24 | Real/Calculator/00070.jpg 7 25 | Real/Calendar/00062.jpg 8 26 | Real/Calendar/00066.jpg 8 27 | Real/Calendar/00012.jpg 8 28 | Real/Candles/00031.jpg 9 29 | Real/Candles/00056.jpg 9 30 | Real/Candles/00082.jpg 9 31 | Real/Chair/00019.jpg 10 32 | Real/Chair/00054.jpg 10 33 | Real/Chair/00037.jpg 10 34 | Real/Clipboards/00015.jpg 11 35 | Real/Clipboards/00021.jpg 11 36 | Real/Clipboards/00013.jpg 11 37 | Real/Computer/00011.jpg 12 38 | Real/Computer/00022.jpg 12 39 | Real/Computer/00044.jpg 12 40 | Real/Couch/00027.jpg 13 41 | Real/Couch/00074.jpg 13 42 | Real/Couch/00049.jpg 13 43 | Real/Curtains/00045.jpg 14 44 | Real/Curtains/00065.jpg 14 45 | Real/Curtains/00033.jpg 14 46 | Real/Desk_Lamp/00011.jpg 15 47 | Real/Desk_Lamp/00034.jpg 15 48 | Real/Desk_Lamp/00007.jpg 15 49 | Real/Drill/00016.jpg 16 50 | Real/Drill/00032.jpg 16 51 | Real/Drill/00007.jpg 16 52 | Real/Eraser/00042.jpg 17 53 | Real/Eraser/00026.jpg 17 54 | Real/Eraser/00012.jpg 17 55 | Real/Exit_Sign/00042.jpg 18 56 | Real/Exit_Sign/00024.jpg 18 57 | Real/Exit_Sign/00005.jpg 18 58 | Real/Fan/00049.jpg 19 59 | Real/Fan/00059.jpg 19 60 | Real/Fan/00050.jpg 19 61 | Real/File_Cabinet/00034.jpg 20 62 | Real/File_Cabinet/00035.jpg 20 63 | Real/File_Cabinet/00021.jpg 20 64 | Real/Flipflops/00072.jpg 21 65 | Real/Flipflops/00048.jpg 21 66 | Real/Flipflops/00077.jpg 21 67 | Real/Flowers/00024.jpg 22 68 | Real/Flowers/00009.jpg 22 69 | Real/Flowers/00005.jpg 22 70 | Real/Folder/00053.jpg 23 71 | Real/Folder/00039.jpg 23 72 | Real/Folder/00044.jpg 23 73 | Real/Fork/00023.jpg 24 74 | Real/Fork/00012.jpg 24 75 | Real/Fork/00017.jpg 24 76 | Real/Glasses/00002.jpg 25 77 | Real/Glasses/00057.jpg 25 78 | Real/Glasses/00053.jpg 25 79 | Real/Hammer/00040.jpg 26 80 | Real/Hammer/00041.jpg 26 81 | Real/Hammer/00032.jpg 26 82 | Real/Helmet/00027.jpg 27 83 | Real/Helmet/00015.jpg 27 84 | Real/Helmet/00020.jpg 27 85 | Real/Kettle/00017.jpg 28 86 | Real/Kettle/00068.jpg 28 87 | Real/Kettle/00056.jpg 28 88 | Real/Keyboard/00004.jpg 29 89 | Real/Keyboard/00075.jpg 29 90 | Real/Keyboard/00005.jpg 29 91 | Real/Knives/00021.jpg 30 92 | Real/Knives/00055.jpg 30 93 | Real/Knives/00079.jpg 30 94 | Real/Lamp_Shade/00028.jpg 31 95 | Real/Lamp_Shade/00060.jpg 31 96 | Real/Lamp_Shade/00075.jpg 31 97 | Real/Laptop/00036.jpg 32 98 | Real/Laptop/00057.jpg 32 99 | Real/Laptop/00044.jpg 32 100 | Real/Marker/00009.jpg 33 101 | Real/Marker/00010.jpg 33 102 | Real/Marker/00001.jpg 33 103 | Real/Monitor/00066.jpg 34 104 | Real/Monitor/00014.jpg 34 105 | Real/Monitor/00061.jpg 34 106 | Real/Mop/00033.jpg 35 107 | Real/Mop/00041.jpg 35 108 | Real/Mop/00001.jpg 35 109 | Real/Mouse/00043.jpg 36 110 | Real/Mouse/00009.jpg 36 111 | Real/Mouse/00006.jpg 36 112 | Real/Mug/00057.jpg 37 113 | Real/Mug/00048.jpg 37 114 | Real/Mug/00022.jpg 37 115 | Real/Notebook/00009.jpg 38 116 | Real/Notebook/00053.jpg 38 117 | Real/Notebook/00047.jpg 38 118 | Real/Oven/00050.jpg 39 119 | Real/Oven/00005.jpg 39 120 | Real/Oven/00037.jpg 39 121 | Real/Pan/00002.jpg 40 122 | Real/Pan/00028.jpg 40 123 | Real/Pan/00017.jpg 40 124 | Real/Paper_Clip/00063.jpg 41 125 | Real/Paper_Clip/00005.jpg 41 126 | Real/Paper_Clip/00020.jpg 41 127 | Real/Pen/00051.jpg 42 128 | Real/Pen/00008.jpg 42 129 | Real/Pen/00049.jpg 42 130 | Real/Pencil/00023.jpg 43 131 | Real/Pencil/00022.jpg 43 132 | Real/Pencil/00025.jpg 43 133 | Real/Postit_Notes/00017.jpg 44 134 | Real/Postit_Notes/00046.jpg 44 135 | Real/Postit_Notes/00060.jpg 44 136 | Real/Printer/00035.jpg 45 137 | Real/Printer/00002.jpg 45 138 | Real/Printer/00037.jpg 45 139 | Real/Push_Pin/00027.jpg 46 140 | Real/Push_Pin/00024.jpg 46 141 | Real/Push_Pin/00040.jpg 46 142 | Real/Radio/00039.jpg 47 143 | Real/Radio/00030.jpg 47 144 | Real/Radio/00054.jpg 47 145 | Real/Refrigerator/00031.jpg 48 146 | Real/Refrigerator/00069.jpg 48 147 | Real/Refrigerator/00045.jpg 48 148 | Real/Ruler/00010.jpg 49 149 | Real/Ruler/00011.jpg 49 150 | Real/Ruler/00033.jpg 49 151 | Real/Scissors/00023.jpg 50 152 | Real/Scissors/00058.jpg 50 153 | Real/Scissors/00074.jpg 50 154 | Real/Screwdriver/00024.jpg 51 155 | Real/Screwdriver/00051.jpg 51 156 | Real/Screwdriver/00031.jpg 51 157 | Real/Shelf/00049.jpg 52 158 | Real/Shelf/00025.jpg 52 159 | Real/Shelf/00044.jpg 52 160 | Real/Sink/00070.jpg 53 161 | Real/Sink/00011.jpg 53 162 | Real/Sink/00073.jpg 53 163 | Real/Sneakers/00011.jpg 54 164 | Real/Sneakers/00073.jpg 54 165 | Real/Sneakers/00027.jpg 54 166 | Real/Soda/00062.jpg 55 167 | Real/Soda/00016.jpg 55 168 | Real/Soda/00027.jpg 55 169 | Real/Speaker/00032.jpg 56 170 | Real/Speaker/00075.jpg 56 171 | Real/Speaker/00079.jpg 56 172 | Real/Spoon/00038.jpg 57 173 | Real/Spoon/00040.jpg 57 174 | Real/Spoon/00045.jpg 57 175 | Real/Table/00001.jpg 58 176 | Real/Table/00021.jpg 58 177 | Real/Table/00002.jpg 58 178 | Real/Telephone/00008.jpg 59 179 | Real/Telephone/00032.jpg 59 180 | Real/Telephone/00051.jpg 59 181 | Real/ToothBrush/00065.jpg 60 182 | Real/ToothBrush/00028.jpg 60 183 | Real/ToothBrush/00006.jpg 60 184 | Real/Toys/00016.jpg 61 185 | Real/Toys/00051.jpg 61 186 | Real/Toys/00059.jpg 61 187 | Real/Trash_Can/00027.jpg 62 188 | Real/Trash_Can/00046.jpg 62 189 | Real/Trash_Can/00028.jpg 62 190 | Real/TV/00039.jpg 63 191 | Real/TV/00018.jpg 63 192 | Real/TV/00052.jpg 63 193 | Real/Webcam/00049.jpg 64 194 | Real/Webcam/00039.jpg 64 195 | Real/Webcam/00044.jpg 64 196 | -------------------------------------------------------------------------------- /SSDA/utils/return_dataset.py: -------------------------------------------------------------------------------- 1 | import os 2 | import torch 3 | from torchvision import transforms 4 | from loaders.data_list import Imagelists_VISDA, return_classlist 5 | 6 | 7 | class ResizeImage(): 8 | def __init__(self, size): 9 | if isinstance(size, int): 10 | self.size = (int(size), int(size)) 11 | else: 12 | self.size = size 13 | 14 | def __call__(self, img): 15 | th, tw = self.size 16 | return img.resize((th, tw)) 17 | 18 | 19 | def return_dataset(args): 20 | base_path = './data/txt/%s' % args.dataset 21 | root = '/data/dataset/office31/' #% args.dataset 22 | image_set_file_s = \ 23 | os.path.join(base_path, 24 | 'labeled_source_images_' + 25 | args.source + '.txt') 26 | image_set_file_t = \ 27 | os.path.join(base_path, 28 | 'labeled_target_images_' + 29 | args.target + '_%d.txt' % (args.num)) 30 | image_set_file_t_val = \ 31 | os.path.join(base_path, 32 | 'validation_target_images_' + 33 | args.target + '_3.txt') 34 | image_set_file_unl = \ 35 | os.path.join(base_path, 36 | 'unlabeled_target_images_' + 37 | args.target + '_%d.txt' % (args.num)) 38 | 39 | if args.net == 'alexnet': 40 | crop_size = 227 41 | else: 42 | crop_size = 224 43 | data_transforms = { 44 | 'train': transforms.Compose([ 45 | ResizeImage(256), 46 | transforms.RandomHorizontalFlip(), 47 | transforms.RandomCrop(crop_size), 48 | transforms.ToTensor(), 49 | transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 50 | ]), 51 | 'val': transforms.Compose([ 52 | ResizeImage(256), 53 | transforms.RandomHorizontalFlip(), 54 | transforms.RandomCrop(crop_size), 55 | transforms.ToTensor(), 56 | transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 57 | ]), 58 | 'test': transforms.Compose([ 59 | ResizeImage(256), 60 | transforms.CenterCrop(crop_size), 61 | transforms.ToTensor(), 62 | transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 63 | ]), 64 | } 65 | source_dataset = Imagelists_VISDA(image_set_file_s, root=root, 66 | transform=data_transforms['train']) 67 | target_dataset = Imagelists_VISDA(image_set_file_t, root=root, 68 | transform=data_transforms['val']) 69 | target_dataset_val = Imagelists_VISDA(image_set_file_t_val, root=root, 70 | transform=data_transforms['val']) 71 | target_dataset_unl = Imagelists_VISDA(image_set_file_unl, root=root, 72 | transform=data_transforms['val']) 73 | target_dataset_test = Imagelists_VISDA(image_set_file_unl, root=root, 74 | transform=data_transforms['test']) 75 | class_list = return_classlist(image_set_file_s) 76 | print("%d classes in this dataset" % len(class_list)) 77 | if args.net == 'alexnet': 78 | bs = 32 79 | else: 80 | bs = 24 81 | source_loader = torch.utils.data.DataLoader(source_dataset, batch_size=bs, 82 | num_workers=0, shuffle=True, 83 | drop_last=True) 84 | target_loader = \ 85 | torch.utils.data.DataLoader(target_dataset, 86 | batch_size=min(bs, len(target_dataset)), 87 | num_workers=0, 88 | shuffle=True, drop_last=True) 89 | target_loader_val = \ 90 | torch.utils.data.DataLoader(target_dataset_val, 91 | batch_size=min(bs, 92 | len(target_dataset_val)), 93 | num_workers=0, 94 | shuffle=True, drop_last=True) 95 | target_loader_unl = \ 96 | torch.utils.data.DataLoader(target_dataset_unl, 97 | batch_size=bs * 2, num_workers=0, 98 | shuffle=True, drop_last=True) 99 | target_loader_test = \ 100 | torch.utils.data.DataLoader(target_dataset_test, 101 | batch_size=bs * 2, num_workers=0, 102 | shuffle=False, drop_last=False) 103 | return source_loader, target_loader, target_loader_unl, \ 104 | target_loader_val, target_loader_test, class_list 105 | 106 | 107 | def return_dataset_test(args): 108 | base_path = './data/txt/%s' % args.dataset 109 | root = './data/%s/' % args.dataset 110 | image_set_file_s = os.path.join(base_path, args.source + '_all' + '.txt') 111 | image_set_file_test = os.path.join(base_path, 112 | 'unlabeled_target_images_' + 113 | args.target + '_%d.txt' % (args.num)) 114 | if args.net == 'alexnet': 115 | crop_size = 227 116 | else: 117 | crop_size = 224 118 | data_transforms = { 119 | 'test': transforms.Compose([ 120 | ResizeImage(256), 121 | transforms.CenterCrop(crop_size), 122 | transforms.ToTensor(), 123 | transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 124 | ]), 125 | } 126 | target_dataset_unl = Imagelists_VISDA(image_set_file_test, root=root, 127 | transform=data_transforms['test'], 128 | test=True) 129 | class_list = return_classlist(image_set_file_s) 130 | print("%d classes in this dataset" % len(class_list)) 131 | if args.net == 'alexnet': 132 | bs = 32 133 | else: 134 | bs = 24 135 | target_loader_unl = \ 136 | torch.utils.data.DataLoader(target_dataset_unl, 137 | batch_size=bs * 2, num_workers=3, 138 | shuffle=False, drop_last=False) 139 | return target_loader_unl, class_list 140 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Clipart_3.txt: -------------------------------------------------------------------------------- 1 | Clipart/Alarm_Clock/00055.jpg 0 2 | Clipart/Alarm_Clock/00017.jpg 0 3 | Clipart/Alarm_Clock/00009.jpg 0 4 | Clipart/Backpack/00021.jpg 1 5 | Clipart/Backpack/00042.jpg 1 6 | Clipart/Backpack/00044.jpg 1 7 | Clipart/Batteries/00043.jpg 2 8 | Clipart/Batteries/00013.jpg 2 9 | Clipart/Batteries/00012.jpg 2 10 | Clipart/Bed/00005.jpg 3 11 | Clipart/Bed/00016.jpg 3 12 | Clipart/Bed/00021.jpg 3 13 | Clipart/Bike/00023.jpg 4 14 | Clipart/Bike/00046.jpg 4 15 | Clipart/Bike/00010.jpg 4 16 | Clipart/Bottle/00043.jpg 5 17 | Clipart/Bottle/00006.jpg 5 18 | Clipart/Bottle/00017.jpg 5 19 | Clipart/Bucket/00062.jpg 6 20 | Clipart/Bucket/00009.jpg 6 21 | Clipart/Bucket/00029.jpg 6 22 | Clipart/Calculator/00030.jpg 7 23 | Clipart/Calculator/00012.jpg 7 24 | Clipart/Calculator/00044.jpg 7 25 | Clipart/Calendar/00002.jpg 8 26 | Clipart/Calendar/00049.jpg 8 27 | Clipart/Calendar/00018.jpg 8 28 | Clipart/Candles/00043.jpg 9 29 | Clipart/Candles/00076.jpg 9 30 | Clipart/Candles/00038.jpg 9 31 | Clipart/Chair/00068.jpg 10 32 | Clipart/Chair/00047.jpg 10 33 | Clipart/Chair/00070.jpg 10 34 | Clipart/Clipboards/00010.jpg 11 35 | Clipart/Clipboards/00004.jpg 11 36 | Clipart/Clipboards/00018.jpg 11 37 | Clipart/Computer/00070.jpg 12 38 | Clipart/Computer/00022.jpg 12 39 | Clipart/Computer/00019.jpg 12 40 | Clipart/Couch/00041.jpg 13 41 | Clipart/Couch/00043.jpg 13 42 | Clipart/Couch/00017.jpg 13 43 | Clipart/Curtains/00007.jpg 14 44 | Clipart/Curtains/00004.jpg 14 45 | Clipart/Curtains/00011.jpg 14 46 | Clipart/Desk_Lamp/00035.jpg 15 47 | Clipart/Desk_Lamp/00017.jpg 15 48 | Clipart/Desk_Lamp/00032.jpg 15 49 | Clipart/Drill/00039.jpg 16 50 | Clipart/Drill/00012.jpg 16 51 | Clipart/Drill/00030.jpg 16 52 | Clipart/Eraser/00021.jpg 17 53 | Clipart/Eraser/00017.jpg 17 54 | Clipart/Eraser/00001.jpg 17 55 | Clipart/Exit_Sign/00037.jpg 18 56 | Clipart/Exit_Sign/00018.jpg 18 57 | Clipart/Exit_Sign/00015.jpg 18 58 | Clipart/Fan/00005.jpg 19 59 | Clipart/Fan/00012.jpg 19 60 | Clipart/Fan/00036.jpg 19 61 | Clipart/File_Cabinet/00011.jpg 20 62 | Clipart/File_Cabinet/00035.jpg 20 63 | Clipart/File_Cabinet/00004.jpg 20 64 | Clipart/Flipflops/00027.jpg 21 65 | Clipart/Flipflops/00022.jpg 21 66 | Clipart/Flipflops/00024.jpg 21 67 | Clipart/Flowers/00047.jpg 22 68 | Clipart/Flowers/00040.jpg 22 69 | Clipart/Flowers/00050.jpg 22 70 | Clipart/Folder/00010.jpg 23 71 | Clipart/Folder/00094.jpg 23 72 | Clipart/Folder/00034.jpg 23 73 | Clipart/Fork/00049.jpg 24 74 | Clipart/Fork/00031.jpg 24 75 | Clipart/Fork/00044.jpg 24 76 | Clipart/Glasses/00022.jpg 25 77 | Clipart/Glasses/00028.jpg 25 78 | Clipart/Glasses/00017.jpg 25 79 | Clipart/Hammer/00097.jpg 26 80 | Clipart/Hammer/00056.jpg 26 81 | Clipart/Hammer/00075.jpg 26 82 | Clipart/Helmet/00050.jpg 27 83 | Clipart/Helmet/00060.jpg 27 84 | Clipart/Helmet/00007.jpg 27 85 | Clipart/Kettle/00029.jpg 28 86 | Clipart/Kettle/00021.jpg 28 87 | Clipart/Kettle/00039.jpg 28 88 | Clipart/Keyboard/00086.jpg 29 89 | Clipart/Keyboard/00038.jpg 29 90 | Clipart/Keyboard/00088.jpg 29 91 | Clipart/Knives/00030.jpg 30 92 | Clipart/Knives/00016.jpg 30 93 | Clipart/Knives/00053.jpg 30 94 | Clipart/Lamp_Shade/00026.jpg 31 95 | Clipart/Lamp_Shade/00011.jpg 31 96 | Clipart/Lamp_Shade/00009.jpg 31 97 | Clipart/Laptop/00016.jpg 32 98 | Clipart/Laptop/00024.jpg 32 99 | Clipart/Laptop/00048.jpg 32 100 | Clipart/Marker/00017.jpg 33 101 | Clipart/Marker/00064.jpg 33 102 | Clipart/Marker/00037.jpg 33 103 | Clipart/Monitor/00058.jpg 34 104 | Clipart/Monitor/00062.jpg 34 105 | Clipart/Monitor/00070.jpg 34 106 | Clipart/Mop/00032.jpg 35 107 | Clipart/Mop/00036.jpg 35 108 | Clipart/Mop/00006.jpg 35 109 | Clipart/Mouse/00027.jpg 36 110 | Clipart/Mouse/00042.jpg 36 111 | Clipart/Mouse/00020.jpg 36 112 | Clipart/Mug/00048.jpg 37 113 | Clipart/Mug/00040.jpg 37 114 | Clipart/Mug/00088.jpg 37 115 | Clipart/Notebook/00019.jpg 38 116 | Clipart/Notebook/00039.jpg 38 117 | Clipart/Notebook/00053.jpg 38 118 | Clipart/Oven/00007.jpg 39 119 | Clipart/Oven/00018.jpg 39 120 | Clipart/Oven/00029.jpg 39 121 | Clipart/Pan/00044.jpg 40 122 | Clipart/Pan/00024.jpg 40 123 | Clipart/Pan/00007.jpg 40 124 | Clipart/Paper_Clip/00022.jpg 41 125 | Clipart/Paper_Clip/00001.jpg 41 126 | Clipart/Paper_Clip/00027.jpg 41 127 | Clipart/Pen/00005.jpg 42 128 | Clipart/Pen/00033.jpg 42 129 | Clipart/Pen/00016.jpg 42 130 | Clipart/Pencil/00084.jpg 43 131 | Clipart/Pencil/00050.jpg 43 132 | Clipart/Pencil/00048.jpg 43 133 | Clipart/Postit_Notes/00004.jpg 44 134 | Clipart/Postit_Notes/00038.jpg 44 135 | Clipart/Postit_Notes/00001.jpg 44 136 | Clipart/Printer/00078.jpg 45 137 | Clipart/Printer/00024.jpg 45 138 | Clipart/Printer/00071.jpg 45 139 | Clipart/Push_Pin/00019.jpg 46 140 | Clipart/Push_Pin/00024.jpg 46 141 | Clipart/Push_Pin/00040.jpg 46 142 | Clipart/Radio/00033.jpg 47 143 | Clipart/Radio/00018.jpg 47 144 | Clipart/Radio/00038.jpg 47 145 | Clipart/Refrigerator/00011.jpg 48 146 | Clipart/Refrigerator/00013.jpg 48 147 | Clipart/Refrigerator/00025.jpg 48 148 | Clipart/Ruler/00062.jpg 49 149 | Clipart/Ruler/00004.jpg 49 150 | Clipart/Ruler/00049.jpg 49 151 | Clipart/Scissors/00095.jpg 50 152 | Clipart/Scissors/00077.jpg 50 153 | Clipart/Scissors/00091.jpg 50 154 | Clipart/Screwdriver/00069.jpg 51 155 | Clipart/Screwdriver/00044.jpg 51 156 | Clipart/Screwdriver/00057.jpg 51 157 | Clipart/Shelf/00033.jpg 52 158 | Clipart/Shelf/00017.jpg 52 159 | Clipart/Shelf/00030.jpg 52 160 | Clipart/Sink/00013.jpg 53 161 | Clipart/Sink/00027.jpg 53 162 | Clipart/Sink/00018.jpg 53 163 | Clipart/Sneakers/00017.jpg 54 164 | Clipart/Sneakers/00008.jpg 54 165 | Clipart/Sneakers/00013.jpg 54 166 | Clipart/Soda/00012.jpg 55 167 | Clipart/Soda/00030.jpg 55 168 | Clipart/Soda/00047.jpg 55 169 | Clipart/Speaker/00054.jpg 56 170 | Clipart/Speaker/00027.jpg 56 171 | Clipart/Speaker/00052.jpg 56 172 | Clipart/Spoon/00025.jpg 57 173 | Clipart/Spoon/00057.jpg 57 174 | Clipart/Spoon/00001.jpg 57 175 | Clipart/Table/00039.jpg 58 176 | Clipart/Table/00063.jpg 58 177 | Clipart/Table/00027.jpg 58 178 | Clipart/Telephone/00035.jpg 59 179 | Clipart/Telephone/00004.jpg 59 180 | Clipart/Telephone/00082.jpg 59 181 | Clipart/ToothBrush/00011.jpg 60 182 | Clipart/ToothBrush/00012.jpg 60 183 | Clipart/ToothBrush/00024.jpg 60 184 | Clipart/Toys/00003.jpg 61 185 | Clipart/Toys/00025.jpg 61 186 | Clipart/Toys/00013.jpg 61 187 | Clipart/Trash_Can/00004.jpg 62 188 | Clipart/Trash_Can/00007.jpg 62 189 | Clipart/Trash_Can/00002.jpg 62 190 | Clipart/TV/00005.jpg 63 191 | Clipart/TV/00004.jpg 63 192 | Clipart/TV/00074.jpg 63 193 | Clipart/Webcam/00019.jpg 64 194 | Clipart/Webcam/00028.jpg 64 195 | Clipart/Webcam/00012.jpg 64 196 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/labeled_target_images_Product_3.txt: -------------------------------------------------------------------------------- 1 | Product/Alarm_Clock/00078.jpg 0 2 | Product/Alarm_Clock/00062.jpg 0 3 | Product/Alarm_Clock/00053.jpg 0 4 | Product/Backpack/00001.jpg 1 5 | Product/Backpack/00025.jpg 1 6 | Product/Backpack/00060.jpg 1 7 | Product/Batteries/00043.jpg 2 8 | Product/Batteries/00025.jpg 2 9 | Product/Batteries/00029.jpg 2 10 | Product/Bed/00012.jpg 3 11 | Product/Bed/00034.jpg 3 12 | Product/Bed/00017.jpg 3 13 | Product/Bike/00002.jpg 4 14 | Product/Bike/00029.jpg 4 15 | Product/Bike/00020.jpg 4 16 | Product/Bottle/00052.jpg 5 17 | Product/Bottle/00036.jpg 5 18 | Product/Bottle/00034.jpg 5 19 | Product/Bucket/00042.jpg 6 20 | Product/Bucket/00044.jpg 6 21 | Product/Bucket/00004.jpg 6 22 | Product/Calculator/00055.jpg 7 23 | Product/Calculator/00065.jpg 7 24 | Product/Calculator/00069.jpg 7 25 | Product/Calendar/00020.jpg 8 26 | Product/Calendar/00027.jpg 8 27 | Product/Calendar/00034.jpg 8 28 | Product/Candles/00012.jpg 9 29 | Product/Candles/00047.jpg 9 30 | Product/Candles/00051.jpg 9 31 | Product/Chair/00001.jpg 10 32 | Product/Chair/00060.jpg 10 33 | Product/Chair/00018.jpg 10 34 | Product/Clipboards/00064.jpg 11 35 | Product/Clipboards/00007.jpg 11 36 | Product/Clipboards/00015.jpg 11 37 | Product/Computer/00092.jpg 12 38 | Product/Computer/00069.jpg 12 39 | Product/Computer/00006.jpg 12 40 | Product/Couch/00056.jpg 13 41 | Product/Couch/00042.jpg 13 42 | Product/Couch/00003.jpg 13 43 | Product/Curtains/00024.jpg 14 44 | Product/Curtains/00048.jpg 14 45 | Product/Curtains/00041.jpg 14 46 | Product/Desk_Lamp/00017.jpg 15 47 | Product/Desk_Lamp/00012.jpg 15 48 | Product/Desk_Lamp/00039.jpg 15 49 | Product/Drill/00064.jpg 16 50 | Product/Drill/00017.jpg 16 51 | Product/Drill/00030.jpg 16 52 | Product/Eraser/00009.jpg 17 53 | Product/Eraser/00024.jpg 17 54 | Product/Eraser/00019.jpg 17 55 | Product/Exit_Sign/00044.jpg 18 56 | Product/Exit_Sign/00002.jpg 18 57 | Product/Exit_Sign/00056.jpg 18 58 | Product/Fan/00033.jpg 19 59 | Product/Fan/00026.jpg 19 60 | Product/Fan/00048.jpg 19 61 | Product/File_Cabinet/00039.jpg 20 62 | Product/File_Cabinet/00004.jpg 20 63 | Product/File_Cabinet/00025.jpg 20 64 | Product/Flipflops/00055.jpg 21 65 | Product/Flipflops/00052.jpg 21 66 | Product/Flipflops/00059.jpg 21 67 | Product/Flowers/00079.jpg 22 68 | Product/Flowers/00029.jpg 22 69 | Product/Flowers/00010.jpg 22 70 | Product/Folder/00084.jpg 23 71 | Product/Folder/00033.jpg 23 72 | Product/Folder/00047.jpg 23 73 | Product/Fork/00030.jpg 24 74 | Product/Fork/00036.jpg 24 75 | Product/Fork/00041.jpg 24 76 | Product/Glasses/00012.jpg 25 77 | Product/Glasses/00061.jpg 25 78 | Product/Glasses/00043.jpg 25 79 | Product/Hammer/00020.jpg 26 80 | Product/Hammer/00035.jpg 26 81 | Product/Hammer/00053.jpg 26 82 | Product/Helmet/00086.jpg 27 83 | Product/Helmet/00056.jpg 27 84 | Product/Helmet/00050.jpg 27 85 | Product/Kettle/00040.jpg 28 86 | Product/Kettle/00042.jpg 28 87 | Product/Kettle/00052.jpg 28 88 | Product/Keyboard/00081.jpg 29 89 | Product/Keyboard/00068.jpg 29 90 | Product/Keyboard/00011.jpg 29 91 | Product/Knives/00027.jpg 30 92 | Product/Knives/00010.jpg 30 93 | Product/Knives/00016.jpg 30 94 | Product/Lamp_Shade/00031.jpg 31 95 | Product/Lamp_Shade/00033.jpg 31 96 | Product/Lamp_Shade/00006.jpg 31 97 | Product/Laptop/00045.jpg 32 98 | Product/Laptop/00074.jpg 32 99 | Product/Laptop/00098.jpg 32 100 | Product/Marker/00035.jpg 33 101 | Product/Marker/00050.jpg 33 102 | Product/Marker/00044.jpg 33 103 | Product/Monitor/00085.jpg 34 104 | Product/Monitor/00061.jpg 34 105 | Product/Monitor/00025.jpg 34 106 | Product/Mop/00060.jpg 35 107 | Product/Mop/00064.jpg 35 108 | Product/Mop/00007.jpg 35 109 | Product/Mouse/00061.jpg 36 110 | Product/Mouse/00018.jpg 36 111 | Product/Mouse/00008.jpg 36 112 | Product/Mug/00004.jpg 37 113 | Product/Mug/00018.jpg 37 114 | Product/Mug/00001.jpg 37 115 | Product/Notebook/00063.jpg 38 116 | Product/Notebook/00057.jpg 38 117 | Product/Notebook/00034.jpg 38 118 | Product/Oven/00052.jpg 39 119 | Product/Oven/00045.jpg 39 120 | Product/Oven/00011.jpg 39 121 | Product/Pan/00031.jpg 40 122 | Product/Pan/00066.jpg 40 123 | Product/Pan/00011.jpg 40 124 | Product/Paper_Clip/00008.jpg 41 125 | Product/Paper_Clip/00020.jpg 41 126 | Product/Paper_Clip/00043.jpg 41 127 | Product/Pen/00006.jpg 42 128 | Product/Pen/00052.jpg 42 129 | Product/Pen/00005.jpg 42 130 | Product/Pencil/00005.jpg 43 131 | Product/Pencil/00014.jpg 43 132 | Product/Pencil/00027.jpg 43 133 | Product/Postit_Notes/00010.jpg 44 134 | Product/Postit_Notes/00030.jpg 44 135 | Product/Postit_Notes/00027.jpg 44 136 | Product/Printer/00020.jpg 45 137 | Product/Printer/00016.jpg 45 138 | Product/Printer/00019.jpg 45 139 | Product/Push_Pin/00037.jpg 46 140 | Product/Push_Pin/00015.jpg 46 141 | Product/Push_Pin/00030.jpg 46 142 | Product/Radio/00024.jpg 47 143 | Product/Radio/00001.jpg 47 144 | Product/Radio/00007.jpg 47 145 | Product/Refrigerator/00016.jpg 48 146 | Product/Refrigerator/00058.jpg 48 147 | Product/Refrigerator/00053.jpg 48 148 | Product/Ruler/00054.jpg 49 149 | Product/Ruler/00047.jpg 49 150 | Product/Ruler/00029.jpg 49 151 | Product/Scissors/00043.jpg 50 152 | Product/Scissors/00037.jpg 50 153 | Product/Scissors/00017.jpg 50 154 | Product/Screwdriver/00039.jpg 51 155 | Product/Screwdriver/00040.jpg 51 156 | Product/Screwdriver/00003.jpg 51 157 | Product/Shelf/00003.jpg 52 158 | Product/Shelf/00018.jpg 52 159 | Product/Shelf/00035.jpg 52 160 | Product/Sink/00024.jpg 53 161 | Product/Sink/00035.jpg 53 162 | Product/Sink/00043.jpg 53 163 | Product/Sneakers/00071.jpg 54 164 | Product/Sneakers/00026.jpg 54 165 | Product/Sneakers/00094.jpg 54 166 | Product/Soda/00020.jpg 55 167 | Product/Soda/00004.jpg 55 168 | Product/Soda/00018.jpg 55 169 | Product/Speaker/00041.jpg 56 170 | Product/Speaker/00021.jpg 56 171 | Product/Speaker/00092.jpg 56 172 | Product/Spoon/00002.jpg 57 173 | Product/Spoon/00043.jpg 57 174 | Product/Spoon/00044.jpg 57 175 | Product/Table/00019.jpg 58 176 | Product/Table/00018.jpg 58 177 | Product/Table/00001.jpg 58 178 | Product/Telephone/00027.jpg 59 179 | Product/Telephone/00022.jpg 59 180 | Product/Telephone/00024.jpg 59 181 | Product/ToothBrush/00009.jpg 60 182 | Product/ToothBrush/00010.jpg 60 183 | Product/ToothBrush/00037.jpg 60 184 | Product/Toys/00034.jpg 61 185 | Product/Toys/00003.jpg 61 186 | Product/Toys/00026.jpg 61 187 | Product/Trash_Can/00024.jpg 62 188 | Product/Trash_Can/00012.jpg 62 189 | Product/Trash_Can/00054.jpg 62 190 | Product/TV/00027.jpg 63 191 | Product/TV/00059.jpg 63 192 | Product/TV/00069.jpg 63 193 | Product/Webcam/00038.jpg 64 194 | Product/Webcam/00069.jpg 64 195 | Product/Webcam/00040.jpg 64 196 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/validation_target_images_Clipart_3.txt: -------------------------------------------------------------------------------- 1 | Clipart/Alarm_Clock/00022.jpg 0 2 | Clipart/Alarm_Clock/00021.jpg 0 3 | Clipart/Alarm_Clock/00005.jpg 0 4 | Clipart/Backpack/00029.jpg 1 5 | Clipart/Backpack/00023.jpg 1 6 | Clipart/Backpack/00036.jpg 1 7 | Clipart/Batteries/00063.jpg 2 8 | Clipart/Batteries/00023.jpg 2 9 | Clipart/Batteries/00027.jpg 2 10 | Clipart/Bed/00059.jpg 3 11 | Clipart/Bed/00026.jpg 3 12 | Clipart/Bed/00088.jpg 3 13 | Clipart/Bike/00072.jpg 4 14 | Clipart/Bike/00040.jpg 4 15 | Clipart/Bike/00001.jpg 4 16 | Clipart/Bottle/00037.jpg 5 17 | Clipart/Bottle/00005.jpg 5 18 | Clipart/Bottle/00090.jpg 5 19 | Clipart/Bucket/00032.jpg 6 20 | Clipart/Bucket/00035.jpg 6 21 | Clipart/Bucket/00007.jpg 6 22 | Clipart/Calculator/00003.jpg 7 23 | Clipart/Calculator/00002.jpg 7 24 | Clipart/Calculator/00024.jpg 7 25 | Clipart/Calendar/00031.jpg 8 26 | Clipart/Calendar/00024.jpg 8 27 | Clipart/Calendar/00073.jpg 8 28 | Clipart/Candles/00092.jpg 9 29 | Clipart/Candles/00022.jpg 9 30 | Clipart/Candles/00071.jpg 9 31 | Clipart/Chair/00015.jpg 10 32 | Clipart/Chair/00050.jpg 10 33 | Clipart/Chair/00097.jpg 10 34 | Clipart/Clipboards/00015.jpg 11 35 | Clipart/Clipboards/00007.jpg 11 36 | Clipart/Clipboards/00040.jpg 11 37 | Clipart/Computer/00058.jpg 12 38 | Clipart/Computer/00055.jpg 12 39 | Clipart/Computer/00005.jpg 12 40 | Clipart/Couch/00033.jpg 13 41 | Clipart/Couch/00004.jpg 13 42 | Clipart/Couch/00027.jpg 13 43 | Clipart/Curtains/00029.jpg 14 44 | Clipart/Curtains/00003.jpg 14 45 | Clipart/Curtains/00033.jpg 14 46 | Clipart/Desk_Lamp/00040.jpg 15 47 | Clipart/Desk_Lamp/00013.jpg 15 48 | Clipart/Desk_Lamp/00036.jpg 15 49 | Clipart/Drill/00016.jpg 16 50 | Clipart/Drill/00022.jpg 16 51 | Clipart/Drill/00005.jpg 16 52 | Clipart/Eraser/00027.jpg 17 53 | Clipart/Eraser/00034.jpg 17 54 | Clipart/Eraser/00035.jpg 17 55 | Clipart/Exit_Sign/00014.jpg 18 56 | Clipart/Exit_Sign/00006.jpg 18 57 | Clipart/Exit_Sign/00003.jpg 18 58 | Clipart/Fan/00002.jpg 19 59 | Clipart/Fan/00025.jpg 19 60 | Clipart/Fan/00007.jpg 19 61 | Clipart/File_Cabinet/00002.jpg 20 62 | Clipart/File_Cabinet/00010.jpg 20 63 | Clipart/File_Cabinet/00003.jpg 20 64 | Clipart/Flipflops/00033.jpg 21 65 | Clipart/Flipflops/00016.jpg 21 66 | Clipart/Flipflops/00040.jpg 21 67 | Clipart/Flowers/00005.jpg 22 68 | Clipart/Flowers/00028.jpg 22 69 | Clipart/Flowers/00068.jpg 22 70 | Clipart/Folder/00085.jpg 23 71 | Clipart/Folder/00009.jpg 23 72 | Clipart/Folder/00091.jpg 23 73 | Clipart/Fork/00056.jpg 24 74 | Clipart/Fork/00036.jpg 24 75 | Clipart/Fork/00003.jpg 24 76 | Clipart/Glasses/00011.jpg 25 77 | Clipart/Glasses/00034.jpg 25 78 | Clipart/Glasses/00012.jpg 25 79 | Clipart/Hammer/00077.jpg 26 80 | Clipart/Hammer/00037.jpg 26 81 | Clipart/Hammer/00069.jpg 26 82 | Clipart/Helmet/00017.jpg 27 83 | Clipart/Helmet/00018.jpg 27 84 | Clipart/Helmet/00025.jpg 27 85 | Clipart/Kettle/00006.jpg 28 86 | Clipart/Kettle/00038.jpg 28 87 | Clipart/Kettle/00037.jpg 28 88 | Clipart/Keyboard/00035.jpg 29 89 | Clipart/Keyboard/00022.jpg 29 90 | Clipart/Keyboard/00060.jpg 29 91 | Clipart/Knives/00047.jpg 30 92 | Clipart/Knives/00052.jpg 30 93 | Clipart/Knives/00010.jpg 30 94 | Clipart/Lamp_Shade/00021.jpg 31 95 | Clipart/Lamp_Shade/00006.jpg 31 96 | Clipart/Lamp_Shade/00007.jpg 31 97 | Clipart/Laptop/00041.jpg 32 98 | Clipart/Laptop/00005.jpg 32 99 | Clipart/Laptop/00023.jpg 32 100 | Clipart/Marker/00041.jpg 33 101 | Clipart/Marker/00058.jpg 33 102 | Clipart/Marker/00047.jpg 33 103 | Clipart/Monitor/00021.jpg 34 104 | Clipart/Monitor/00087.jpg 34 105 | Clipart/Monitor/00057.jpg 34 106 | Clipart/Mop/00005.jpg 35 107 | Clipart/Mop/00037.jpg 35 108 | Clipart/Mop/00012.jpg 35 109 | Clipart/Mouse/00005.jpg 36 110 | Clipart/Mouse/00034.jpg 36 111 | Clipart/Mouse/00046.jpg 36 112 | Clipart/Mug/00025.jpg 37 113 | Clipart/Mug/00044.jpg 37 114 | Clipart/Mug/00076.jpg 37 115 | Clipart/Notebook/00009.jpg 38 116 | Clipart/Notebook/00041.jpg 38 117 | Clipart/Notebook/00011.jpg 38 118 | Clipart/Oven/00005.jpg 39 119 | Clipart/Oven/00023.jpg 39 120 | Clipart/Oven/00008.jpg 39 121 | Clipart/Pan/00039.jpg 40 122 | Clipart/Pan/00043.jpg 40 123 | Clipart/Pan/00028.jpg 40 124 | Clipart/Paper_Clip/00018.jpg 41 125 | Clipart/Paper_Clip/00037.jpg 41 126 | Clipart/Paper_Clip/00035.jpg 41 127 | Clipart/Pen/00046.jpg 42 128 | Clipart/Pen/00024.jpg 42 129 | Clipart/Pen/00098.jpg 42 130 | Clipart/Pencil/00039.jpg 43 131 | Clipart/Pencil/00034.jpg 43 132 | Clipart/Pencil/00028.jpg 43 133 | Clipart/Postit_Notes/00027.jpg 44 134 | Clipart/Postit_Notes/00002.jpg 44 135 | Clipart/Postit_Notes/00009.jpg 44 136 | Clipart/Printer/00043.jpg 45 137 | Clipart/Printer/00060.jpg 45 138 | Clipart/Printer/00012.jpg 45 139 | Clipart/Push_Pin/00005.jpg 46 140 | Clipart/Push_Pin/00039.jpg 46 141 | Clipart/Push_Pin/00036.jpg 46 142 | Clipart/Radio/00031.jpg 47 143 | Clipart/Radio/00012.jpg 47 144 | Clipart/Radio/00035.jpg 47 145 | Clipart/Refrigerator/00016.jpg 48 146 | Clipart/Refrigerator/00037.jpg 48 147 | Clipart/Refrigerator/00038.jpg 48 148 | Clipart/Ruler/00028.jpg 49 149 | Clipart/Ruler/00012.jpg 49 150 | Clipart/Ruler/00056.jpg 49 151 | Clipart/Scissors/00070.jpg 50 152 | Clipart/Scissors/00016.jpg 50 153 | Clipart/Scissors/00033.jpg 50 154 | Clipart/Screwdriver/00050.jpg 51 155 | Clipart/Screwdriver/00022.jpg 51 156 | Clipart/Screwdriver/00009.jpg 51 157 | Clipart/Shelf/00008.jpg 52 158 | Clipart/Shelf/00011.jpg 52 159 | Clipart/Shelf/00022.jpg 52 160 | Clipart/Sink/00025.jpg 53 161 | Clipart/Sink/00008.jpg 53 162 | Clipart/Sink/00014.jpg 53 163 | Clipart/Sneakers/00006.jpg 54 164 | Clipart/Sneakers/00029.jpg 54 165 | Clipart/Sneakers/00003.jpg 54 166 | Clipart/Soda/00038.jpg 55 167 | Clipart/Soda/00005.jpg 55 168 | Clipart/Soda/00035.jpg 55 169 | Clipart/Speaker/00055.jpg 56 170 | Clipart/Speaker/00071.jpg 56 171 | Clipart/Speaker/00062.jpg 56 172 | Clipart/Spoon/00017.jpg 57 173 | Clipart/Spoon/00048.jpg 57 174 | Clipart/Spoon/00030.jpg 57 175 | Clipart/Table/00034.jpg 58 176 | Clipart/Table/00015.jpg 58 177 | Clipart/Table/00059.jpg 58 178 | Clipart/Telephone/00065.jpg 59 179 | Clipart/Telephone/00066.jpg 59 180 | Clipart/Telephone/00067.jpg 59 181 | Clipart/ToothBrush/00003.jpg 60 182 | Clipart/ToothBrush/00028.jpg 60 183 | Clipart/ToothBrush/00031.jpg 60 184 | Clipart/Toys/00020.jpg 61 185 | Clipart/Toys/00043.jpg 61 186 | Clipart/Toys/00094.jpg 61 187 | Clipart/Trash_Can/00047.jpg 62 188 | Clipart/Trash_Can/00044.jpg 62 189 | Clipart/Trash_Can/00039.jpg 62 190 | Clipart/TV/00095.jpg 63 191 | Clipart/TV/00066.jpg 63 192 | Clipart/TV/00028.jpg 63 193 | Clipart/Webcam/00027.jpg 64 194 | Clipart/Webcam/00004.jpg 64 195 | Clipart/Webcam/00008.jpg 64 196 | -------------------------------------------------------------------------------- /SSDA/data/txt/office_home/validation_target_images_Product_3.txt: -------------------------------------------------------------------------------- 1 | Product/Alarm_Clock/00028.jpg 0 2 | Product/Alarm_Clock/00033.jpg 0 3 | Product/Alarm_Clock/00010.jpg 0 4 | Product/Backpack/00027.jpg 1 5 | Product/Backpack/00098.jpg 1 6 | Product/Backpack/00057.jpg 1 7 | Product/Batteries/00050.jpg 2 8 | Product/Batteries/00053.jpg 2 9 | Product/Batteries/00059.jpg 2 10 | Product/Bed/00025.jpg 3 11 | Product/Bed/00039.jpg 3 12 | Product/Bed/00010.jpg 3 13 | Product/Bike/00001.jpg 4 14 | Product/Bike/00044.jpg 4 15 | Product/Bike/00037.jpg 4 16 | Product/Bottle/00061.jpg 5 17 | Product/Bottle/00057.jpg 5 18 | Product/Bottle/00017.jpg 5 19 | Product/Bucket/00039.jpg 6 20 | Product/Bucket/00024.jpg 6 21 | Product/Bucket/00010.jpg 6 22 | Product/Calculator/00015.jpg 7 23 | Product/Calculator/00018.jpg 7 24 | Product/Calculator/00012.jpg 7 25 | Product/Calendar/00019.jpg 8 26 | Product/Calendar/00058.jpg 8 27 | Product/Calendar/00062.jpg 8 28 | Product/Candles/00055.jpg 9 29 | Product/Candles/00018.jpg 9 30 | Product/Candles/00040.jpg 9 31 | Product/Chair/00039.jpg 10 32 | Product/Chair/00099.jpg 10 33 | Product/Chair/00078.jpg 10 34 | Product/Clipboards/00053.jpg 11 35 | Product/Clipboards/00029.jpg 11 36 | Product/Clipboards/00013.jpg 11 37 | Product/Computer/00071.jpg 12 38 | Product/Computer/00024.jpg 12 39 | Product/Computer/00002.jpg 12 40 | Product/Couch/00065.jpg 13 41 | Product/Couch/00063.jpg 13 42 | Product/Couch/00085.jpg 13 43 | Product/Curtains/00037.jpg 14 44 | Product/Curtains/00053.jpg 14 45 | Product/Curtains/00042.jpg 14 46 | Product/Desk_Lamp/00009.jpg 15 47 | Product/Desk_Lamp/00043.jpg 15 48 | Product/Desk_Lamp/00023.jpg 15 49 | Product/Drill/00022.jpg 16 50 | Product/Drill/00042.jpg 16 51 | Product/Drill/00015.jpg 16 52 | Product/Eraser/00002.jpg 17 53 | Product/Eraser/00010.jpg 17 54 | Product/Eraser/00020.jpg 17 55 | Product/Exit_Sign/00015.jpg 18 56 | Product/Exit_Sign/00014.jpg 18 57 | Product/Exit_Sign/00050.jpg 18 58 | Product/Fan/00030.jpg 19 59 | Product/Fan/00052.jpg 19 60 | Product/Fan/00040.jpg 19 61 | Product/File_Cabinet/00059.jpg 20 62 | Product/File_Cabinet/00001.jpg 20 63 | Product/File_Cabinet/00011.jpg 20 64 | Product/Flipflops/00039.jpg 21 65 | Product/Flipflops/00016.jpg 21 66 | Product/Flipflops/00079.jpg 21 67 | Product/Flowers/00070.jpg 22 68 | Product/Flowers/00056.jpg 22 69 | Product/Flowers/00078.jpg 22 70 | Product/Folder/00012.jpg 23 71 | Product/Folder/00060.jpg 23 72 | Product/Folder/00071.jpg 23 73 | Product/Fork/00009.jpg 24 74 | Product/Fork/00005.jpg 24 75 | Product/Fork/00004.jpg 24 76 | Product/Glasses/00066.jpg 25 77 | Product/Glasses/00041.jpg 25 78 | Product/Glasses/00052.jpg 25 79 | Product/Hammer/00038.jpg 26 80 | Product/Hammer/00042.jpg 26 81 | Product/Hammer/00011.jpg 26 82 | Product/Helmet/00048.jpg 27 83 | Product/Helmet/00072.jpg 27 84 | Product/Helmet/00057.jpg 27 85 | Product/Kettle/00027.jpg 28 86 | Product/Kettle/00013.jpg 28 87 | Product/Kettle/00070.jpg 28 88 | Product/Keyboard/00085.jpg 29 89 | Product/Keyboard/00086.jpg 29 90 | Product/Keyboard/00079.jpg 29 91 | Product/Knives/00003.jpg 30 92 | Product/Knives/00014.jpg 30 93 | Product/Knives/00015.jpg 30 94 | Product/Lamp_Shade/00011.jpg 31 95 | Product/Lamp_Shade/00049.jpg 31 96 | Product/Lamp_Shade/00050.jpg 31 97 | Product/Laptop/00056.jpg 32 98 | Product/Laptop/00099.jpg 32 99 | Product/Laptop/00063.jpg 32 100 | Product/Marker/00004.jpg 33 101 | Product/Marker/00015.jpg 33 102 | Product/Marker/00054.jpg 33 103 | Product/Monitor/00010.jpg 34 104 | Product/Monitor/00016.jpg 34 105 | Product/Monitor/00008.jpg 34 106 | Product/Mop/00021.jpg 35 107 | Product/Mop/00031.jpg 35 108 | Product/Mop/00014.jpg 35 109 | Product/Mouse/00091.jpg 36 110 | Product/Mouse/00032.jpg 36 111 | Product/Mouse/00031.jpg 36 112 | Product/Mug/00030.jpg 37 113 | Product/Mug/00032.jpg 37 114 | Product/Mug/00014.jpg 37 115 | Product/Notebook/00006.jpg 38 116 | Product/Notebook/00043.jpg 38 117 | Product/Notebook/00077.jpg 38 118 | Product/Oven/00058.jpg 39 119 | Product/Oven/00057.jpg 39 120 | Product/Oven/00007.jpg 39 121 | Product/Pan/00002.jpg 40 122 | Product/Pan/00050.jpg 40 123 | Product/Pan/00058.jpg 40 124 | Product/Paper_Clip/00001.jpg 41 125 | Product/Paper_Clip/00005.jpg 41 126 | Product/Paper_Clip/00041.jpg 41 127 | Product/Pen/00035.jpg 42 128 | Product/Pen/00042.jpg 42 129 | Product/Pen/00039.jpg 42 130 | Product/Pencil/00024.jpg 43 131 | Product/Pencil/00003.jpg 43 132 | Product/Pencil/00007.jpg 43 133 | Product/Postit_Notes/00033.jpg 44 134 | Product/Postit_Notes/00021.jpg 44 135 | Product/Postit_Notes/00005.jpg 44 136 | Product/Printer/00011.jpg 45 137 | Product/Printer/00021.jpg 45 138 | Product/Printer/00007.jpg 45 139 | Product/Push_Pin/00011.jpg 46 140 | Product/Push_Pin/00034.jpg 46 141 | Product/Push_Pin/00003.jpg 46 142 | Product/Radio/00014.jpg 47 143 | Product/Radio/00013.jpg 47 144 | Product/Radio/00015.jpg 47 145 | Product/Refrigerator/00055.jpg 48 146 | Product/Refrigerator/00042.jpg 48 147 | Product/Refrigerator/00024.jpg 48 148 | Product/Ruler/00026.jpg 49 149 | Product/Ruler/00025.jpg 49 150 | Product/Ruler/00022.jpg 49 151 | Product/Scissors/00087.jpg 50 152 | Product/Scissors/00036.jpg 50 153 | Product/Scissors/00030.jpg 50 154 | Product/Screwdriver/00019.jpg 51 155 | Product/Screwdriver/00026.jpg 51 156 | Product/Screwdriver/00021.jpg 51 157 | Product/Shelf/00022.jpg 52 158 | Product/Shelf/00007.jpg 52 159 | Product/Shelf/00032.jpg 52 160 | Product/Sink/00001.jpg 53 161 | Product/Sink/00004.jpg 53 162 | Product/Sink/00010.jpg 53 163 | Product/Sneakers/00018.jpg 54 164 | Product/Sneakers/00037.jpg 54 165 | Product/Sneakers/00036.jpg 54 166 | Product/Soda/00035.jpg 55 167 | Product/Soda/00037.jpg 55 168 | Product/Soda/00006.jpg 55 169 | Product/Speaker/00025.jpg 56 170 | Product/Speaker/00042.jpg 56 171 | Product/Speaker/00098.jpg 56 172 | Product/Spoon/00042.jpg 57 173 | Product/Spoon/00047.jpg 57 174 | Product/Spoon/00039.jpg 57 175 | Product/Table/00052.jpg 58 176 | Product/Table/00054.jpg 58 177 | Product/Table/00028.jpg 58 178 | Product/Telephone/00033.jpg 59 179 | Product/Telephone/00036.jpg 59 180 | Product/Telephone/00032.jpg 59 181 | Product/ToothBrush/00019.jpg 60 182 | Product/ToothBrush/00025.jpg 60 183 | Product/ToothBrush/00029.jpg 60 184 | Product/Toys/00040.jpg 61 185 | Product/Toys/00006.jpg 61 186 | Product/Toys/00042.jpg 61 187 | Product/Trash_Can/00037.jpg 62 188 | Product/Trash_Can/00049.jpg 62 189 | Product/Trash_Can/00022.jpg 62 190 | Product/TV/00038.jpg 63 191 | Product/TV/00011.jpg 63 192 | Product/TV/00071.jpg 63 193 | Product/Webcam/00078.jpg 64 194 | Product/Webcam/00066.jpg 64 195 | Product/Webcam/00033.jpg 64 196 | -------------------------------------------------------------------------------- /MTL/office_data/office-31/webcam_val.txt: -------------------------------------------------------------------------------- 1 | webcam/images/back_pack/frame_0022.jpg 0 2 | webcam/images/back_pack/frame_0006.jpg 0 3 | webcam/images/back_pack/frame_0028.jpg 0 4 | webcam/images/back_pack/frame_0013.jpg 0 5 | webcam/images/back_pack/frame_0009.jpg 0 6 | webcam/images/paper_notebook/frame_0020.jpg 1 7 | webcam/images/paper_notebook/frame_0027.jpg 1 8 | webcam/images/paper_notebook/frame_0012.jpg 1 9 | webcam/images/paper_notebook/frame_0002.jpg 1 10 | webcam/images/paper_notebook/frame_0013.jpg 1 11 | webcam/images/desktop_computer/frame_0020.jpg 2 12 | webcam/images/desktop_computer/frame_0011.jpg 2 13 | webcam/images/desktop_computer/frame_0001.jpg 2 14 | webcam/images/desktop_computer/frame_0010.jpg 2 15 | webcam/images/scissors/frame_0014.jpg 3 16 | webcam/images/scissors/frame_0011.jpg 3 17 | webcam/images/scissors/frame_0016.jpg 3 18 | webcam/images/scissors/frame_0022.jpg 3 19 | webcam/images/scissors/frame_0019.jpg 3 20 | webcam/images/calculator/frame_0010.jpg 4 21 | webcam/images/calculator/frame_0023.jpg 4 22 | webcam/images/calculator/frame_0020.jpg 4 23 | webcam/images/calculator/frame_0016.jpg 4 24 | webcam/images/calculator/frame_0004.jpg 4 25 | webcam/images/calculator/frame_0011.jpg 4 26 | webcam/images/desk_chair/frame_0037.jpg 5 27 | webcam/images/desk_chair/frame_0038.jpg 5 28 | webcam/images/desk_chair/frame_0034.jpg 5 29 | webcam/images/desk_chair/frame_0003.jpg 5 30 | webcam/images/desk_chair/frame_0027.jpg 5 31 | webcam/images/desk_chair/frame_0025.jpg 5 32 | webcam/images/desk_chair/frame_0014.jpg 5 33 | webcam/images/desk_chair/frame_0035.jpg 5 34 | webcam/images/mouse/frame_0008.jpg 6 35 | webcam/images/mouse/frame_0004.jpg 6 36 | webcam/images/mouse/frame_0028.jpg 6 37 | webcam/images/mouse/frame_0015.jpg 6 38 | webcam/images/mouse/frame_0025.jpg 6 39 | webcam/images/mouse/frame_0022.jpg 6 40 | webcam/images/laptop_computer/frame_0024.jpg 7 41 | webcam/images/laptop_computer/frame_0014.jpg 7 42 | webcam/images/laptop_computer/frame_0005.jpg 7 43 | webcam/images/laptop_computer/frame_0016.jpg 7 44 | webcam/images/laptop_computer/frame_0019.jpg 7 45 | webcam/images/laptop_computer/frame_0018.jpg 7 46 | webcam/images/desk_lamp/frame_0009.jpg 8 47 | webcam/images/desk_lamp/frame_0006.jpg 8 48 | webcam/images/desk_lamp/frame_0011.jpg 8 49 | webcam/images/stapler/frame_0007.jpg 9 50 | webcam/images/stapler/frame_0022.jpg 9 51 | webcam/images/stapler/frame_0014.jpg 9 52 | webcam/images/stapler/frame_0019.jpg 9 53 | webcam/images/bottle/frame_0004.jpg 10 54 | webcam/images/bottle/frame_0005.jpg 10 55 | webcam/images/bottle/frame_0012.jpg 10 56 | webcam/images/phone/frame_0003.jpg 11 57 | webcam/images/phone/frame_0012.jpg 11 58 | webcam/images/phone/frame_0011.jpg 11 59 | webcam/images/tape_dispenser/frame_0009.jpg 12 60 | webcam/images/tape_dispenser/frame_0019.jpg 12 61 | webcam/images/tape_dispenser/frame_0015.jpg 12 62 | webcam/images/tape_dispenser/frame_0003.jpg 12 63 | webcam/images/trash_can/frame_0006.jpg 13 64 | webcam/images/trash_can/frame_0015.jpg 13 65 | webcam/images/trash_can/frame_0017.jpg 13 66 | webcam/images/trash_can/frame_0002.jpg 13 67 | webcam/images/bookcase/frame_0007.jpg 14 68 | webcam/images/bookcase/frame_0002.jpg 14 69 | webcam/images/pen/frame_0020.jpg 15 70 | webcam/images/pen/frame_0013.jpg 15 71 | webcam/images/pen/frame_0019.jpg 15 72 | webcam/images/pen/frame_0027.jpg 15 73 | webcam/images/pen/frame_0012.jpg 15 74 | webcam/images/pen/frame_0007.jpg 15 75 | webcam/images/ring_binder/frame_0017.jpg 16 76 | webcam/images/ring_binder/frame_0029.jpg 16 77 | webcam/images/ring_binder/frame_0005.jpg 16 78 | webcam/images/ring_binder/frame_0013.jpg 16 79 | webcam/images/ring_binder/frame_0012.jpg 16 80 | webcam/images/ring_binder/frame_0032.jpg 16 81 | webcam/images/ring_binder/frame_0026.jpg 16 82 | webcam/images/ring_binder/frame_0033.jpg 16 83 | webcam/images/mobile_phone/frame_0011.jpg 17 84 | webcam/images/mobile_phone/frame_0014.jpg 17 85 | webcam/images/mobile_phone/frame_0009.jpg 17 86 | webcam/images/mobile_phone/frame_0002.jpg 17 87 | webcam/images/mobile_phone/frame_0017.jpg 17 88 | webcam/images/mobile_phone/frame_0003.jpg 17 89 | webcam/images/ruler/frame_0002.jpg 18 90 | webcam/images/ruler/frame_0008.jpg 18 91 | webcam/images/headphones/frame_0011.jpg 19 92 | webcam/images/headphones/frame_0018.jpg 19 93 | webcam/images/headphones/frame_0012.jpg 19 94 | webcam/images/headphones/frame_0007.jpg 19 95 | webcam/images/headphones/frame_0004.jpg 19 96 | webcam/images/bike_helmet/frame_0020.jpg 20 97 | webcam/images/bike_helmet/frame_0002.jpg 20 98 | webcam/images/bike_helmet/frame_0018.jpg 20 99 | webcam/images/bike_helmet/frame_0011.jpg 20 100 | webcam/images/bike_helmet/frame_0016.jpg 20 101 | webcam/images/monitor/frame_0036.jpg 21 102 | webcam/images/monitor/frame_0010.jpg 21 103 | webcam/images/monitor/frame_0043.jpg 21 104 | webcam/images/monitor/frame_0012.jpg 21 105 | webcam/images/monitor/frame_0019.jpg 21 106 | webcam/images/monitor/frame_0027.jpg 21 107 | webcam/images/monitor/frame_0035.jpg 21 108 | webcam/images/monitor/frame_0007.jpg 21 109 | webcam/images/mug/frame_0019.jpg 22 110 | webcam/images/mug/frame_0023.jpg 22 111 | webcam/images/mug/frame_0021.jpg 22 112 | webcam/images/mug/frame_0018.jpg 22 113 | webcam/images/mug/frame_0020.jpg 22 114 | webcam/images/letter_tray/frame_0013.jpg 23 115 | webcam/images/letter_tray/frame_0011.jpg 23 116 | webcam/images/letter_tray/frame_0007.jpg 23 117 | webcam/images/projector/frame_0020.jpg 24 118 | webcam/images/projector/frame_0009.jpg 24 119 | webcam/images/projector/frame_0004.jpg 24 120 | webcam/images/projector/frame_0015.jpg 24 121 | webcam/images/projector/frame_0023.jpg 24 122 | webcam/images/projector/frame_0006.jpg 24 123 | webcam/images/printer/frame_0004.jpg 25 124 | webcam/images/printer/frame_0001.jpg 25 125 | webcam/images/printer/frame_0005.jpg 25 126 | webcam/images/printer/frame_0020.jpg 25 127 | webcam/images/speaker/frame_0024.jpg 26 128 | webcam/images/speaker/frame_0009.jpg 26 129 | webcam/images/speaker/frame_0017.jpg 26 130 | webcam/images/speaker/frame_0020.jpg 26 131 | webcam/images/speaker/frame_0002.jpg 26 132 | webcam/images/speaker/frame_0018.jpg 26 133 | webcam/images/bike/frame_0020.jpg 27 134 | webcam/images/bike/frame_0014.jpg 27 135 | webcam/images/bike/frame_0005.jpg 27 136 | webcam/images/bike/frame_0010.jpg 27 137 | webcam/images/keyboard/frame_0025.jpg 28 138 | webcam/images/keyboard/frame_0016.jpg 28 139 | webcam/images/keyboard/frame_0020.jpg 28 140 | webcam/images/keyboard/frame_0009.jpg 28 141 | webcam/images/keyboard/frame_0004.jpg 28 142 | webcam/images/file_cabinet/frame_0007.jpg 29 143 | webcam/images/file_cabinet/frame_0001.jpg 29 144 | webcam/images/file_cabinet/frame_0014.jpg 29 145 | webcam/images/punchers/frame_0027.jpg 30 146 | webcam/images/punchers/frame_0025.jpg 30 147 | webcam/images/punchers/frame_0001.jpg 30 148 | webcam/images/punchers/frame_0005.jpg 30 149 | webcam/images/punchers/frame_0016.jpg 30 150 | -------------------------------------------------------------------------------- /MTL/create_dataset.py: -------------------------------------------------------------------------------- 1 | # modified from https://github.com/lorenmt/mtan/blob/master/im2im_pred/create_dataset.py 2 | 3 | from torch.utils.data import Dataset, DataLoader 4 | import os 5 | import torch 6 | import torch.nn.functional as F 7 | import fnmatch 8 | import numpy as np 9 | import random 10 | import torchvision.transforms as transforms 11 | from PIL import Image 12 | 13 | 14 | class RandomScaleCrop(object): 15 | """ 16 | Credit to Jialong Wu from https://github.com/lorenmt/mtan/issues/34. 17 | """ 18 | def __init__(self, scale=[1.0, 1.2, 1.5]): 19 | self.scale = scale 20 | 21 | def __call__(self, img, label, depth, normal): 22 | height, width = img.shape[-2:] 23 | sc = self.scale[random.randint(0, len(self.scale) - 1)] 24 | h, w = int(height / sc), int(width / sc) 25 | i = random.randint(0, height - h) 26 | j = random.randint(0, width - w) 27 | img_ = F.interpolate(img[None, :, i:i + h, j:j + w], size=(height, width), mode='bilinear', align_corners=True).squeeze(0) 28 | label_ = F.interpolate(label[None, None, i:i + h, j:j + w], size=(height, width), mode='nearest').squeeze(0).squeeze(0) 29 | depth_ = F.interpolate(depth[None, :, i:i + h, j:j + w], size=(height, width), mode='nearest').squeeze(0) 30 | normal_ = F.interpolate(normal[None, :, i:i + h, j:j + w], size=(height, width), mode='bilinear', align_corners=True).squeeze(0) 31 | return img_, label_, depth_ / sc, normal_ 32 | 33 | 34 | class NYUv2(Dataset): 35 | """ 36 | We could further improve the performance with the data augmentation of NYUv2 defined in: 37 | [1] PAD-Net: Multi-Tasks Guided Prediction-and-Distillation Network for Simultaneous Depth Estimation and Scene Parsing 38 | [2] Pattern affinitive propagation across depth, surface normal and semantic segmentation 39 | [3] Mti-net: Multiscale task interaction networks for multi-task learning 40 | 41 | 1. Random scale in a selected raio 1.0, 1.2, and 1.5. 42 | 2. Random horizontal flip. 43 | 44 | Please note that: all baselines and MTAN did NOT apply data augmentation in the original paper. 45 | """ 46 | def __init__(self, root, mode='train', augmentation=False): 47 | self.mode = mode 48 | self.root = os.path.expanduser(root) 49 | self.augmentation = augmentation 50 | 51 | random.seed(688) 52 | np.random.seed(688) 53 | data_len = len(fnmatch.filter(os.listdir(self.root + '/train/image'), '*.npy')) 54 | train_index = list(np.random.choice(np.arange(data_len), size=int(data_len*0.8), replace=False)) 55 | val_index = list(set(range(data_len)).difference(set(train_index))) 56 | # read the data file 57 | if self.mode == 'train': 58 | self.index_list = train_index 59 | self.data_path = self.root + '/train' 60 | elif self.mode == 'val': 61 | self.index_list = val_index 62 | self.data_path = self.root + '/train' 63 | elif self.mode == 'trainval': 64 | self.index_list = train_index + val_index 65 | self.data_path = self.root + '/train' 66 | elif self.mode == 'test': 67 | data_len = len(fnmatch.filter(os.listdir(self.root + '/val/image'), '*.npy')) 68 | self.index_list = list(range(data_len)) 69 | self.data_path = self.root + '/val' 70 | 71 | # calculate data length 72 | # self.data_len = len(fnmatch.filter(os.listdir(self.data_path + '/image'), '*.npy')) 73 | 74 | def __getitem__(self, i): 75 | index = self.index_list[i] 76 | # load data from the pre-processed npy files 77 | image = torch.from_numpy(np.moveaxis(np.load(self.data_path + '/image/{:d}.npy'.format(index)), -1, 0)) 78 | semantic = torch.from_numpy(np.load(self.data_path + '/label/{:d}.npy'.format(index))) 79 | depth = torch.from_numpy(np.moveaxis(np.load(self.data_path + '/depth/{:d}.npy'.format(index)), -1, 0)) 80 | normal = torch.from_numpy(np.moveaxis(np.load(self.data_path + '/normal/{:d}.npy'.format(index)), -1, 0)) 81 | 82 | # apply data augmentation if required 83 | if self.augmentation: 84 | image, semantic, depth, normal = RandomScaleCrop()(image, semantic, depth, normal) 85 | if torch.rand(1) < 0.5: 86 | image = torch.flip(image, dims=[2]) 87 | semantic = torch.flip(semantic, dims=[1]) 88 | depth = torch.flip(depth, dims=[2]) 89 | normal = torch.flip(normal, dims=[2]) 90 | normal[0, :, :] = - normal[0, :, :] 91 | 92 | return image.float(), semantic.float(), depth.float(), normal.float() 93 | 94 | def __len__(self): 95 | return len(self.index_list) 96 | 97 | ############################ 98 | 99 | 100 | class office_Dataset(Dataset): 101 | def __init__(self, dataset, task, mode, dataroot): 102 | self.transform = transforms.Compose([ 103 | transforms.Resize((224, 224)), 104 | transforms.ToTensor(), 105 | transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]), 106 | ]) 107 | if mode != 'trval': 108 | f = open('./office_data/{}/{}_{}.txt'.format(dataset, task, mode), 'r') 109 | self.img_list = f.readlines() 110 | f.close() 111 | else: 112 | f1 = open('./office_data/{}/{}_train.txt'.format(dataset, task), 'r') 113 | f2 = open('./office_data/{}/{}_val.txt'.format(dataset, task), 'r') 114 | self.img_list = f1.readlines() + f2.readlines() 115 | f1.close() 116 | f2.close() 117 | self.root_path = dataroot 118 | 119 | def __getitem__(self, i): 120 | img_path = self.img_list[i][:-1].split(' ')[0] 121 | y = int(self.img_list[i][:-1].split(' ')[1]) 122 | img = Image.open(self.root_path + img_path).convert('RGB') 123 | return self.transform(img), y 124 | 125 | def __len__(self): 126 | return len(self.img_list) 127 | 128 | def office_dataloader(dataset, batchsize, dataroot): 129 | if dataset == 'office-31': 130 | tasks = ['amazon', 'dslr', 'webcam'] 131 | elif dataset == 'office-home': 132 | tasks = ['Art', 'Clipart', 'Product', 'Real_World'] 133 | data_loader = {} 134 | iter_data_loader = {} 135 | for k, d in enumerate(tasks): 136 | data_loader[k] = {} 137 | iter_data_loader[k] = {} 138 | for mode in ['train', 'val', 'test', 'trval']: 139 | shuffle = False if mode == 'test' else True 140 | drop_last = False if mode == 'test' else True 141 | txt_dataset = office_Dataset(dataset, d, mode, dataroot) 142 | print(d, mode, len(txt_dataset)) 143 | data_loader[k][mode] = DataLoader(txt_dataset, 144 | num_workers=0, 145 | pin_memory=True, 146 | batch_size=batchsize, 147 | shuffle=shuffle, 148 | drop_last=drop_last) 149 | iter_data_loader[k][mode] = iter(data_loader[k][mode]) 150 | return data_loader, iter_data_loader 151 | -------------------------------------------------------------------------------- /MTL/moml_office.py: -------------------------------------------------------------------------------- 1 | import torch, time, os 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | import torch.optim as optim 5 | import numpy as np 6 | from backbone import MTAN_ResNet, DMTL, Model_h 7 | from utils import * 8 | 9 | from create_dataset import office_dataloader 10 | from min_norm_solvers import MinNormSolver, gradient_normalizers 11 | import argparse 12 | torch.set_num_threads(3) 13 | def parse_args(): 14 | parser = argparse.ArgumentParser(description= 'MOML for Office') 15 | parser.add_argument('--dataroot', default='', type=str, help='data root') 16 | parser.add_argument('--dataset', default='office-31', type=str, help='office-31, office-home') 17 | parser.add_argument('--gpu_id', default='6', help='gpu_id') 18 | parser.add_argument('--model', default='MTAN', type=str, help='DMTL, MTAN') 19 | parser.add_argument('--MGDA', action='store_true', help='MGDA in UL') 20 | parser.add_argument('--batchsize', default=64, type=int, help='batchsize') 21 | return parser.parse_args() 22 | 23 | params = parse_args() 24 | print(params) 25 | 26 | os.environ["CUDA_VISIBLE_DEVICES"] = params.gpu_id 27 | 28 | 29 | if params.dataset == 'office-31': 30 | task_num, class_num, batchsize = 3, 31, params.batchsize 31 | elif params.dataset == 'office-home': 32 | task_num, class_num, batchsize = 4, 65, params.batchsize 33 | data_loader, iter_data_loader = office_dataloader(params.dataset, batchsize=batchsize, dataroot=params.dataroot) 34 | def build_model(model): 35 | if model == 'DMTL': 36 | model = DMTL(task_num=task_num, class_num=class_num).cuda() 37 | elif model == 'MTAN': 38 | model = MTAN_ResNet(task_num, class_num).cuda() 39 | return model 40 | 41 | model = build_model(params.model) 42 | weight_optimizer = optim.Adam(model.parameters(), lr=1e-4) 43 | 44 | h = Model_h(task_num=task_num).cuda() 45 | h.train() 46 | 47 | h_optimizer = torch.optim.Adam(h.parameters(), lr=1e-3) 48 | 49 | total_epoch = 200 50 | trval_batch = max(len(data_loader[i]['trval']) for i in range(task_num)) 51 | loss_fn = nn.CrossEntropyLoss().cuda() 52 | best_val_acc, best_test_acc, early_count = 0, 0, 0 53 | for epoch in range(total_epoch): 54 | print('--- Epoch {}'.format(epoch)) 55 | s_t = time.time() 56 | 57 | # iteration for all batches 58 | model.train() 59 | for batch_index in range(trval_batch): 60 | 61 | meta_model = build_model(params.model) 62 | meta_model.load_state_dict(model.state_dict()) 63 | 64 | model_np = {} 65 | for n, p in meta_model.named_parameters(): 66 | model_np[n] = p 67 | 68 | loss_train = torch.zeros(task_num).cuda() 69 | for task_index in range(task_num): 70 | try: 71 | train_data, train_label = iter_data_loader[task_index]['train'].next() 72 | except: 73 | iter_data_loader[task_index]['train'] = iter(data_loader[task_index]['train']) 74 | train_data, train_label = iter_data_loader[task_index]['train'].next() 75 | train_data, train_label = train_data.cuda(non_blocking=True), train_label.cuda(non_blocking=True) 76 | loss_train[task_index] = loss_fn(meta_model(train_data, task_index), train_label) 77 | loss = h(loss_train) 78 | 79 | meta_model.zero_grad() 80 | grads = torch.autograd.grad(loss, (meta_model.parameters()), create_graph=True) 81 | 82 | for g_index, name in enumerate(model_np.keys()): 83 | p = set_param(meta_model, name, mode='get') 84 | p_fast = p - 1e-4 * grads[g_index] 85 | set_param(meta_model, name, param=p_fast, mode='update') 86 | model_np[name] = p_fast 87 | del grads, model_np, train_data, train_label 88 | 89 | # update outer loop 90 | grads = {} 91 | loss_valid_data = {} 92 | val_loss = torch.zeros(task_num).cuda() 93 | for task_index in range(task_num): 94 | try: 95 | val_data, val_label = iter_data_loader[task_index]['val'].next() 96 | except: 97 | iter_data_loader[task_index]['val'] = iter(data_loader[task_index]['val']) 98 | val_data, val_label = iter_data_loader[task_index]['val'].next() 99 | val_data, val_label = val_data.cuda(non_blocking=True), val_label.cuda(non_blocking=True) 100 | val_loss[task_index] = loss_fn(meta_model(val_data, task_index), val_label) 101 | if params.MGDA: 102 | grads[task_index] = torch.autograd.grad(val_loss[task_index], h.parameters(), retain_graph=True)[0] 103 | loss_valid_data[task_index] = val_loss[task_index].item() 104 | del val_data, val_label 105 | if params.MGDA: 106 | gn = gradient_normalizers(grads, loss_valid_data, normalization_type='l2') 107 | for kn in range(task_num): 108 | grads[kn] = grads[kn] / gn[kn] 109 | 110 | sol, _ = MinNormSolver.find_min_norm_element([grads[kn] for kn in range(task_num)]) 111 | del grads, gn, loss_valid_data 112 | else: 113 | sol = [1]*task_num 114 | 115 | loss_sum = (torch.stack([float(sol[k]) * val_loss[k] for k in range(task_num)])).sum() 116 | h_optimizer.zero_grad() 117 | loss_sum.backward() 118 | h_optimizer.step() 119 | del val_loss, loss_sum, meta_model 120 | 121 | # update inner loop 122 | loss_train = torch.zeros(task_num).cuda() 123 | for task_index in range(task_num): 124 | try: 125 | trval_data, trval_label = iter_data_loader[task_index]['trval'].next() 126 | except: 127 | iter_data_loader[task_index]['trval'] = iter(data_loader[task_index]['trval']) 128 | trval_data, trval_label = iter_data_loader[task_index]['trval'].next() 129 | trval_data, trval_label = trval_data.cuda(non_blocking=True), trval_label.cuda(non_blocking=True) 130 | loss_train[task_index] = loss_fn(model(trval_data, task_index), trval_label) 131 | del trval_data, trval_label 132 | loss = h(loss_train) 133 | weight_optimizer.zero_grad() 134 | loss.backward() 135 | weight_optimizer.step() 136 | 137 | model.eval() 138 | with torch.no_grad(): 139 | right_num = np.zeros([2, task_num]) 140 | count = np.zeros([2, task_num]) 141 | loss_data_count = np.zeros([2, task_num]) 142 | for mode_index, mode in enumerate(['val', 'test']): 143 | for k in range(task_num): 144 | for test_it, test_data in enumerate(data_loader[k][mode]): 145 | x_test, y_test = test_data[0].cuda(non_blocking=True), test_data[1].cuda(non_blocking=True) 146 | y_pred = model(x_test, k) 147 | loss_t = loss_fn(y_pred, y_test) 148 | loss_data_count[mode_index, k] += loss_t.item() 149 | right_num[mode_index, k] += ((torch.max(F.softmax(y_pred, dim=-1), dim=-1)[1])==y_test).sum().item() 150 | count[mode_index, k] += y_test.shape[0] 151 | acc_avg = (right_num/count).mean(axis=-1) 152 | loss_data_avg = (loss_data_count/count).mean(axis=-1) 153 | print('val acc {} {}, loss {}'.format(right_num[0]/count[0], acc_avg[0], loss_data_count[0])) 154 | print('test acc {} {}, loss {}'.format(right_num[1]/count[1], acc_avg[1], loss_data_count[1])) 155 | e_t = time.time() 156 | print('-- cost time {}'.format(e_t-s_t)) 157 | if acc_avg[0] > best_val_acc: 158 | best_val_acc = acc_avg[0] 159 | early_count = 0 160 | print('-- -- epoch {} ; best val {} {} ; test acc {} {}'.format(epoch, right_num[0]/count[0], acc_avg[0], 161 | right_num[1]/count[1], acc_avg[1])) 162 | else: 163 | early_count += 1 164 | # if count > 8: 165 | # break 166 | if acc_avg[1] > best_test_acc: 167 | best_test_acc = acc_avg[1] 168 | print('!! -- -- epoch {}; best test acc {} {}'.format(epoch, right_num[1]/count[1], acc_avg[1])) 169 | print(h.weight) 170 | -------------------------------------------------------------------------------- /MTL/office_data/office-31/webcam_test.txt: -------------------------------------------------------------------------------- 1 | webcam/images/back_pack/frame_0025.jpg 0 2 | webcam/images/back_pack/frame_0017.jpg 0 3 | webcam/images/back_pack/frame_0018.jpg 0 4 | webcam/images/back_pack/frame_0015.jpg 0 5 | webcam/images/back_pack/frame_0027.jpg 0 6 | webcam/images/back_pack/frame_0014.jpg 0 7 | webcam/images/back_pack/frame_0008.jpg 0 8 | webcam/images/paper_notebook/frame_0022.jpg 1 9 | webcam/images/paper_notebook/frame_0005.jpg 1 10 | webcam/images/paper_notebook/frame_0009.jpg 1 11 | webcam/images/paper_notebook/frame_0018.jpg 1 12 | webcam/images/paper_notebook/frame_0006.jpg 1 13 | webcam/images/paper_notebook/frame_0008.jpg 1 14 | webcam/images/paper_notebook/frame_0017.jpg 1 15 | webcam/images/desktop_computer/frame_0008.jpg 2 16 | webcam/images/desktop_computer/frame_0017.jpg 2 17 | webcam/images/desktop_computer/frame_0018.jpg 2 18 | webcam/images/desktop_computer/frame_0002.jpg 2 19 | webcam/images/desktop_computer/frame_0013.jpg 2 20 | webcam/images/scissors/frame_0010.jpg 3 21 | webcam/images/scissors/frame_0003.jpg 3 22 | webcam/images/scissors/frame_0001.jpg 3 23 | webcam/images/scissors/frame_0008.jpg 3 24 | webcam/images/scissors/frame_0017.jpg 3 25 | webcam/images/calculator/frame_0008.jpg 4 26 | webcam/images/calculator/frame_0030.jpg 4 27 | webcam/images/calculator/frame_0019.jpg 4 28 | webcam/images/calculator/frame_0021.jpg 4 29 | webcam/images/calculator/frame_0017.jpg 4 30 | webcam/images/calculator/frame_0006.jpg 4 31 | webcam/images/calculator/frame_0012.jpg 4 32 | webcam/images/desk_chair/frame_0005.jpg 5 33 | webcam/images/desk_chair/frame_0026.jpg 5 34 | webcam/images/desk_chair/frame_0008.jpg 5 35 | webcam/images/desk_chair/frame_0002.jpg 5 36 | webcam/images/desk_chair/frame_0011.jpg 5 37 | webcam/images/desk_chair/frame_0018.jpg 5 38 | webcam/images/desk_chair/frame_0031.jpg 5 39 | webcam/images/desk_chair/frame_0006.jpg 5 40 | webcam/images/mouse/frame_0027.jpg 6 41 | webcam/images/mouse/frame_0019.jpg 6 42 | webcam/images/mouse/frame_0006.jpg 6 43 | webcam/images/mouse/frame_0023.jpg 6 44 | webcam/images/mouse/frame_0026.jpg 6 45 | webcam/images/mouse/frame_0024.jpg 6 46 | webcam/images/laptop_computer/frame_0003.jpg 7 47 | webcam/images/laptop_computer/frame_0012.jpg 7 48 | webcam/images/laptop_computer/frame_0026.jpg 7 49 | webcam/images/laptop_computer/frame_0006.jpg 7 50 | webcam/images/laptop_computer/frame_0008.jpg 7 51 | webcam/images/laptop_computer/frame_0022.jpg 7 52 | webcam/images/desk_lamp/frame_0014.jpg 8 53 | webcam/images/desk_lamp/frame_0003.jpg 8 54 | webcam/images/desk_lamp/frame_0015.jpg 8 55 | webcam/images/desk_lamp/frame_0001.jpg 8 56 | webcam/images/desk_lamp/frame_0012.jpg 8 57 | webcam/images/stapler/frame_0002.jpg 9 58 | webcam/images/stapler/frame_0017.jpg 9 59 | webcam/images/stapler/frame_0006.jpg 9 60 | webcam/images/stapler/frame_0012.jpg 9 61 | webcam/images/stapler/frame_0016.jpg 9 62 | webcam/images/stapler/frame_0023.jpg 9 63 | webcam/images/bottle/frame_0010.jpg 10 64 | webcam/images/bottle/frame_0003.jpg 10 65 | webcam/images/bottle/frame_0001.jpg 10 66 | webcam/images/bottle/frame_0013.jpg 10 67 | webcam/images/phone/frame_0005.jpg 11 68 | webcam/images/phone/frame_0010.jpg 11 69 | webcam/images/phone/frame_0015.jpg 11 70 | webcam/images/phone/frame_0014.jpg 11 71 | webcam/images/tape_dispenser/frame_0006.jpg 12 72 | webcam/images/tape_dispenser/frame_0013.jpg 12 73 | webcam/images/tape_dispenser/frame_0022.jpg 12 74 | webcam/images/tape_dispenser/frame_0014.jpg 12 75 | webcam/images/tape_dispenser/frame_0004.jpg 12 76 | webcam/images/tape_dispenser/frame_0021.jpg 12 77 | webcam/images/trash_can/frame_0003.jpg 13 78 | webcam/images/trash_can/frame_0009.jpg 13 79 | webcam/images/trash_can/frame_0008.jpg 13 80 | webcam/images/trash_can/frame_0014.jpg 13 81 | webcam/images/trash_can/frame_0011.jpg 13 82 | webcam/images/bookcase/frame_0010.jpg 14 83 | webcam/images/bookcase/frame_0009.jpg 14 84 | webcam/images/bookcase/frame_0003.jpg 14 85 | webcam/images/pen/frame_0024.jpg 15 86 | webcam/images/pen/frame_0022.jpg 15 87 | webcam/images/pen/frame_0018.jpg 15 88 | webcam/images/pen/frame_0026.jpg 15 89 | webcam/images/pen/frame_0014.jpg 15 90 | webcam/images/pen/frame_0015.jpg 15 91 | webcam/images/pen/frame_0029.jpg 15 92 | webcam/images/ring_binder/frame_0031.jpg 16 93 | webcam/images/ring_binder/frame_0028.jpg 16 94 | webcam/images/ring_binder/frame_0039.jpg 16 95 | webcam/images/ring_binder/frame_0002.jpg 16 96 | webcam/images/ring_binder/frame_0009.jpg 16 97 | webcam/images/ring_binder/frame_0034.jpg 16 98 | webcam/images/ring_binder/frame_0027.jpg 16 99 | webcam/images/ring_binder/frame_0018.jpg 16 100 | webcam/images/mobile_phone/frame_0029.jpg 17 101 | webcam/images/mobile_phone/frame_0027.jpg 17 102 | webcam/images/mobile_phone/frame_0022.jpg 17 103 | webcam/images/mobile_phone/frame_0013.jpg 17 104 | webcam/images/mobile_phone/frame_0019.jpg 17 105 | webcam/images/mobile_phone/frame_0007.jpg 17 106 | webcam/images/ruler/frame_0001.jpg 18 107 | webcam/images/ruler/frame_0010.jpg 18 108 | webcam/images/ruler/frame_0003.jpg 18 109 | webcam/images/headphones/frame_0023.jpg 19 110 | webcam/images/headphones/frame_0010.jpg 19 111 | webcam/images/headphones/frame_0008.jpg 19 112 | webcam/images/headphones/frame_0021.jpg 19 113 | webcam/images/headphones/frame_0002.jpg 19 114 | webcam/images/headphones/frame_0027.jpg 19 115 | webcam/images/bike_helmet/frame_0010.jpg 20 116 | webcam/images/bike_helmet/frame_0012.jpg 20 117 | webcam/images/bike_helmet/frame_0007.jpg 20 118 | webcam/images/bike_helmet/frame_0023.jpg 20 119 | webcam/images/bike_helmet/frame_0024.jpg 20 120 | webcam/images/bike_helmet/frame_0014.jpg 20 121 | webcam/images/bike_helmet/frame_0005.jpg 20 122 | webcam/images/monitor/frame_0026.jpg 21 123 | webcam/images/monitor/frame_0008.jpg 21 124 | webcam/images/monitor/frame_0018.jpg 21 125 | webcam/images/monitor/frame_0033.jpg 21 126 | webcam/images/monitor/frame_0020.jpg 21 127 | webcam/images/monitor/frame_0023.jpg 21 128 | webcam/images/monitor/frame_0015.jpg 21 129 | webcam/images/monitor/frame_0025.jpg 21 130 | webcam/images/monitor/frame_0041.jpg 21 131 | webcam/images/monitor/frame_0039.jpg 21 132 | webcam/images/mug/frame_0004.jpg 22 133 | webcam/images/mug/frame_0026.jpg 22 134 | webcam/images/mug/frame_0027.jpg 22 135 | webcam/images/mug/frame_0003.jpg 22 136 | webcam/images/mug/frame_0015.jpg 22 137 | webcam/images/mug/frame_0009.jpg 22 138 | webcam/images/letter_tray/frame_0010.jpg 23 139 | webcam/images/letter_tray/frame_0015.jpg 23 140 | webcam/images/letter_tray/frame_0009.jpg 23 141 | webcam/images/letter_tray/frame_0008.jpg 23 142 | webcam/images/letter_tray/frame_0017.jpg 23 143 | webcam/images/projector/frame_0013.jpg 24 144 | webcam/images/projector/frame_0024.jpg 24 145 | webcam/images/projector/frame_0019.jpg 24 146 | webcam/images/projector/frame_0016.jpg 24 147 | webcam/images/projector/frame_0003.jpg 24 148 | webcam/images/projector/frame_0005.jpg 24 149 | webcam/images/printer/frame_0011.jpg 25 150 | webcam/images/printer/frame_0003.jpg 25 151 | webcam/images/printer/frame_0014.jpg 25 152 | webcam/images/printer/frame_0013.jpg 25 153 | webcam/images/speaker/frame_0003.jpg 26 154 | webcam/images/speaker/frame_0006.jpg 26 155 | webcam/images/speaker/frame_0025.jpg 26 156 | webcam/images/speaker/frame_0019.jpg 26 157 | webcam/images/speaker/frame_0028.jpg 26 158 | webcam/images/speaker/frame_0016.jpg 26 159 | webcam/images/bike/frame_0021.jpg 27 160 | webcam/images/bike/frame_0019.jpg 27 161 | webcam/images/bike/frame_0017.jpg 27 162 | webcam/images/bike/frame_0004.jpg 27 163 | webcam/images/bike/frame_0003.jpg 27 164 | webcam/images/keyboard/frame_0017.jpg 28 165 | webcam/images/keyboard/frame_0014.jpg 28 166 | webcam/images/keyboard/frame_0012.jpg 28 167 | webcam/images/keyboard/frame_0019.jpg 28 168 | webcam/images/keyboard/frame_0023.jpg 28 169 | webcam/images/keyboard/frame_0010.jpg 28 170 | webcam/images/file_cabinet/frame_0008.jpg 29 171 | webcam/images/file_cabinet/frame_0002.jpg 29 172 | webcam/images/file_cabinet/frame_0018.jpg 29 173 | webcam/images/file_cabinet/frame_0019.jpg 29 174 | webcam/images/file_cabinet/frame_0017.jpg 29 175 | webcam/images/punchers/frame_0020.jpg 30 176 | webcam/images/punchers/frame_0013.jpg 30 177 | webcam/images/punchers/frame_0006.jpg 30 178 | webcam/images/punchers/frame_0004.jpg 30 179 | webcam/images/punchers/frame_0015.jpg 30 180 | webcam/images/punchers/frame_0019.jpg 30 181 | -------------------------------------------------------------------------------- /SSDA/min_norm_solvers.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | 4 | 5 | class MinNormSolver: 6 | MAX_ITER = 250 7 | STOP_CRIT = 1e-5 8 | 9 | def _min_norm_element_from2(v1v1, v1v2, v2v2): 10 | """ 11 | Analytical solution for min_{c} |cx_1 + (1-c)x_2|_2^2 12 | d is the distance (objective) optimzed 13 | v1v1 = 14 | v1v2 = 15 | v2v2 = 16 | """ 17 | if v1v2 >= v1v1: 18 | # Case: Fig 1, third column 19 | gamma = 0.9 20 | cost = v1v1 21 | return gamma, cost 22 | if v1v2 >= v2v2: 23 | # Case: Fig 1, first column 24 | gamma = 0.1 25 | cost = v2v2 26 | return gamma, cost 27 | # Case: Fig 1, second column 28 | gamma = -1.0 * ( (v1v2 - v2v2) / (v1v1+v2v2 - 2*v1v2) ) 29 | cost = v2v2 + gamma*(v1v2 - v2v2) 30 | return gamma, cost 31 | 32 | def _min_norm_2d(vecs, dps): 33 | """ 34 | Find the minimum norm solution as combination of two points 35 | This is correct only in 2D 36 | ie. min_c |\sum c_i x_i|_2^2 st. \sum c_i = 1 , 1 >= c_1 >= 0 for all i, c_i + c_j = 1.0 for some i, j 37 | """ 38 | dmin = 1e8 39 | for i in range(len(vecs)): 40 | for j in range(i+1,len(vecs)): 41 | if (i,j) not in dps: 42 | dps[(i, j)] = 0.0 43 | for k in range(len(vecs[i])): 44 | dps[(i,j)] += (vecs[i][k]*vecs[j][k]).sum() 45 | # dps[(i,j)] += torch.dot(vecs[i][k], vecs[j][k]).item() 46 | dps[(j, i)] = dps[(i, j)] 47 | if (i,i) not in dps: 48 | dps[(i, i)] = 0.0 49 | for k in range(len(vecs[i])): 50 | dps[(i,i)] += (vecs[i][k]*vecs[i][k]).sum() 51 | # dps[(i,i)] += torch.dot(vecs[i][k], vecs[i][k]).item() 52 | if (j,j) not in dps: 53 | dps[(j, j)] = 0.0 54 | for k in range(len(vecs[i])): 55 | dps[(j,j)] += (vecs[j][k]*vecs[j][k]).sum() 56 | # dps[(j, j)] += torch.dot(vecs[j][k], vecs[j][k]).item() 57 | c,d = MinNormSolver._min_norm_element_from2(dps[(i,i)], dps[(i,j)], dps[(j,j)]) 58 | if d < dmin: 59 | dmin = d 60 | sol = [(i,j),c,d] 61 | return sol, dps 62 | 63 | def _projection2simplex(y): 64 | """ 65 | Given y, it solves argmin_z |y-z|_2 st \sum z = 1 , 1 >= z_i >= 0 for all i 66 | """ 67 | m = len(y) 68 | sorted_y = np.flip(np.sort(y), axis=0) 69 | tmpsum = 0.0 70 | tmax_f = (np.sum(y) - 1.0)/m 71 | for i in range(m-1): 72 | tmpsum+= sorted_y[i] 73 | tmax = (tmpsum - 1)/ (i+1.0) 74 | if tmax > sorted_y[i+1]: 75 | tmax_f = tmax 76 | break 77 | return np.maximum(y - tmax_f, np.zeros(y.shape)) 78 | 79 | def _next_point(cur_val, grad, n): 80 | proj_grad = grad - ( np.sum(grad) / n ) 81 | tm1 = -1.0*cur_val[proj_grad<0]/proj_grad[proj_grad<0] 82 | tm2 = (1.0 - cur_val[proj_grad>0])/(proj_grad[proj_grad>0]) 83 | 84 | skippers = np.sum(tm1<1e-7) + np.sum(tm2<1e-7) 85 | t = 1 86 | if len(tm1[tm1>1e-7]) > 0: 87 | t = np.min(tm1[tm1>1e-7]) 88 | if len(tm2[tm2>1e-7]) > 0: 89 | t = min(t, np.min(tm2[tm2>1e-7])) 90 | 91 | next_point = proj_grad*t + cur_val 92 | next_point = MinNormSolver._projection2simplex(next_point) 93 | return next_point 94 | 95 | def find_min_norm_element(vecs): 96 | """ 97 | Given a list of vectors (vecs), this method finds the minimum norm element in the convex hull 98 | as min |u|_2 st. u = \sum c_i vecs[i] and \sum c_i = 1. 99 | It is quite geometric, and the main idea is the fact that if d_{ij} = min |u|_2 st u = c x_i + (1-c) x_j; the solution lies in (0, d_{i,j}) 100 | Hence, we find the best 2-task solution, and then run the projected gradient descent until convergence 101 | """ 102 | # Solution lying at the combination of two points 103 | dps = {} 104 | init_sol, dps = MinNormSolver._min_norm_2d(vecs, dps) 105 | 106 | n=len(vecs) 107 | sol_vec = np.zeros(n) 108 | sol_vec[init_sol[0][0]] = init_sol[1] 109 | sol_vec[init_sol[0][1]] = 1 - init_sol[1] 110 | 111 | if n < 3: 112 | # This is optimal for n=2, so return the solution 113 | return sol_vec , init_sol[2] 114 | 115 | iter_count = 0 116 | 117 | grad_mat = np.zeros((n,n)) 118 | for i in range(n): 119 | for j in range(n): 120 | grad_mat[i,j] = dps[(i, j)] 121 | 122 | 123 | while iter_count < MinNormSolver.MAX_ITER: 124 | grad_dir = -1.0*np.dot(grad_mat, sol_vec) 125 | new_point = MinNormSolver._next_point(sol_vec, grad_dir, n) 126 | # Re-compute the inner products for line search 127 | v1v1 = 0.0 128 | v1v2 = 0.0 129 | v2v2 = 0.0 130 | for i in range(n): 131 | for j in range(n): 132 | v1v1 += sol_vec[i]*sol_vec[j]*dps[(i,j)] 133 | v1v2 += sol_vec[i]*new_point[j]*dps[(i,j)] 134 | v2v2 += new_point[i]*new_point[j]*dps[(i,j)] 135 | nc, nd = MinNormSolver._min_norm_element_from2(v1v1, v1v2, v2v2) 136 | # 137 | # sol_vec = torch.from_numpy(sol_vec) 138 | # new_point = torch.from_numpy(new_point) 139 | # print('-'*10, type(nc)) 140 | if torch.is_tensor(nc): 141 | nc = nc.cpu().numpy() 142 | # 143 | new_sol_vec = nc*sol_vec + (1-nc)*new_point 144 | change = new_sol_vec - sol_vec 145 | if np.sum(np.abs(change)) < MinNormSolver.STOP_CRIT: 146 | return sol_vec, nd 147 | sol_vec = new_sol_vec 148 | 149 | def find_min_norm_element_FW(vecs): 150 | """ 151 | Given a list of vectors (vecs), this method finds the minimum norm element in the convex hull 152 | as min |u|_2 st. u = \sum c_i vecs[i] and \sum c_i = 1. 153 | It is quite geometric, and the main idea is the fact that if d_{ij} = min |u|_2 st u = c x_i + (1-c) x_j; the solution lies in (0, d_{i,j}) 154 | Hence, we find the best 2-task solution, and then run the Frank Wolfe until convergence 155 | """ 156 | # Solution lying at the combination of two points 157 | dps = {} 158 | init_sol, dps = MinNormSolver._min_norm_2d(vecs, dps) 159 | 160 | n=len(vecs) 161 | sol_vec = np.zeros(n) 162 | sol_vec[init_sol[0][0]] = init_sol[1] 163 | sol_vec[init_sol[0][1]] = 1 - init_sol[1] 164 | 165 | if n < 3: 166 | # This is optimal for n=2, so return the solution 167 | return sol_vec , init_sol[2] 168 | 169 | iter_count = 0 170 | 171 | grad_mat = np.zeros((n,n)) 172 | for i in range(n): 173 | for j in range(n): 174 | grad_mat[i,j] = dps[(i, j)] 175 | 176 | while iter_count < MinNormSolver.MAX_ITER: 177 | t_iter = np.argmin(np.dot(grad_mat, sol_vec)) 178 | 179 | v1v1 = np.dot(sol_vec, np.dot(grad_mat, sol_vec)) 180 | v1v2 = np.dot(sol_vec, grad_mat[:, t_iter]) 181 | v2v2 = grad_mat[t_iter, t_iter] 182 | 183 | nc, nd = MinNormSolver._min_norm_element_from2(v1v1, v1v2, v2v2) 184 | new_sol_vec = nc*sol_vec 185 | new_sol_vec[t_iter] += 1 - nc 186 | 187 | change = new_sol_vec - sol_vec 188 | if np.sum(np.abs(change)) < MinNormSolver.STOP_CRIT: 189 | return sol_vec, nd 190 | sol_vec = new_sol_vec 191 | 192 | 193 | def gradient_normalizers(grads, losses, normalization_type): 194 | gn = {} 195 | if normalization_type == 'l2': 196 | for t in grads: 197 | gn[t] = np.sqrt(np.sum([gr.pow(2).sum().item() for gr in grads[t]])) 198 | elif normalization_type == 'loss': 199 | for t in grads: 200 | gn[t] = losses[t] 201 | elif normalization_type == 'loss+': 202 | for t in grads: 203 | gn[t] = losses[t] * np.sqrt(np.sum([gr.pow(2).sum().item() for gr in grads[t]])) 204 | elif normalization_type == 'none': 205 | for t in grads: 206 | gn[t] = 1.0 207 | else: 208 | print('ERROR: Invalid Normalization Type') 209 | return gn -------------------------------------------------------------------------------- /MTL/min_norm_solvers.py: -------------------------------------------------------------------------------- 1 | # https://github.com/isl-org/MultiObjectiveOptimization/blob/master/multi_task/min_norm_solvers.py 2 | 3 | import numpy as np 4 | import torch 5 | 6 | 7 | class MinNormSolver: 8 | MAX_ITER = 250 9 | STOP_CRIT = 1e-5 10 | 11 | def _min_norm_element_from2(v1v1, v1v2, v2v2): 12 | """ 13 | Analytical solution for min_{c} |cx_1 + (1-c)x_2|_2^2 14 | d is the distance (objective) optimzed 15 | v1v1 = 16 | v1v2 = 17 | v2v2 = 18 | """ 19 | if v1v2 >= v1v1: 20 | # Case: Fig 1, third column 21 | gamma = 0.999 22 | cost = v1v1 23 | return gamma, cost 24 | if v1v2 >= v2v2: 25 | # Case: Fig 1, first column 26 | gamma = 0.001 27 | cost = v2v2 28 | return gamma, cost 29 | # Case: Fig 1, second column 30 | gamma = -1.0 * ( (v1v2 - v2v2) / (v1v1+v2v2 - 2*v1v2) ) 31 | cost = v2v2 + gamma*(v1v2 - v2v2) 32 | return gamma, cost 33 | 34 | def _min_norm_2d(vecs, dps): 35 | """ 36 | Find the minimum norm solution as combination of two points 37 | This is correct only in 2D 38 | ie. min_c |\sum c_i x_i|_2^2 st. \sum c_i = 1 , 1 >= c_1 >= 0 for all i, c_i + c_j = 1.0 for some i, j 39 | """ 40 | dmin = 1e8 41 | for i in range(len(vecs)): 42 | for j in range(i+1,len(vecs)): 43 | if (i,j) not in dps: 44 | dps[(i, j)] = 0.0 45 | for k in range(len(vecs[i])): 46 | dps[(i,j)] += (vecs[i][k]*vecs[j][k]).sum() 47 | # dps[(i,j)] += torch.dot(vecs[i][k], vecs[j][k]).item() 48 | dps[(j, i)] = dps[(i, j)] 49 | if (i,i) not in dps: 50 | dps[(i, i)] = 0.0 51 | for k in range(len(vecs[i])): 52 | dps[(i,i)] += (vecs[i][k]*vecs[i][k]).sum() 53 | # dps[(i,i)] += torch.dot(vecs[i][k], vecs[i][k]).item() 54 | if (j,j) not in dps: 55 | dps[(j, j)] = 0.0 56 | for k in range(len(vecs[i])): 57 | dps[(j,j)] += (vecs[j][k]*vecs[j][k]).sum() 58 | # dps[(j, j)] += torch.dot(vecs[j][k], vecs[j][k]).item() 59 | c,d = MinNormSolver._min_norm_element_from2(dps[(i,i)], dps[(i,j)], dps[(j,j)]) 60 | if d < dmin: 61 | dmin = d 62 | sol = [(i,j),c,d] 63 | return sol, dps 64 | 65 | def _projection2simplex(y): 66 | """ 67 | Given y, it solves argmin_z |y-z|_2 st \sum z = 1 , 1 >= z_i >= 0 for all i 68 | """ 69 | m = len(y) 70 | sorted_y = np.flip(np.sort(y), axis=0) 71 | tmpsum = 0.0 72 | tmax_f = (np.sum(y) - 1.0)/m 73 | for i in range(m-1): 74 | tmpsum+= sorted_y[i] 75 | tmax = (tmpsum - 1)/ (i+1.0) 76 | if tmax > sorted_y[i+1]: 77 | tmax_f = tmax 78 | break 79 | return np.maximum(y - tmax_f, np.zeros(y.shape)) 80 | 81 | def _next_point(cur_val, grad, n): 82 | proj_grad = grad - ( np.sum(grad) / n ) 83 | tm1 = -1.0*cur_val[proj_grad<0]/proj_grad[proj_grad<0] 84 | tm2 = (1.0 - cur_val[proj_grad>0])/(proj_grad[proj_grad>0]) 85 | 86 | skippers = np.sum(tm1<1e-7) + np.sum(tm2<1e-7) 87 | t = 1 88 | if len(tm1[tm1>1e-7]) > 0: 89 | t = np.min(tm1[tm1>1e-7]) 90 | if len(tm2[tm2>1e-7]) > 0: 91 | t = min(t, np.min(tm2[tm2>1e-7])) 92 | 93 | next_point = proj_grad*t + cur_val 94 | next_point = MinNormSolver._projection2simplex(next_point) 95 | return next_point 96 | 97 | def find_min_norm_element(vecs): 98 | """ 99 | Given a list of vectors (vecs), this method finds the minimum norm element in the convex hull 100 | as min |u|_2 st. u = \sum c_i vecs[i] and \sum c_i = 1. 101 | It is quite geometric, and the main idea is the fact that if d_{ij} = min |u|_2 st u = c x_i + (1-c) x_j; the solution lies in (0, d_{i,j}) 102 | Hence, we find the best 2-task solution, and then run the projected gradient descent until convergence 103 | """ 104 | # Solution lying at the combination of two points 105 | dps = {} 106 | init_sol, dps = MinNormSolver._min_norm_2d(vecs, dps) 107 | 108 | n=len(vecs) 109 | sol_vec = np.zeros(n) 110 | sol_vec[init_sol[0][0]] = init_sol[1] 111 | sol_vec[init_sol[0][1]] = 1 - init_sol[1] 112 | 113 | if n < 3: 114 | # This is optimal for n=2, so return the solution 115 | return sol_vec , init_sol[2] 116 | 117 | iter_count = 0 118 | 119 | grad_mat = np.zeros((n,n)) 120 | for i in range(n): 121 | for j in range(n): 122 | grad_mat[i,j] = dps[(i, j)] 123 | 124 | 125 | while iter_count < MinNormSolver.MAX_ITER: 126 | grad_dir = -1.0*np.dot(grad_mat, sol_vec) 127 | new_point = MinNormSolver._next_point(sol_vec, grad_dir, n) 128 | # Re-compute the inner products for line search 129 | v1v1 = 0.0 130 | v1v2 = 0.0 131 | v2v2 = 0.0 132 | for i in range(n): 133 | for j in range(n): 134 | v1v1 += sol_vec[i]*sol_vec[j]*dps[(i,j)] 135 | v1v2 += sol_vec[i]*new_point[j]*dps[(i,j)] 136 | v2v2 += new_point[i]*new_point[j]*dps[(i,j)] 137 | nc, nd = MinNormSolver._min_norm_element_from2(v1v1, v1v2, v2v2) 138 | # 139 | # sol_vec = torch.from_numpy(sol_vec) 140 | # new_point = torch.from_numpy(new_point) 141 | # print('-'*10, type(nc)) 142 | if torch.is_tensor(nc): 143 | nc = nc.cpu().numpy() 144 | # 145 | new_sol_vec = nc*sol_vec + (1-nc)*new_point 146 | change = new_sol_vec - sol_vec 147 | if np.sum(np.abs(change)) < MinNormSolver.STOP_CRIT: 148 | return sol_vec, nd 149 | sol_vec = new_sol_vec 150 | 151 | def find_min_norm_element_FW(vecs): 152 | """ 153 | Given a list of vectors (vecs), this method finds the minimum norm element in the convex hull 154 | as min |u|_2 st. u = \sum c_i vecs[i] and \sum c_i = 1. 155 | It is quite geometric, and the main idea is the fact that if d_{ij} = min |u|_2 st u = c x_i + (1-c) x_j; the solution lies in (0, d_{i,j}) 156 | Hence, we find the best 2-task solution, and then run the Frank Wolfe until convergence 157 | """ 158 | # Solution lying at the combination of two points 159 | dps = {} 160 | init_sol, dps = MinNormSolver._min_norm_2d(vecs, dps) 161 | 162 | n=len(vecs) 163 | sol_vec = np.zeros(n) 164 | sol_vec[init_sol[0][0]] = init_sol[1] 165 | sol_vec[init_sol[0][1]] = 1 - init_sol[1] 166 | 167 | if n < 3: 168 | # This is optimal for n=2, so return the solution 169 | return sol_vec , init_sol[2] 170 | 171 | iter_count = 0 172 | 173 | grad_mat = np.zeros((n,n)) 174 | for i in range(n): 175 | for j in range(n): 176 | grad_mat[i,j] = dps[(i, j)] 177 | 178 | while iter_count < MinNormSolver.MAX_ITER: 179 | t_iter = np.argmin(np.dot(grad_mat, sol_vec)) 180 | 181 | v1v1 = np.dot(sol_vec, np.dot(grad_mat, sol_vec)) 182 | v1v2 = np.dot(sol_vec, grad_mat[:, t_iter]) 183 | v2v2 = grad_mat[t_iter, t_iter] 184 | 185 | nc, nd = MinNormSolver._min_norm_element_from2(v1v1, v1v2, v2v2) 186 | new_sol_vec = nc*sol_vec 187 | new_sol_vec[t_iter] += 1 - nc 188 | 189 | change = new_sol_vec - sol_vec 190 | if np.sum(np.abs(change)) < MinNormSolver.STOP_CRIT: 191 | return sol_vec, nd 192 | sol_vec = new_sol_vec 193 | 194 | 195 | def gradient_normalizers(grads, losses, normalization_type): 196 | gn = {} 197 | if normalization_type == 'l2': 198 | for t in grads: 199 | gn[t] = np.sqrt(np.sum([gr.pow(2).sum().item() for gr in grads[t]])) 200 | elif normalization_type == 'loss': 201 | for t in grads: 202 | gn[t] = losses[t] 203 | elif normalization_type == 'loss+': 204 | for t in grads: 205 | gn[t] = losses[t] * np.sqrt(np.sum([gr.pow(2).sum().item() for gr in grads[t]])) 206 | elif normalization_type == 'none': 207 | for t in grads: 208 | gn[t] = 1.0 209 | else: 210 | print('ERROR: Invalid Normalization Type') 211 | return gn -------------------------------------------------------------------------------- /SSDA/model/resnet.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | from __future__ import division 3 | from __future__ import print_function 4 | 5 | from torch.autograd import Function 6 | import torch 7 | import torch.nn as nn 8 | import math 9 | import torch.utils.model_zoo as model_zoo 10 | 11 | __all__ = ['ResNet', 'resnet18', 'resnet34', 'resnet50', 'resnet101', 12 | 'resnet152'] 13 | 14 | model_urls = { 15 | 'resnet18': 'https://s3.amazonaws.com/pytorch/models/resnet18-5c106cde.pth', 16 | 'resnet34': 'https://s3.amazonaws.com/pytorch/models/resnet34-333f7ec4.pth', 17 | 'resnet50': 'https://s3.amazonaws.com/pytorch/models/resnet50-19c8e357.pth', 18 | 'resnet101': 19 | 'https://s3.amazonaws.com/pytorch/models/resnet101-5d3b4d8f.pth', 20 | 'resnet152': 21 | 'https://s3.amazonaws.com/pytorch/models/resnet152-b121ed2d.pth', 22 | } 23 | 24 | 25 | def init_weights(m): 26 | classname = m.__class__.__name__ 27 | if classname.find('Conv2d') != -1 or \ 28 | classname.find('ConvTranspose2d') != -1: 29 | nn.init.kaiming_uniform_(m.weight) 30 | nn.init.zeros_(m.bias) 31 | elif classname.find('BatchNorm') != -1: 32 | nn.init.normal_(m.weight, 1.0, 0.02) 33 | nn.init.zeros_(m.bias) 34 | elif classname.find('Linear') != -1: 35 | nn.init.xavier_normal_(m.weight) 36 | 37 | 38 | def conv3x3(in_planes, out_planes, stride=1): 39 | "3x3 convolution with padding" 40 | return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride, 41 | padding=1, bias=False) 42 | 43 | 44 | # class GradReverse(Function): 45 | # def __init__(self, lambd): 46 | # self.lambd = lambd 47 | 48 | # def forward(self, x): 49 | # return x.view_as(x) 50 | 51 | # def backward(self, grad_output): 52 | # return (grad_output * -self.lambd) 53 | 54 | 55 | # def grad_reverse(x, lambd=1.0): 56 | # return GradReverse(lambd)(x) 57 | 58 | 59 | class BasicBlock(nn.Module): 60 | expansion = 1 61 | 62 | def __init__(self, inplanes, planes, stride=1, downsample=None, nobn=False): 63 | super(BasicBlock, self).__init__() 64 | self.conv1 = conv3x3(inplanes, planes, stride) 65 | self.bn1 = nn.BatchNorm2d(planes) 66 | self.relu = nn.ReLU(inplace=True) 67 | self.conv2 = conv3x3(planes, planes) 68 | self.bn2 = nn.BatchNorm2d(planes) 69 | self.downsample = downsample 70 | self.stride = stride 71 | self.nobn = nobn 72 | 73 | def forward(self, x, source=True): 74 | 75 | residual = x 76 | out = self.conv1(x) 77 | out = self.bn1(out) 78 | out = self.relu(out) 79 | 80 | out = self.conv2(out) 81 | out = self.bn2(out) 82 | 83 | if self.downsample is not None: 84 | residual = self.downsample(x) 85 | out += residual 86 | out = self.relu(out) 87 | 88 | return out 89 | 90 | 91 | class ScaleLayer(nn.Module): 92 | def __init__(self, init_value=1e-3): 93 | super(ScaleLayer, self).__init__() 94 | self.scale = nn.Parameter(torch.FloatTensor([init_value])) 95 | 96 | def forward(self, input): 97 | print(self.scale) 98 | return input * self.scale 99 | 100 | 101 | class Bottleneck(nn.Module): 102 | expansion = 4 103 | 104 | def __init__(self, inplanes, planes, stride=1, downsample=None, nobn=False): 105 | super(Bottleneck, self).__init__() 106 | self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, 107 | stride=stride, bias=False) 108 | self.bn1 = nn.BatchNorm2d(planes) 109 | 110 | self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, 111 | stride=1, padding=1, bias=False) 112 | self.bn2 = nn.BatchNorm2d(planes) 113 | 114 | self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False) 115 | self.bn3 = nn.BatchNorm2d(planes * 4) 116 | 117 | self.relu = nn.ReLU(inplace=True) 118 | self.downsample = downsample 119 | 120 | self.stride = stride 121 | self.nobn = nobn 122 | 123 | def forward(self, x): 124 | residual = x 125 | out = self.conv1(x) 126 | out = self.bn1(out) 127 | out = self.relu(out) 128 | out = self.conv2(out) 129 | out = self.bn2(out) 130 | out = self.relu(out) 131 | out = self.conv3(out) 132 | out = self.bn3(out) 133 | if self.downsample is not None: 134 | residual = self.downsample(x) 135 | out += residual 136 | out = self.relu(out) 137 | 138 | return out 139 | 140 | 141 | class ResNet(nn.Module): 142 | def __init__(self, block, layers, num_classes=1000): 143 | self.inplanes = 64 144 | super(ResNet, self).__init__() 145 | self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, 146 | bias=False) 147 | self.bn1 = nn.BatchNorm2d(64) 148 | self.in1 = nn.InstanceNorm2d(64) 149 | self.in2 = nn.InstanceNorm2d(128) 150 | self.relu = nn.ReLU(inplace=True) 151 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, 152 | padding=0, ceil_mode=True) 153 | self.layer1 = self._make_layer(block, 64, layers[0]) 154 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2) 155 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2) 156 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2) 157 | self.avgpool = nn.AvgPool2d(7) 158 | # self.fc = nn.Linear(512 * block.expansion, num_classes) 159 | 160 | for m in self.modules(): 161 | if isinstance(m, nn.Conv2d): 162 | n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels 163 | m.weight.data.normal_(0, math.sqrt(2. / n)) 164 | elif isinstance(m, nn.BatchNorm2d): 165 | m.weight.data.fill_(1) 166 | m.bias.data.zero_() 167 | 168 | def _make_layer(self, block, planes, blocks, stride=1, nobn=False): 169 | downsample = None 170 | if stride != 1 or self.inplanes != planes * block.expansion: 171 | downsample = nn.Sequential( 172 | nn.Conv2d(self.inplanes, planes * block.expansion, 173 | kernel_size=1, stride=stride, bias=False), 174 | nn.BatchNorm2d(planes * block.expansion), 175 | ) 176 | 177 | layers = [] 178 | layers.append(block(self.inplanes, planes, stride, downsample)) 179 | self.inplanes = planes * block.expansion 180 | 181 | for i in range(1, blocks): 182 | layers.append(block(self.inplanes, planes, nobn=nobn)) 183 | return nn.Sequential(*layers) 184 | 185 | def forward(self, x): 186 | x = self.conv1(x) 187 | x = self.bn1(x) 188 | x = self.relu(x) 189 | x = self.maxpool(x) 190 | x = self.layer1(x) 191 | x = self.layer2(x) 192 | x = self.layer3(x) 193 | x = self.layer4(x) 194 | x = self.avgpool(x) 195 | x = x.view(x.size(0), -1) 196 | return x 197 | 198 | 199 | def resnet18(pretrained=True): 200 | """Constructs a ResNet-18 model. 201 | Args: 202 | pretrained (bool): If True, returns a model pre-trained on ImageNet 203 | """ 204 | model = ResNet(BasicBlock, [2, 2, 2, 2]) 205 | if pretrained: 206 | pretrained_dict = model_zoo.load_url(model_urls['resnet18']) 207 | model_dict = model.state_dict() 208 | # 1. filter out unnecessary keys 209 | pretrained_dict = {k: v for k, v in pretrained_dict.items() 210 | if k in model_dict} 211 | # 2. overwrite entries in the existing state dict 212 | model_dict.update(pretrained_dict) 213 | # 3. load the new state dict 214 | model.load_state_dict(model_dict) 215 | return model 216 | 217 | 218 | def resnet34(pretrained=True): 219 | """Constructs a ResNet-34 model. 220 | Args: 221 | pretrained (bool): If True, returns a model pre-trained on ImageNet 222 | """ 223 | model = ResNet(BasicBlock, [3, 4, 6, 3]) 224 | if pretrained: 225 | model.load_state_dict(model_zoo.load_url(model_urls['resnet34'])) 226 | return model 227 | 228 | 229 | def resnet50(pretrained=True): 230 | """Constructs a ResNet-50 model. 231 | Args: 232 | pretrained (bool): If True, returns a model pre-trained on ImageNet 233 | """ 234 | model = ResNet(Bottleneck, [3, 4, 6, 3]) 235 | if pretrained: 236 | pretrained_dict = model_zoo.load_url(model_urls['resnet50']) 237 | model_dict = model.state_dict() 238 | pretrained_dict = {k: v for k, v in pretrained_dict.items() 239 | if k in model_dict} 240 | model_dict.update(pretrained_dict) 241 | model.load_state_dict(model_dict) 242 | return model 243 | 244 | 245 | def resnet101(pretrained=False): 246 | """Constructs a ResNet-101 model. 247 | Args: 248 | pretrained (bool): If True, returns a model pre-trained on ImageNet 249 | """ 250 | model = ResNet(Bottleneck, [3, 4, 23, 3]) 251 | if pretrained: 252 | model.load_state_dict(model_zoo.load_url(model_urls['resnet101'])) 253 | return model 254 | 255 | 256 | def resnet152(pretrained=False): 257 | """Constructs a ResNet-152 model. 258 | Args: 259 | pretrained (bool): If True, returns a model pre-trained on ImageNet 260 | """ 261 | model = ResNet(Bottleneck, [3, 8, 36, 3]) 262 | if pretrained: 263 | model.load_state_dict(model_zoo.load_url(model_urls['resnet152'])) 264 | return model 265 | -------------------------------------------------------------------------------- /MTL/moml_nyu.py: -------------------------------------------------------------------------------- 1 | import torch, time, os 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | import torch.optim as optim 5 | import numpy as np 6 | 7 | from backbone import DeepLabv3, MTANDeepLabv3, Model_h 8 | from utils import * 9 | 10 | from create_dataset import NYUv2 11 | from min_norm_solvers import MinNormSolver, gradient_normalizers 12 | 13 | import argparse 14 | 15 | def parse_args(): 16 | parser = argparse.ArgumentParser(description= 'MOML for NYUv2') 17 | parser.add_argument('--dataset_path', default='', type=str, help='dataset path') 18 | parser.add_argument('--gpu_id', default='6', help='gpu_id') 19 | parser.add_argument('--model', default='DMTL', type=str, help='DMTL, MTAN') 20 | parser.add_argument('--aug', action='store_true', default=False, help='data augmentation') 21 | parser.add_argument('--MGDA', action='store_true', help='MGDA in UL') 22 | return parser.parse_args() 23 | 24 | params = parse_args() 25 | print(params) 26 | 27 | os.environ["CUDA_VISIBLE_DEVICES"] = params.gpu_id 28 | 29 | 30 | dataset_path = params.dataset_path 31 | if params.model == 'DMTL': 32 | batch_size = 8 33 | elif params.model == 'MTAN': 34 | batch_size = 4 35 | 36 | nyuv2_train_set = NYUv2(root=dataset_path, mode='train', augmentation=params.aug) 37 | nyuv2_val_set = NYUv2(root=dataset_path, mode='val', augmentation=params.aug) 38 | nyuv2_trval_set = NYUv2(root=dataset_path, mode='trainval', augmentation=params.aug) 39 | nyuv2_test_set = NYUv2(root=dataset_path, mode='test', augmentation=params.aug) 40 | 41 | nyuv2_test_loader = torch.utils.data.DataLoader( 42 | dataset=nyuv2_test_set, 43 | batch_size=batch_size, 44 | shuffle=False, 45 | num_workers=2, 46 | pin_memory=True) 47 | 48 | nyuv2_train_loader = torch.utils.data.DataLoader( 49 | dataset=nyuv2_train_set, 50 | batch_size=batch_size, 51 | shuffle=True, 52 | num_workers=2, 53 | pin_memory=True, 54 | drop_last=True) 55 | 56 | nyuv2_trval_loader = torch.utils.data.DataLoader( 57 | dataset=nyuv2_trval_set, 58 | batch_size=batch_size, 59 | shuffle=True, 60 | num_workers=2, 61 | pin_memory=True, 62 | drop_last=True) 63 | 64 | nyuv2_val_loader = torch.utils.data.DataLoader( 65 | dataset=nyuv2_val_set, 66 | batch_size=batch_size, 67 | shuffle=True, 68 | num_workers=2, 69 | pin_memory=True) 70 | 71 | def build_model(model): 72 | if model == 'DMTL': 73 | model = DeepLabv3().cuda() 74 | elif model == 'MTAN': 75 | model = MTANDeepLabv3().cuda() 76 | return model 77 | 78 | model = build_model(params.model) 79 | task_num = len(model.tasks) 80 | weight_optimizer = optim.Adam(model.parameters(), lr=1e-4, weight_decay=1e-5) 81 | scheduler = optim.lr_scheduler.StepLR(weight_optimizer, step_size=100, gamma=0.5) 82 | 83 | h = Model_h(task_num=task_num).cuda() 84 | h.train() 85 | 86 | h_optimizer = torch.optim.Adam(h.parameters(), lr=1e-4) 87 | 88 | print('LOSS FORMAT: SEMANTIC_LOSS MEAN_IOU PIX_ACC | DEPTH_LOSS ABS_ERR REL_ERR | NORMAL_LOSS MEAN MED <11.25 <22.5 <30') 89 | total_epoch = 500 90 | trval_batch = len(nyuv2_trval_loader) 91 | # val_batch = len(nyuv2_val_loader) 92 | avg_cost = torch.zeros([total_epoch, 24]) 93 | for index in range(total_epoch): 94 | s_t = time.time() 95 | cost = torch.zeros(24) 96 | 97 | # iteration for all batches 98 | model.train() 99 | trval_dataset = iter(nyuv2_trval_loader) 100 | conf_mat = ConfMatrix(model.class_nb) 101 | for k in range(trval_batch): 102 | 103 | meta_model = build_model(params.model) 104 | meta_model.load_state_dict(model.state_dict()) 105 | 106 | model_np = {} 107 | for n, p in meta_model.named_parameters(): 108 | model_np[n] = p 109 | 110 | try: 111 | train_data, train_label, train_depth, train_normal = train_dataset_iter.next() 112 | except: 113 | train_dataset_iter = iter(nyuv2_train_loader) 114 | train_data, train_label, train_depth, train_normal = train_dataset_iter.next() 115 | train_data, train_label = train_data.cuda(non_blocking=True), train_label.long().cuda(non_blocking=True) 116 | train_depth, train_normal = train_depth.cuda(non_blocking=True), train_normal.cuda(non_blocking=True) 117 | 118 | train_pred = meta_model(train_data) 119 | 120 | train_loss = [model_fit(train_pred[0], train_label, 'semantic'), 121 | model_fit(train_pred[1], train_depth, 'depth'), 122 | model_fit(train_pred[2], train_normal, 'normal')] 123 | loss_train = torch.zeros(3).cuda() 124 | for i in range(3): 125 | loss_train[i] = train_loss[i] 126 | loss = h(loss_train) 127 | 128 | meta_model.zero_grad() 129 | grads = torch.autograd.grad(loss, (meta_model.parameters()), create_graph=True) 130 | 131 | for g_index, name in enumerate(model_np.keys()): 132 | p = set_param(meta_model, name, mode='get') 133 | p_fast = p - 1e-4 * grads[g_index] 134 | set_param(meta_model, name, param=p_fast, mode='update') 135 | model_np[name] = p_fast 136 | del grads, model_np 137 | del train_data, train_label, train_depth, train_normal 138 | 139 | # update outer loop 140 | try: 141 | val_data, val_label, val_depth, val_normal = val_dataset_iter.next() 142 | except: 143 | val_dataset_iter = iter(nyuv2_val_loader) 144 | val_data, val_label, val_depth, val_normal = val_dataset_iter.next() 145 | val_data, val_label = val_data.cuda(non_blocking=True), val_label.long().cuda(non_blocking=True) 146 | val_depth, val_normal = val_depth.cuda(non_blocking=True), val_normal.cuda(non_blocking=True) 147 | valid_pred = meta_model(val_data) 148 | valid_loss = [model_fit(valid_pred[0], val_label, 'semantic'), 149 | model_fit(valid_pred[1], val_depth, 'depth'), 150 | model_fit(valid_pred[2], val_normal, 'normal')] 151 | del val_data, val_label, val_depth, val_normal 152 | # for MGDA 153 | if params.MGDA: 154 | grads = {} 155 | loss_valid_data = {} 156 | for kn in range(task_num): 157 | grads[kn] = torch.autograd.grad(valid_loss[kn], h.parameters(), retain_graph=True)[0] 158 | loss_valid_data[kn] = valid_loss[kn].item() 159 | gn = gradient_normalizers(grads, loss_valid_data, normalization_type='loss') 160 | for kn in range(task_num): 161 | grads[kn] = grads[kn] / gn[kn] 162 | 163 | sol, _ = MinNormSolver.find_min_norm_element([grads[kn] for kn in range(task_num)]) 164 | del grads, gn, loss_valid_data 165 | else: 166 | sol = [1]*task_num 167 | loss_sum = (torch.stack([float(sol[k]) * valid_loss[k] for k in range(task_num)])).sum() 168 | h_optimizer.zero_grad() 169 | loss_sum.backward() 170 | h_optimizer.step() 171 | del valid_loss, loss_sum, meta_model 172 | 173 | # update inner loop 174 | trval_data, trval_label, trval_depth, trval_normal = trval_dataset.next() 175 | trval_data, trval_label = trval_data.cuda(non_blocking=True), trval_label.long().cuda(non_blocking=True) 176 | trval_depth, trval_normal = trval_depth.cuda(non_blocking=True), trval_normal.cuda(non_blocking=True) 177 | trval_pred = model(trval_data) 178 | trval_loss = [model_fit(trval_pred[0], trval_label, 'semantic'), 179 | model_fit(trval_pred[1], trval_depth, 'depth'), 180 | model_fit(trval_pred[2], trval_normal, 'normal')] 181 | loss_final = torch.zeros(3).cuda() 182 | for i in range(3): 183 | loss_final[i] = trval_loss[i] 184 | loss = h(loss_final) 185 | weight_optimizer.zero_grad() 186 | loss.backward() 187 | weight_optimizer.step() 188 | 189 | # accumulate label prediction for every pixel in training images 190 | conf_mat.update(trval_pred[0].argmax(1).flatten(), trval_label.flatten()) 191 | 192 | cost[0] = trval_loss[0].item() 193 | cost[3] = trval_loss[1].item() 194 | cost[4], cost[5] = depth_error(trval_pred[1], trval_depth) 195 | cost[6] = trval_loss[2].item() 196 | cost[7], cost[8], cost[9], cost[10], cost[11] = normal_error(trval_pred[2], trval_normal) 197 | avg_cost[index, :12] += cost[:12] / trval_batch 198 | 199 | del trval_data, trval_label, trval_depth, trval_normal, trval_pred, trval_loss, loss_final, loss 200 | 201 | # compute mIoU and acc 202 | avg_cost[index, 1], avg_cost[index, 2] = conf_mat.get_metrics() 203 | 204 | # evaluating test data 205 | model.eval() 206 | conf_mat = ConfMatrix(model.class_nb) 207 | with torch.no_grad(): # operations inside don't track history 208 | val_dataset = iter(nyuv2_test_loader) 209 | val_batch = len(nyuv2_test_loader) 210 | for k in range(val_batch): 211 | val_data, val_label, val_depth, val_normal = val_dataset.next() 212 | val_data, val_label = val_data.cuda(non_blocking=True), val_label.long().cuda(non_blocking=True) 213 | val_depth, val_normal = val_depth.cuda(non_blocking=True), val_normal.cuda(non_blocking=True) 214 | 215 | val_pred = model(val_data) 216 | val_loss = [model_fit(val_pred[0], val_label, 'semantic'), 217 | model_fit(val_pred[1], val_depth, 'depth'), 218 | model_fit(val_pred[2], val_normal, 'normal')] 219 | 220 | conf_mat.update(val_pred[0].argmax(1).flatten(), val_label.flatten()) 221 | 222 | cost[12] = val_loss[0].item() 223 | cost[15] = val_loss[1].item() 224 | cost[16], cost[17] = depth_error(val_pred[1], val_depth) 225 | cost[18] = val_loss[2].item() 226 | cost[19], cost[20], cost[21], cost[22], cost[23] = normal_error(val_pred[2], val_normal) 227 | avg_cost[index, 12:] += cost[12:] / val_batch 228 | 229 | # compute mIoU and acc 230 | avg_cost[index, 13], avg_cost[index, 14] = conf_mat.get_metrics() 231 | 232 | scheduler.step() 233 | e_t = time.time() 234 | print('Epoch: {:04d} | TRAIN: {:.4f} {:.4f} {:.4f} | {:.4f} {:.4f} {:.4f} | {:.4f} {:.4f} {:.4f} {:.4f} {:.4f} {:.4f} ||' 235 | 'TEST: {:.4f} {:.4f} {:.4f} | {:.4f} {:.4f} {:.4f} | {:.4f} {:.4f} {:.4f} {:.4f} {:.4f} {:.4f} || {:.4f}' 236 | .format(index, avg_cost[index, 0], avg_cost[index, 1], avg_cost[index, 2], avg_cost[index, 3], 237 | avg_cost[index, 4], avg_cost[index, 5], avg_cost[index, 6], avg_cost[index, 7], avg_cost[index, 8], 238 | avg_cost[index, 9], avg_cost[index, 10], avg_cost[index, 11], avg_cost[index, 12], avg_cost[index, 13], 239 | avg_cost[index, 14], avg_cost[index, 15], avg_cost[index, 16], avg_cost[index, 17], avg_cost[index, 18], 240 | avg_cost[index, 19], avg_cost[index, 20], avg_cost[index, 21], avg_cost[index, 22], avg_cost[index, 23], e_t-s_t)) 241 | print(h.weight) 242 | -------------------------------------------------------------------------------- /MTL/office_data/office-31/dslr_train.txt: -------------------------------------------------------------------------------- 1 | dslr/images/back_pack/frame_0009.jpg 0 2 | dslr/images/back_pack/frame_0007.jpg 0 3 | dslr/images/back_pack/frame_0010.jpg 0 4 | dslr/images/back_pack/frame_0001.jpg 0 5 | dslr/images/back_pack/frame_0002.jpg 0 6 | dslr/images/back_pack/frame_0005.jpg 0 7 | dslr/images/back_pack/frame_0006.jpg 0 8 | dslr/images/paper_notebook/frame_0002.jpg 1 9 | dslr/images/paper_notebook/frame_0010.jpg 1 10 | dslr/images/paper_notebook/frame_0007.jpg 1 11 | dslr/images/paper_notebook/frame_0009.jpg 1 12 | dslr/images/paper_notebook/frame_0003.jpg 1 13 | dslr/images/paper_notebook/frame_0008.jpg 1 14 | dslr/images/desktop_computer/frame_0003.jpg 2 15 | dslr/images/desktop_computer/frame_0007.jpg 2 16 | dslr/images/desktop_computer/frame_0013.jpg 2 17 | dslr/images/desktop_computer/frame_0002.jpg 2 18 | dslr/images/desktop_computer/frame_0011.jpg 2 19 | dslr/images/desktop_computer/frame_0012.jpg 2 20 | dslr/images/desktop_computer/frame_0008.jpg 2 21 | dslr/images/desktop_computer/frame_0006.jpg 2 22 | dslr/images/desktop_computer/frame_0014.jpg 2 23 | dslr/images/scissors/frame_0018.jpg 3 24 | dslr/images/scissors/frame_0012.jpg 3 25 | dslr/images/scissors/frame_0007.jpg 3 26 | dslr/images/scissors/frame_0002.jpg 3 27 | dslr/images/scissors/frame_0005.jpg 3 28 | dslr/images/scissors/frame_0004.jpg 3 29 | dslr/images/scissors/frame_0011.jpg 3 30 | dslr/images/scissors/frame_0008.jpg 3 31 | dslr/images/scissors/frame_0015.jpg 3 32 | dslr/images/scissors/frame_0017.jpg 3 33 | dslr/images/calculator/frame_0009.jpg 4 34 | dslr/images/calculator/frame_0003.jpg 4 35 | dslr/images/calculator/frame_0001.jpg 4 36 | dslr/images/calculator/frame_0005.jpg 4 37 | dslr/images/calculator/frame_0002.jpg 4 38 | dslr/images/calculator/frame_0006.jpg 4 39 | dslr/images/calculator/frame_0007.jpg 4 40 | dslr/images/desk_chair/frame_0011.jpg 5 41 | dslr/images/desk_chair/frame_0008.jpg 5 42 | dslr/images/desk_chair/frame_0010.jpg 5 43 | dslr/images/desk_chair/frame_0013.jpg 5 44 | dslr/images/desk_chair/frame_0007.jpg 5 45 | dslr/images/desk_chair/frame_0004.jpg 5 46 | dslr/images/desk_chair/frame_0012.jpg 5 47 | dslr/images/mouse/frame_0012.jpg 6 48 | dslr/images/mouse/frame_0008.jpg 6 49 | dslr/images/mouse/frame_0004.jpg 6 50 | dslr/images/mouse/frame_0010.jpg 6 51 | dslr/images/mouse/frame_0002.jpg 6 52 | dslr/images/mouse/frame_0001.jpg 6 53 | dslr/images/mouse/frame_0005.jpg 6 54 | dslr/images/laptop_computer/frame_0014.jpg 7 55 | dslr/images/laptop_computer/frame_0015.jpg 7 56 | dslr/images/laptop_computer/frame_0011.jpg 7 57 | dslr/images/laptop_computer/frame_0010.jpg 7 58 | dslr/images/laptop_computer/frame_0005.jpg 7 59 | dslr/images/laptop_computer/frame_0021.jpg 7 60 | dslr/images/laptop_computer/frame_0017.jpg 7 61 | dslr/images/laptop_computer/frame_0008.jpg 7 62 | dslr/images/laptop_computer/frame_0022.jpg 7 63 | dslr/images/laptop_computer/frame_0020.jpg 7 64 | dslr/images/laptop_computer/frame_0001.jpg 7 65 | dslr/images/laptop_computer/frame_0012.jpg 7 66 | dslr/images/laptop_computer/frame_0003.jpg 7 67 | dslr/images/laptop_computer/frame_0023.jpg 7 68 | dslr/images/desk_lamp/frame_0002.jpg 8 69 | dslr/images/desk_lamp/frame_0008.jpg 8 70 | dslr/images/desk_lamp/frame_0013.jpg 8 71 | dslr/images/desk_lamp/frame_0012.jpg 8 72 | dslr/images/desk_lamp/frame_0004.jpg 8 73 | dslr/images/desk_lamp/frame_0006.jpg 8 74 | dslr/images/desk_lamp/frame_0001.jpg 8 75 | dslr/images/desk_lamp/frame_0011.jpg 8 76 | dslr/images/stapler/frame_0002.jpg 9 77 | dslr/images/stapler/frame_0010.jpg 9 78 | dslr/images/stapler/frame_0009.jpg 9 79 | dslr/images/stapler/frame_0007.jpg 9 80 | dslr/images/stapler/frame_0011.jpg 9 81 | dslr/images/stapler/frame_0016.jpg 9 82 | dslr/images/stapler/frame_0003.jpg 9 83 | dslr/images/stapler/frame_0005.jpg 9 84 | dslr/images/stapler/frame_0013.jpg 9 85 | dslr/images/stapler/frame_0015.jpg 9 86 | dslr/images/stapler/frame_0008.jpg 9 87 | dslr/images/stapler/frame_0001.jpg 9 88 | dslr/images/bottle/frame_0005.jpg 10 89 | dslr/images/bottle/frame_0010.jpg 10 90 | dslr/images/bottle/frame_0003.jpg 10 91 | dslr/images/bottle/frame_0004.jpg 10 92 | dslr/images/bottle/frame_0001.jpg 10 93 | dslr/images/bottle/frame_0013.jpg 10 94 | dslr/images/bottle/frame_0012.jpg 10 95 | dslr/images/bottle/frame_0008.jpg 10 96 | dslr/images/bottle/frame_0007.jpg 10 97 | dslr/images/phone/frame_0011.jpg 11 98 | dslr/images/phone/frame_0008.jpg 11 99 | dslr/images/phone/frame_0003.jpg 11 100 | dslr/images/phone/frame_0012.jpg 11 101 | dslr/images/phone/frame_0005.jpg 11 102 | dslr/images/phone/frame_0001.jpg 11 103 | dslr/images/phone/frame_0013.jpg 11 104 | dslr/images/tape_dispenser/frame_0019.jpg 12 105 | dslr/images/tape_dispenser/frame_0004.jpg 12 106 | dslr/images/tape_dispenser/frame_0015.jpg 12 107 | dslr/images/tape_dispenser/frame_0016.jpg 12 108 | dslr/images/tape_dispenser/frame_0006.jpg 12 109 | dslr/images/tape_dispenser/frame_0003.jpg 12 110 | dslr/images/tape_dispenser/frame_0012.jpg 12 111 | dslr/images/tape_dispenser/frame_0018.jpg 12 112 | dslr/images/tape_dispenser/frame_0014.jpg 12 113 | dslr/images/tape_dispenser/frame_0005.jpg 12 114 | dslr/images/tape_dispenser/frame_0021.jpg 12 115 | dslr/images/tape_dispenser/frame_0002.jpg 12 116 | dslr/images/tape_dispenser/frame_0007.jpg 12 117 | dslr/images/trash_can/frame_0005.jpg 13 118 | dslr/images/trash_can/frame_0010.jpg 13 119 | dslr/images/trash_can/frame_0001.jpg 13 120 | dslr/images/trash_can/frame_0008.jpg 13 121 | dslr/images/trash_can/frame_0009.jpg 13 122 | dslr/images/trash_can/frame_0014.jpg 13 123 | dslr/images/trash_can/frame_0004.jpg 13 124 | dslr/images/trash_can/frame_0011.jpg 13 125 | dslr/images/trash_can/frame_0002.jpg 13 126 | dslr/images/bookcase/frame_0011.jpg 14 127 | dslr/images/bookcase/frame_0003.jpg 14 128 | dslr/images/bookcase/frame_0008.jpg 14 129 | dslr/images/bookcase/frame_0004.jpg 14 130 | dslr/images/bookcase/frame_0005.jpg 14 131 | dslr/images/bookcase/frame_0007.jpg 14 132 | dslr/images/bookcase/frame_0006.jpg 14 133 | dslr/images/pen/frame_0009.jpg 15 134 | dslr/images/pen/frame_0006.jpg 15 135 | dslr/images/pen/frame_0001.jpg 15 136 | dslr/images/pen/frame_0003.jpg 15 137 | dslr/images/pen/frame_0007.jpg 15 138 | dslr/images/pen/frame_0002.jpg 15 139 | dslr/images/ring_binder/frame_0007.jpg 16 140 | dslr/images/ring_binder/frame_0010.jpg 16 141 | dslr/images/ring_binder/frame_0002.jpg 16 142 | dslr/images/ring_binder/frame_0006.jpg 16 143 | dslr/images/ring_binder/frame_0003.jpg 16 144 | dslr/images/ring_binder/frame_0009.jpg 16 145 | dslr/images/mobile_phone/frame_0014.jpg 17 146 | dslr/images/mobile_phone/frame_0024.jpg 17 147 | dslr/images/mobile_phone/frame_0005.jpg 17 148 | dslr/images/mobile_phone/frame_0015.jpg 17 149 | dslr/images/mobile_phone/frame_0030.jpg 17 150 | dslr/images/mobile_phone/frame_0023.jpg 17 151 | dslr/images/mobile_phone/frame_0021.jpg 17 152 | dslr/images/mobile_phone/frame_0031.jpg 17 153 | dslr/images/mobile_phone/frame_0016.jpg 17 154 | dslr/images/mobile_phone/frame_0001.jpg 17 155 | dslr/images/mobile_phone/frame_0007.jpg 17 156 | dslr/images/mobile_phone/frame_0022.jpg 17 157 | dslr/images/mobile_phone/frame_0017.jpg 17 158 | dslr/images/mobile_phone/frame_0003.jpg 17 159 | dslr/images/mobile_phone/frame_0019.jpg 17 160 | dslr/images/mobile_phone/frame_0011.jpg 17 161 | dslr/images/mobile_phone/frame_0008.jpg 17 162 | dslr/images/mobile_phone/frame_0002.jpg 17 163 | dslr/images/ruler/frame_0002.jpg 18 164 | dslr/images/ruler/frame_0005.jpg 18 165 | dslr/images/ruler/frame_0001.jpg 18 166 | dslr/images/ruler/frame_0004.jpg 18 167 | dslr/images/headphones/frame_0006.jpg 19 168 | dslr/images/headphones/frame_0005.jpg 19 169 | dslr/images/headphones/frame_0009.jpg 19 170 | dslr/images/headphones/frame_0010.jpg 19 171 | dslr/images/headphones/frame_0011.jpg 19 172 | dslr/images/headphones/frame_0004.jpg 19 173 | dslr/images/headphones/frame_0003.jpg 19 174 | dslr/images/bike_helmet/frame_0005.jpg 20 175 | dslr/images/bike_helmet/frame_0019.jpg 20 176 | dslr/images/bike_helmet/frame_0009.jpg 20 177 | dslr/images/bike_helmet/frame_0003.jpg 20 178 | dslr/images/bike_helmet/frame_0013.jpg 20 179 | dslr/images/bike_helmet/frame_0024.jpg 20 180 | dslr/images/bike_helmet/frame_0007.jpg 20 181 | dslr/images/bike_helmet/frame_0022.jpg 20 182 | dslr/images/bike_helmet/frame_0015.jpg 20 183 | dslr/images/bike_helmet/frame_0012.jpg 20 184 | dslr/images/bike_helmet/frame_0016.jpg 20 185 | dslr/images/bike_helmet/frame_0014.jpg 20 186 | dslr/images/bike_helmet/frame_0023.jpg 20 187 | dslr/images/bike_helmet/frame_0018.jpg 20 188 | dslr/images/monitor/frame_0004.jpg 21 189 | dslr/images/monitor/frame_0020.jpg 21 190 | dslr/images/monitor/frame_0022.jpg 21 191 | dslr/images/monitor/frame_0002.jpg 21 192 | dslr/images/monitor/frame_0010.jpg 21 193 | dslr/images/monitor/frame_0011.jpg 21 194 | dslr/images/monitor/frame_0021.jpg 21 195 | dslr/images/monitor/frame_0014.jpg 21 196 | dslr/images/monitor/frame_0006.jpg 21 197 | dslr/images/monitor/frame_0013.jpg 21 198 | dslr/images/monitor/frame_0017.jpg 21 199 | dslr/images/monitor/frame_0003.jpg 21 200 | dslr/images/monitor/frame_0018.jpg 21 201 | dslr/images/mug/frame_0003.jpg 22 202 | dslr/images/mug/frame_0002.jpg 22 203 | dslr/images/mug/frame_0001.jpg 22 204 | dslr/images/mug/frame_0004.jpg 22 205 | dslr/images/letter_tray/frame_0003.jpg 23 206 | dslr/images/letter_tray/frame_0001.jpg 23 207 | dslr/images/letter_tray/frame_0010.jpg 23 208 | dslr/images/letter_tray/frame_0013.jpg 23 209 | dslr/images/letter_tray/frame_0016.jpg 23 210 | dslr/images/letter_tray/frame_0008.jpg 23 211 | dslr/images/letter_tray/frame_0002.jpg 23 212 | dslr/images/letter_tray/frame_0007.jpg 23 213 | dslr/images/letter_tray/frame_0011.jpg 23 214 | dslr/images/projector/frame_0009.jpg 24 215 | dslr/images/projector/frame_0002.jpg 24 216 | dslr/images/projector/frame_0001.jpg 24 217 | dslr/images/projector/frame_0006.jpg 24 218 | dslr/images/projector/frame_0013.jpg 24 219 | dslr/images/projector/frame_0020.jpg 24 220 | dslr/images/projector/frame_0017.jpg 24 221 | dslr/images/projector/frame_0014.jpg 24 222 | dslr/images/projector/frame_0005.jpg 24 223 | dslr/images/projector/frame_0022.jpg 24 224 | dslr/images/projector/frame_0018.jpg 24 225 | dslr/images/projector/frame_0016.jpg 24 226 | dslr/images/projector/frame_0011.jpg 24 227 | dslr/images/printer/frame_0015.jpg 25 228 | dslr/images/printer/frame_0014.jpg 25 229 | dslr/images/printer/frame_0008.jpg 25 230 | dslr/images/printer/frame_0010.jpg 25 231 | dslr/images/printer/frame_0004.jpg 25 232 | dslr/images/printer/frame_0011.jpg 25 233 | dslr/images/printer/frame_0009.jpg 25 234 | dslr/images/printer/frame_0013.jpg 25 235 | dslr/images/printer/frame_0003.jpg 25 236 | dslr/images/speaker/frame_0025.jpg 26 237 | dslr/images/speaker/frame_0019.jpg 26 238 | dslr/images/speaker/frame_0023.jpg 26 239 | dslr/images/speaker/frame_0006.jpg 26 240 | dslr/images/speaker/frame_0024.jpg 26 241 | dslr/images/speaker/frame_0001.jpg 26 242 | dslr/images/speaker/frame_0012.jpg 26 243 | dslr/images/speaker/frame_0011.jpg 26 244 | dslr/images/speaker/frame_0020.jpg 26 245 | dslr/images/speaker/frame_0004.jpg 26 246 | dslr/images/speaker/frame_0010.jpg 26 247 | dslr/images/speaker/frame_0009.jpg 26 248 | dslr/images/speaker/frame_0016.jpg 26 249 | dslr/images/speaker/frame_0015.jpg 26 250 | dslr/images/speaker/frame_0021.jpg 26 251 | dslr/images/bike/frame_0021.jpg 27 252 | dslr/images/bike/frame_0011.jpg 27 253 | dslr/images/bike/frame_0016.jpg 27 254 | dslr/images/bike/frame_0004.jpg 27 255 | dslr/images/bike/frame_0003.jpg 27 256 | dslr/images/bike/frame_0013.jpg 27 257 | dslr/images/bike/frame_0017.jpg 27 258 | dslr/images/bike/frame_0012.jpg 27 259 | dslr/images/bike/frame_0008.jpg 27 260 | dslr/images/bike/frame_0009.jpg 27 261 | dslr/images/bike/frame_0019.jpg 27 262 | dslr/images/bike/frame_0006.jpg 27 263 | dslr/images/keyboard/frame_0006.jpg 28 264 | dslr/images/keyboard/frame_0004.jpg 28 265 | dslr/images/keyboard/frame_0009.jpg 28 266 | dslr/images/keyboard/frame_0001.jpg 28 267 | dslr/images/keyboard/frame_0008.jpg 28 268 | dslr/images/keyboard/frame_0010.jpg 28 269 | dslr/images/file_cabinet/frame_0012.jpg 29 270 | dslr/images/file_cabinet/frame_0006.jpg 29 271 | dslr/images/file_cabinet/frame_0013.jpg 29 272 | dslr/images/file_cabinet/frame_0008.jpg 29 273 | dslr/images/file_cabinet/frame_0001.jpg 29 274 | dslr/images/file_cabinet/frame_0014.jpg 29 275 | dslr/images/file_cabinet/frame_0005.jpg 29 276 | dslr/images/file_cabinet/frame_0015.jpg 29 277 | dslr/images/file_cabinet/frame_0009.jpg 29 278 | dslr/images/punchers/frame_0014.jpg 30 279 | dslr/images/punchers/frame_0003.jpg 30 280 | dslr/images/punchers/frame_0006.jpg 30 281 | dslr/images/punchers/frame_0011.jpg 30 282 | dslr/images/punchers/frame_0017.jpg 30 283 | dslr/images/punchers/frame_0007.jpg 30 284 | dslr/images/punchers/frame_0008.jpg 30 285 | dslr/images/punchers/frame_0015.jpg 30 286 | dslr/images/punchers/frame_0012.jpg 30 287 | dslr/images/punchers/frame_0005.jpg 30 288 | -------------------------------------------------------------------------------- /MTL/office_data/office-home/Art_val.txt: -------------------------------------------------------------------------------- 1 | Art/Calendar/00016.jpg 0 2 | Art/Calendar/00020.jpg 0 3 | Art/Calendar/00003.jpg 0 4 | Art/Calendar/00007.jpg 0 5 | Art/Postit_Notes/00016.jpg 1 6 | Art/Postit_Notes/00004.jpg 1 7 | Art/Postit_Notes/00014.jpg 1 8 | Art/Candles/00048.jpg 2 9 | Art/Candles/00008.jpg 2 10 | Art/Candles/00006.jpg 2 11 | Art/Candles/00047.jpg 2 12 | Art/Candles/00040.jpg 2 13 | Art/Candles/00018.jpg 2 14 | Art/Candles/00021.jpg 2 15 | Art/Candles/00034.jpg 2 16 | Art/Candles/00042.jpg 2 17 | Art/Candles/00013.jpg 2 18 | Art/Candles/00049.jpg 2 19 | Art/Candles/00032.jpg 2 20 | Art/Candles/00045.jpg 2 21 | Art/Candles/00070.jpg 2 22 | Art/Candles/00074.jpg 2 23 | Art/File_Cabinet/00011.jpg 3 24 | Art/File_Cabinet/00013.jpg 3 25 | Art/File_Cabinet/00015.jpg 3 26 | Art/File_Cabinet/00001.jpg 3 27 | Art/Table/00007.jpg 4 28 | Art/Table/00002.jpg 4 29 | Art/Table/00011.jpg 4 30 | Art/Toys/00017.jpg 5 31 | Art/Toys/00011.jpg 5 32 | Art/Toys/00002.jpg 5 33 | Art/Toys/00020.jpg 5 34 | Art/Chair/00043.jpg 6 35 | Art/Chair/00041.jpg 6 36 | Art/Chair/00002.jpg 6 37 | Art/Chair/00039.jpg 6 38 | Art/Chair/00063.jpg 6 39 | Art/Chair/00046.jpg 6 40 | Art/Chair/00044.jpg 6 41 | Art/Chair/00059.jpg 6 42 | Art/Chair/00029.jpg 6 43 | Art/Chair/00052.jpg 6 44 | Art/Chair/00012.jpg 6 45 | Art/Chair/00005.jpg 6 46 | Art/Chair/00008.jpg 6 47 | Art/Scissors/00001.jpg 7 48 | Art/Scissors/00020.jpg 7 49 | Art/Scissors/00002.jpg 7 50 | Art/Scissors/00014.jpg 7 51 | Art/Sneakers/00030.jpg 8 52 | Art/Sneakers/00036.jpg 8 53 | Art/Sneakers/00025.jpg 8 54 | Art/Sneakers/00021.jpg 8 55 | Art/Sneakers/00043.jpg 8 56 | Art/Sneakers/00023.jpg 8 57 | Art/Sneakers/00046.jpg 8 58 | Art/Sneakers/00013.jpg 8 59 | Art/Sneakers/00003.jpg 8 60 | Art/Clipboards/00010.jpg 9 61 | Art/Clipboards/00014.jpg 9 62 | Art/Clipboards/00003.jpg 9 63 | Art/Clipboards/00025.jpg 9 64 | Art/Clipboards/00005.jpg 9 65 | Art/Spoon/00015.jpg 10 66 | Art/Spoon/00028.jpg 10 67 | Art/Spoon/00046.jpg 10 68 | Art/Spoon/00037.jpg 10 69 | Art/Spoon/00025.jpg 10 70 | Art/Spoon/00004.jpg 10 71 | Art/Spoon/00002.jpg 10 72 | Art/Spoon/00029.jpg 10 73 | Art/Spoon/00045.jpg 10 74 | Art/Flipflops/00045.jpg 11 75 | Art/Flipflops/00004.jpg 11 76 | Art/Flipflops/00034.jpg 11 77 | Art/Flipflops/00017.jpg 11 78 | Art/Flipflops/00022.jpg 11 79 | Art/Flipflops/00016.jpg 11 80 | Art/Flipflops/00010.jpg 11 81 | Art/Flipflops/00043.jpg 11 82 | Art/Flipflops/00038.jpg 11 83 | Art/Drill/00013.jpg 12 84 | Art/Drill/00011.jpg 12 85 | Art/Drill/00001.jpg 12 86 | Art/Oven/00019.jpg 13 87 | Art/Oven/00010.jpg 13 88 | Art/Oven/00001.jpg 13 89 | Art/Oven/00017.jpg 13 90 | Art/Ruler/00014.jpg 14 91 | Art/Ruler/00006.jpg 14 92 | Art/Ruler/00009.jpg 14 93 | Art/Refrigerator/00019.jpg 15 94 | Art/Refrigerator/00010.jpg 15 95 | Art/Refrigerator/00009.jpg 15 96 | Art/Refrigerator/00034.jpg 15 97 | Art/Refrigerator/00025.jpg 15 98 | Art/Refrigerator/00037.jpg 15 99 | Art/Refrigerator/00032.jpg 15 100 | Art/Refrigerator/00023.jpg 15 101 | Art/Refrigerator/00014.jpg 15 102 | Art/Helmet/00004.jpg 16 103 | Art/Helmet/00019.jpg 16 104 | Art/Helmet/00031.jpg 16 105 | Art/Helmet/00044.jpg 16 106 | Art/Helmet/00077.jpg 16 107 | Art/Helmet/00073.jpg 16 108 | Art/Helmet/00078.jpg 16 109 | Art/Helmet/00060.jpg 16 110 | Art/Helmet/00059.jpg 16 111 | Art/Helmet/00036.jpg 16 112 | Art/Helmet/00074.jpg 16 113 | Art/Helmet/00034.jpg 16 114 | Art/Helmet/00009.jpg 16 115 | Art/Helmet/00022.jpg 16 116 | Art/Helmet/00048.jpg 16 117 | Art/Bike/00013.jpg 17 118 | Art/Bike/00047.jpg 17 119 | Art/Bike/00042.jpg 17 120 | Art/Bike/00028.jpg 17 121 | Art/Bike/00039.jpg 17 122 | Art/Bike/00023.jpg 17 123 | Art/Bike/00069.jpg 17 124 | Art/Bike/00059.jpg 17 125 | Art/Bike/00072.jpg 17 126 | Art/Bike/00068.jpg 17 127 | Art/Bike/00049.jpg 17 128 | Art/Bike/00066.jpg 17 129 | Art/Bike/00026.jpg 17 130 | Art/Bike/00075.jpg 17 131 | Art/Bike/00045.jpg 17 132 | Art/Knives/00062.jpg 18 133 | Art/Knives/00026.jpg 18 134 | Art/Knives/00054.jpg 18 135 | Art/Knives/00003.jpg 18 136 | Art/Knives/00028.jpg 18 137 | Art/Knives/00044.jpg 18 138 | Art/Knives/00027.jpg 18 139 | Art/Knives/00071.jpg 18 140 | Art/Knives/00064.jpg 18 141 | Art/Knives/00056.jpg 18 142 | Art/Knives/00004.jpg 18 143 | Art/Knives/00068.jpg 18 144 | Art/Knives/00063.jpg 18 145 | Art/Knives/00033.jpg 18 146 | Art/Webcam/00006.jpg 19 147 | Art/Webcam/00003.jpg 19 148 | Art/Webcam/00001.jpg 19 149 | Art/ToothBrush/00009.jpg 20 150 | Art/ToothBrush/00001.jpg 20 151 | Art/ToothBrush/00036.jpg 20 152 | Art/ToothBrush/00029.jpg 20 153 | Art/ToothBrush/00011.jpg 20 154 | Art/ToothBrush/00042.jpg 20 155 | Art/ToothBrush/00024.jpg 20 156 | Art/ToothBrush/00016.jpg 20 157 | Art/Telephone/00005.jpg 21 158 | Art/Telephone/00007.jpg 21 159 | Art/Telephone/00012.jpg 21 160 | Art/Telephone/00025.jpg 21 161 | Art/Telephone/00001.jpg 21 162 | Art/Telephone/00041.jpg 21 163 | Art/Telephone/00006.jpg 21 164 | Art/Telephone/00026.jpg 21 165 | Art/Couch/00016.jpg 22 166 | Art/Couch/00002.jpg 22 167 | Art/Couch/00025.jpg 22 168 | Art/Couch/00007.jpg 22 169 | Art/Couch/00040.jpg 22 170 | Art/Couch/00034.jpg 22 171 | Art/Couch/00022.jpg 22 172 | Art/Couch/00014.jpg 22 173 | Art/Glasses/00030.jpg 23 174 | Art/Glasses/00013.jpg 23 175 | Art/Glasses/00026.jpg 23 176 | Art/Glasses/00020.jpg 23 177 | Art/Glasses/00003.jpg 23 178 | Art/Glasses/00011.jpg 23 179 | Art/Glasses/00035.jpg 23 180 | Art/Glasses/00008.jpg 23 181 | Art/Bed/00033.jpg 24 182 | Art/Bed/00002.jpg 24 183 | Art/Bed/00005.jpg 24 184 | Art/Bed/00036.jpg 24 185 | Art/Bed/00040.jpg 24 186 | Art/Bed/00022.jpg 24 187 | Art/Bed/00012.jpg 24 188 | Art/Bed/00018.jpg 24 189 | Art/Eraser/00011.jpg 25 190 | Art/Eraser/00003.jpg 25 191 | Art/Eraser/00002.jpg 25 192 | Art/Printer/00017.jpg 26 193 | Art/Printer/00002.jpg 26 194 | Art/Printer/00001.jpg 26 195 | Art/Mug/00049.jpg 27 196 | Art/Mug/00047.jpg 27 197 | Art/Mug/00002.jpg 27 198 | Art/Mug/00046.jpg 27 199 | Art/Mug/00011.jpg 27 200 | Art/Mug/00031.jpg 27 201 | Art/Mug/00017.jpg 27 202 | Art/Mug/00009.jpg 27 203 | Art/Mug/00001.jpg 27 204 | Art/Bottle/00085.jpg 28 205 | Art/Bottle/00072.jpg 28 206 | Art/Bottle/00043.jpg 28 207 | Art/Bottle/00039.jpg 28 208 | Art/Bottle/00060.jpg 28 209 | Art/Bottle/00028.jpg 28 210 | Art/Bottle/00018.jpg 28 211 | Art/Bottle/00075.jpg 28 212 | Art/Bottle/00045.jpg 28 213 | Art/Bottle/00048.jpg 28 214 | Art/Bottle/00050.jpg 28 215 | Art/Bottle/00094.jpg 28 216 | Art/Bottle/00053.jpg 28 217 | Art/Bottle/00068.jpg 28 218 | Art/Bottle/00074.jpg 28 219 | Art/Bottle/00070.jpg 28 220 | Art/Bottle/00099.jpg 28 221 | Art/Bottle/00059.jpg 28 222 | Art/Bottle/00035.jpg 28 223 | Art/Exit_Sign/00008.jpg 29 224 | Art/Exit_Sign/00021.jpg 29 225 | Art/Exit_Sign/00002.jpg 29 226 | Art/Exit_Sign/00011.jpg 29 227 | Art/Batteries/00019.jpg 30 228 | Art/Batteries/00013.jpg 30 229 | Art/Batteries/00026.jpg 30 230 | Art/Batteries/00025.jpg 30 231 | Art/Batteries/00002.jpg 30 232 | Art/Mouse/00007.jpg 31 233 | Art/Mouse/00006.jpg 31 234 | Art/Mouse/00017.jpg 31 235 | Art/Computer/00018.jpg 32 236 | Art/Computer/00002.jpg 32 237 | Art/Computer/00027.jpg 32 238 | Art/Computer/00043.jpg 32 239 | Art/Computer/00031.jpg 32 240 | Art/Computer/00028.jpg 32 241 | Art/Computer/00025.jpg 32 242 | Art/Computer/00042.jpg 32 243 | Art/Shelf/00022.jpg 33 244 | Art/Shelf/00002.jpg 33 245 | Art/Shelf/00026.jpg 33 246 | Art/Shelf/00005.jpg 33 247 | Art/Shelf/00006.jpg 33 248 | Art/Shelf/00013.jpg 33 249 | Art/Shelf/00034.jpg 33 250 | Art/Shelf/00039.jpg 33 251 | Art/Bucket/00014.jpg 34 252 | Art/Bucket/00005.jpg 34 253 | Art/Bucket/00016.jpg 34 254 | Art/Bucket/00026.jpg 34 255 | Art/Bucket/00037.jpg 34 256 | Art/Bucket/00008.jpg 34 257 | Art/Bucket/00018.jpg 34 258 | Art/Bucket/00027.jpg 34 259 | Art/Monitor/00032.jpg 35 260 | Art/Monitor/00018.jpg 35 261 | Art/Monitor/00028.jpg 35 262 | Art/Monitor/00027.jpg 35 263 | Art/Monitor/00020.jpg 35 264 | Art/Monitor/00031.jpg 35 265 | Art/Monitor/00022.jpg 35 266 | Art/Monitor/00030.jpg 35 267 | Art/Folder/00004.jpg 36 268 | Art/Folder/00008.jpg 36 269 | Art/Folder/00018.jpg 36 270 | Art/Folder/00013.jpg 36 271 | Art/Radio/00011.jpg 37 272 | Art/Radio/00003.jpg 37 273 | Art/Radio/00007.jpg 37 274 | Art/Radio/00002.jpg 37 275 | Art/Radio/00032.jpg 37 276 | Art/Radio/00044.jpg 37 277 | Art/Radio/00023.jpg 37 278 | Art/Radio/00047.jpg 37 279 | Art/Radio/00039.jpg 37 280 | Art/Calculator/00005.jpg 38 281 | Art/Calculator/00017.jpg 38 282 | Art/Calculator/00006.jpg 38 283 | Art/Calculator/00004.jpg 38 284 | Art/Calculator/00022.jpg 38 285 | Art/Calculator/00012.jpg 38 286 | Art/Soda/00036.jpg 39 287 | Art/Soda/00015.jpg 39 288 | Art/Soda/00037.jpg 39 289 | Art/Soda/00012.jpg 39 290 | Art/Soda/00027.jpg 39 291 | Art/Soda/00033.jpg 39 292 | Art/Soda/00029.jpg 39 293 | Art/Soda/00034.jpg 39 294 | Art/Flowers/00051.jpg 40 295 | Art/Flowers/00065.jpg 40 296 | Art/Flowers/00033.jpg 40 297 | Art/Flowers/00073.jpg 40 298 | Art/Flowers/00083.jpg 40 299 | Art/Flowers/00076.jpg 40 300 | Art/Flowers/00034.jpg 40 301 | Art/Flowers/00052.jpg 40 302 | Art/Flowers/00072.jpg 40 303 | Art/Flowers/00044.jpg 40 304 | Art/Flowers/00055.jpg 40 305 | Art/Flowers/00029.jpg 40 306 | Art/Flowers/00059.jpg 40 307 | Art/Flowers/00058.jpg 40 308 | Art/Flowers/00079.jpg 40 309 | Art/Flowers/00021.jpg 40 310 | Art/Flowers/00087.jpg 40 311 | Art/Flowers/00081.jpg 40 312 | Art/Desk_Lamp/00016.jpg 41 313 | Art/Desk_Lamp/00005.jpg 41 314 | Art/Desk_Lamp/00017.jpg 41 315 | Art/Desk_Lamp/00018.jpg 41 316 | Art/Mop/00014.jpg 42 317 | Art/Mop/00004.jpg 42 318 | Art/Mop/00027.jpg 42 319 | Art/Mop/00008.jpg 42 320 | Art/Mop/00003.jpg 42 321 | Art/Mop/00001.jpg 42 322 | Art/Marker/00019.jpg 43 323 | Art/Marker/00001.jpg 43 324 | Art/Marker/00011.jpg 43 325 | Art/Marker/00013.jpg 43 326 | Art/Fan/00004.jpg 44 327 | Art/Fan/00016.jpg 44 328 | Art/Fan/00015.jpg 44 329 | Art/Fan/00006.jpg 44 330 | Art/Fan/00002.jpg 44 331 | Art/Fan/00007.jpg 44 332 | Art/Fan/00011.jpg 44 333 | Art/Fan/00017.jpg 44 334 | Art/Fan/00020.jpg 44 335 | Art/Lamp_Shade/00048.jpg 45 336 | Art/Lamp_Shade/00019.jpg 45 337 | Art/Lamp_Shade/00037.jpg 45 338 | Art/Lamp_Shade/00006.jpg 45 339 | Art/Lamp_Shade/00025.jpg 45 340 | Art/Lamp_Shade/00042.jpg 45 341 | Art/Lamp_Shade/00024.jpg 45 342 | Art/Lamp_Shade/00009.jpg 45 343 | Art/Lamp_Shade/00041.jpg 45 344 | Art/Hammer/00015.jpg 46 345 | Art/Hammer/00014.jpg 46 346 | Art/Hammer/00010.jpg 46 347 | Art/Hammer/00022.jpg 46 348 | Art/Hammer/00024.jpg 46 349 | Art/Hammer/00012.jpg 46 350 | Art/Hammer/00033.jpg 46 351 | Art/Hammer/00011.jpg 46 352 | Art/Backpack/00010.jpg 47 353 | Art/Backpack/00003.jpg 47 354 | Art/Backpack/00035.jpg 47 355 | Art/Backpack/00016.jpg 47 356 | Art/Backpack/00033.jpg 47 357 | Art/Backpack/00012.jpg 47 358 | Art/Backpack/00021.jpg 47 359 | Art/Backpack/00023.jpg 47 360 | Art/Pen/00018.jpg 48 361 | Art/Pen/00003.jpg 48 362 | Art/Pen/00020.jpg 48 363 | Art/Pen/00005.jpg 48 364 | Art/Pencil/00022.jpg 49 365 | Art/Pencil/00016.jpg 49 366 | Art/Pencil/00009.jpg 49 367 | Art/Pencil/00019.jpg 49 368 | Art/Pencil/00008.jpg 49 369 | Art/Paper_Clip/00004.jpg 50 370 | Art/Paper_Clip/00012.jpg 50 371 | Art/Paper_Clip/00008.jpg 50 372 | Art/Kettle/00031.jpg 51 373 | Art/Kettle/00018.jpg 51 374 | Art/Kettle/00007.jpg 51 375 | Art/Kettle/00027.jpg 51 376 | Art/Kettle/00041.jpg 51 377 | Art/Kettle/00036.jpg 51 378 | Art/Kettle/00037.jpg 51 379 | Art/Kettle/00011.jpg 51 380 | Art/Kettle/00030.jpg 51 381 | Art/Fork/00023.jpg 52 382 | Art/Fork/00006.jpg 52 383 | Art/Fork/00018.jpg 52 384 | Art/Fork/00021.jpg 52 385 | Art/Fork/00024.jpg 52 386 | Art/Fork/00035.jpg 52 387 | Art/Fork/00032.jpg 52 388 | Art/Fork/00019.jpg 52 389 | Art/Fork/00029.jpg 52 390 | Art/Screwdriver/00029.jpg 53 391 | Art/Screwdriver/00020.jpg 53 392 | Art/Screwdriver/00010.jpg 53 393 | Art/Screwdriver/00028.jpg 53 394 | Art/Screwdriver/00004.jpg 53 395 | Art/Screwdriver/00017.jpg 53 396 | Art/Curtains/00013.jpg 54 397 | Art/Curtains/00030.jpg 54 398 | Art/Curtains/00022.jpg 54 399 | Art/Curtains/00006.jpg 54 400 | Art/Curtains/00021.jpg 54 401 | Art/Curtains/00005.jpg 54 402 | Art/Curtains/00004.jpg 54 403 | Art/Curtains/00001.jpg 54 404 | Art/Keyboard/00003.jpg 55 405 | Art/Keyboard/00015.jpg 55 406 | Art/Keyboard/00018.jpg 55 407 | Art/Speaker/00003.jpg 56 408 | Art/Speaker/00009.jpg 56 409 | Art/Speaker/00005.jpg 56 410 | Art/Speaker/00008.jpg 56 411 | Art/Notebook/00019.jpg 57 412 | Art/Notebook/00001.jpg 57 413 | Art/Notebook/00012.jpg 57 414 | Art/Notebook/00021.jpg 57 415 | Art/Sink/00027.jpg 58 416 | Art/Sink/00035.jpg 58 417 | Art/Sink/00007.jpg 58 418 | Art/Sink/00009.jpg 58 419 | Art/Sink/00004.jpg 58 420 | Art/Sink/00017.jpg 58 421 | Art/Sink/00018.jpg 58 422 | Art/Sink/00036.jpg 58 423 | Art/Push_Pin/00008.jpg 59 424 | Art/Push_Pin/00023.jpg 59 425 | Art/Push_Pin/00015.jpg 59 426 | Art/Push_Pin/00020.jpg 59 427 | Art/TV/00004.jpg 60 428 | Art/TV/00023.jpg 60 429 | Art/TV/00024.jpg 60 430 | Art/TV/00012.jpg 60 431 | Art/TV/00039.jpg 60 432 | Art/TV/00014.jpg 60 433 | Art/TV/00019.jpg 60 434 | Art/TV/00001.jpg 60 435 | Art/Laptop/00008.jpg 61 436 | Art/Laptop/00032.jpg 61 437 | Art/Laptop/00033.jpg 61 438 | Art/Laptop/00014.jpg 61 439 | Art/Laptop/00020.jpg 61 440 | Art/Laptop/00024.jpg 61 441 | Art/Laptop/00044.jpg 61 442 | Art/Laptop/00017.jpg 61 443 | Art/Laptop/00002.jpg 61 444 | Art/Laptop/00029.jpg 61 445 | Art/Alarm_Clock/00063.jpg 62 446 | Art/Alarm_Clock/00025.jpg 62 447 | Art/Alarm_Clock/00007.jpg 62 448 | Art/Alarm_Clock/00024.jpg 62 449 | Art/Alarm_Clock/00002.jpg 62 450 | Art/Alarm_Clock/00062.jpg 62 451 | Art/Alarm_Clock/00044.jpg 62 452 | Art/Alarm_Clock/00022.jpg 62 453 | Art/Alarm_Clock/00071.jpg 62 454 | Art/Alarm_Clock/00046.jpg 62 455 | Art/Alarm_Clock/00065.jpg 62 456 | Art/Alarm_Clock/00066.jpg 62 457 | Art/Alarm_Clock/00021.jpg 62 458 | Art/Alarm_Clock/00059.jpg 62 459 | Art/Pan/00005.jpg 63 460 | Art/Pan/00018.jpg 63 461 | Art/Pan/00013.jpg 63 462 | Art/Trash_Can/00016.jpg 64 463 | Art/Trash_Can/00010.jpg 64 464 | Art/Trash_Can/00015.jpg 64 465 | Art/Trash_Can/00019.jpg 64 466 | --------------------------------------------------------------------------------