예제 #1
0
    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
예제 #2
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
예제 #3
0
 def RandomChoice(self, **args):
     return self._add(transforms.RandomChoice(**args))
예제 #4
0
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()
예제 #5
0
            '여': '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
예제 #6
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,