PyTorchのtorchvision.transforms.Compose を使って画像をランダムに0度、90度、180度、270度回転させたいのですが、良い方法はありますか?
torchvision.transforms.functional.rotate は使い方が違うので、Composeの中で処理できませんでした。
torchvision.transforms.RandomRotationのようなメソッドで、角度を指定できればよいのですが・・・。
以下やろうとしているコードです
PyTorch
1import os 2import torch 3import torchvision 4from torchvision import datasets, models, transforms 5 6data_transforms = { 7 'train': transforms.Compose([ 8 # ランダムに0度、90度、180度、270度回転させたい 9 # transforms.Lambda(lambda mI:mI.rotate(90 * np.random.randint(0,4))), 10 # transforms.RandomRotation(degrees=180, resample=False, expand=False, center=None), 11 transforms.RandomResizedCrop(224), 12 transforms.ToTensor(), 13 transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 14 ]), 15 'val': transforms.Compose([ 16 transforms.Resize((256, 256)), 17 transforms.CenterCrop(224), 18 transforms.ToTensor(), 19 transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) 20 ]), 21} 22 23image_datasets = {'train': datasets.ImageFolder(os.path.join('data', 'train'), data_transforms['train']) 24dataloaders = {'train': torch.utils.data.DataLoader(image_datasets['train'], batch_size=4, shuffle=True, num_workers=4)} 25 26images, classes = next(iter(dataloaders['train'])) 27 28 29
よろしくお願いします。
あなたの回答
tips
プレビュー