Spaces:
Running
on
Zero
Running
on
Zero
| import torch | |
| import torchvision | |
| from torchvision import transforms | |
| import random | |
| from PIL import Image | |
| import os | |
| from utils import RandomAffineAndRetMat | |
| def load_filenames(data_dir): | |
| # label_data = pd.read_json(INPUT_DIR+'DataList.json') | |
| # label_data = label_data.sort_index() | |
| # tmp_points = [] | |
| # filenames = [] | |
| # for o in tqdm(label_data.data[0:1000]): | |
| # filenames.append(o['filename']) | |
| # a = o['filename'] | |
| # tmps = [] | |
| # for i in range(60): | |
| # tmps.append(o['points'][str(i)]['x']) | |
| # tmps.append(o['points'][str(i)]['y']) | |
| # tmp_points.append(tmps) # datanum | |
| # filenames = pd.Series(filenames) | |
| # filenames = [str(i).zfill(4)+'.jpg' for i in range(3400)] | |
| # df_points = pd.DataFrame(tmp_points) | |
| # load from data_dir | |
| # 画像の拡張子のみ | |
| img_exts = ['.jpg', '.jpeg', '.png', '.bmp', '.ppm', '.pgm', '.tif', '.tiff'] | |
| filenames = [f for f in os.listdir(data_dir) if os.path.splitext(f)[1].lower() in img_exts] | |
| return filenames | |
| class MyDataset: | |
| def __init__(self, X, valid=False, img_dir='resources/trainB/', img_size=256): | |
| self.X = X | |
| self.valid = valid | |
| self.img_dir = img_dir | |
| self.img_size = img_size | |
| def __len__(self): | |
| return len(self.X) | |
| def __getitem__(self, index): | |
| # 画像を読み込んでトランスフォームを適用 | |
| f = self.img_dir + self.X[index] | |
| original_X = Image.open(f) | |
| trans = [ | |
| transforms.ToTensor(), | |
| # transforms.Normalize(mean=means, std=stds), | |
| transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), | |
| transforms.ColorJitter(brightness=0.3, contrast=0.3, saturation=0.2, hue=0.15), | |
| transforms.RandomGrayscale(0.3), | |
| ] | |
| transform = transforms.Compose(trans) | |
| xlist = [] | |
| matlist = [] | |
| is_flip = random.randint(0, 1) # 同じ画像はフリップ | |
| for i in range(2): | |
| af = RandomAffineAndRetMat( | |
| degrees=[-30, 30], | |
| translate=(0.1, 0.1), scale=(0.8, 1.2), | |
| # fill=(random.random(), random.random(), random.random()), | |
| fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), | |
| shear=[-10, 10], | |
| interpolation=torchvision.transforms.InterpolationMode.BILINEAR, | |
| ) | |
| X, affine_matrix = af(transforms.Resize(self.img_size)(original_X)) | |
| # randomflip | |
| if is_flip == 1: | |
| X = transforms.RandomHorizontalFlip(1.)(X) | |
| flip_matrix = torch.tensor([[-1., 0., 0.], | |
| [0., 1., 0.], | |
| [0., 0., 1.]]) | |
| affine_matrix = torch.matmul(flip_matrix, affine_matrix) | |
| xlist.append(transform(X)) | |
| matlist.append(affine_matrix) | |
| X = torch.stack(xlist) | |
| mat = torch.stack(matlist) | |
| return X, mat, f |