def __init__(self, args): self.args = args self.rvs = args.rvs self.insp = args.insp self.inch = args.inch self.outf = args.outf self.transformer = transforms.RandomChoice([ transforms.Compose([transforms.ToPILImage(), transforms.ColorJitter(brightness=0.1), transforms.ToTensor()]), transforms.Compose([transforms.ToPILImage(), transforms.ColorJitter(contrast=0.1), transforms.ToTensor()]), transforms.Compose([transforms.ToPILImage(), transforms.ColorJitter(saturation=0.1), transforms.ToTensor()]), transforms.Compose([transforms.ToPILImage(), transforms.RandomRotation(degrees=10, resample=False, expand=False, center=None), transforms.ToTensor()]), transforms.Compose([transforms.ToPILImage(), transforms.RandomHorizontalFlip(p=1), transforms.ToTensor()]), ]) self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') self.D = D(insp=args.insp, inch=args.inch, outf=args.outf).to(self.device) self.G = G(rvs=args.rvs).to(self.device) self.criterion = nn.BCELoss() self.optimizerD = torch.optim.Adam(self.D.parameters(), lr=args.lr, betas=(args.beta, 0.999)) self.optimizerG = torch.optim.Adam(self.G.parameters(), lr=args.lr, betas=(args.beta, 0.999)) self.test_noise = torch.randn(args.grid_w * args.grid_h, args.rvs, 1, 1).to(device=self.device) self.real_label = 1 self.fake_label = 0
def get_transforms(size): base_transforms = transforms.Compose([transforms.Resize(size)]) additional_transforms = transforms.Compose([ transforms.RandomHorizontalFlip(p=0.5), # transforms.RandomApply([transforms.RandomRotation(degrees=5)], p=0.5), transforms.RandomChoice( [transforms.CenterCrop(size), transforms.RandomCrop(size)]), transforms.RandomApply([ transforms.ColorJitter( brightness=0.2, contrast=(0.9, 1.2), saturation=0.3, hue=0.01) ], p=0.5), transforms.ToTensor(), # transforms.Normalize(means, stds), Rescale(), ]) return base_transforms, additional_transforms
def RandomChoice(self, **args): return self._add(transforms.RandomChoice(**args))
from torch import nn, optim from torchvision.transforms import transforms import torchvision.datasets as datasets from PIL import ImageFile from PIL import Image import random import os car_file = './train' img_transforms = transforms.Compose([ transforms.RandomChoice([ transforms.RandomResizedCrop((768, 1024), scale=(0.8, 1.0), ratio=(0.75, 1.3333333), interpolation=2), transforms.RandomHorizontalFlip(p=0.2), transforms.ColorJitter(brightness=random.uniform(0.8, 1.2), contrast=random.uniform(0.8, 1.2), saturation=random.uniform(0.8, 1.2)), transforms.RandomGrayscale(p=0.1) ]) ]) img_dataset = datasets.ImageFolder(car_file, transform=img_transforms) for idx, (img_path, img_label) in enumerate(img_dataset.imgs): img_name = img_path.split('/')[-1] img = Image.open(img_path) img_transformed = img_transforms(img) img_transformed.show()
'여': '1'} classes_dict = {'00': 0, # 20대 남자 '01': 1, # 20대 여자 '10': 2, # 30대 남자 '11': 3, # 30대 여자 '20': 4, # 40대 남자 '21': 5, # 40대 여자 '30': 6, # 50대 남자 '31': 7} # 50대 여자 train_transforms = transforms.Compose([ transforms.Resize((224, 224)), transforms.RandomHorizontalFlip(), transforms.RandomChoice([ transforms.ColorJitter(0.2, 0.2, 0.2, 0.2), ]), transforms.ToTensor(), transforms.Normalize((0.4452, 0.4457, 0.4464), (0.2592, 0.2596, 0.2600)), ]) train_dataset = ImageFolder(root='./data/image', transform=train_transforms) # change image directory train_loader = DataLoader(train_dataset, batch_size=8, shuffle=True, num_workers=0) model = EfficientNet.from_pretrained('efficientnet-b0', num_classes=8) criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.0001, weight_decay=0.00001) for epoch in range(30): running_loss =0.0
npimg = img.numpy() plt.imshow(np.transpose(npimg, (1, 2, 0))) plt.show() if __name__ == '__main__': transform = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomAffine(5, translate=(2 / 32, 2 / 32), scale=(0.95, 1.05), resample=PIL.Image.NEAREST), transforms.ToTensor(), transforms.RandomChoice([ transforms.Normalize((0.5, 0.5, 0.5), (0.9, 0.9, 0.9)), transforms.Normalize((0.5, 0.5, 0.5), (0.7, 0.7, 0.7)), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) ]) ]) transform_test = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), ]) trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,