style-transfer-adain / src /dataset.py
Michal-Raszkowski's picture
Upload 11 files
8e1e3ba verified
Raw
History Blame
1.66 kB
import random
from torch.utils.data import Dataset
from torchvision import transforms
class DecoderDataset(Dataset):
def __init__(
self,
content_dataset,
style_dataset,
content_indexes,
style_indexes,
image_size=256,
is_train=True
):
self.content_dataset = content_dataset
self.style_dataset = style_dataset
self.content_indexes = content_indexes
self.style_indexes = style_indexes
self.is_train = is_train
if self.is_train:
self.transform = transforms.Compose([
transforms.Resize(image_size),
transforms.RandomCrop(image_size),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
])
else:
self.transform = transforms.Compose([
transforms.Resize(image_size),
transforms.CenterCrop(image_size),
transforms.ToTensor(),
])
def __len__(self):
return len(self.content_indexes)
def __getitem__(self, idx):
real_content_idx = self.content_indexes[idx]
if self.is_train:
style_idx = random.choice(self.style_indexes)
else:
style_idx = self.style_indexes[idx % len(self.style_indexes)]
content_data = self.content_dataset[real_content_idx]
style_data = self.style_dataset[style_idx]
content_img = content_data["image"]
style_img = style_data["image"]
return self.transform(content_img.convert("RGB")), self.transform(style_img.convert("RGB"))